我的代码怎么了?以下代码适用于整数类型的数据,但不适用于字节类型的数据。
What happened to my code? The following code worked for integer type of data, but couldn't work for byte type of data.
public class Exchange { public static void main(String[] args) { //int a = 23, b = 44; byte a = 23, b = 44; a = a + b; b = a - b; a = a - b; System.out.println("a=" + a + "b=" + b); } }我知道数据类型字节可以保存数据范围-2 ^(8-1)到-1 + 2 ^(8-1)。但我正在使用23& 44,所以它小于127.
I know that the data-type byte can hold data of the range -2^(8-1) to -1+2^(8-1). But I'm using 23 & 44, so it's less than 127.
这里我收到错误消息不兼容的类型:从int到byte的可能有损转换。
Here I got error message "incompatible types: possible lossy conversion from int to byte".
推荐答案如果你想对 byte 执行算术运算并将其分配回 byte 变量你应该明确地让编译器知道你知道你正在做什么,否则你将通过转换 int得到你丢失信息的错误(算术运算的结果)到 byte (在左侧)。
If you want to perform an arithmetic operation on byte and assign it back to a byte variable you should explicitly let the compiler know that "you know what you're doing" otherwise you'll get the the error that you're losing information by converting int (the outcome of the arithmetic operation) to byte (on the left side).
要解决此问题,请将算术运算的结果强制转换为byte:
To fix this, cast the outcome of the arithmetic operation back to byte:
byte a = 23, b = 44; a = (byte) (a + b); b = (byte) (a - b); a = (byte) (a - b);