【问题标题】:Calendar class not working as expected in Java [duplicate]日历类在 Java 中无法按预期工作 [重复]
【发布时间】:2013-03-21 16:55:38
【问题描述】:

下面是我的演示程序:

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在main方法中多了一天?

在java中,参数在java中是按值传递的,为什么它表现得无所谓?

谁能帮我理解这个?

【问题讨论】:

  • @LuiggiMendoza 为什么投反对票,我不知道。
  • @Abu 为什么会改到星期五,但仍然是 21 日?
  • 为什么您希望日历在添加 1 天后仍然相同?你加了一天,就反映你加了一天?

标签: java date calendar


【解决方案1】:

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

【讨论】:

  • 这似乎是复制/粘贴错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2013-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 2023-03-24
相关资源
最近更新 更多