byte | Dùng để lưu dữ liệu kiểu số nguyên có kích thước một byte [8 bít]. Phạm vi biểu diễn giá trị từ -128 đến 127. Giá trị mặc định là 0. |
char | Dùng để lưu dữ liệu kiểu kí tự hoặc số nguyên không âm có kích thước 2 byte [16 bít]. Phạm vi biểu diễn giá trị từ 0 đến u\ffff. Giá trị mặc định là 0. |
boolean | Dùng để lưu dữ liệu chỉ có hai trạng thái đúng hoặc sai [độ lớn chỉ có 1 bít]. Phạm vi biểu diễn giá trị là {“True”, “False”}. Giá trị mặc định là False. |
short | Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 2 byte [16 bít]. Phạm vi biểu diễn giá trị từ – 32768 đến 32767. Giá trị mặc định là 0. |
int | Dùng để lưu dữ liệu có kiểu số nguyên, kích cỡ 4 byte [32 bít]. Phạm vi biểu diễn giá trị từ -2,147,483,648 đến 2,147,483,647. Giá trị mặc định là 0. |
long | Dùng để lưu dữ liệu có kiểu số nguyên có kích thước lên đến 8 byte. Giá trị mặc định là 0L. |
float | Dùng để lưu dữ liệu có kiểu số thực, kích cỡ 4 byte [32 bít]. Giá trị mặc định là 0.0F. |
double | Dùng để lưu dữ liệu có kiểu số thực có kích thước lên đến 8 byte. Giá trị mặc định là 0.00D |
Array | Một mảng của các dữ liệu cùng kiểu. |
class | Dữ liệu kiểu lớp đối tượng do người dùng định nghĩa. Chứa tập các thuộc tính và phương thức.. |
interface | Dữ liệu kiểu lớp giao tiếp do người dùng định nghĩa. Chứa các phương thức của giao tiếp. |
Ép kiểu trong java là việc gán giá trị của một biến có kiểu dữ liệu này tới biến khác có kiểu dữ liệu khác. Và có 02 dạng ép kiểu.
float c = 30.8f; int b = [int]c + 2;Trong ví dụ trên, đầu tiên giá trị dấu phảy động c được đổi thành giá trị nguyên 30. Sau đó nó được cộng với 1 và kết quả là giá trị 31 được lưu vào b.
Nới rộng [widening]Là quá trình làm tròn số từ kiểu dữ liệu có kích thước nhỏ hơn sang kiểu có kích thước lớn hơn. Kiểu biến đổi này không làm mất thông tin. Ví dụ chuyển từ int sang float. Chuyển kiểu loại này có thế được thực hiện ngầm định bởi trình biên dịch.
byte >> short >> int >> long >> float >> double
Ví dụ: Minh hoạ về widening
public class TestWidening { public static void main[String[] args] { int i = 100; long l = i; // không yêu cầu chỉ định ép kiểu float f = l; // không yêu cầu chỉ định ép kiểu System.out.println["Giá trị Int: " + i]; System.out.println["Giá trị Long: " + l]; System.out.println["Giá trị Float: " + f]; } }Kết quả:
Giá trị Int: 100 Giá trị Long: 100 Giá trị Float: 100.0 Thu hẹp [narrowing]Là quá trình làm tròn số từ kiểu dữ liệu có kích thước lớn hơn sang kiểu có kích thước nhỏ hơn. Kiểu biến đổi này có thể làm mất thông tin như ví dụ ở trên. Chuyển kiểu loại này không thể thực hiện ngầm định bởi trình biên dịch, người dùng phải thực hiện chuyển kiểu tường minh.
double >> float >> long >> int >> short >> byte
Ví dụ: Minh hoạ về narrowing
public class TestNarrowwing { public static void main[String[] args] { double d = 100.04; long l = [long] d; // yêu cầu chỉ định kiểu dữ liệu [long] int i = [int] l; // yêu cầu chỉ định kiểu dữ liệu [int] System.out.println["Giá trị Double: " + d]; System.out.println["Giá trị Long: " + l]; System.out.println["Giá trị Int: " + i]; } }Kết quả:
Giá trị Double: 100.04 Giá trị Long: 100 Giá trị Int: 100CÁC TOÁN TỬ
Toán tử trong java là một ký hiệu được sử dụng để thực hiện một phép tính/chức năng nào đó. Java cung cấp các dạng toán tử sau:
Toán tử số họcCác toán hạng của các toán tử số học phải ở dạng số. Các toán hạng kiểu boolean không sử dụng được, các toán hạng ký tự cho phép sử dụng loại toán tử này. Một vài kiểu toán tử được liệt kê trong bảng dưới đây.
Giả sử, chúng ta có biến số nguyên a = 10 và b = 20.
+ | Cộng Trả về giá trị là tổng của hai toán hạng |
a + b sẽ là 30 |
– | Trừ Trả về kết quả là hiệu của hai toán hạng. |
a + b sẽ là -1 |
* | Nhân Trả về giá trị là tích của hai toán hạng. |
a + b sẽ là 200 |
/ | Chia Trả về giá trị là thương của phép chia. |
b / a sẽ là 2 |
% | Phép lấy modul Giá trị trả về là phần dư của phép chia |
b % a sẽ là 0 |
++ | Tăng dần Tăng giá trị của biến lên 1. Ví dụ a++ tương đương với a = a + 1 |
a++ sẽ là 11 |
— | Giảm dần Giảm giá trị của biến 1 đơn vị. Ví dụ a– tương đương với a = a – 1 |
a– sẽ là 9 |
+= | Cộng và gán giá trị Cộng các giá trị của toán hạng bên trái vào toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c += a tương đương c = c + a |
a += 2 sẽ là 12 |
-= | rừ và gán giá trị Trừ các giá trị của toán hạng bên trái vào toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c -= a tương đương với c = c – a |
a -= 2 sẽ là 8 |
*= | Nhân và gán Nhân các giá trị của toán hạng bên trái với toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c *= a tương đương với c = c*a |
a *= 2 sẽ là 20 |
/= | Chia và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị trả về vào toán hạng bên trái. Ví dụ c /= a tương đương với c = c/a |
a /= 2 sẽ là 5 |
%= | Lấy số dư và gán Chia giá trị của toán hạng bên trái cho toán toán hạng bên phải và gán giá trị số dư vào toán hạng bên trái. Ví dụ c %= a tương đương với c = c%a |
a /= 8 sẽ là 2 |
Các toán tử dạng bit cho phép chúng ta thao tác trên từng bit riêng biệt trong các kiểu dữ liệu nguyên thuỷ.
~ | Phủ định NOT Trả về giá trị phủ định của một bít. |
& | Toán tử AND Trả về giá trị là 1 nếu các toán hạng là 1 và 0 trong các trường hợp khác |
| | Toán tử OR Trả về giá trị là 1 nếu một trong các toán hạng là 1 và 0 trong các trường hợp khác. |
^ | Toán tử Exclusive OR Trả về giá trị là 1 nếu chỉ một trong các toán hạng là 1 và trả về 0 trong các trường hợp khác. |
>> | Dịch phải Chuyển toàn bộ các bít cuả một số sang phải một vị trí, giữ nguyên dấu của số âm. Toán hạng bên trái là số bị dịch còn số bên phải chỉ số vị trí mà các bít cần dịch. |
= 50 && marks < 60] { System.out.println["Xếp loại D"]; } else if [marks >= 60 && marks < 70] { System.out.println["Xếp loại C"]; } else if [marks >= 70 && marks < 80] { System.out.println["Xếp loại B"]; } else if [marks >= 80 && marks < 90] { System.out.println["Xếp loại A"]; } else if [marks >= 90 && marks < 100] { System.out.println["Xếp loại A+"]; } else { System.out.println["Giá trị không hợp lệ!"]; } } } |