请教一个赋值的问题

timelikesong 2015-04-10 02:47:58
Talk is cheap,show me the code.

上代码:
import java.util.Arrays;
public class Test{
public static void main(String args[]){
int[] arr=new int[5];
int b=2;
arr[b]=b=3;
System.out.println(Arrays.toString(arr));
System.out.println(b);
}
}

这个最后输出结果是:
[0,0,3,0,0]
3

我想要问的是:连续赋值语句的执行的具体过程,为什么b=3 而不是给arr[3]赋值3?
请大神指教!
...全文
169 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
冥王之锤 2015-04-10
  • 打赏
  • 举报
回复
L2 LINENUMBER 6 L2 ALOAD 1 ILOAD 2 ICONST_3 DUP ISTORE 2 IASTORE 字节码如上,执行过程中先将数组下标如栈,此时b=2。
code小生 2015-04-10
  • 打赏
  • 举报
回复
int b=2; 执行代码arr[b]=b=3;时,arr[b]中的b==2;然后将b的值赋为3,下一步就不能进行了,因为brr[b]已经是一个数组类型,而此时的b是int型
姜小白- 2015-04-10
  • 打赏
  • 举报
回复
建议不要去看这种代码,上面的代码
类似 int =0;
i += ++i + i++ + +i 这样的代码除了在变态的笔试中出现外,一般代码不会出现的,不利于理解
姜小白- 2015-04-10
  • 打赏
  • 举报
回复
b=arr[b]=3;
b 指向 arr[b],arr[b] 这里是arr[2],arr[2] = 3
b = 3
朱容赋 2015-04-10
  • 打赏
  • 举报
回复
我也觉得很费解,求大神解惑。
fireofsun 2015-04-10
  • 打赏
  • 举报
回复
还是从右向左运算呗,先是arr[b]被赋值给了3,此时b还是2,然后b=3
timelikesong 2015-04-10
  • 打赏
  • 举报
回复
引用 1 楼 magi1201 的回复:
arr[b]=b=3; 从左向右计算
那么 b=arr[b]=3; 呢 结果和上句是一样的,解释。。。
highnewrain 2015-04-10
  • 打赏
  • 举报
回复
姜小白- 2015-04-10
  • 打赏
  • 举报
回复
arr[b]=b=3; 从左向右计算

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧