Cách kiểm tra xem int có phải là null hay không


110

Tôi có một đối tượng được gọi là Person.

nó có một số thuộc tính trong đó;

int id;
String name;

tôi đặt một đối tượng người như thế nào Person p = new Person(1,"Joe");.

1.) Tôi cần kiểm tra xem đối tượng có phải không; Biểu thức sau có đúng không;

if (person == null){
}

Or


if(person.equals(null))

2.) Tôi cần biết liệu ID có chứa Int.

if(person.getId()==null){} 

Nhưng, java không cho phép nó. Làm thế nào tôi có thể thực hiện kiểm tra này?


10
Không chỉ Java. Một kiểu nguyên thủy không thể rỗng ở bất kỳ đâu.
Rohit Jain

2
vâng, giá trị mặc định của an int0?
sharon Hwk

1
@sharon. Có, nó là 0. Vì vậy, bạn có thể thực hiện kiểm tra 0thay thế. Nếu bạn muốn kiểm tra null. Sử dụng trình bao bọc số nguyên cho điều đó.
Rohit Jain

3
Không phải lúc nào bạn cũng nên sử dụng số int để đại diện cho mã nhận dạng vì bạn không sử dụng nó như một số thực - bạn không thực hiện phép cộng, trừ hoặc các phép toán khác với nó. Thay vào đó, hãy cân nhắc sử dụng một Chuỗi.
Hovercraft Full Of Lươn

Câu trả lời:


184

An intkhông phải là null, nó có thể là0 nếu không được khởi tạo.

Nếu bạn muốn một số nguyên có thể là null, bạn cần sử dụng Integerthay vì int.

Integer id;
String name;

public Integer getId() { return id; }

Bên cạnh đó, câu lệnh if(person.equals(null))không thể là true, bởi vì nếu personlà null, thì a NullPointerExceptionsẽ được ném ra. Vì vậy, biểu thức đúng làif (person == null)


@sharonHwk "person == null" nên là lựa chọn tốt hơn. Nếu person là null, nó sẽ không có phương thức "bằng", khi đó "person.equals (null)" sẽ ném.
CodingFanSteve

"Một int không phải là null, nó có thể là 0 nếu không được khởi tạo." điều đó không đúng 100%, một int làm biến cục bộ sẽ không được khởi tạo.
Emerica

Tất nhiên, đối với biến cục bộ không thể được khởi tạo, đó là mã không hợp lệ, Java sẽ không cho phép nó, như đã khai báo trong đặc tả của nó.
Alex

48

số nguyên thủy không có giá trị null. mặc định có cho một int là 0.

if(person.getId()==0){}

Giá trị mặc định cho các nguyên thủy trong java:

Data Type   Default Value (for fields)

byte                0
short               0
int                 0
long            0L
float           0.0f
double          0.0d
char            '\u0000'
boolean         false

Các đối tượng có giá trị mặc định là null.

Chuỗi (hoặc bất kỳ đối tượng nào) ---> null

1.) Tôi cần kiểm tra xem đối tượng có phải không; Biểu thức sau có đúng không;

if (person == null){
}

đoạn mã trên sẽ kiểm tra xem người đó có trống không. Bạn cần phải làm

if (person != null){ // checks if person is not null
}

if(person.equals(null))

Đoạn mã trên sẽ ném NullPointerException khi người đó là null.


Cảm ơn bạn, điều này rất hữu ích.
sharon Hwk

14

Một nguyên thủy intkhông được rỗng. Nếu bạn cần null, hãy sử dụng Integerthay thế.


3

1.) Tôi cần kiểm tra xem đối tượng có phải không; Biểu thức sau có đúng không;

if (người == null) {}

. Đây là cách bạn kiểm tra xem có phải là đối tượng hay không null.

2.) Tôi cần biết liệu ID có chứa Int.

if (person.getId () == null) {}

KHÔNGidđược định nghĩa là nguyên thủy int, nó sẽ được khởi tạo mặc định bằng 0và sẽ không bao giờ như vậy null. Không cần phải kiểm tra các kiểu nguyên thủy, nếu chúng là null. Chúng sẽ không bao giờ rỗng. Nếu muốn, bạn có thể so sánh với giá trị mặc định 0if(person.getId()==0){}.


0

Bạn phải truy cập vào các thuộc tính của lớp học của bạn.

Để truy cập vào nó thuộc tính, bạn phải làm:

person.id
person.name

Ở đâu

người

là một thể hiện của lớp Person của bạn.

Điều này có thể được thực hiện nếu các attibutes có thể được truy cập, nếu không, bạn phải sử dụng setters và getters ...


@RohitJain Tôi không nói điều đó, tôi nói điều đó là không chính xác khi yêu cầu người đó == nul nếu anh ta muốn biết id là "null". Do thực tế là id là một int, ông không thể hỏi theo cách bạn đang đề xuất ...
Melli-182

0

Bạn có thể dùng

if (person == null || String.valueOf(person.getId() == null)) 

ngoài cách tiếp cận thông thường

person.getId() == 0

0

Trong Java không có giá trị Null cho các kiểu Dữ liệu nguyên thủy. Nếu bạn cần kiểm tra Null, hãy sử dụng Integer Class thay vì kiểu nguyên thủy. Bạn không cần phải lo lắng về sự khác biệt kiểu dữ liệu. Java chuyển đổi dữ liệu kiểu nguyên thủy int thành Integer. Khi liên quan đến bộ nhớ Integer chiếm nhiều bộ nhớ hơn int. Nhưng sự khác biệt của phân bổ bộ nhớ, không có gì được xem xét.

Trong trường hợp này, bạn phải sử dụng Inter thay vì int

Hãy thử đoạn mã dưới đây và xem ví dụ để biết thêm thông tin,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

if (val != null){
System.out.println("value is not null");
}

`

Ngoài ra, bạn có thể gán Null như bên dưới,

val = null;
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.