Jestem nowicjuszem w Javie i mam kilka pytań na temat przydzielania obiektów. Na przykład,Przypisywanie obiektów Java
Test t1 = new Test();
Test t2 = t1;
t1.i=1;
Zakładając zmienna i
jest zdefiniowana wewnątrz klasy Test mam prawo zakładać zarówno t1 i t2 punkt do tego samego obiektu, gdzie modyfikacja t1.i=1
wpływa zarówno t1
i t2
? Właściwie to wypróbowałem to i wydaje mi się, że miałem rację. Jednak kiedy próbuję tego samego na String
, modyfikacja odbywa się tylko z jednej strony, na której druga strona pozostaje nienaruszona. Jaki jest tego powód?
Edytuj: Sprawa, którą próbowałem z ciągiem.
String s1 = "0";
String s2 = s1;
s1 = "1";
System.out.println(s1);
System.out.println(s2);
Zdaję sobie sprawę z mojego błędu, testując przypadki na ciąg, ponieważ jest niezmienny. Sytuacja, w której myślałem, że s1="1"
modyfikuje ciąg znaków, zwraca referencję "1" do s1. Niemniej moje pytanie pozostaje. Czy Test t2 = t1;
powoduje, że zarówno punkt t2, jak i t1 mają ten sam obiekt, lub że każdy z nich ma teraz swoje własne obiekty? Czy ta sytuacja dotyczy wszystkich obiektów w Javie?
Co masz na myśli pod "wypróbuj to samo na String"? W obiekcie String nie ma żadnych metod modyfikacji samego ciągu. Przeczytaj uważnie dokumentację. – DRCB
Jeśli opublikujesz kod testu, który robisz na String, możemy być bardziej szczegółowi, co robisz źle –