黑马程序员技术交流社区

标题: 关于数组和自增(自减)运算的一些疑问 [打印本页]

作者: 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