求大神解惑释疑:
以前老师讲过int i=5;i=i--; i仍然是5,是因为在右边的i先要给一个临时变量tmp, 最后拿tmp去给左边赋值.今天自己写了一段代码,如下:
public static void main(String [] args){
int [] ary={1,2,3,4,5};
int i=2;
ary[2];
ary[i]=ary[--i]; //第三条语句
print(ary); //遍历输出数组ary.
}
public static void print(int [] ary){
... // 打印ary, 内容省略
}
结果却是: [1,2,2,4,5]
我的疑问是第三条语句, 它相当于是执行了 ary[2]=ary[1]; 可是i不是变量吗, 按照老师说的, 自增(减)操作优先于赋值,
应该先做--i运算, 然后i就变成了1, 那么前面的i不也是变成了1吗, 这样就是ary[1]=ary[1]. 难道按变量索引访问
数组还要把变量索引先给另一个变量存储? jvm在底层怎么找到ary[i]并记住它的? 还是有其他原因? 谁知道 数组的底层是怎么操作的? 自己把自己搞糊涂了,求解脱, 谢谢!
|
|