在下面的示例代码中,为什么每种方法后的最终值不同。我希望两者都显示“i = 1”
public class Test {
public int i = 0;
public static void main( String args[] ) {
Test t = new Test();
t.test();
}
public void test() {
i = 0;
System.out.println( "[start a] i = " + i );
doSomethingA( i++ );
System.out.println( "[end a] i = " + i );
System.out.println( "---------------------" );
i = 0;
System.out.println( "[start b] i = " + i );
doSomethingB( i++ );
System.out.println( "[end b] i = " + i );
}
// Direct assignment of passed value
public void doSomethingA( int x ) {
i = x;
}
// Equation of passed value
public void doSomethingB( int x ) {
i += x;
}
}
结果是:
[start a] i = 0
[end a] i = 0
---------------------
[start b] i = 0
[end b] i = 1
为什么我在方法中对“i”做什么很重要,它不应该在方法结束后增加 1 吗?
在这两种情况下,我都在方法内将 'i' 的值分配为 0。
谢谢