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

У меня есть объект под названием 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 этого не позволяет. Как я могу выполнить эту проверку?


person sharon Hwk    schedule 06.12.2012    source источник
comment
Не только Java. Примитивный тип нигде не может быть нулевым.   -  person Rohit Jain    schedule 06.12.2012
comment
да, значение по умолчанию для int - 0?   -  person sharon Hwk    schedule 06.12.2012
comment
@sharon. Да, это 0. Итак, вы можете выполнить проверку с помощью 0. Если вы хотите выполнить нулевую проверку. Используйте для этого целочисленную оболочку.   -  person Rohit Jain    schedule 06.12.2012
comment
Не всегда рекомендуется использовать int для представления идентификационного кода, поскольку вы не используете его как истинное число - вы не выполняете с ним ни сложения, ни вычитания, ни других математических операций. Вместо этого рассмотрите возможность использования String.   -  person Hovercraft Full Of Eels    schedule 06.12.2012


Ответы (7)


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

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

Integer id;
String name;

public Integer getId() { return id; }

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

person Alex    schedule 06.12.2012
comment
@sharonHwk person == null должен быть лучшим вариантом. Если person имеет значение null, у него не будет равного метода, тогда будет выбрано person.equals (null). - person CodingFanSteve; 09.03.2019
comment
Тип int не равен нулю, может быть равен 0, если не инициализирован. это не на 100% правильно, int как локальная переменная не будет инициализирована. - person Emerica; 22.05.2019
comment
Конечно, локальную переменную нельзя неинициализировать, это недопустимый код, Java не разрешит этого, как заявлено в ее спецификации. - person Alex; 08.03.2020

примитивы не имеют нулевого значения. по умолчанию для 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.

person PermGenError    schedule 06.12.2012

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

person Zutty    schedule 06.12.2012

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

if (person == null) {}

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

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

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

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

person Yogendra Singh    schedule 06.12.2012

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

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

person.id
person.name

куда

человек

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

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

person melli-182    schedule 06.12.2012
comment
@RohitJain, я не говорю об этом, я говорю, что неправильно спрашивать person == nul, если он хочет знать, равен ли идентификатор нулю. Из-за того, что id - это int, он не может спрашивать так, как вы предлагаете ... - person melli-182; 06.12.2012

В Java нет нулевых значений для примитивных типов данных. Если вам нужно установить флажок 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;
person Chameera W. Ashan    schedule 24.09.2019

Вы можете использовать

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

в дополнение к обычному подходу

person.getId() == 0
person evilcoder    schedule 14.12.2015