首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

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

2012-10-29 
一个java数组赋值的问题,困扰已久,很有意思的问题很久以前遇到的一个问题?int c3int[] arraynew int{5]

一个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前执行

热点排行