Answers:
你不能。基本数字常量被认为是整数(如果后面跟有“ L”,则为长整数),因此必须将其显式下转换为字节,以将其作为参数传递。据我所知,没有捷径可走。
byte b(int i) { return (byte) i; }
某个地方定义一个简单的帮助程序方法,并将其静态导入。然后可以写f(b(10))。
您可以在Java中使用字节字面量。
byte f = 0;
f = 0xa;
0xa
(int文字)自动转换为字节。它不是真正的字节文字(请参阅下面的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
1
是一个int文字,但是double d = 1;
编译就很好。
byte b(int i){}
,则b(1)
比静态导入的时间长,且难度小f=1
。
如果要在代码中传递文字,是什么使您无法简单地提前声明它?
byte b = 0; //Set to desired value.
f(b);
public static final byte BYTE_MASK = ( byte )0xff;
byte BYTE_MASK = 0x000000ff;
避免我遇到一些讨厌的符号扩展错误。
怎样用
void f(int value)
{
f((byte)value);
}
这将允许 f(0)
在Java 7和更高版本中,您可以通过以下方式指定字节文字:
byte aByte = (byte)0b00100001;
参考:http : //docs.oracle.com/javase/8/docs/technotes/guides/language/binary-literals.html