如果我有一个方法
void f(byte b);
我怎么能调用它与一个数字参数没有强制转换?
f(0);
给出一个错误。
如果我有一个方法
void f(byte b);
我怎么能调用它与一个数字参数没有强制转换?
f(0);
给出一个错误。
你可以在Java中使用字节字面值…排序的。
byte f = 0;
f = 0xa;
0xa (int literal)自动转换为字节。它不是一个真正的字节文字(参见下面的JLS和评论),但如果它像鸭子一样嘎嘎叫,我就称它为鸭子。
你不能做的是:
void foo(byte a) {
...
}
foo( 0xa ); // will not compile
你必须按以下方式进行强制转换:
foo( (byte) 0xa );
但是请记住,这些都将被编译,并且它们使用的是“字节字面量”:
void foo(byte a) {
...
}
byte f = 0;
foo( f = 0xa ); //compiles
foo( f = 'a' ); //compiles
foo( f = 1 ); //compiles
当然,这个也可以编译
foo( (byte) 1 ); //compiles
在Java 7和更高版本中,你可以这样指定一个字节字面值: 字节字节=(字节)0b00100001;
参考:http://docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html