Bỏ qua để đến nội dung

Kiểu dữ liệu số

Java có 6 kiểu dữ liệu số nguyên thủy (primitive) - kích thước cố định, không đổi giữa các nền tảng (khác với C/C++).

Kiểu Kích thước Phạm vi giá trị
byte 8-bit -128 đến 127
short 16-bit -32,768 đến 32,767
int 32-bit -2,147,483,648 đến 2,147,483,647 (~2.1 tỷ)
long 64-bit -9.2 × 10¹⁸ đến 9.2 × 10¹⁸

int là kiểu số nguyên mặc định được dùng phổ biến nhất.

int population = 8_000_000; // Dấu gạch dưới giúp dễ đọc số lớn
long bigNumber = 10_000_000_000L; // Bắt buộc hậu tố L (hoặc l) vì vượt phạm vi int

⚠️ Thiếu hậu tố L khi gán một giá trị vượt phạm vi int cho biến long sẽ gây lỗi biên dịch, vì literal số nguyên mặc định luôn được hiểu là int.

Kiểu Kích thước Độ chính xác
float 32-bit ~6-7 chữ số thập phân
double 64-bit ~15-16 chữ số thập phân (mặc định, khuyến nghị dùng)
double price = 19.99; // double là kiểu mặc định cho số thực
float weight = 65.5f; // Bắt buộc hậu tố f (hoặc F) cho float

⚠️ Thiếu hậu tố f khi gán literal thập phân cho float sẽ gây lỗi biên dịch, vì literal số thực mặc định luôn là double (kích thước lớn hơn float, không thể tự động thu hẹp).

int decimal = 26; // Hệ thập phân (mặc định)
int hex = 0x1A; // Hệ thập lục phân (hex) - bằng 26
int octal = 032; // Hệ bát phân (octal) - bằng 26
int binary = 0b11010; // Hệ nhị phân (binary) - bằng 26

Các trường (field) của class, nếu không được khởi tạo, sẽ nhận giá trị mặc định: 0 cho các kiểu số nguyên, 0.0 cho float/double. Biến cục bộ bên trong phương thức không có giá trị mặc định - phải khởi tạo trước khi dùng.

  • Java có kích thước kiểu số cố định trên mọi nền tảng: byte(8-bit), short(16-bit), int(32-bit), long(64-bit), float(32-bit), double(64-bit)
  • int là kiểu số nguyên mặc định, double là kiểu số thực mặc định
  • long cần hậu tố L, float cần hậu tố f khi gán literal - nếu không sẽ lỗi biên dịch
  • Có thể viết số ở hệ hex (0x), octal (0), binary (0b), và dùng _ để phân tách số lớn cho dễ đọc