Java: Kiểu dữ liệu
Giải phóng thời gian, khai phóng năng lực
Ta biết rằng mục đích của việc viết các chương trình máy tính là để giải quyết các bài toán trong thực tế. Mà các bài toán trong thực tế thì có rất nhiều các kiểu thông tin khác nhau. Vậy làm thế nào để biểu diễn được thông tin của các bài toán trong thực tế? Rõ ràng là bất cứ một ngôn ngữ lập trình nào cũng phải xây dựng nên các kiểu dữ liệu tương ứng để biểu diễn các thông tin đó. Trong Java có các kiểu dữ liệu cơ sở sau:
Kiểu dữ liệu nguyên thủy (Primitive type)
1. Kiểu dữ liệu nguyên
Kiểu dữ liệu nguyên là kiểu dữ liệu chỉ dùng để lưa chữ các số nguyên. Ta không được phép sử dụng nó để lưa các thông tin khác. Trong Java có 4 kiễu dữ liệu nguyên:
- byte: kiểu này được cấp phát vùng nhớ 8 bit, dùng để lưu trữ các số nguyên nhỏ từ -128 đến 127. Nó hữu dụng khi làm việc với luồng dữ liệu từ một mạng hoặc một file. Kiểu dữ liệu này cũng rất hữu dụng khi làm việc với dữ liệu dạng nhị phân dạng thô mà có thể không tương thích với các kiểu dữ liệu khác của Java.
- short: Kiểu dữ liệu này ít được sử dụng nhất. Nó được cấp phát vùng nhớ 16 bit và chủ yếu áp dụng cho các máy tính 16 bit.
- int: Ngược vói kiểu short, kiểu int lại là kiểu dữ liệu được sử dụng phổ biến nhất bởi tính linh hoạt và hiệu quả của nó. Nó được cấp phát một vùng nhớ 32 bit, vì thế miền giá trị của nó là rất lớn. Kiểu int có thể được dùng để lưu trữ tổng số tiền lương được trả cho tất cả các nhân viên của một công ty.
- long: Kiểu này được sử dụng đến trong trường hợp dữ liệu là các số nguyên rất lớn mà kiểu int không thể lưu trữ được, vì nó được cấp phát một vùng nhớ tới 64 bit, ví dụ như dân số của thế giới, GDP của một quốc gia (Việt Nam chẳng hạn).
Ở đây, nếu bạn quan tâm một chút, bạn sẽ hỏi là vì sao Java tạo ra nhiều kiểu dữ liệu nguyên đến thế? Vì sao Java không sử dụng chỉ một kiểu như kiểu long chẳng hạn cho dễ học?
Câu trả lời là nằm ở chỗ thông tin về các bài toán trong thực tế rất đa dạng. Có những thông tin là những số nguyên nhỏ (điểm môn hoc, ngày tháng, ...), lại có những thông tin là những số rất lớn (tiền chẳng hạn). Vì vậy việc Java tạo ra nhiều kiểu dữ liệu như vậy là để phù hợp với sự đa dạng của các thông tin trong các bài toán thực tế.
2. Kiểu dữ liệu thực
Đây là kiểu dữ liệu được dùng để lưu trữ các số thực. Trong Java có 2 kiểu dữ liệu thực:
Kiểu |
Kích thước |
Giải giá trị |
float |
32 bits |
Từ -3.40292347E+38 đến 3.40292347E+38 |
double |
64 bits |
Từ -1.79799312486231570 E+308 đến 1.79799312486231570 E+308 |
3. Kiểu dữ liệu char
char là kiểu dữ liệu dùng để lưu trữ các ký tự, mỗi biến kiểu char sẽ có giá trị là một ký tự Unicode có kích thước là 16 bit từ ‘\u0000’ đến ‘\uFFFF’.
4. Kiểu dữ liệu boolean
boolean là kiểu dữ liệu chỉ lưu 2 giá trị là true và false. Mỗi biến kiểu boolean có kích thức là một bit. Vì vậy ta không thể chuyển kiểu dữ liệu boolean sang kiểu int và ngược lại như ở trong C.
5. Kiểu String
Cùng với những kiểu dữ liệu nguyên thủy ở trên, Java cũng hỗ trợ dữ liệu dạng chuỗi. Một chuỗi là một dãy các ký tự. Tuy nhiên, Java không hỗ trợ kiểu dữ liệu nguyên thủy để lưu trữ các chuỗi, thay vào đó nó cung cấp một lớp có tên String để tạo biến chuỗi. Lớp String thuộc gói java.lang trong Java SE API. Câu lệnh sau đây sử dụng lớp String như một kiểu dữ liệu nguyên thủy:
String str = "Ngon ngu lap trinh Java";
Biến str ở trên không phải là biến có kiểu nguyên thủy, mà nó là một đối tượng.
Đoạn mã sau minh họa việc sử dụng các kiểu dữ liệu trên.
public class EmployeeData {
public static void main(String[] args) {
// khai báo biến kiểu nguyên int
int empNumber;
// khai báo biến kiểu thực float
float salary;
// khai báo và khởi tạo giá trị cho biến kiểu double
double shareBalance = 456790.897;
// khai báo và khởi tạo giá trị cho biến kiểu ký tự
char gender = ‘M’;
// khai báo và khởi tạo giá trị cho biến kiểu boolean
boolean ownVehicle = false;
// khởi tạo giá trị cho các biến empNumber và salary
empNumber = 101;
salary = 6789.50f;
// in ra giá trị trong các biến
System.out.println("Employee Number: “ + empNumber);
System.out.println("Salary: " + salary);
System.out.println("Gender: " + gender);
System.out.println("Share Balance: " + shareBalance);
System.out.println("Owns vehicle: " + ownVehicle);
}
}
Lưu ý là kiểu dữ liệu thực float cần có hậu tố f đặt sau giá trị gán cho biến. Mặc định tất cả các giá trị thực đều có kiểu double trong Java. Các giá trị được gán cho các biến và được hiển thị bằng cách sử dụng hàm System.out.println().
Output của đoạn mã trên như sau:
Kiểu dữ liệu tham chiếu
Trong Java, các đối tượng và các mảng là các biến tham chiếu. Khi một đối tượng hay một mảng được tạo thì một vùng nhớ tương ứng được gán cho nó và địa chỉ của vùng nhớ này sẽ được lưu vào biến tham chiếu. Nói cách khác, kiểu dữ liệu tham chiếu là một địa chỉ của một đối tượng hay một mảng được tạo trong bộ nhớ.
Hình sau thể hiện các kiểu dữ liệu tham chiếu mà Java hỗ trợ.
Bảng sau đây liệt kê và mô tả ba kiểu dữ liệu tham chiếu trong Java.
Kiểu dữ liệu | Mô tả |
---|---|
Array | Là một tập hợp các phần tử (biến) có cùng kiểu dữ liệu. Ví dụ, tên của các sinh viên trong một lớp học có thể được lưu vào một mảng |
Class | Là sự đóng gói của các biến thể hiện và các phương thức thể hiện |
Interface | Là một kiểu lớp trong Java được dùng để thực thi thừa kế |
Giải phóng thời gian, khai phóng năng lực