Java DataStructures вопрос бокс / распаковка - PullRequest
0 голосов
/ 06 ноября 2018

Я готовлюсь к экзамену на структуры данных завтра и мне нужно знать, какие строки в следующем коде верны, а какие нет, и почему

Object  obj = new Integer(42);
Integer iObj = 43;
iObj = obj;

Ответы [ 3 ]

0 голосов
/ 06 ноября 2018

Ответ на ваш вопрос здесь:

 Object  obj = new Integer(42); //auto boxing  // true
 Integer iObj = 43; //direct intialization   //true
 iObj = obj  // false
 iObj = (Integer) obj; // manual boxing 

iObj = obj is false, поскольку obj является ссылкой на Object, а iObj имеет значение Interger. Object является родителем для всех, поэтому целочисленный тип iObj является дочерним для obj и, следовательно, false.

 In short, child can be auto- boxed to parent but the vice-versa is not possible
0 голосов
/ 06 ноября 2018

Все эти строки верны Сначала вы создаете целое число, а затем задаете значение этому целочисленному объекту. Эти строки кода абсолютно верны

0 голосов
/ 06 ноября 2018
HelloWorld.java:19: error: incompatible types: Object cannot be converted to Integer
        iObj = obj;
               ^
1 error

Вышеприведенный сбой не выполняется, поскольку типы времени компиляции iObj и obj не совпадают. Это подпись строго типизированных языков. Подобный код в Javascript будет работать нормально.

...