Как проверить, является ли int нулевым

111

У меня есть объект под названием 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. Примитивный тип нигде не может быть нулевым.
Рохит Джайн
2
да, значение по умолчанию intэто 0?
Sharon Hwk 06
1
@sharon. Да, это 0. Итак, вы можете выполнить проверку с помощью 0. Если вы хотите выполнить нулевую проверку. Используйте для этого целочисленную оболочку.
Рохит Джайн
3
Не всегда рекомендуется использовать int для представления идентификационного кода, поскольку вы не используете его как истинное число - вы не выполняете с ним сложение, вычитание или другие математические операции. Вместо этого рассмотрите возможность использования String.
Судно на воздушной подушке Full Of Eels

Ответы:

186

An intне является нулем, может быть, 0если не инициализирован.

Если вы хотите, чтобы целое число могло быть нулевым, вам нужно использовать Integerвместо int.

Integer id;
String name;

public Integer getId() { return id; }

Кроме того, утверждение if(person.equals(null))не может быть истинным, потому что, если оно personравно нулю, NullPointerExceptionбудет брошено a . Итак, правильное выражениеif (person == null)

Alex
источник
@sharonHwk "person == null" должен быть лучшим вариантом. Если person имеет значение null, у него не будет метода «equal», тогда будет выбрано «person.equals (null)».
CodingFanSteve 09
«Тип int не равен нулю, он может быть равен 0, если не инициализирован». это не на 100% правильно, int как локальная переменная не будет инициализирована.
Emerica
Конечно, локальную переменную нельзя неинициализировать, это недопустимый код, Java не разрешит этого, как указано в ее спецификации.
Алекс,
49

примитивы не имеют нулевого значения. по умолчанию для 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.) Мне нужно проверить, не является ли объект нулевым; Правильно ли следующее выражение;

if (person == null){
}

приведенный выше фрагмент кода проверяет, является ли человек нулевым. тебе нужно сделать

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

и

if(person.equals(null))

Приведенный выше код вызовет исключение NullPointerException, если значение person равно null.

PermGenError
источник
Спасибо, это очень полезно.
Sharon Hwk 06
14

Примитив intне может быть нулевым. Если вам нужен null, используйте Integerвместо него.

Zutty
источник
3

1.) Мне нужно проверить, не является ли объект нулевым; Правильно ли следующее выражение;

if (person == null) {}

ДА . Вот как вы проверяете, есть ли объект null.

2.) Мне нужно знать, содержит ли идентификатор Int.

если (person.getId () == null) {}

НЕТ Поскольку idон определен как примитив int, он будет инициализирован по умолчанию 0и никогда не будет null. Нет необходимости проверять примитивные типы, если они нулевые. Они никогда не будут нулевыми. Если хотите, можете сравнить со значением по умолчанию 0как if(person.getId()==0){}.

Йогендра Сингх
источник
0

У вас должен быть доступ к атрибутам вашего класса.

Чтобы получить доступ к его атрибутам, вам необходимо:

person.id
person.name

где

человек

является экземпляром вашего класса Person.

Это можно сделать, если к атрибутам можно получить доступ, в противном случае вы должны использовать сеттеры и геттеры ...

Мелли-182
источник
@RohitJain, я не говорю этого, я говорю, что неправильно спрашивать person == nul, если он хочет знать, является ли идентификатор "нулевым". Из-за того, что 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. А вот разницу в распределении памяти учитывать нечего.

В этом случае вы должны использовать Inter вместо int

Попробуйте фрагмент ниже и посмотрите пример для получения дополнительной информации,

Integer id;
String name;

//Refer this example
    Integer val = 0;

`

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

`

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

val = null;
Чамира В. Ашан
источник