int가 null인지 확인하는 방법


110

라는 개체가 Person있습니다.

여기에는 몇 가지 속성이 있습니다.

int id;
String name;

나는 같은 사람 객체를 설정합니다 Person p = new Person(1,"Joe");.

1.) 개체가 null이 아닌지 확인해야합니다. 다음식이 맞습니까?

if (person == null){
}

Or


if(person.equals(null))

2.) ID에 Int가 포함되어 있는지 알고 싶습니다.

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

그러나 자바는 그것을 허용하지 않습니다. 이 확인은 어떻게 할 수 있습니까?


10
자바뿐만 아니라. 기본 유형은 어디에서나 null 일 수 없습니다.
Rohit Jain

2
예,의 기본값 int0?
sharon Hwk

1
@sharon. 예, 0입니다. 따라서 0대신 검사를 수행 할 수 있습니다 . null 검사를 수행하려는 경우. 이를 위해 정수 래퍼를 사용하십시오.
Rohit Jain

3
정수를 실제 숫자로 사용하지 않기 때문에 식별 코드를 나타내는 데 int를 사용하는 것이 항상 좋은 생각은 아닙니다. 대신 문자열 사용을 고려하십시오.
뱀장어의 호버 전체

답변:


184

An int은 null 0이 아니며 초기화되지 않은 경우 일 수 있습니다 .

정수가 null이 될 수 있도록하려면 Integer대신 을 사용해야 합니다 int.

Integer id;
String name;

public Integer getId() { return id; }

문 외에는 if(person.equals(null))true 일 수 없습니다. if person가 null이면 a NullPointerException가 발생하기 때문입니다. 그래서 올바른 표현은if (person == null)


@sharonHwk "person == null"이 더 나은 옵션이어야합니다. person이 null이면 "equal"메서드가없는 다음 "person.equals (null)"이 발생합니다.
CodingFanSteve

"int는 null이 아닙니다. 초기화되지 않은 경우 0 일 수 있습니다." 100 % 맞지 않습니다. int as local 변수는 초기화되지 않습니다.
Emerica

물론, 로컬 변수는 초기화를 해제 할 수없고 유효하지 않은 코드이며 Java는 사양에 선언 된대로이를 허용하지 않습니다.
Alex

48

프리미티브에는 널값이 없습니다. int의 기본값은 0입니다.

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

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

개체의 기본값은 null입니다.

문자열 (또는 임의의 개체) ---> null

1.) 개체가 null이 아닌지 확인해야합니다. 다음식이 맞습니까?

if (person == null){
}

위의 코드는 person이 null인지 확인합니다. 당신은해야합니다

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

if(person.equals(null))

위 코드는 person이 null 일 때 NullPointerException을 발생시킵니다.


감사합니다. 이것은 매우 유용합니다.
sharon Hwk

14

기본 요소 int는 널일 수 없습니다. null이 필요한 경우 Integer대신 사용하십시오.


3

1.) 개체가 null이 아닌지 확인해야합니다. 다음식이 맞습니까?

if (사람 == null) {}

. 이것이 object인지 확인하는 방법입니다 null.

2.) ID에 Int가 포함되어 있는지 알고 싶습니다.

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

NO 때문에 id원시적으로 정의된다 int, 그것은 기본으로 초기화 될 것입니다 0그리고 그것은 결코 것입니다 null. 기본 유형이 널인 경우 확인할 필요가 없습니다. 그들은 null이 될 수 없습니다. 당신이 원하는 경우 기본 값과 비교할 수 있습니다 0if(person.getId()==0){}.


0

수업 속성에 액세스해야합니다.

속성에 액세스하려면 다음을 수행해야합니다.

person.id
person.name

어디

사람

Person 클래스의 인스턴스입니다.

속성에 액세스 할 수 있으면이 작업을 수행 할 수 있고 그렇지 않은 경우 setter와 getter를 사용해야합니다.


@RohitJain 나는 그것이 id가 "null"인지 알고 싶다면 person == nul을 묻는 것이 맞지 않다고 말하는 것이 아닙니다. 때문에 ID가있는 int라는 사실에, 그는 ... 당신이 제안하는 방법에 물어 어차피
멜리-182

0

당신이 사용할 수있는

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

정기적 인 접근 외에

person.getId() == 0

0

Java에는 기본 데이터 유형에 대한 Null 값이 없습니다. Null을 확인해야하는 경우 기본 유형 대신 Integer Class를 사용하십시오. 데이터 유형 차이에 대해 걱정할 필요가 없습니다. Java는 int 기본 유형 데이터를 Integer로 변환합니다. 메모리에 대해 고려할 때 Integer는 int보다 더 많은 메모리를 사용합니다. 그러나 메모리 할당의 차이는 고려할 사항이 없습니다.

이 경우에는 int 대신 Inter를 사용해야합니다.

아래 스 니펫을 시도하고 자세한 정보는 예제를 참조하십시오.

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

또한 아래와 같이 Null을 할당 할 수 있습니다.

val = null;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.