Câu trả lời:
Bạn không thể. Một hằng số cơ bản được coi là một số nguyên (hoặc dài nếu được theo sau bởi "L"), do đó bạn phải hạ thấp nó một cách rõ ràng thành một byte để truyền nó dưới dạng tham số. Theo tôi biết không có phím tắt.
byte b(int i) { return (byte) i; }
ở đâu đó và nhập tĩnh nó. Sau đó, bạn có thể viết f (b (10)).
Bạn phải phân vai, tôi sợ:
f((byte)0);
Tôi tin rằng sẽ thực hiện chuyển đổi phù hợp vào thời gian biên dịch thay vì thời gian thực hiện , vì vậy nó sẽ không thực sự gây ra các hình phạt về hiệu suất. Thật bất tiện :(
Bạn có thể sử dụng một byte bằng chữ trong Java ... sắp xếp.
byte f = 0;
f = 0xa;
0xa
(int chữ) được tự động chuyển thành byte. Nó không phải là một byte thực sự (xem JLS & bình luận bên dưới), nhưng nếu nó giống như một con vịt, tôi gọi nó là một con vịt.
Những gì bạn không thể làm là đây:
void foo(byte a) {
...
}
foo( 0xa ); // will not compile
Bạn phải chọn như sau:
foo( (byte) 0xa );
Nhưng hãy nhớ rằng tất cả những thứ này sẽ được biên dịch và chúng đang sử dụng "byte byte":
void foo(byte a) {
...
}
byte f = 0;
foo( f = 0xa ); //compiles
foo( f = 'a' ); //compiles
foo( f = 1 ); //compiles
Tất nhiên điều này cũng biên dịch
foo( (byte) 1 ); //compiles
1
là một chữ int, nhưng double d = 1;
biên dịch tốt.
byte b(int i){}
, sau đó b(1)
dài và ít khó khăn hơn f=1
.
Nếu bạn đang chuyển các ký tự bằng mã, điều gì ngăn bạn đơn giản khai báo trước thời hạn?
byte b = 0; //Set to desired value.
f(b);
public static final byte BYTE_MASK = ( byte )0xff;
byte BYTE_MASK = 0x000000ff;
kẻo tôi nhận được một số lỗi mở rộng dấu hiệu khó chịu.
Điều gì về ghi đè phương thức với
void f(int value)
{
f((byte)value);
}
điều này sẽ cho phép f(0)
Với Java 7 và phiên bản mới hơn, bạn có thể chỉ định một byte bằng chữ theo cách này:
byte aByte = (byte)0b00100001;
Tham khảo: http://docs.oracle.com/javase/8/docs/technotes/guides/lingu/binary-literals.html