Tôi đã trải qua một thử nghiệm trên itester.org và tìm thấy một câu hỏi mà tôi không hiểu:Tại sao biến Integer được gán null theo mặc định?
public class Runner
{
public static Integer i;
public static void main(String[] args)
{
if (i == 42) {
System.out.printf("wow");
}
}
}
tôi đọc trước đây, rằng biến số nguyên được gán theo mặc định 0
. Tại sao nó được gán null
ở đây?
Bởi vì nó không phải là một nguyên thủy, nhưng là một đối tượng. Giá trị mặc định cho một đối tượng là null. Khi bạn đang làm 'i == 42', nó cố gắng unbox giá trị int trong' i' nhưng vì 'i' là null, bạn nhận được một NPE. –
Gotta yêu Java - nó làm cho * rất nhiều ý nghĩa rằng int và Integer là các kiểu dữ liệu khác nhau. – Craig