A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

求大神解惑释疑:
       以前老师讲过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]并记住它的?         还是有其他原因?           谁知道 数组的底层是怎么操作的?           自己把自己搞糊涂了,求解脱, 谢谢!

4 个回复

倒序浏览
个人猜测,和数组的地址值、中括号的优先级有关
回复 使用道具 举报
牛牛牛
回复 使用道具 举报
支持,求解答
回复 使用道具 举报
静待大神
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马