Java data type (kiểu dữ liệu trong Java) là cách để xác định kiểu giá trị mà một biến có thể lưu trữ và những thao tác có thể thực hiện trên biến đó. Kiểu dữ liệu giúp trình biên dịch hiểu được cách lưu trữ dữ liệu trong bộ nhớ và thực hiện các phép tính trên dữ liệu.
Java cung cấp hai loại kiểu dữ liệu chính:
1. Kiểu dữ liệu nguyên thủy (Primitive Data Types)
Đây là các kiểu cơ bản nhất và được định nghĩa sẵn bởi ngôn ngữ.
- byte: Số nguyên 8-bit (-128 đến 127)
- short: Số nguyên 16-bit (-32,768 đến 32,767)
- int: Số nguyên 32-bit (-2^31 đến 2^31-1)
- long: Số nguyên 64-bit (-2^63 đến 2^63-1)
- float: Số thực dấu phẩy động 32-bit
- double: Số thực dấu phẩy động 64-bit
- char: Ký tự Unicode 16-bit
- boolean: Giá trị đúng hoặc sai (true hoặc false)
2. Kiểu dữ liệu tham chiếu/đối tượng (Reference/Object Data Types)
Đây là các đối tượng và có thể lưu trữ dữ liệu phức tạp hơn. Chúng tham chiếu đến các đối tượng trong bộ nhớ.
- String: Đại diện cho một chuỗi ký tự
- Arrays: Tập hợp các biến cùng loại
- Classes: Kiểu dữ liệu do người dùng định nghĩa để lưu trữ đối tượng
- Interfaces: Kiểu trừu tượng được dùng để định nghĩa giao kèo cho các lớp
- Enums: Đại diện cho một tập hợp các hằng số cố định
- Collections (List, Set, Map, v.v.): Các cấu trúc dữ liệu nâng cao hơn để quản lý nhóm đối tượng
3. Các loại từ khóa cần ghi nhớ trong Java
- Từ khóa
static
trong Java chủ yếu được sử dụng để quản lý bộ nhớ. Chúng ta có thể áp dụng từ khóastatic
với các biến, phương thức, khối và lớp lồng nhau. Từ khóastatic
thuộc về lớp hơn là một thể hiện của lớp. - Có thể sử dụng rất nhiều từ khóa
this
trong Java. Trong Java,this
là biến tham chiếu tham chiếu đến đối tượng hiện tại.
4. Câu hỏi phỏng vấn Java Data Types
1. Java có bao nhiêu kiểu dữ liệu nguyên thủy? Kể tên các kiểu đó.
Trả lời: Java có 8 kiểu dữ liệu nguyên thủy: byte
, short
, int
, long
, float
, double
, char
, boolean
.
2. Sự khác biệt giữa int và Integer trong Java là gì?
Trả lời: int là kiểu dữ liệu nguyên thủy, trong khi Integer
là một lớp bao (wrapper class) đại diện cho kiểu dữ liệu nguyên thủy int dưới dạng một đối tượng. Integer
cung cấp các phương thức hữu ích như so sánh, chuyển đổi thành chuỗi, và xử lý dữ liệu dạng số trong các cấu trúc như Collections.
3. Kiểu dữ liệu float và double khác nhau như thế nào?
Trả lời: Cả float
và double đều là kiểu dữ liệu dấu phẩy động, nhưng float
có độ chính xác 32-bit, còn double có độ chính xác 64-bit. float
thích hợp cho các tính toán cần ít bộ nhớ, trong khi double
cho kết quả chính xác hơn khi xử lý các số thập phân lớn.
4. Khi nào nên dùng float thay vì double trong Java?
Trả lời: Dùng float
khi cần tiết kiệm bộ nhớ và độ chính xác 32-bit là đủ. Còn dùng double khi yêu cầu độ chính xác cao hơn trong các tính toán, chẳng hạn khi xử lý các con số khoa học hoặc tài chính.
5. String là kiểu dữ liệu nguyên thủy hay kiểu dữ liệu tham chiếu?
Trả lời: String
là kiểu dữ liệu tham chiếu. Mặc dù nó được dùng thường xuyên như kiểu nguyên thủy, nhưng thực chất nó là một lớp trong Java.
6. char và String khác nhau như thế nào?
Trả lời: char là kiểu nguyên thủy đại diện cho một ký tự Unicode
duy nhất, trong khi String
là một lớp đại diện cho một chuỗi các ký tự.
7. Kiểu dữ liệu boolean có thể có giá trị gì?
Trả lời: Kiểu dữ liệu boolean
chỉ có thể có hai giá trị: true
hoặc false
.
8. Sự khác biệt giữa các kiểu dữ liệu nguyên thủy và kiểu dữ liệu tham chiếu trong Java là gì?
Trả lời:
- Kiểu dữ liệu nguyên thủy lưu trữ giá trị trực tiếp và có kích thước cố định (ví dụ: int,
boolean
,char
). - Kiểu dữ liệu tham chiếu lưu trữ địa chỉ của đối tượng trong bộ nhớ (ví dụ:
String
,Array
,Class
).
9. Tại sao Java có kiểu dữ liệu nguyên thủy và kiểu dữ liệu tham chiếu?
Trả lời: Java có kiểu dữ liệu nguyên thủy để tăng hiệu suất và giảm yêu cầu bộ nhớ cho các thao tác cơ bản. Kiểu dữ liệu tham chiếu được sử dụng để quản lý các đối tượng phức tạp, tạo ra các cấu trúc dữ liệu mạnh mẽ và linh hoạt.
10. Giải thích sự khác biệt giữa ==
và equals()
khi so sánh hai biến kiểu dữ liệu tham chiếu.
Trả lời: Toán tử ==
so sánh địa chỉ bộ nhớ (tham chiếu) của hai đối tượng, trong khi phương thức equals()
so sánh giá trị thực sự của hai đối tượng (chẳng hạn nội dung chuỗi trong trường hợp String
).
11. Làm thế nào để chuyển đổi từ kiểu dữ liệu int sang String trong Java?
Trả lời: Bạn có thể chuyển đổi từ int sang String bằng cách sử dụng:
-
String.valueOf(intVariable)
- Hoặc sử dụng toán tử cộng chuỗi:
intVariable + ""
.
12. Có thể lưu trữ giá trị số lớn hơn phạm vi của kiểu dữ liệu int không?
Trả lời: Có, bạn có thể sử dụng kiểu dữ liệu long để lưu trữ các giá trị số lớn hơn phạm vi của int
. Thêm hậu tố L
vào giá trị số nếu cần khai báo trực tiếp (ví dụ: long largeNumber = 100000L;
).