黑马程序员技术交流社区
标题:
关于数组和自增(自减)运算的一些疑问
[打印本页]
作者:
flyingwind
时间:
2015-11-12 22:30
标题:
关于数组和自增(自减)运算的一些疑问
求大神解惑释疑:
以前老师讲过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]并记住它的? 还是有其他原因? 谁知道 数组的底层是怎么操作的? 自己把自己搞糊涂了,求解脱, 谢谢!
作者:
影明
时间:
2015-11-12 22:35
个人猜测,和数组的地址值、中括号的优先级有关
作者:
caozhenbinhm
时间:
2015-11-12 22:35
牛牛牛
作者:
you135
时间:
2015-11-12 22:37
支持,求解答
作者:
陈先森
时间:
2015-11-12 22:54
静待大神
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2