Як перевірити, чи є int нулем


110

У мене об’єкт називається Person .

у неї є кілька атрибутів;

int id;
String name;

я встановлюю людині такий предмет Person p = new Person(1,"Joe");.

1.) мені потрібно перевірити, чи об’єкт недійсний; Чи правильний наступний вираз;

if (person == null){
}

Or


if(person.equals(null))

2.) Мені потрібно знати, чи містить ідентифікатор Int.

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

Але, Java не дозволяє цього. Як я можу зробити цю перевірку?


10
Не тільки Java. Примітивний тип нікуди не може бути нульовим.
Rohit Jain

2
так, значення за замовчуванням intє 0?
sharon Hwk

1
@sharon. Так, це 0. Отже, ви можете зробити перевірку 0замість цього. Якщо ви хочете зробити нульову перевірку. Для цього використовуйте обгортку Integer.
Rohit Jain

3
Не завжди корисно використовувати int для представлення ідентифікаційного коду, оскільки ви не використовуєте його як справжнє число - ви не робите з ним додавання, не віднімання чи інших математичних операцій. Спробуйте використовувати замість рядка.
Hovercraft Full Of Eels

Відповіді:


184

Не intє нульовим, воно може бути, 0якщо не ініціалізовано.

Якщо ви хочете, щоб ціле число могло бути нульовим, вам потрібно використовувати Integerзамість int.

Integer id;
String name;

public Integer getId() { return id; }

Окрім того, твердження if(person.equals(null))не може бути істинним, тому що якщо воно personє нульовим, тоді NullPointerExceptionбуде викинуто а. Тож правильний вираз єif (person == null)


@sharonHwk "person == null" має бути кращим варіантом. Якщо людина недійсна, у неї не буде методу "рівних", тоді "person.equals (null)" кидає.
CodingFanSteve

"Int не є нульовим, він може бути 0, якщо не ініціалізований." це не на 100% правильно, int як локальна змінна не буде ініціалізована.
Емеріка

Звичайно, що для локальної змінної не можна неініціалізувати, це недійсний код, Java не дозволить цього, як заявлено в його специфікації.
Олексій

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

1.) мені потрібно перевірити, чи об’єкт недійсний; Чи правильний наступний вираз;

if (person == null){
}

вищевказаний фрагмент коду перевіряє, чи людина недійсна. вам потрібно зробити

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

і

if(person.equals(null))

Вищевказаний код кидає NullPointerException, коли людина недійсний.


Дякую, це дуже корисно.
sharon Hwk

14

Примітив intне може бути нульовим. Якщо вам потрібен null, використовуйте Integerзамість цього.


3

1.) мені потрібно перевірити, чи об’єкт недійсний; Чи правильний наступний вираз;

if (person == null) {}

YES . Так ви перевіряєте, чи є об’єкт null.

2.) Мені потрібно знати, чи містить ідентифікатор Int.

якщо (person.getId () == null) {}

Ні Оскільки idвін визначений як примітивний int, він буде ініціалізований за замовчуванням, 0і він ніколи не буде null. Не потрібно перевіряти примітивні типи, якщо вони є недійсними. Вони ніколи не будуть нульовими. Якщо ви хочете, ви можете порівняти значення за замовчуванням 0як if(person.getId()==0){}.


0

Ви повинні отримати доступ до своїх класів.

Щоб отримати доступ до нього, ви повинні:

person.id
person.name

де

особа

є екземпляром Особи вашого класу.

Це можна зробити, якщо доступ до аттибутів можна отримати, якщо ні, ви повинні використовувати сетери та геттери ...


@RohitJain Я не говорю про це, кажу, що це неправильно запитувати людину == нуль, якщо він хоче знати, чи ідентифікатор "недійсний". Через те, що id - це int, він не може запитати так, як ви пропонуєте ...
melli-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

Спробуйте нижче фрагмент і подивіться приклад для отримання додаткової інформації,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

Також ви можете призначити Null як нижче,

val = null;
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.