2011-03-26 154 views
0

就是这两分配值的字节

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

我的问题之间的差别在哪里1为int字面值设为1个字节。 但传递1到字节类的构造函数时,它给出错误

回答

7

值1是一个整型的文字。所以,你有以下几种情况:

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

  • Byte ctor需要byte值,编译器会抱怨,因为它不能为方法或ctor参数执行隐式转换。

3

Byte是一个对象。 byte是一个原始的。除此之外,这意味着Byte参考可以保存null

0

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

或者是Java不区分大小写?

3

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

0

,因为要传递到包装类字节的构造函数的整数,将发生编译时错误,编译器不会在这里做隐式转换。

方法调用转换特别不包括作为分配转换一部分的整数常量的隐式缩小。

0

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

回到问题,编译来自Byte接受“字节”或“字符串”作为参数。 所以,请尽量修改代码以

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

Byte i1=new Byte("1"); 
相关问题