Hiểu sâu về Biến và Kiểu Dữ liệu trong Java

Biến, phạm vi, kiểu nguyên thủy, tham chiếu và cách quản lý bộ nhớ cơ bản

🔤 Kiểu dữ liệu nguyên thủy vs tham chiếu

  • Nguyên thủy: byte, short, int, long, float, double, char, boolean
  • Tham chiếu: String, Array, Class, Object, các class do bạn định nghĩa
int age = 25;            // primitive - lưu trực tiếp giá trị
String name = "Bao";    // reference - biến giữ tham chiếu đến đối tượng String

📐 Phạm vi biến

public class ScopeDemo {
    static int staticVar = 10; // phạm vi class

    public static void main(String[] args) {
        int x = 5;             // phạm vi block method
        if (x > 0) {
            int y = 7;         // phạm vi block if
            System.out.println(x + y);
        }
        // System.out.println(y); // lỗi: y không tồn tại ở đây
    }
}

🧠 Auto-boxing, Unboxing

Integer boxed = 10;     // auto-boxing: int -> Integer
int unboxed = boxed;    // unboxing: Integer -> int

🧮 Kích thước & miền giá trị (tóm tắt)

KiểuByteMinMax
byte1-128127
int4-2^312^31-1
long8-2^632^63-1

🗃️ Quản lý bộ nhớ cơ bản

  • Stack: lưu biến cục bộ, reference
  • Heap: lưu object; GC sẽ thu hồi khi không còn tham chiếu
public class MemoryDemo {
    static class User { String name; User(String n){ this.name = n; } }
    public static void main(String[] args) {
        User u1 = new User("Bao"); // object ở heap, u1 ở stack tham chiếu đến
        u1 = null;                  // object trở thành ứng viên GC
    }
}

✅ Bài tập

Viết chương trình đọc tên, tuổi (int), chiều cao (double) và in ra định dạng đẹp; thử chuyển đổi giữa wrapper và primitive.

Chatbot