为什么这些表达式给我输出而不是编译错误?
Why these expressions are giving me output instead of compile error?
当我得到这个问题时我正在参加考试以下问题的输出是什么
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);
}
}
答案选项是
- 编译时错误
- 运行时间错误
- 120.0 145
- 120.0 120
我不知道正确答案,但我认为正确答案应该是一个,但我却看到了错误答案?我们如何在不转换的情况下将一个变量分配给不同类型的数据类型?
Correct Answer 3.
因为根据
E1 op= E2
形式的复合赋值运算符求值为 E1
= (T) ((E1) op (E2))
,其中 T 是 E1 的类型,除了 E1 仅求值一次
所以你的
j+=i
更改为 j=(double)(j+i)
从现在开始 j
值为 120.0
下次我做 i+=j
它会变成
i=(int)(i+j)
因此 145
所以输出是
120.0 145
当我得到这个问题时我正在参加考试以下问题的输出是什么
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);
}
}
答案选项是
- 编译时错误
- 运行时间错误
- 120.0 145
- 120.0 120
我不知道正确答案,但我认为正确答案应该是一个,但我却看到了错误答案?我们如何在不转换的情况下将一个变量分配给不同类型的数据类型?
Correct Answer 3.
因为根据
E1 op= E2
形式的复合赋值运算符求值为E1 = (T) ((E1) op (E2))
,其中 T 是 E1 的类型,除了 E1 仅求值一次
所以你的
j+=i
更改为 j=(double)(j+i)
从现在开始 j
值为 120.0
下次我做 i+=j
它会变成
i=(int)(i+j)
因此 145
所以输出是
120.0 145