最近课堂上学到的a++问题
老师说a++可以认为是Java内部产生一个临时变量
将a的值赋给了临时变量
但是从我接触到的一个问题发现好像不是这样
我接触到一个错误:
int a=1;
a++=5;
编译时显示错误:
test5.java:6: 错误: 意外的类型
a++=5;//1=5
^
需要: 变量
找到: 值
1 个错误
那么这样子就不能理解了
如果像老师所说的:
int a=1;
a++=5;
上面两行应该是等同于:
int a=1;
int temp;
temp=a;
temp=5;
a=a+1;
那么像这样子的程序我编译了一下是不会报错的
那么错误在哪里呢?
再仔细看看上面的错误
a++=5;
显示需要“变量”,找到“值”
需要变量是可以理解的,=右边是常量,左边需要赋值给变量
找到“值”的意思是程序找到的是一个值
那么我在此大胆地猜测一下:
并没有产生临时变量这个说法
应该是把整个a++都替换成了一个常量
这个常量的值等于a的值
所以a++=5就变成了1=5
我再次编译了一段代码:
int a=1;
1=5;
编译时显示错误:
test5.java:6: 错误: 意外的类型
1=5;
^
需要: 变量
找到: 值
1 个错误
可以看到,这个错误和上面的错误是完全一模一样的
所以我认为a++在参与运算时
并不是产生了临时变量
而是将整个a++替换成了一个常量
以上仅代表个人观点
欢迎大家交流指导 |
|