To stwierdzenie:
c2 = c ;
skopiuje wartość c
w c2
. Wartość c
jest nie obiektu Calendar
- jest odniesienie. Po tym stwierdzeniu dwie zmienne mają tę samą wartość - dwa odniesienia do tego samego obiektu. Wszelkie zmiany obiektu Calendar
można zaobserwować za pomocą dowolnej zmiennej.
To tak, jakby dać dwie różne osoby kawałki papieru podając swój adres domowy - jeśli jedna osoba używa adresu, aby dostać się do domu i maluje zielone drzwi, to druga osoba też to zobaczy.
Należy zauważyć, że nie jest to specyficzne dla Calendar
- jest to zachowanie przypisania dla wszystkich klas w Javie.
(Bardzo ważne jest, aby rozróżnić zmienne, odniesienia i obiekty, w zasadzie W normalnej dyskusji trzy często są używane niepoprawnie ze względu na zwięzłość, ale trzeba być w stanie odróżnić, kiedy trzeba).
Zauważ, że ten kod:
Calendar c2 = Calendar.getInstance();
c2 = c;
tworzy nową instancję Calendar
bezsensownie. Byłoby bardziej sensownie napisany jako:
Calendar c2 = c;
Ten kod będzie miał ten sam efekt widoczny, ale bez wywoływania Calendar.getInstance()
a następnie wyrzucać nowo utworzony obiekt.
Mam nadzieję, że jest poprawny ...! – SenthilPrabhu
Dlaczego nie napisać małego programu testowego, aby porównać wyniki dla siebie? – Mike
Ta instrukcja przypisuje wartość "c" do zmiennej "c2". ('c == c2' będzie" prawda "). – afk5min