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);
}
}
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.
Here I got error message "incompatible types: possible lossy conversion from int to 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).
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);