读书人

一个java数组赋值的有关问题困扰已久

发布时间: 2012-10-29 10:03:53 作者: rapoo

一个java数组赋值的问题,困扰已久,很有意思的问题

很久以前遇到的一个问题

?

int c=3;

int[] array=new int{5];

array[c]=c=8;

问最后的结果是什么?

开始我以为java赋值是右结合的,因此认为是溢出异常

可是结果是array[3]=8,c=8

迷茫了,查了一下java规范,写的java赋值是左结合,而且=左边的变量一定会先被转换成为真实值

这样的话能理解第一步,也是是array[c]被转化为array[3],但是为什么在c=8之前,c不被赋值为3并且赋给array[3]呢?

迷茫中,请各位指点

?

?

?

自己解答一下:

做了个实验

int a=3;

int b=5;

a=b=8;

结果是a,b都为8,而不是a=5,b=8

试着为赋值语句加括号

(a=b)=8编译时通不过,而a=(b=8)可以,并且结果与上面一样

想来应该是因为这个原因吧,

?

另外今天看到的,如果在try中有return,finally还会不会执行

答案是会,在return前执行

读书人网 >其他相关

热点推荐