您的位置:首页 > 编程语言 > Java开发

解释:i=i++

2016-08-03 12:26 190 查看
今天在百度知道上看到别人提的一个问题,主要是不明白i=i++运算结果,自己之前看过java关于++的细节,不过一时自己也解释不明白,就去查了下java语言规范,才恍然大悟:作文记之! 
首先一段代码: 

Java代码  



public static void main(String [] args){  

        int i = 0;  

        i=i++;  

        System.out.println("i="+i);  

        int j = 0;  

        j=i++;  

        System.out.print("j="+j+" i="+i);  

    }  

运行结果: 
i=0 
j=0 i=1 
java语言规范里对与++是这样说的:The result of the postfix increment expression is not a variable, but a value.即:++表达式结果是个值,而不是变量。 
变量?值? 
这是java特殊的地方,对于这里,java有两个存储区,一个是暂存区(堆栈),一个是变量区, 

拿“j=i++(i和j初始为0) ”解释下,第一步,把i值存起来,有两个,暂存区:0,变量区:0;第二步:进行i++,i 暂存区还是0,变量区变为1了(也就是说进行完i++后,打印i的值,那么i值为1,打印的是变量的值,即变量区的值,为1没问题)。第三步:进行给j赋值,赋的是i++的值,i++的值是0!为什么呢?之前说了,他是个值,不是变量,那么i++运行完后i++的值就应该从暂存区去取,暂存区存的是0,那么他就是0。i=i++也能解释通了。

转载自:http://qmeng2008.iteye.com/blog/1155430
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java