为什么b=b+8抛出错误,其中b+=8为dosent。
public static void main(String []args){
byte b = 6;
b=b+8;
//b+=8;
System.out.println(b);
b+=7;
System.out.println(b);
}
这是因为b=b+8
并不完全等同于b+=8
。
根据语言规范,第15.26.2节:
形式为E1 op=E2
的复合赋值表达式等效于E1=(T)((E1)op(E2))
,其中T
是E1
的类型,只是E1
只计算一次。
short x = 3;
x += 4.6;
并导致x具有值7,因为它等效于:
short x = 3;
x = (short)(x + 4.6);
因此+=
不仅将和赋给变量,而且还将和强制转换为左手边变量的类型。b=b+8
不这样做。
为什么b=b+8
会产生警告?
这是因为+
运算符在对byte
类型使用时,也会执行数值提升。表达式B+8
的类型实际上是int
。因此,编译器告诉您正在将int
转换为字节
。
我试图为学校编写一些东西,但我不断收到这个编译错误: 错误:不兼容的类型:从int到byte的转换可能有损失 A = (字节)C / (字节)B;
我正在修改这段代码的过程中,从一个例子从我的教科书,以兼容一个双数组。代码中有几个地方我不确定如何修复错误“不兼容类型:从double到int的转换可能有损” 我确信还有其他简单的错误我还没有找到,因为我还没有机会调试和校对代码,而且我对Java和编程也很陌生。 谢谢你的帮助!
null 谁能解释一下作为一个初学者我该如何消除这个错误。 太感谢你了!
我是Java的初学者,我已经编写了这段代码。当我尝试运行它时,它不断显示错误,例如: < li >错误:不兼容的类型:从double到int的转换可能有损耗 < li >错误:找不到符号 有人能解释一下我作为一个初学者应该如何解决这个问题吗。 太谢谢你了!
internal.java:21:错误:不兼容类型:从int到byte a=(byte)c+b的转换可能有损;^1错误
我在第18行遇到了这个错误。我不知道为什么当数组grade和变量gradeNum都是double类型时,编译器要我将变量gradeNum强制转换为int类型。免责声明:此代码远未完成。我唯一的问题是这个错误与数组grade和变量gradeNum有关。