2013-03-21 1 views
-1

Ниже моя демонстрационная программа:Календарь класс не работает, как ожидалось в Java

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 имеет дополнительный день в t он главный метод?

В java параметры передаются по значению в java, так почему же он ведет себя равнодушно?

Может ли кто-нибудь помочь мне понять это?

+0

@LuiggiMendoza, почему голосует, я не знаю об этом. – Abubakkar

+0

@Abu почему бы день сменить на пятницу, но все равно быть 21-й? –

+0

Почему вы ожидаете, что календарь будет таким же, если вы добавите 1 день? Вы добавили день, это отражает, что вы добавили день? – CodeChimp

ответ

2

Вы передаете ссылку на Календарь, поэтому добавление дня к нему отражается в вызывающем методе.

+1

Это похоже на ошибку копирования/вставки. –

+0

Что это значит? –

Смежные вопросы