1. 为什么下列代码中c = 3+7;可以正确输出,c = a + b;却编译报错?
|
public static void main(String[] args) {
byte a = 3;
byte b = 7;
byte c = 10;
c = 3+7;//3、7是常量,int类型。 System.out.println(c);//可以正确输出。 c = a + b;//编译报错,因为a、b是变量,无法检查a、b的范围是否在可存储范围之内。 /*
为什么c = 3+7;可以正确输出,c = a + b;却编译报错? 因为 c = 3+7;3、7是常量,值是固定的,不会变,可以判断在存储范围之内。 c = a + b;编译报错,因为a、b是变量,无法检查a、b的范围是否在可存储范围之内。 结论:右边不确定是无法判断并赋值的。 */
}
|
注意:整数默认是int类型。
结论:右边不确定是无法判断并赋值的。
2.下述代码的运算结果为何是3?
|
public static void main(String[] args) {
int a = 3;
a = a++;
System.out.println(a);
}
|
运算如下:
tmp = a;
a = a+1;
a=tmp;

结论:在内存中运算顺序如下:
-
先将a=3记录到临时存储空间中;
-
再做a++运算,即3+1=4,再赋值给a,此时a=4;
-
再将(1)中临时存储空间中记录的a的值赋值给a, 此时a=3;
相关文章:
-
2021-09-14
-
2021-12-16
-
2021-11-16
-
2019-08-12
-
2021-10-29
-
2021-10-12