Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Các loại biến trong lớp Java: local, instance, static

1. Local Variable (Biến cục bộ)

  • Khai báo trong method, constructor, block.
  • Tồn tại khi control vào scope, hủy khi thoát scope.
  • Bắt buộc khởi tạo trước khi dùng (không có default value).
  • Không dùng access modifier (public, private...), không static.

Ví dụ


public class LocalVarDemo {
    public void show() {
        int num = 100; // local variable
        System.out.println("Số là: " + num);
    }
    public static void main(String[] args) {
        new LocalVarDemo().show();
    }
}

Kết quả: Số là: 100

2. Instance Variable (Biến thể hiện / trường)

  • Khai báo trong class, ngoài method/block/constructor.
  • Tạo khi new Object(), hủy khi object bị GC.
  • Có default value (0, false, null...).
  • Mỗi object có bản sao riêng.

Ví dụ


public class InstanceVarDemo {
    int num; // instance variable
    InstanceVarDemo(int n) { num = n; }
    public void show() { System.out.println("Số: " + num); }
    public static void main(String[] args) {
        new InstanceVarDemo(75).show();
    }
}

Kết quả: Số: 75

3. Static/Class Variable (Biến lớp / static field)

  • Khai báo với từ khóa static trong class, ngoài method.
  • Tạo khi class load, hủy khi class unload (chương trình kết thúc).
  • Chung cho tất cả instance của class.
  • Truy cập qua ClassName.var hoặc instance.var (khuyến khích dùng class name).

Ví dụ


public class StaticVarDemo {
    int num;
    static int count = 0; // static variable

    StaticVarDemo(int n) { num = n; count++; }
    public void show() { System.out.println("Số: " + num); }

    public static void main(String[] args) {
        StaticVarDemo t1 = new StaticVarDemo(75); t1.show();
        StaticVarDemo t2 = new StaticVarDemo(90); t2.show();
        System.out.println("Tổng object tạo: " + count);
    }
}

Kết quả: Số: 75 Số: 90 Tổng object tạo: 2

Bảng tóm tắt

LoạiKhai báoKhởi tạoHủyPhạm viDefault
LocalTrong method/blockBắt buộc gán giá trịThoát scopeChỉ trong blockKhông có
InstanceTrong class, ngoài methodKhi new objectKhi object GCCả class (qua instance)0/false/null
StaticTrong class + staticKhi load classKhi unload classCả class (qua Class.name)0/false/null