2012-04-20 4 views
1

Я просмотрел по всему Интернету, чтобы попытаться решить эту проблему. Может ли кто-нибудь ответить на это правильно и объяснить почему? Спасибо огромное!Какое из следующего верно для второго утверждения? (unboxing & autoboxing)

Посмотрите на следующий код.

Integer myNumber; 
myNumber = 5; 

Какое из следующего верно в отношении второго заявления?

  1. Оператор выполняет распаковка

  2. Оператор выполняет autowrapping.

  3. Заявление выполняет автобоксинг.

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

+0

Это домашнее задание? – Jeffrey

+1

Что такое autowrapping ?! – dfb

+2

@spinning_plate Не уверен в autowrapping, но авто-рэппинг - это когда бит-боксы JVM. Я сейчас уеду ... – corsiKa

ответ

5

Это будет считаться Autoboxing. Требуется значение int5 и помещает его в объект Integer.

Unboxing будет int myInt = myNumber, так как он присваивает Integerint. (Обратите внимание, что autoboxing - это противоположность unboxing. Технически, unboxing и бокс - это противоположности. Autoboxing - это когда JVM заботится о боксе для нас. Путь к ручному ящику (это не слово, а голый со мной ...) является myNumber = Integer.valueOf(5);

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

Некоторые языки сгенерирует ошибку в подобных случаях. Java делает в большинстве подобных ситуаций, но для примитивов имеет специальные исключения

1

Это зависит от того, какую версию Java вы используете. Если это что-то до 1,5, второй оператор приведет к ошибке времени компиляции. Концепция автобоксинга была только i ntroduced из Java 1.5.

Итак, если это Java 1.5 и выше, второй оператор выполняет автобоксинг.

Смежные вопросы