Referencja w javie

0

Witam, dlaczego w poniższym kodzie, po zapisaniu first=third, referencja second nie ulega zmianie, skoro wcześniej second wskazuje na to samo, co first?

public class Home{
	
int k=3;
 
   public static void main(String[] args){
	   
   Home first=new Home();
   Home second=new Home();
   Home third=new Home();
  
  third.k=8;
		 
		  second=first;
		  
		  first.k=5;
		  
		  System.out.println(first.k);
		  System.out.println(second.k);
		  
		
		  first=third;
		  
		  System.out.println(first.k);
		  System.out.println(second.k);
		  
   }
} 
1

first=third w tym momencie first przestaje miec cokolwiek wspolnego ze wszystkim co nie jest obiektem wskazywanym przez third

1

tak, na ten sam, co wcześniej first, a moje pytanie - dlaczego po zapisie first=third -> second nie zaczniej wskazywać także na third

Referencja to zmienna, ktora w olbrzymim skrocie myslowym przechowuje adres gdzie znajduje sie obiekt. Jak zmienisz jedna zmienna (powiedzmy liczbowa) to to nijak nie propaguje sie na inna.

3

Bo w Javie referencja to tylko mądrzejsza nazwa na sprytny i gruby wskaźnik z odśmiecaniem pamięci. first, second i third są wskaźnikami wskazującymi na tą samą przestrzeń w pamięci, ale wzajemnie o sobie nic nie wiedzą

0

Ok dziękuję, trochę namieszałem, ale już wiem o co chodzi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1