Các kiểu dữ liệu trong java
Trong java có 2 kiểu dữ liệu: Nguyên thủy ( Primitive Types) và tham chiếu (Reference Types)
Các kiểu dữ liệu nguyên thủy gồm:
- boolean
- char
- byte ( byte lưu từ -128->127)
- short
- int
- long
- float
- double
Hừm, nhìn chung các kiểu dữ liệu này khá là quen thuộc với chúng ta, chỉ có 1 lưu ý như sau:
float và double đều để lưu trữ giá trị thập phân, tuy nhiên float dùng 32 bít để lưu, double dùng 64 bit để lưu nên có độ chính xác cao hơn
nếu ta khai báo 1 biến thập phân trong java thì mặc định nó là kiểu double:
double d = 1.0;
float f1 = 1.9f;
float f1 = 1.9; --> error
Thêm 1 lưu ý là cả float và double đều không hiển thị 1 các chính xá giá trị. Nếu ta viết như sau thì sẽ thu lại được kết quả sai: System.out.println(2.0d - 1.1d); --> 0.8999999999999999
--> Khuyên dùng BigDecimal
BigDecimal b1 = new BigDecimal("2.0");
BigDecimal b2 = new BigDecimal("1.1");
System.out.println(b1.subtract(b2).floatValue());
Khi so sánh 2 biến dữ liệu nguyên thủy nó sẽ so sánh giá trị thực tế mà biến lưu trữ trong bộ nhớ
Kiểu dữ liệu tham chiếu
Kiểu dữ liệu tham chiếu để lưu các kiểu dữ liệu phức tạp hơn, ngoài ra nó còn để xử lý trường hợp NULL giá trị trong các Dto nhận từ frontend khi so sánh 2 giá trị thì nó sẽ so sánh địa chỉ ô nhớ mà biến trỏ đến. Cùng hiểu rõ qua ví dụ sau:
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_); --> true
Còn nếu so sánh dùng hàm equal và trong class student ta Override lại hàm equal như này thì ta sẽ thu được kết quả so sánh đúng nếu student cùng tên và tuổi:
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, nếu ta khai báo 2 biến tham chiếu bằng nhau --> chúng trỏ đến 1 vùng nhớ, thay đổi 1 trong 2 thì cả 2 sẽ thay đổi:
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
`
Ok, bài đầu đến đấy thôi, hẹn gặp lại các bạn trong các bài viết tiếp theo trong seri "gia va co" nhé 😁
All rights reserved