{int == nulltype} против {Integer == nulltype} - PullRequest
0 голосов
/ 02 октября 2011

Почему Java жалуется на

// int i;
if( i == null ){  }

а не о

// Integer i;
if( i == null ){  }

Ответы [ 4 ]

6 голосов
/ 02 октября 2011

Поскольку Integer является ссылочным типом, а int - нет, то есть int не является указателем, он не может указывать ни на что.

2 голосов
/ 02 октября 2011

int (тип примитива) не может быть нулем

1 голос
/ 02 октября 2011

Потому что int - это тип значения, и он не может быть нулевым - это сам объект. Целое число, с другой стороны, является ссылочным типом и может быть нулевым или содержать ссылку на объект.

1 голос
/ 02 октября 2011

Поскольку int является примитивным типом, а Integer - его классом-оболочкой.

Иначе говоря, int - это тип значения (и поэтому не может быть null), в то время как Integer является ссылочным типом (и поэтому может быть null).

В Java каждый тип примитива (например, boolean, doubleили char) является типом значения.Поскольку примитивные типы не наследуются от Object, предлагается набор «классов-оболочек» (Boolean, Double, Character и многие другие), когда такое поведение необходимо (например, помещая ихв контейнерах или используя их в качестве параметров универсального типа).

В результате примитивные типы действительно являются гражданами второго сорта в Java.

...