我想知道为什么 //1
编译器和 //2
接受语句声明不是
//1
int k = 99999999;
byte l = (byte)k;
//2
byte b = 1;
int i = 10;
byte z = (byte)i+b; //compiler rejected
Type mismatch: cannot convert from int to byte using ternary operator给了我一些想法,但我不明白为什么编译器可以解析变量 l
在//1
可接受且 Not Acceptable i
在//2
最佳答案
您仅将第一个数字i
转换为byte
,而不是整个总和。您必须添加括号:
byte z = (byte) (i+b);
关于Java类型不匹配无法从int转换为byte?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51973904/