Mục Lục
Các loại kiểu dữ liệu
Trong java có hai loại kiểu dữ liệu: kiểu dữ liệu nguyên thủy (hay còn gọi là primitive) và kiểu dữ liệu tham chiếu (non-primitive)
Kiểu dữ liệu nguyên thủy
- Một kiểu dữ liệu nguyên thủy trực tiếp giữ một giá trị trong bộ nhớ. Ví dụ, một số hoặc một ký tự
- Các kiểu dữ liệu nguyên thủy không phải là đối tượng, cũng như không có tham chiếu đến đối tượng
Kiểu dữ liệu | Mô tả | Giá trị mặc định | Kích thước |
---|---|---|---|
boolean | giá trị nhị phân của true hoặc false | false | 1 bit |
char | bất kì kí tự unicode nào | \u0000 (kí tự rỗng) | kí tự unicode 16 bit |
byte | giá trị từ -128 tới 127 | 0 | giá trị có 8 bit |
short | giá trị từ -32768 đến 32767 | 0 | giá trị có 16 bit |
int | Giá trị từ -231 đến 2 31 -1 | 0 | giá trị có 32 bit |
long | Giá trị từ -2 63 đến 2 63 -1 | 0 | giá trị có 64 bit |
float | IEEE 754 | 0,0 | giá trị dấu phẩy động 32 bit |
double | IEEE 754 | 0,0 | giá trị dấu phẩy động 64 bit |
Kiểu dữ liệu tham chiếu (non-primitive)
Một kiểu dữ liệu tham chiếu giữ tham chiếu đến một đối tượng trong bộ nhớ. Sử dụng tham chiếu được lưu trữ trong biến, ta có thể truy cập các thuộc tính và phương thức của đối tượng được tham chiếu.
Nhiều biến có thể tham chiếu đến cùng một đối tượng thế nên chúng ta có thể gán tham chiếu của một đối tượng được lưu trữ trong một biến tham chiếu cho một biến tham chiếu khác, kiểu như bên dưới:
String strA;
String strB;
// Gán tham chiếu strA cho đối tượng String có giá trị là "Hello"
strA = new String( "Hello" );
// Gán tham chiếu strB bằng strA
strB = strA;
System.out.println( strA ); //Hello
System.out.println( strB ); //Hello
Có một hằng số tham chiếu là null được gán cho bất kì biến tham chiếu nào, nếu null được gán cho một biến tham chiếu thì đồng nghĩa là biến đó không được tham chiếu đến đối tượng nào trong bộ nhớ.
Các lớp Wrapper Classes
Lớp Wrapper Classes là một lớp có đối tượng bao bọc hoặc chứa kiểu dữ liệu nguyên thủy . Nói cách khác, chúng ta có thể bọc một giá trị nguyên thủy vào một lớp wrapper.
Kiểu nguyên thủy | Wrapper Classes |
---|---|
boolean | Boolean |
char | Char |
byte | Byte |
short | Short |
int | Int |
long | Long |
float | Float |
double | Double |
Sự khác biệt giữa kiểu nguyên thủy và không nguyên thủy
- kiểu nguyên thủy lưu trữ trực tiếp các giá trị, kiểu tham chiếu lưu trữ các biến tham chiếu đến đối tượng trong bộ nhớ
- có 8 kiểu dữ liệu nguyên thủy cố định, trong java thì mỗi lớp là một kiểu dữ liệu bao gồm wrapper classes.
Sử dụng kiểu dữ liệu nào để đạt hiệu quả nhất?
- sử dụng biến nguyên thủy để khai báo cục bộ: trong hàm, trong vòng lặp, kết quả trung gian
- sử dụng các quy ước đặt tên biến theo chuẩn coding convention ở bài trước
- khi dữ liệu được chuyển đổi giữa các lớp hoặc phương thức, tốt hơn nên sử dụng các đối tượng vì chỉ có tham chiếu của chúng được sao chép (clone) và không có chi phí bộ nhớ nào
- khi xử lý các Collections nên sử dụng đối tượng
- khi gửi dữ liệu qua mạng, nên truyền kiểu dữ liệu đối tượng và cho nó implement interface Serializable
- sử dụng kích thước dữ liệu thích hợp, kiểu như dùng int để lưu biến kiểu boolean sẽ không hợp lý
- từ Java 1.7 trở lên thì sử dụng dấu gạch dưới để biểu thị số làm nó dễ đọc hơn (ví dụ: 100_000_000)
Xem thêm các bài viết liên quan dưới đây:
- Hướng dẫn cài đặt JDK 8 trên windows
- Phân biệt JDK JRE và JVM trong Java
- Bộ nhớ Heap và bộ nhớ Stack trong Java
- Quy ước đặt tên trong Java (Naming convention)
- Pass by value, Pass by reference trong java
- Từ khóa trong java và chức năng của nó (keywords)
- Kiểu dữ liệu trong java và tác dụng của nó
- Improve Java Performance: thủ thuật tối ưu [Phần 1]
- 13 Plugin không thể thiếu khi làm việc với IntellIJ IDEA
- Những plugins Intellij IDEA tốt nhất trong công việc
- Crack Intellij IDEA new versions 2021
- Crack IntellIJ để code như một senior
- Shortcut Intellij hữu ích để làm việc được hiệu quả hơn
- Build hệ thống Pub Sub dùng Hazelcast và Spring boot
- Build hệ thống Pub-Sub bằng Kafka+Spring boot (phần 3)
- Git stash giúp bạn trở nên chuyên nghiệp như thế nào?
- Git revert với git reset hoạt động như thế nào
- Active Jrebel để code trong IntellIJ IDEA
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 1)
- Tìm hiểu cơ chế hoạt động của Apache Kafka (phần 2)
- Elasticsearch là gì mà bá đạo đến vậy? [Phần 1]
- Cùng nhau tìm hiểu Docker
- Cài đặt Hazelcast trên server Centos 7
- Elasticsearch và Kibana dựng bằng Docker
- Lập trình viên lúc rảnh rỗi thì nên làm gì?
- Câu chuyện phỏng vấn online mùa Covid
- Nói sao để được chào đón, làm thế nào để được ghi nhận