присвоение значения байту - PullRequest
0 голосов
/ 26 марта 2011

в чем разница между этими двумя

Byte i1=new Byte(1);//complier error
byte b=1;//ok

Мой вопрос касается присвоения байту значения 1, где 1 является литералом int.но при передаче 1 в конструктор класса Byte выдает ошибку

Ответы [ 7 ]

7 голосов
/ 26 марта 2011

Значение 1 является литералом типа integer. Итак, у вас есть следующие ситуации:

  • Присваивание литерала непосредственно переменной типа byte вызовет неявное преобразование, поскольку очевидно, что программист хочет байт, а не int.

  • Ктор Byte принимает значение byte, компилятор жалуется, так как не может выполнить неявное преобразование для аргументов метода или ctor.

3 голосов
/ 26 марта 2011

Byte i1 - это объект, а byte b - примитивный тип. new Byte(int) не является допустимым конструктором для объекта Byte. см здесь

3 голосов
/ 26 марта 2011

Byte это объект.byte это примитив.Среди прочего, это означает, что ссылка Byte может содержать null.

0 голосов
/ 26 марта 2011

«Байт» - это класс, «байт» - один из типов данных по умолчанию.Аналогичным примером являются "Integer" и "int".

Возвращаясь к вопросу, компиляция происходит из байта, принимающего "byte" или "String" в качестве параметра.Поэтому, пожалуйста, попробуйте изменить код на

Byte i1=new Byte((byte)1);

или

Byte i1=new Byte("1");
0 голосов
/ 26 марта 2011

Ошибка времени компиляции произойдет, потому что вы передаете целое число в конструктор байта класса Wrapper, компилятор не будет выполнять неявное приведение здесь.

Преобразования вызова метода специально не включают в себя неявное сужение целочисленных констант, которое является частью преобразования присваивания.

0 голосов
/ 26 марта 2011

байт i1 = новый байт (1); // ошибка компилятора

ошибка связана с тем, что конструктор байтов принимает только byte или String объект в качестве значения

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/Byte.html#Byte(byte)

0 голосов
/ 26 марта 2011

Байт и байт - это два разных ключевых слова, если я не ошибаюсь.

Или Java не чувствительна к регистру?

...