Các kiểu dữ liệu Java
Như đã giải thích trong chương trước, một biến trong Java phải là một kiểu dữ liệu được chỉ định:
Thí dụ
int myNum = 5; // Integer (whole number)
float myFloatNum = 5.99f; // Floating point number
char myLetter = 'D'; // Character
boolean myBool = true; // Boolean
String myText = "Hello"; // String
Các kiểu dữ liệu được chia thành hai nhóm:
- Các kiểu dữ liệu nguyên thủy – bao gồm
byte
,short
,int
,long
,float
,double
,boolean
vàchar
- Các kiểu dữ liệu không nguyên thủy – chẳng hạn như Chuỗi , Mảng và Lớp (bạn sẽ tìm hiểu thêm về những kiểu này trong chương sau)
Các kiểu dữ liệu ban đầu
Kiểu dữ liệu nguyên thủy chỉ định kích thước và kiểu của các giá trị biến và nó không có phương thức bổ sung.
Có tám kiểu dữ liệu nguyên thủy trong Java:
Data Type | Size | Description |
---|---|---|
byte | 1 byte | Stores whole numbers from -128 to 127 |
short | 2 bytes | Stores whole numbers from -32,768 to 32,767 |
int | 4 bytes | Stores whole numbers from -2,147,483,648 to 2,147,483,647 |
long | 8 bytes | Stores whole numbers from -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 |
float | 4 bytes | Stores fractional numbers. Sufficient for storing 6 to 7 decimal digits |
double | 8 bytes | Stores fractional numbers. Sufficient for storing 15 decimal digits |
boolean | 1 bit | Stores true or false values |
char | 2 bytes | Stores a single character/letter or ASCII values |
Con số (numbers)
Các kiểu số nguyên thủy được chia thành hai nhóm:
Loại số nguyên lưu trữ các số nguyên, dương hoặc âm (chẳng hạn như 123 hoặc -456), không có số thập phân. Loại hợp lệ là byte
, short
, int
và long
. Loại nào bạn nên sử dụng, phụ thuộc vào giá trị số.
Các kiểu dấu phẩy động biểu thị các số có phần thập phân, chứa một hoặc nhiều số thập phân. Có hai loại: float
và double
.
Mặc dù có nhiều kiểu số trong Java, nhưng kiểu số được sử dụng nhiều nhất là int
(cho số nguyên) và double
(cho số dấu phẩy động). Tuy nhiên, chúng tôi sẽ mô tả tất cả khi bạn tiếp tục đọc.
Các loại số nguyên ( Integer Types)
Byte
Kiểu byte
dữ liệu có thể lưu trữ các số nguyên từ -128 đến 127. Kiểu này có thể được sử dụng thay vì int
hoặc các kiểu số nguyên khác để tiết kiệm bộ nhớ khi bạn chắc chắn rằng giá trị sẽ nằm trong -128 và 127:
Thí dụ
byte myNum = 100;
System.out.println(myNum);
Short
Kiểu short
dữ liệu có thể lưu trữ các số nguyên từ -32768 đến 32767:
Thí dụ
short myNum = 5000;
System.out.println(myNum);
Int
Kiểu int
dữ liệu có thể lưu trữ các số nguyên từ -2147483648 đến 2147483647. Nói chung và trong hướng dẫn của chúng tôi, int
kiểu dữ liệu là kiểu dữ liệu được ưu tiên khi chúng ta tạo các biến có giá trị số.
Thí dụ
int myNum = 100000;
System.out.println(myNum);
Long
Kiểu long
dữ liệu có thể lưu trữ các số nguyên từ -9223372036854775808 đến 9223372036854775807. Kiểu này được sử dụng khi int không đủ lớn để lưu giá trị. Lưu ý rằng bạn nên kết thúc giá trị bằng “L”:
Thí dụ
long myNum = 15000000000L;
System.out.println(myNum);
Các loại dấu chấm động
Bạn nên sử dụng kiểu dấu phẩy động bất cứ khi nào bạn cần một số có phần thập phân, chẳng hạn như 9,99 hoặc 3,14515.
Float
Kiểu float
dữ liệu có thể lưu trữ các số phân số từ 3,4e-038 đến 3,4e + 038. Lưu ý rằng bạn nên kết thúc giá trị bằng “f”:
Thí dụ
float myNum = 5.75f;
System.out.println(myNum);
Double
Kiểu double
dữ liệu có thể lưu trữ các số phân số từ 1,7e-308 đến 1,7e + 308. Lưu ý rằng bạn nên kết thúc giá trị bằng “d”:
Thí dụ
double myNum = 19.99d;
System.out.println(myNum);
Sử dụng float
hoặc double
?
Độ chính xác của giá trị dấu phẩy động cho biết giá trị có thể có bao nhiêu chữ số sau dấu thập phân. Độ chính xác của float
chỉ là sáu hoặc bảy chữ số thập phân, trong khi double
các biến có độ chính xác khoảng 15 chữ số. Do đó sẽ an toàn hơn khi sử dụng double
cho hầu hết các phép tính.
Số khoa học
Một số dấu phẩy động cũng có thể là một số khoa học với chữ “e” để biểu thị lũy thừa của 10:
Thí dụ
float f1 = 35e3f;
double d1 = 12E4d;
System.out.println(f1);
System.out.println(d1);
Booleans
Kiểu dữ liệu boolean được khai báo với boolean
từ khóa và chỉ có thể nhận các giá trị true
hoặc false
:
Thí dụ
boolean isJavaFun = true;
boolean isFishTasty = false;
System.out.println(isJavaFun); // Outputs true
System.out.println(isFishTasty); // Outputs false
Giá trị boolean chủ yếu được sử dụng để kiểm tra có điều kiện, bạn sẽ tìm hiểu thêm về điều này trong chương sau.
Kiểu Char
Các char
kiểu dữ liệu được sử dụng để lưu trữ một đơn nhân vật. Ký tự phải được bao quanh bởi các dấu ngoặc kép, như ‘A’ hoặc ‘c’:
Thí dụ
char myGrade = 'B';
System.out.println(myGrade);
Ngoài ra, bạn có thể sử dụng các giá trị ASCII để hiển thị các ký tự nhất định:
Thí dụ
char myVar1 = 65, myVar2 = 66, myVar3 = 67;
System.out.println(myVar1);
System.out.println(myVar2);
System.out.println(myVar3);
Mẹo: Bạn có thể tìm thấy danh sách tất cả các giá trị ASCII trong Tham chiếu Bảng ASCII của chúng tôi .
String
Kiểu String
dữ liệu được sử dụng để lưu trữ một chuỗi ký tự (văn bản). Giá trị chuỗi phải được bao quanh bởi dấu ngoặc kép:
Thí dụ
String greeting = "Hello World";
System.out.println(greeting);
Kiểu String được sử dụng và tích hợp rất nhiều trong Java, đến nỗi một số người gọi nó là ” kiểu thứ chín đặc biệt “.
Chuỗi trong Java thực sự là một kiểu dữ liệu không nguyên thủy , vì nó tham chiếu đến một đối tượng. Đối tượng String có các phương thức được sử dụng để thực hiện các hoạt động nhất định trên chuỗi. Đừng lo lắng nếu bạn chưa hiểu thuật ngữ “đối tượng” . Chúng ta sẽ tìm hiểu thêm về chuỗi và đối tượng trong chương sau.
Các kiểu dữ liệu không nguyên thủy
Các kiểu dữ liệu không nguyên thủy được gọi là kiểu tham chiếu vì chúng tham chiếu đến các đối tượng.
Sự khác biệt chính giữa kiểu dữ liệu nguyên thủy và không nguyên thủy là:
- Các kiểu nguyên thủy được xác định trước (đã được định nghĩa) trong Java. Các kiểu không nguyên thủy được tạo bởi lập trình viên và không được định nghĩa bởi Java (ngoại trừ
String
). - Các kiểu không nguyên thủy có thể được sử dụng để gọi các phương thức để thực hiện một số hoạt động nhất định, trong khi các kiểu nguyên thủy thì không thể.
- Một kiểu nguyên thủy luôn có một giá trị, trong khi các kiểu không nguyên thủy có thể có
null
. - Kiểu nguyên thủy bắt đầu bằng chữ thường, trong khi kiểu không nguyên thủy bắt đầu bằng chữ hoa.
- Kích thước của kiểu nguyên thủy phụ thuộc vào kiểu dữ liệu, trong khi các kiểu không nguyên thủy có cùng kích thước.
Ví dụ về các kiểu không nguyên thủy là Chuỗi , Mảng , Lớp, Giao diện , v.v. Bạn sẽ tìm hiểu thêm về những kiểu này trong chương sau.
II.Truyền kiểu Java
Ép kiểu là khi bạn gán giá trị của một kiểu dữ liệu nguyên thủy cho một kiểu khác.
Trong Java, có hai kiểu ép kiểu:
- Mở rộng Truyền (tự động) – chuyển đổi một loại nhỏ hơn thành một kích thước loại lớn hơn
byte
->short
->char
->int
->long
->float
->double
- Thu hẹp Truyền (thủ công) – chuyển đổi loại lớn hơn sang loại kích thước nhỏ hơn
double
->float
->long
->int
->char
->short
->byte
Mở rộng Đúc
Quá trình truyền mở rộng được thực hiện tự động khi chuyển loại kích thước nhỏ hơn sang loại kích thước lớn hơn:
Thí dụ
public class Main {
public static void main(String[] args) {
int myInt = 9;
double myDouble = myInt; // Automatic casting: int to double
System.out.println(myInt); // Outputs 9
System.out.println(myDouble); // Outputs 9.0
}
}
Thu hẹp truyền
Quá trình truyền thu hẹp phải được thực hiện theo cách thủ công bằng cách đặt loại trong dấu ngoặc đơn ở phía trước giá trị:
Thí dụ
public class Main {
public static void main(String[] args) {
double myDouble = 9.78d;
int myInt = (int) myDouble; // Manual casting: double to int
System.out.println(myDouble); // Outputs 9.78
System.out.println(myInt); // Outputs 9
}
}