Calendar类在Java中没有按预期工作

时间:2013-03-21 16:55:38

标签: java date calendar

以下是我的演示程序:

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中按值传递,那为什么它表现得无差别呢?

任何人都可以帮我理解这个吗?

1 个答案:

答案 0 :(得分:2)

您正在传递日历的引用,因此在调用方法中会反映添加日期。