Java - Myśleć jak programista: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Linia 661:
 
==Aliasy==
Warto wiedzieć, że po przypisaniu obiektu do zmiennej, przypisujemy tak naprawdę ''referencję'' do obiektu. Możliwe jest, że wiele zmiennych odnosi się do tego samego obiektu. Na przykład w tym kodzie: <br/>
 
:::<tt>Prostokat box1 = new Prostokat(0, 0, 100, 200); </tt> <br/>
:::<tt>Prostokat box2 = box1; </tt> <br/>
sytuacja wygląda [http://www.greenteapress.com/thinkapjava/html/thinkjava010.png w taki sposób] <br/>
 
</tt>box1</tt> i <tt>box2</tt> odnoszą się do tego samego obiektu. Innymi słowy, obiekt ten ma dwie nazwy, </tt>box1</tt> i <tt>box2</tt>. Kiedy osoba używa dwóch nazw, nazywamy to aliasem. To samo z obiektami. <br/>
 
Kiedy dwie zmienne są aliasami, wszelkie zmiany, które wpływają na jedną zmienną również wpływ inne. Na przykład: <br/>
:::<tt>     System.out.println (box2.width); </tt><br/>
:::<tt>     box1.grow (50, 50); </tt><br/>
:::<tt>     System.out.println (box2.width); </tt><br/>
Pierwsza linia wypisuje 100, która jest szerokością prostokąta, która jest referencją <tt>box2</tt>.Druga linia wywołuje metodę <tt>grow</tt> na obiekcie <tt>box1</tt>, który rozszerza prostokąt o 50 pikseli w każdym kierunku (więcej informacji w dokumentacji). Efekt ten jest przedstawiony na [http://www.greenteapress.com/thinkapjava/html/thinkjava011.png rysunku] <br/>
 
Jakiekolwiek zmiany są wprowadzone w zmiennej <tt>box1</tt> powodują zmiany w <tt>box2</tt>. Zatem wartość wypisana w trzeciej linii to 200, szerokość rozszerzonego prostokąta(Tak na marginesie, współrzędne prostokąta MOGĄ być ujemne.)<br/>
 
Jak widać, na powyższym przykładzie, kod, który zawiera aliasy może wydać ci się niejasny i może sprawić problemy w debugowaniu. Na ogół należy unikać aliasowania, albo stosować bardzo ostrożnie.
 
==Odnośnik null==