Java 为什么这些表达式给我的是输出而不是编译错误?
当我得到这个问题时,我正在进行一次考试。下面这个问题的结果是什么Java 为什么这些表达式给我的是输出而不是编译错误?,java,operators,Java,Operators,当我得到这个问题时,我正在进行一次考试。下面这个问题的结果是什么 public class ClassicQuestion { public static void main(String[] args) { int i = 25; double j = 95.0; System.out.println(j+=i); System.out.println(i+=j)
public class ClassicQuestion {
public static void main(String[] args)
{
int i = 25;
double j = 95.0;
System.out.println(j+=i);
System.out.println(i+=j);
}
}
答案是
编译时错误
运行时错误
一百二十点零一四五
一百二十点零一二零
我不知道正确的答案,但我认为正确的答案应该是一个,但给了我不正确的答案?如何在不进行转换的情况下将一个变量分配给不同类型的数据类型
正确答案3
因为根据
形式为E1 op=E2 evalute to E1的复合赋值运算符
=T E1 op E2,其中T是E1的类型,但E1只计算一次
那么你的
j+=i变为j=double j+i
现在j值是120.0
下一次我做i+=j时,它变为
i=inti+j
所以输出是
120.0 145
正确答案3
因为根据
形式为E1 op=E2 evalute to E1的复合赋值运算符
=T E1 op E2,其中T是E1的类型,但E1只计算一次
那么你的
j+=i变为j=double j+i
现在j值是120.0
下一次我做i+=j时,它变为
i=inti+j
所以输出是
120.0 145引用JLS以获得更好的答案。引用JLS以获得更好的答案。