In
OOP,
Static in JAVA
Static
static variable
static method
1.Khi nào sử dụng static?
Khi nào method hoặc field nào sử dụng nhiều mà cùng dùng một giá trị thì method hoặc field đó nên sử dụng biến static(field, method nào dùng chung cho các Object thì dùng static)
ex: Class Student có field strA, strB,
ex: method kết nối database
2.Vì sao sử dụng nhiều thì dùng static?
Vì khi khai báo static thì method và field đó sẽ xem như là của class, vì khi gọi method và field này thì k cần phải khởi tạo đối tượng, vì khi khởi tạo đối tượng là phải tốn bộ nhớ, tốn tài nguyên, ảnh hưởng đến performance.
3.Static được khởi tạo khi nào?
- Khi khởi tạo static thì đã khởi tạo vùng nhớ rồi,
- Field có static được khởi tạo khi run class(biên dịch)
- Không có static thì field được khởi tạo khi new một Object
4. Static dùng để khai báo cho ai?
Chỉ khai báo cho field và method.
field và method khai báo static là của class chứ k phải của đối tượng(Không cần phải khởi tạo đối tượng)
ex:
static variable
- It is a variable which belongs to the class and not to object(instance)
- Static variables are initialized only once , at the start of the execution . These variables will be initialized first, before the initialization of any instance variables
- A single copy to be shared by all instances of the class
- A static variable can be accessed directly by the class name and doesn’t need any object
- Syntax : <class-name>.<variable-name>
static method
- It is a method whichbelongs to the class andnot to theobject(instance)
- A static methodcan access only static data. It can not access non-static data (instance variables)
- A static methodcan callonly otherstatic methods and can not call a non-static method from it.
- A static method can beaccessed directly by theclass nameand doesn’t need any object
- Syntax : <class-name>.<method-name>
- A static method cannot refer to "this" or "super" keywords in anyway
1.Khi nào sử dụng static?
Khi nào method hoặc field nào sử dụng nhiều mà cùng dùng một giá trị thì method hoặc field đó nên sử dụng biến static(field, method nào dùng chung cho các Object thì dùng static)
ex: Class Student có field strA, strB,
ex: method kết nối database
2.Vì sao sử dụng nhiều thì dùng static?
Vì khi khai báo static thì method và field đó sẽ xem như là của class, vì khi gọi method và field này thì k cần phải khởi tạo đối tượng, vì khi khởi tạo đối tượng là phải tốn bộ nhớ, tốn tài nguyên, ảnh hưởng đến performance.
3.Static được khởi tạo khi nào?
- Khi khởi tạo static thì đã khởi tạo vùng nhớ rồi,
- Field có static được khởi tạo khi run class(biên dịch)
- Không có static thì field được khởi tạo khi new một Object
4. Static dùng để khai báo cho ai?
Chỉ khai báo cho field và method.
field và method khai báo static là của class chứ k phải của đối tượng(Không cần phải khởi tạo đối tượng)
Một Số Đặc Điểm Của Static Variable (Biến tĩnh):
- Chỉ phụ thuộc và lớp mà không phụ thuộc vào đối tượng
- Biến static chỉ khởi tạo một lần khi chương trình bắt đầu thực thi
- Biến static có thể truy cập trực tiếp bằng tên class mà không cần bất kỳ đối tượng nào.
- Cú pháp: Tên_class.Tên_biến _static
Một Số Đặc Điểm Của Static Method (phương thức tĩnh):
- Chỉ phụ thuộc và lớp mà không phụ thuộc vào đối tượng
- Chỉ phụ thuộc và lớp mà không phụ thuộc vào đối tượng
- Phương thức static chỉ có thể truy cập vào các thành phần static mà không thể truy cập vào các thành phần không static
- Phương thức static có thể truy cập trực tiếp bằng tên class mà không cần bất kỳ đối tượng nào.
- Cú pháp: Tên_lớp.Tên_phương_thức_static
ex:
public class static_Object {
static int objCount;
static int objNum;
int objId;
static_Object(){
objCount++;
objId++;
}
public static void main(String[] args) {
for(int i = 0; i < 5; i++){
static_Object objS = new static_Object();
System.out.println(objS.objId + ",");
System.out.println("There are: " + objCount + " obj create");
}
}
}
Kết
quả:1, There are: 1 obj create 1, There are: 2 obj create 1, There are: 3 obj create 1, There are: 4 obj create 1, There are: 5 obj create
Giải thích: Vì khi field hay method nào khai báo static
thì khi nó bị thay đổi thì thay đổi trên toàn class, vì nó thuộc class chứ k
thuộc Object nào cả.
ex2:
class VariableDemo { static int count=0; public void increment() { count++; } public static void main(String args[]) { VariableDemo obj1=new VariableDemo(); VariableDemo obj2=new VariableDemo(); obj1.increment(); obj2.increment(); System.out.println("Obj1: count is="+obj1.count); System.out.println("Obj2: count is="+obj2.count); } }
Output:
Obj1: count is=2 Obj2: count is=2