Sự khác nhau giữa int và Integer
Thường thì, khi làm việc với Number, chúng ta sử dụng các kiểu dữ liệu gốc như byte, int, long, double, …
Tuy nhiên, khi mở rộng, chúng ta cũng gặp các tình huống mà chúng ta cần sử dụng các đối tượng thay cho các kiểu dữ liệu gốc. Để thực hiện điều này, Java cung cấp các lớp wrapper (lớp bọc) cho mỗi kiểu dữ liệu gốc.
Tất cả các lớp wrapper (Integer, Long, Byte, Double, Float, Short) là lớp phụ của lớp trừu tượng Number.
Sự bao bọc này được chăm sóc bởi bộ biên dịch, tiến trình này được gọi là boxing. Vì thế khi một kiểu dữ liệu gốc được sử dụng khi một đối tượng được yêu cầu, bộ biên dịch “đóng hộp” kiểu dữ liệu gốc trong lớp wrapper của nó. Tương tự, bộ biên dịch cũng “mở hộp” đối tượng thành một kiểu dữ liệu gốc. Number là một phần của java.lang package.
Dưới đây là ví dụ của box và unbox:
public class Test{
public static void main(String args[]){
Integer x = 5;
x = x + 10;
System.out.println(x);
}
}
=> 15
- Đến đoạn này em không hiểu là sự khác nhau giữa int và integer là gì nữa @@
- http://vietjack.com/java/number_trong_java.jsp mà trong này có đưa ra các phương thức thì e kh biết là có phải học hết hay không, các anh, bạn đi trước giúp với cảm ơn rất nhiều !
int, float, double, char, byte...
là kiểu dữ liệu thuần hay gọi chính xác làprimitive type
.Integer, Float, Double..
là class kế thừa từjava.lang.Object
.là 2 kiểu dữ liệu , int >>> kiểu nguyên thủy , Integer >>> kiểu tham chiếu , kiểu tham chiếu thì bạn có khởi tạo và dùng nó như 1 đối tượng có thuộc tính và hành vi , còn kiểu nguyên thủy đơn thuần chỉ dùng để khai báo các biến…và trong java nó cung cấp 1 kĩ thuật là autoboxing cho phép chuyển đổi qua lại giữa 2 kiểu này
Lớp Integer nó nhứ vầy:
public final class Integer extends Number implements Comparable {
private final int value;
//some method
}
nó bọc int lại.
Tại sao cần lớp Integer?
vd:
ArrayList array = new ArrayList<>();
array.add(1); // ở đây nó chuyển kiểu int thành Integer mới thêm vào ArrayList được;
còn vd của bạn:
Integer x =5;
x=x+10; // x là một object của lớp Integer, mà operator + thì không áp dụng được cho object Integer nên nó chuyển ngược lại từ Integer -> int
Cảm ơn các bác đã sp