运行此程序后,我正在获得' a'为5而不是6.为什么?
public class Test
{
public static void main(String args[])
{
int a=5;
a=a++; //post increment operator
System. out. println (a); //Output
}
}
为什么这是程序的输出?
答案 0 :(得分:0)
那是因为后期增量。在后增量中,返回增量前的值,然后执行增量。该行将获得相同的结果System.out.println(a++);
。应该打印增量前a
的值。
答案 1 :(得分:0)
场景1(最后等于5)
a=5;
a=a++;
不是同样的事情
场景2(最后等于6)
a=5;
int a
要理解这一点,您必须分解场景2中发生的情况。
a
。 a
所指的值的新原语int
加1。a
内存储对该新原语int的引用。情景1完全不同。
a
内放置对它的引用。 您感到困惑的原因是因为您认为a
总是指内存中的相同位置。一旦你说a=a
你改变了记忆中的位置。现在这是一个新的a
,而不是旧的a
,所以基本上你的++
在这种情况下什么都不做。
a=a++;
并不意味着让a
保持为a
,然后在此声明之后添加1.实际意味着让a
等于新int恰好恰好与a
具有相同的值,然后将1添加到刚刚投入黑洞的旧int中。
编辑:对评论的回应
如果您不想丢失原始a
变量,则必须以不同方式编写代码。
int a = 5;
int b = a; //stores the original value
a++; //now a equals 6