-1

以下は私のデモプログラムです:

public class Demo {
    public static void main(String[] args){
        Demo d = new Demo();
        Calendar c = Calendar.getInstance();
        System.out.println("Initial : "+c.getTime());
        d.addDay1(c);
        System.out.println("After addDay1 call : "+c.getTime());

    }

    public void addDay1(Calendar d){
        d.add(Calendar.DATE, 1);
    }

}

私が得ている出力は次のとおりです:

Initial : Thu Mar 21 05:20:53 IST 2013
After addDay1 call : Fri Mar 22 05:20:53 IST 2013

しかし、私は次のような出力を期待しています:

Initial : Thu Mar 21 05:20:53 IST 2013
After addDay1 call : Thu Mar 21 05:20:53 IST 2013

メソッドを呼び出した後addDay1、カレンダーオブジェクトcのメインメソッドに日が追加されたのはなぜですか?

Javaでは、パラメータはJavaで値によって渡されますが、なぜそれが無関心に動作しているのでしょうか。

誰かが私がこれを理解するのを手伝ってもらえますか?

4

1 に答える 1

2

カレンダーの参照を渡しているため、カレンダーに日を追加すると、呼び出し元のメソッドに反映されます。

于 2013-03-21T16:57:02.933 に答える