[Java – S2] Các kiểu dữ liệu trong Java

Như ở post Java-S1, chúng ta đã biết mỗi ngôn ngữ lập trình đều có nhiều kiểu dữ liệu. Trong Java có 2 kiểu dữ liệu cơ bản: Kiểu dữ liệu nguyên thủy (Primitive data type) và kiểu dữ liệu tham chiếu (Reference/Object data type). Mỗi kiểu dữ liệu này lại được chia ra các kiểu dữ liệu khác nhau:

cac-kieu-du-lieu-trong-java

8 kiểu dữ liệu nguyên thủy (cơ sở):

Các kiểu dữ liệu nguyên thủy trong java được phân ra thành 3 nhóm chính:

  • Kiểu số nguyên bao gồm: byte, short, int, long  và char
  • Kiểu số thực dấu phẩy động bao gồm: double và float
  • Kiểu logic chỉ có 2 giá trị: true, false

Chi tiết về các kiểu được trình bày ở bảng dưới đây:

Bảng 2.1: Chi tiết thông số của các kiểu dữ liệu nguyên thủy trong Java
Primitive Data Type Wrapper Type Size Default Value Range
byte Byte 1 byte 0 -128  to  127
short Short 2 byte 0 -215  to  215-1
int Integer 4 byte 0  -23  to  231-1
long Long 8 byte 0L -263  to  263-1
float Float 4 byte 0.0f (2)
double Double 8 byte 0.0d
char Character 2 byte ‘\u0000’ 0 to 215-1 (3)
boolean Boolean Not defined(1) false true , false

Bảng trên cho ta giới hạn của các kiểu dữ liệu nguyên thủy. Các thông số này đều có thể kiểm tra được bằng cách truy xuất các hằng số trong các lớp Wrapper type. Tuy nhiên, chúng ta nên nhớ các thông số này để có thể sử dụng chúng một cách hợp lý và linh hoạt. Ví dụ nếu không nhớ giới hạn của kiểu dữ liệu, bạn cũng có thể gán cho biến một giá trị vượt quá giới hạn (giống như việc nhét một con voi vào trong tủ lạnh vậy), hoặc sau hàng loạt các tính toán giá trị của biến sẽ vượt quá giới hạn…

Wrapper type không phải là kiểu dữ liệu nguyên thủy, nó là kiểu dữ liệu tham chiếu, là một class. Các class này là đóng gói của các kiểu dữ liệu nguyên thủy. Nói cách khác, các phương thức, các hằng và các biến được thêm vào để thao tác với các kiểu dữ liệu nguyên thủy được dễ hơn (như việc truy xuất các thông số ở trên). Các wrapper class được tìm thấy trong Java API.

	int i = Integer.MAX_VALUE; // 2147483647
	byte b = Byte.MIN_VALUE; // -128
	int c1 = Character.MAX_VALUE; // 65535
	char c2 = Character.MAX_VALUE; // ?
	short s = Short.MIN_VALUE; // -32768
	double d = Double.MAX_VALUE; // 1.7976931348623157E308
	

==============================

(1) Kiểu dữ liệu boolean trong Java chỉ nhận 2 giá trị true hoặc false, kích thước của nó là một cái gì đó được xác định chính xác. Tuy nhiên, vì nó yêu cầu ít nhất 1 bit, nên nhiều tài liệu lấy đó làm kích thước của kiểu boolean.
(2) float và double là các kiểu số thực dấu chấm động (floating-point type) tuân theo chuẩn IEEE 754. Số dấu chấm động không có phạm vi xác định, nó có thể nhận một trong các giá trị:

  • Vô cực âm(Negative infinity)
  • Vô cực dương (Positive infinity)
  • Số âm hữu hạn ( Negative, finite values)
  • Số dương hữu hạn (Positive, finite values)
  • Số 0 âm hoặc số 0 dương: Xem thêm tại đây.
  • NaN (Not a Number): Các giá trị không thể xác định trong khoảng vô cực âm đến vô cực dương (ví dụ phép toán chi cho 0). NaN được đưa ra để sử dụng trong một số trường hợp đặc biệt khi so sánh các giá trị thực với nhau và thường cho ra kết quả false.

(3) char là kiểu ký tự có giá trị trong khoảng ‘/u0000’ đến ‘/uffff’ hay từ 0 đến 65 535. Một biến kiểu char sẽ có giá trị là một ký tự Unicode.

Các kiểu dữ liệu tham chiếu
Kiểu dữ liệu tham chiếu là một class, một mảng, một interface hay một enum bất kì. Kiểu dữ liệu tham chiếu có kích thước phụ thuộc vào nhiều yếu tố đặc biệt kiến trúc của máy ảo Java (JVM).

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *