0
0
Lập trình
Admin Team
Admin Teamtechmely

Tìm Hiểu Các Kiểu Dữ Liệu Trong Java: Nguyên Thủy và Tham Chiếu

Đăng vào 4 ngày trước

• 3 phút đọc

Chủ đề:

java coredata type

Tìm Hiểu Các Kiểu Dữ Liệu Trong Java

Trong Java, các kiểu dữ liệu được chia thành hai loại chính: kiểu dữ liệu nguyên thủy (Primitive Types)kiểu dữ liệu tham chiếu (Reference Types).

1. Các Kiểu Dữ Liệu Nguyên Thủy

Các kiểu dữ liệu nguyên thủy bao gồm:

  • boolean: Kiểu dữ liệu chỉ có hai giá trị là true và false.
  • char: Kiểu dữ liệu lưu trữ một ký tự, được đại diện bởi 16 bit.
  • byte: Lưu trữ số nguyên từ -128 đến 127, chiếm 8 bit.
  • short: Lưu trữ số nguyên, chiếm 16 bit.
  • int: Kiểu số nguyên phổ biến nhất, chiếm 32 bit.
  • long: Lưu trữ số nguyên lớn hơn, chiếm 64 bit.
  • float: Lưu trữ giá trị số thực (thập phân), sử dụng 32 bit.
  • double: Lưu trữ giá trị số thực (thập phân) lớn hơn, sử dụng 64 bit.

Hãy lưu ý rằng, float và double đều được dùng để biểu diễn giá trị thập phân. Tuy nhiên, float sử dụng 32 bit trong khi double sử dụng 64 bit, do đó double có độ chính xác cao hơn. Khi khai báo biến thập phân trong Java, mặc định nó sẽ là kiểu double:

java Copy
    double d = 1.0;
    float f1 = 1.9f; // Đúng
    float f2 = 1.9; // Lỗi

Cả float và double đều có thể không hiển thị chính xác giá trị khi thực hiện các phép tính. Ví dụ:

java Copy
    System.out.println(2.0d - 1.1d); // Kết quả có thể là 0.8999999999999999

Vì vậy, khuyến khích người lập trình sử dụng BigDecimal để đảm bảo độ chính xác trong các phép toán với số thập phân:

java Copy
    BigDecimal b1 = new BigDecimal("2.0");
    BigDecimal b2 = new BigDecimal("1.1");
    System.out.println(b1.subtract(b2).floatValue());

Khi so sánh hai biến kiểu dữ liệu nguyên thủy, Java sẽ so sánh giá trị thực tế mà biến lưu trữ trong bộ nhớ.

2. Kiểu Dữ Liệu Tham Chiếu

Kiểu dữ liệu tham chiếu được dùng để lưu trữ các kiểu dữ liệu phức tạp hơn. Điều này cũng cho phép xử lý các giá trị NULL trong các DTO (Data Transfer Object) nhận từ frontend. Khi so sánh hai biến tham chiếu, Java sẽ so sánh địa chỉ ô nhớ mà biến trỏ đến. Hãy xem ví dụ sau:

java Copy
    Student student1 = new Student("Dat", 23);
    Student student1_ = new Student("Dat", 23);
    Student student2 = new Student("Thao", 21);
    System.out.println(student1 == student2); // false
    System.out.println(student1 == student1_); // false

Nếu sử dụng hàm equals, và trong lớp Student, ta ghi đè phương thức này để so sánh đúng tên và tuổi của sinh viên:

java Copy
    public boolean equals(Object obj) {
        if (obj.getClass() != Student.class) {
            return false;
        }
        Student student = (Student)obj;
        return this.name.equals(student.getName()) && this.age == student.getAge();
    }
    System.out.println(student1.equals(student1_)); // true
    System.out.println(student1.equals(student2)); // false

Khi khai báo hai biến tham chiếu giống nhau, chúng sẽ trỏ đến cùng một vùng nhớ. Nếu thay đổi một trong hai, cả hai đều sẽ thay đổi:

java Copy
    int[] arr1 = new int[]{1, 2};
    int[] arr2 = arr1; // redundant
    student2 = student1; // redundant
    arr1[0] = 2;
    System.out.println(arr2[0]); // 2
    System.out.println(student2.getName()); // Dat

Đến đây, bài viết về các kiểu dữ liệu trong Java đã kết thúc. Hẹn gặp lại các bạn trong các bài viết tiếp theo trong seri "Java Cơ Bản" nhé! 😊
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào