我正在审查一些代码,并遇到了一个实例,有人对 Integer 的包装类成员变量进行了后期递增。我自己尝试过,真的很惊讶它的工作原理。
Integer x = 0;
System.out.print(x++ + ", ");
System.out.print(x);
这打印出来0, 1
,不像0, 0
我预期的那样。我浏览了语言规范,找不到任何内容。任何人都可以向我解释为什么这样做有效,以及跨多个平台是否安全?我原以为这会分解成
Integer x = 0;
int temp1 = x.intValue();
int temp2 = temp1 + 1;
System.out.println(temp1);
temp1 = temp2;
System.out.println(x.intValue());
但显然规范中有一些东西使它x = temp1;
在最后一行之前添加