为字节赋值

时间:2011-03-26 15:00:34

标签: java byte wrapper

这两者有什么区别

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

我的问题是将值1分配给byte,其中1是int literal。 但是当将1传递给Byte类构造函数时,它会给出错误

7 个答案:

答案 0 :(得分:7)

值1是整数类型的文字。所以你有以下几种情况:

  • 将文字直接分配给类型为byte的变量将导致隐式转换,因为很明显程序员想要一个字节而不是一个int。

  • Byte ctor采用byte值,编译器会抱怨,因为它无法对方法或ctor参数进行隐式转换。

答案 1 :(得分:3)

Byte是一个对象。 byte是一个原始的。除此之外,这意味着Byte引用可以包含null

答案 2 :(得分:3)

Byte i1是一个Object,而byte b是一个原始类型。 new Byte(int)不是Byte对象的有效构造函数。见here

答案 3 :(得分:0)

字节和字节是两个不同的关键字,如果我没有弄错的话。

或者Java是否区分大小写?

答案 4 :(得分:0)

字节i1 =新字节(1); //编译错误错误是因为字节构造函数仅接受byteString对象作为值

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

答案 5 :(得分:0)

由于您将整数传递给Wrapper类Byte的构造函数,因此会发生编译时错误,编译器不会在此处执行隐式转换。

方法调用转换特别不包括整数常量的隐式缩小,这是赋值转换的一部分。

答案 6 :(得分:0)

“Byte”是一个Class,“byte”是默认数据类型之一。 类似的例子是“Integer”和“int”。

回到问题,编译来自Byte接受“byte”或“String”作为参数。 所以,请尝试将代码修改为

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

Byte i1=new Byte("1");