Ở bài trước, chúng ta đã viết chương trình "Hello, World!" đầu tiên và làm quen với cú pháp cơ bản của Java. Trong bài viết này, chúng ta sẽ đi sâu hơn vào biến (variables) và kiểu dữ liệu (data types), những thành phần quan trọng nhất trong lập trình Java.
Hiểu rõ về biến và kiểu dữ liệu sẽ giúp bạn viết code hiệu quả, dễ đọc và dễ bảo trì hơn.
Biến Là Gì?
Biến (variable) là một vùng nhớ được đặt tên, dùng để lưu trữ dữ liệu. Bạn có thể coi biến như một chiếc hộp, trong đó bạn có thể cất giữ các giá trị khác nhau.
Trong Java, bạn cần khai báo biến trước khi sử dụng, bằng cách chỉ định kiểu dữ liệu và tên biến:
kieu_du_lieu ten_bien;
Hoặc, bạn có thể khai báo và khởi tạo biến cùng một lúc:
kieu_du_lieu ten_bien = gia_tri;
Ví dụ:
int age; // Khai báo biến age có kiểu int (số nguyên)
String name = "Alice"; // Khai báo và khởi tạo biến name có kiểu String (chuỗi)
double pi = 3.14; // Khai báo và khởi tạo biến pi có kiểu double (số thực)
boolean isStudent = true; // Khai báo và khởi tạo biến isStudent có kiểu boolean (true/false)
Lưu ý:
- Tên biến nên có ý nghĩa và dễ đọc.
- Java là một ngôn ngữ phân biệt chữ hoa và chữ thường trong tên biến.
- Bạn cần khai báo kiểu dữ liệu của biến trước khi sử dụng.
Các Kiểu Dữ Liệu Cơ Bản Trong Java
Java cung cấp một số kiểu dữ liệu cơ bản, được chia thành hai loại chính:
- Kiểu dữ liệu nguyên thủy (Primitive Data Types): Lưu trữ trực tiếp giá trị.
- Kiểu dữ liệu tham chiếu (Reference Data Types): Lưu trữ tham chiếu đến một đối tượng trong bộ nhớ.
1. Kiểu Dữ Liệu Nguyên Thủy:
Kiểu dữ liệu | Mô tả | Kích thước | Phạm vi giá trị | Ví dụ |
---|---|---|---|---|
byte |
Số nguyên 8-bit | 1 byte | -128 đến 127 | byte b = 10; |
short |
Số nguyên 16-bit | 2 bytes | -32,768 đến 32,767 | short s = 1000; |
int |
Số nguyên 32-bit | 4 bytes | -2,147,483,648 đến 2,147,483,647 | int i = 100000; |
long |
Số nguyên 64-bit | 8 bytes | -9,223,372,036,854,775,808 đến 9,223,372,036,854,775,807 | long l = 1000000000L; |
float |
Số thực 32-bit (độ chính xác đơn) | 4 bytes | ±1.4E-45 đến ±3.4028235E+38 | float f = 3.14F; |
double |
Số thực 64-bit (độ chính xác kép) | 8 bytes | ±4.9E-324 đến ±1.7976931348623157E+308 | double d = 3.14159; |
boolean |
Giá trị logic (true hoặc false) | 1 bit | true hoặc false |
boolean flag = true; |
char |
Ký tự Unicode 16-bit | 2 bytes | U+0000 đến U+FFFF (0 đến 65,535) | char c = 'A'; |
Lưu ý:
long
cần có hậu tốL
hoặcl
(khuyến khích dùngL
để tránh nhầm lẫn với số 1).float
cần có hậu tốF
hoặcf
.char
được đặt trong dấu nháy đơn' '
.
2. Kiểu Dữ Liệu Tham Chiếu:
String
: Chuỗi ký tự (không phải kiểu dữ liệu nguyên thủy).- Mảng (Arrays): Tập hợp các phần tử có cùng kiểu dữ liệu.
- Class (Lớp): Bản thiết kế để tạo ra các đối tượng.
- Interface (Giao Diện): Một bản hợp đồng mà các class phải tuân thủ.
Ví dụ:
String message = "Hello, Java!";
int[] numbers = {1, 2, 3, 4, 5};
MyClass obj = new MyClass(); // Tạo đối tượng từ class MyClass
Ép Kiểu Dữ Liệu (Type Casting)
Đôi khi, bạn cần chuyển đổi một giá trị từ kiểu dữ liệu này sang kiểu dữ liệu khác. Quá trình này được gọi là ép kiểu dữ liệu (type casting).
Java cung cấp hai loại ép kiểu dữ liệu:
-
Ép kiểu ngầm định (Implicit Casting/Widening Conversion): Chuyển đổi từ kiểu dữ liệu nhỏ hơn sang kiểu dữ liệu lớn hơn (không mất dữ liệu).
int x = 10; double y = x; // int -> double (ép kiểu ngầm định)
-
Ép kiểu tường minh (Explicit Casting/Narrowing Conversion): Chuyển đổi từ kiểu dữ liệu lớn hơn sang kiểu dữ liệu nhỏ hơn (có thể mất dữ liệu). Bạn cần sử dụng toán tử ép kiểu
(kieu_du_lieu)
để thực hiện ép kiểu tường minh.double x = 3.14; int y = (int) x; // double -> int (ép kiểu tường minh) (y = 3)
Lưu ý:
- Bạn cần cẩn thận khi ép kiểu tường minh, vì có thể mất dữ liệu.
- Không phải lúc nào bạn cũng có thể ép kiểu dữ liệu một cách tùy ý.
Nhập Dữ Liệu Từ Người Dùng ⌨️
Để nhập dữ liệu từ người dùng trong Java, bạn có thể sử dụng class Scanner
:
import java.util.Scanner; public class InputExample { public static void main(String[] args) { Scanner input = new Scanner(System.in); System.out.print("Nhập tên của bạn: "); String name = input.nextLine(); // Đọc một dòng văn bản System.out.print("Nhập tuổi của bạn: "); int age = input.nextInt(); // Đọc một số nguyên System.out.println("Chào bạn, " + name + "! Bạn " + age + " tuổi."); input.close(); // Đóng Scanner để giải phóng tài nguyên }
}
Lưu ý:
- Bạn cần import class
Scanner
từ packagejava.util
. - Bạn cần đóng
Scanner
sau khi sử dụng xong để giải phóng tài nguyên. - Có nhiều phương thức khác nhau để đọc dữ liệu từ
Scanner
(ví dụ:nextDouble()
,nextBoolean()
,...).
Kết luận:
Trong bài viết này, chúng ta đã tìm hiểu về biến và các kiểu dữ liệu cơ bản trong Java. Nắm vững kiến thức này sẽ giúp bạn xây dựng các chương trình Java phức tạp hơn.
Trong bài viết tiếp theo, chúng ta sẽ cùng nhau tìm hiểu về các toán tử trong Java.
Bạn đã tạo các biến với các kiểu dữ liệu khác nhau chưa? Hãy chia sẻ với chúng tôi trong phần bình luận! Bạn có câu hỏi nào về biến và kiểu dữ liệu không?