以下のサンプル コードでは、各メソッドの終了値が異なるのはなぜですか。どちらも「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 に割り当てています。
ありがとう