Thinking in Java. Edycja polska. Wydanie IV

44
Wydawnictwo Helion ul. Koœciuszki 1c 44-100 Gliwice tel. 032 230 98 63 e-mail: [email protected] PRZYK£ADOWY ROZDZIA£ PRZYK£ADOWY ROZDZIA£ IDZ DO IDZ DO ZAMÓW DRUKOWANY KATALOG ZAMÓW DRUKOWANY KATALOG KATALOG KSI¥¯EK KATALOG KSI¥¯EK TWÓJ KOSZYK TWÓJ KOSZYK CENNIK I INFORMACJE CENNIK I INFORMACJE ZAMÓW INFORMACJE O NOWOœCIACH ZAMÓW INFORMACJE O NOWOœCIACH ZAMÓW CENNIK ZAMÓW CENNIK CZYTELNIA CZYTELNIA FRAGMENTY KSI¥¯EK ONLINE FRAGMENTY KSI¥¯EK ONLINE SPIS TREœCI SPIS TREœCI DODAJ DO KOSZYKA DODAJ DO KOSZYKA KATALOG ONLINE KATALOG ONLINE Thinking in Java. Edycja polska. Wydanie IV Poznaj najnowsz¹ wersjê jêzyka Java • Opanuj zasady projektowania obiektowego • Wykorzystaj Javê do tworzenia aplikacji • Zastosuj najnowsze narzêdzia i techniki Popularnoœæ Javy stale roœnie, a ka¿da nastêpna wersja tego jêzyka wnosi coœ nowego. Poznanie wszystkich mo¿liwoœci drzemi¹cych w Javie wymaga siêgniêcia do sprawdzonego Ÿród³a wiedzy — ksi¹¿ki „Thinking in Java”. To œwiatowy bestseller, który zyska³ zas³u¿on¹ s³awê najlepszego podrêcznika do nauki Javy. Wzbudzi³ entuzjazm i uznanie programistów przede wszystkim dziêki wyj¹tkowej przejrzystoœci, przemyœlanej strukturze i trafnie dobranym przyk³adom. Ksi¹¿ka „Thinking in Java. Edycja polska. Wydanie IV” zawiera szczegó³owe omówienie zasad programowania w Javie. Przeznaczona jest dla pocz¹tkuj¹cych programistów i dla ekspertów. Przystêpnie prezentuje zarówno zagadnienia podstawowe, jak i zaawansowane. Dziesi¹tki przyk³adów u³atwiaj¹ zrozumienie ka¿dego tematu. Wszystko to sprawia, ¿e poznajemy prawdziw¹ Javê — uniwersaln¹, czyteln¹, niezale¿n¹ od platformy systemowej. Czytaj¹c tê ksi¹¿kê, dowiesz siê, co jest niezbêdne do tworzenia wydajnych i bezpiecznych aplikacji w Javie. • Projektowanie obiektowe • Zasady dokumentowania kodu Ÿród³owego • Operatory i sterowanie przebiegiem wykonywania programu • Inicjalizacja i usuwanie obiektów • Kolekcje obiektów • Obs³uga b³êdów • Operacje wejœcia i wyjœcia • Programowanie wspó³bie¿ne • Projektowanie interfejsów u¿ytkownika Przekonaj siê, dlaczego ksi¹¿ka „Thinking in Java” jest uznawana za najlepszy podrêcznik Javy dostêpny na rynku Autor: Bruce Eckel T³umaczenie: Przemys³aw Szeremiota ISBN: 83-246-0111-2 Tytu³ orygina³u: Thinking in Java (4th Edition) Format: B5, stron: 1256

description

Poznaj najnowszą wersję języka Java * Opanuj zasady projektowania obiektowego * Wykorzystaj Javę do tworzenia aplikacji * Zastosuj najnowsze narzędzia i technikiPopularność Javy stale rośnie, a każda następna wersja tego języka wnosi coś nowego. Poznanie wszystkich możliwości drzemiących w Javie wymaga sięgnięcia do sprawdzonego źródła wiedzy -- książki "Thinking in Java". To światowy bestseller, który zyskał zasłużoną sławę najlepszego podręcznika do nauki Javy. Wzbudził entuzjazm i uznanie programistów przede wszystkim dzięki wyjątkowej przejrzystości, przemyślanej strukturze i trafnie dobranym przykładom.Książka "Thinking in Java. Edycja polska. Wydanie IV" zawiera szczegółowe omówienie zasad programowania w Javie. Przeznaczona jest dla początkujących programistów i dla ekspertów. Przystępnie prezentuje zarówno zagadnienia podstawowe, jak i zaawansowane. Dziesiątki przykładów ułatwiają zrozumienie każdego tematu. Wszystko to sprawia, że poznajemy prawdziwą Javę -- uniwersalną, czytelną, niezależną od platformy systemowej. Czytając tę książkę, dowiesz się, co jest niezbędne do tworzenia wydajnych i bezpiecznych aplikacji w Javie. * Projektowanie obiektowe * Zasady dokumentowania kodu źródłowego * Operatory i sterowanie przebiegiem wykonywania programu * Inicjalizacja i usuwanie obiektów * Kolekcje obiektów * Obsługa błędów * Operacje wejścia i wyjścia * Programowanie współbieżne * Projektowanie interfejsów użytkownika Przekonaj się, dlaczego książka "Thinking in Java" jest uznawana za najlepszy podręcznik Javy dostępny na rynku.

Transcript of Thinking in Java. Edycja polska. Wydanie IV

Page 1: Thinking in Java. Edycja polska. Wydanie IV

Wydawnictwo Helionul. Koœciuszki 1c44-100 Gliwicetel. 032 230 98 63e-mail: [email protected]

PRZYK£ADOWY ROZDZIA£PRZYK£ADOWY ROZDZIA£

IDZ DOIDZ DO

ZAMÓW DRUKOWANY KATALOGZAMÓW DRUKOWANY KATALOG

KATALOG KSI¥¯EKKATALOG KSI¥¯EK

TWÓJ KOSZYKTWÓJ KOSZYK

CENNIK I INFORMACJECENNIK I INFORMACJE

ZAMÓW INFORMACJEO NOWOœCIACH

ZAMÓW INFORMACJEO NOWOœCIACH

ZAMÓW CENNIKZAMÓW CENNIK

CZYTELNIACZYTELNIAFRAGMENTY KSI¥¯EK ONLINEFRAGMENTY KSI¥¯EK ONLINE

SPIS TREœCISPIS TREœCI

DODAJ DO KOSZYKADODAJ DO KOSZYKA

KATALOG ONLINEKATALOG ONLINE

Thinking in Java. Edycjapolska. Wydanie IV

Poznaj najnowsz¹ wersjê jêzyka Java

• Opanuj zasady projektowania obiektowego• Wykorzystaj Javê do tworzenia aplikacji• Zastosuj najnowsze narzêdzia i techniki

Popularnoœæ Javy stale roœnie, a ka¿da nastêpna wersja tego jêzyka wnosi coœ nowego. Poznanie wszystkich mo¿liwoœci drzemi¹cych w Javie wymaga siêgniêcia do sprawdzonego Ÿród³a wiedzy — ksi¹¿ki „Thinking in Java”. To œwiatowy bestseller, który zyska³ zas³u¿on¹ s³awê najlepszego podrêcznika do nauki Javy. Wzbudzi³ entuzjazmi uznanie programistów przede wszystkim dziêki wyj¹tkowej przejrzystoœci, przemyœlanej strukturze i trafnie dobranym przyk³adom.

Ksi¹¿ka „Thinking in Java. Edycja polska. Wydanie IV” zawiera szczegó³owe omówienie zasad programowania w Javie. Przeznaczona jest dla pocz¹tkuj¹cych programistówi dla ekspertów. Przystêpnie prezentuje zarówno zagadnienia podstawowe, jaki zaawansowane. Dziesi¹tki przyk³adów u³atwiaj¹ zrozumienie ka¿dego tematu. Wszystko to sprawia, ¿e poznajemy prawdziw¹ Javê — uniwersaln¹, czyteln¹,niezale¿n¹ od platformy systemowej. Czytaj¹c tê ksi¹¿kê, dowiesz siê, co jestniezbêdne do tworzenia wydajnych i bezpiecznych aplikacji w Javie.

• Projektowanie obiektowe• Zasady dokumentowania kodu Ÿród³owego• Operatory i sterowanie przebiegiem wykonywania programu• Inicjalizacja i usuwanie obiektów• Kolekcje obiektów• Obs³uga b³êdów• Operacje wejœcia i wyjœcia• Programowanie wspó³bie¿ne• Projektowanie interfejsów u¿ytkownika

Przekonaj siê, dlaczego ksi¹¿ka „Thinking in Java”jest uznawana za najlepszy podrêcznik Javy dostêpny na rynku

Autor: Bruce EckelT³umaczenie: Przemys³aw SzeremiotaISBN: 83-246-0111-2Tytu³ orygina³u: Thinking in Java (4th Edition)Format: B5, stron: 1256

Page 2: Thinking in Java. Edycja polska. Wydanie IV

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ �

� �������� ��

������������� ��

��������� � �������������� ������������� ������ ��� ���� ���������������������������������������������������������������������������������������������������������������� ������������������� ����� ����������������������������������������������������������������������������������������������������������� ������������� ��������� ����������������������������������������������������������������������������������������������������������� ���� � �����!�"�!������ ������������������������������������������������������������������������������������������������������� ��#��"�� ����� ��� ���������!�"�!������ ����������������������������������������������������������������������������� ��$������������ �������������������������������������������������������������������������������������������������������������������������� �%

&'������! (��&������������!�������� (����������������������������������������������������������������� ��#�!����"�� )�������* ���� ���!���"�!� ���!������������������������������������������������������������������ �+,�� -�������������!��� �����!� ������������������������������������������������������������������������������������� %�.������ �� �������������������������������������������������������������������������������������������������������������������������������� %�

/����� !�� ��� ���0�������*"��1� ������������������������������������������������������������������������������ %�/ � ������������* �������-� ������������������������������������������������������������������������������������������ %%������� �� ��* �2��"�!��� ������ �* � �������������������������������������������������������������������������� %3#��*���� �� )�������������������������������������������������������������������������������������������������������������������������� %345���6��� ���� �������������������������������������������������������������������������������������������������������������������������� %�

7��!���������)�###8� ����������������������������������������������������������������������������������������������������� %�� �� !� ��������� ������"������������������������������������������������������������������������������������������ 9�� �� !� ��������� ������� � � ����������������������������������������������������������������������������������� 9%

�����!� ����������������������������������������������������������������������������������������������������������������������������� 9%

��������� � �������������������� �$��� �����������* ���� ���� ��� ����� ���������������������������������������������������������������������������������� 93#������������������ ������ � ��)� ����������������������������������������������������������������������������������������� 9�

:������ ��-� ���!������ ���������������������������������������������������������������������������������������������� 9+� �����������"��;����������� � ������������������������������������������������������������������������������ 3�/�"��� �45��������������������������������������������������������������������������������������������������������������������� 3<

=���������!���� ���������������������� ��������������������������������������������������������������������������������� 3�>�� �� �������������������������������������������������������������������������������������������������������������������������������� 3�>�� ��������* � ���������������������������������������������������������������������������������������������������������������� 3�

#�������������-�2���� ��"��� ���������������������������������������������������������������������������������������� 3���"���!��������������������������������������������������������������������������������������������������������������������������� 3�

?�����@� ��!������� �� ��� ������������������������������������������������������������������������������������ 39A���� ��!���* ��������������������������������������������������������������������������������������������������������������� 39

Page 3: Thinking in Java. Edycja polska. Wydanie IV

�� !"�����#����$�%� �&��'����(���

�� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

/ � ������� �� !�� �45������������������������������������������������������������������������������������������������������ 3�#������ )��� ��������������������������������������������������������������������������������������������������������������������� 3�

#��� ������������-���!������* �������������������������������������������������������������������������������� 3�B�� ���"��� �������������������������������������������������������������������������������������������������������������� 3+

/ *����� ����� �� !� �45������������������������������������������������������������������������������������������������� �<.�!��"����� �-�!������ ����������������������������������������������������������������������������������������������� ��

.�!��� ���� ������!���� ��������� �������������������������������������������������������������������������������� ��$���!����� ���!��� �-� ���������������������������������������������������������������������������������������� ��B����������������������������������������������������������������������������������������������������������������������������������� �%��������,/?A� �������������������������������������������������������������������������������������������������������������� �9=����* ��������������!�������� ��������������������������������������������������������������������������������� �9� ����������!���� �������� ��������������������������������������������������������������������������������������� ��

B��"�� �� !� �������������������������������������������������������������������������������������������������������������������� �+�����!� ����������������������������������������������������������������������������������������������������������������������������� +�C ������ �������������������������������������������������������������������������������������������������������������������������������� +�

��������� � )�������� ��� �������� ���� �� �� ��������������������������������������������������������������������������������������������������������� +�� � ������� �� * �45�� ����������������������������������������������������������������������������������������������������� +�.�"���� )���� �� * ��������������������������������������������������������������������������������������������������������������� +%� ��������� ������������������������������������������������������������������������������������������������������������������������������ +%

/ � �������� � � � ����-�!����� ��������������������������������������������������������������������������� +3��� �� ��!��!��������������������������������������������������������������������������������������������������������������� +�

4���� ��!���� ����� �� ��!��������"������������������������������������������������������������������������ <����� �� ��� � ���������!��������� ���������������������������������������������������������������������������������� <����� �� �� �"��� �������������������������������������������������������������������������������������������������������������������� <�<

B� ������ * �� ��������* �������������������������������������������������������������������������������������� <�<��� �� ��"������� ���������������������������������������������������������������������������������������������������������������� <��

B� ������"������ � ����"����������������������������������������������������������������������������� <��A��� ��� ���������������������������������������������������������������������������������������������������������������������������������� <�%

>���� ��������� ���������������������������������������������������������������������������������������������������������� <�9��� �� ������ �� ������������������������������������������������������������������������������������������������������������������� <����� �� ��� ������ )�������������������������������������������������������������������������������������������������������������� <�+��� �� �� *� ��!���� ����D�"��� ����������������������������������������������������������������������������������������� <<���� �� ��E���EF��"��"���B� ���������������������������������������������������������������������������������������������� <<�=�� �������������� ���� � ������� �� * � ������������������������������������������������������������������� <<���� �� �� ���� ��� ������������������������������������������������������������������������������������������������������������ <<%

������������ �"���� ������������������������������������������������������������������������������������������������ <<9� �!�������� ����������������������������������������������������������������������������������������������������������������� <<3

#�45�������!�&������(� �������������������������������������������������������������������������������������������������������� <<3.�!������!���� �� * ������������������������������������������������������������������������������������������������������� <<������!� ��������������������������������������������������������������������������������������������������������������������������� <�9

��������* � +����������������#������������ ���� ��������� ������������������������������������������������������������������������������������������������������������������������ <�3��D�"��� ������������������������������������������������������������������������������������������������������������������������������������� <��6�� �� ����������������������������������������������������������������������������������������������������������������������������������� <�+

��D -�"����������������������������������������������������������������������������������������������������������������������������� <�+�� � ������������������������������������������������������������������������������������������������������������������������������������ <����� �� �� ������ ���������������������������������������������������������������������������������������������������������� <�<

B�������� �-� �������������������������������������������������������������������������������������������������������������������� <�� ��� ���������������������������������������������������������������������������������������������������������������������������������������� <��� ������������� ��������������������������������������������������������������������������������������������������������������������� <�%=���� ���&����(�������������������������������������������������������������������������������������������������������������������� <�9� ��-�������������������������������������������������������������������������������������������������������������������������������������� <�������!� ��������������������������������������������������������������������������������������������������������������������������� <��

Page 4: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� �

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ���

��������� � ,��'��(���'���������-������ �*�: ��� ������"����� ��������� ���� � ��������������������������������������������������������������������� <��� ��� ����!��������������������������������������������������������������������������������������������������������������������� <�%

G�� * ������� ��� ���-�!����� �������������������������������������������������������������������������������� <�3� ��� ��������������� � ��������������������������������������������������������������������������������������� <��� ��� ����� ���� �� ��� ��� ���������������������������������������������������������������������������� <%<

.���� ���� ����!� "��� ��������������������������������������������������������������������������������������������������������� <%�B�� ���"��� ���-����������������������������������������������������������������������������������������������������������������� <%�

#� ��� ��������� ���� * �������� ���� * � �������������������������������������������������������������� <%%>���������� ����������������������������������������������������������������������������������������������������������� <%3

B� � ����;����"�������� !�������!� ������������������������������������������������������������������������� <%3$���������� �����"���01� ������������������������������������������������������������������������������������������������ <%�?������� ��� � ���)��� � ����� ����������������������������������������������������������������������������������� <%+# �������� ����� ����������������������������������������������������������������������������������������������������� <9�4��������� !�����!� ������������������������������������������������������������������������������������������ <9<

6���"��������� �-� ������������������������������������������������������������������������������������������������������� <9��� � "����������������"������������������������������������������������������������������������������������������� <99

6���"���� ������ ���� ���������������������������������������������������������������������������������������������������� <93.�"���� )�����"����� ����������������������������������������������������������������������������������������������������� <936���"�����!�����-��������-�������������������������������������������������������������������������������� <9�4 ������"������������������������������������������������������������������������������������������������������ <3<6���"��������!�" �� ������������������������������������������������������������������������������������������������ <3�

6���"������"�� ������������������������������������������������������������������������������������������������������������������ <3�>!������"����� ��!���* ����������������������������������������������������������������������������������������������� <33

/���� �"������ �� ��������������������������������������������������������������������������������������������������������������� <�������!� ��������������������������������������������������������������������������������������������������������������������������� <�%

�������� � .���(�����/�0� �1�������2�������������"������� ������������������������������������������������������������������������������������������� <��

� ����������� ������������������������������������������������������������������������������������������������������������ <�+/ � ������������ �-��� ������* �������������������������������������������������������������������������� <+<#�������"������� � ���� ���������������������������������������������������������������������������������������� <+�#��� ������������ ������!�� ������!�����-� ��� ����������������������������������������������� <+9������� � ����������!�� ���������������������������������������������������������������������������������������� <+9

?�������� ������ ��� �45��� ���������������������������������������������������������������������������������������������� <+9$��� �������� �������������������������������������������������������������������������������������������������������������� <+3���"�;����� ��������� ������ ��������������������������������������������������������������������������������������������� <+�� �5��;����������)H��������������������������������������������������������������������������������������������������������� <++� ������;����� ��&����� ����(������������� ��������������������������������������������������������������� ���

6��� ��������!�"�!����� ������������������������������������������������������������������������������������������������������� ���$��� ������"�� ����������������������������������������������������������������������������������������������������������������������� ��������!� ��������������������������������������������������������������������������������������������������������������������������� ��3

��������� � ���(��������������������(��� �2�B��������!������� ������������������������������������������������������������������������������������������������������������� �<�B������������������ ���������������������������������������������������������������������������������������������������������� �<�

6���"�����"������ ��� ��������������������������������������������������������������������������������������������� �<�$�"����� ������������������������������������������������������������������������������������������������������������������������������� �<3I ��������!��������������������� ������������������������������������������������������������������������������������ �<�

>�� ���������� ������� � ���� ������������������������������������������������������������������������������ ����� � ������ ��������������������������������������������������������������������������������������������������������������� ���

#��* �!� ������!����� ��������������!� ���������������������������������������������������������������������� ��%� ������� �������������������������������������������������������������������������������������������������������������������������������� ��9G���� ���� ��* � ���������������������������������������������������������������������������������������������������������������� ��3

$"�����& ��* (� ���������������������������������������������������������������������������������������������������������� ���4����������!��������������������������������������������������������������������������������������������������� ��+

Page 5: Thinking in Java. Edycja polska. Wydanie IV

1�� !"�����#����$�%� �&��'����(���

1�� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

B�� ���"��� �����"� ������������������������������������������������������������������������������������������������������������ ��+>!���������"��� �������������������������������������������������������������������������������������������������������������� ��+?���������"��� ���������������������������������������������������������������������������������������������������������������� ���."������"��� ������������������������������������������������������������������������������������������������������������������� ��%��� � ���������" � ����"���������������������������������������������������������������������������������������������� ��9

6���"��������� �����"��������������������������������������������������������������������������������������������������� ��36���"���� �� �������������������������������������������������������������������������������������������� ���

�����!� ��������������������������������������������������������������������������������������������������������������������������� ��+

��������1 � �(��3��� �*�G���� ���� ��* � ������������������������������������������������������������������������������������������������������� ���

>��!����������������������������������������������������������������������������������������������������������������� ���?���� ��� �������������������������������������������������������������������������������������������������������������������������������� ���

#� ����� � �����!������ ������������������������������������������������������������������������������������������ ��%������ ������� �������������������������������������������������������������������������������������������� ��%G����� �"�� )� ���������������������������������������������������������������������������������������������������������������� ��������;�&� ���������(�!������ � ���-� ������������������������������������������������������������������ �%<�����;�����������"���!������ ������������������������������������������������������������������������������������ �%�

.���� ���� �����"�!� ���!� �������������������������������������������������������������������������������������������������� �%�.�"���� )� � �� ������ ���� * ���������������������������������������������������������������������������������� �%�$��������������� � ����� ���������������������������������������������������������������������������������������������� �%%>-� ����!�������"�!� �����-� � � � ������� ���� * ��������������������������������������� �9�

.� �������* �� ��-��������������������������������������������������������������������������������������������� �9�� ������ ������� ���!������������� �������������������������������������������������������������������������������� �9�

B������������� � ����� ����� �������������������������������������������������������������������������������������� �9�G���� ���� ��*������������������� ������ ������������������������������������������������� �9%

�����!� ��������������������������������������������������������������������������������������������������������������������������� �93

��������� � ,����3����� � �."�����!��������� ������ ������������������������������������������������������������������������������������������������� �9+6��� �������������������������������������������������������������������������������������������������������������������������������������� �3�G������"�������������������������������������������������������������������������������������������������������������������������� �39&$������������ ��"���� �(� �45������������������������������������������������������������������������������������� ���G����� ��������� ��������� ����������������� ��������������������������������������������������������������������� ���

.�"������� �������� ��������� ����* ���������������������������������������������������������������������� ���J���� ����������� ����������������������������������������������������������������������������������������������������������� ��%��"� ����� ����-� ���������������������������������������������������������������������������������������������������������������� ��3

6���"�����*"����� ����* � �������������������������������������������������������������������������������������������� ���>���� � �������� ����* ������������������������������������������������������������������������������������������������������ ��+6��� ������� �� * ��������������������������������������������������������������������������������������������������������������� �+<�����!� ��������������������������������������������������������������������������������������������������������������������������� �+�

���������2 .(��������/������ ���/ � �������"�� � � � ���-� ���������������������������������������������������������������������������������������������� �+%��� ���������"� ��� � � �� ������������������������������������������������������������������������������������������������ �+3��-�������� ������������������������������������������������������������������������������������������������������������������������������� �++."��� � � � ����� ���� ���� ��* � �������������������������������������������������������������������������������� ���."��� � � � ���� �!����-������ �-� �������������������������������������������������������������������������� ���J����!� ���"��� � � � �������������������������������������������������������������������������������������������������� ���

4�������� �� ��K�� ��?��-��� ���������������������������������������������������������������������������������� ���."�������� � ���� ��������������������������������������������������������������������������������������������������������������� �<�

."��� � � � ������ ����* ��������������������������������������������������������������������������������������������� �<�B� ��������� � � �����"��� ��"�� ����������� � ����� ��������������������������������������������� �<�

Page 6: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� �

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ���

$"������"��� � � � ���� �������������������������������������������������������������������������������������������������� �<�$�!��� ���� � ������ ���������������������������������������������������������������������������������������� �<9."��� � � � ����������"������� � �������������������������������������������������������������������������� �<+

$����������������"�-� � � � ���-� ������������������������������������������������������������������������������ ��%7����"��� � � � ����!�� ���)�� ��������8� ������������������������������������������������������������������� ��9A��"����"��� � � � ���� ���������������������������������������������������������������������������������������������������� ��36���������� ���"�� � � � ���-� ���������������������������������������������������������������������������������������� ��+�����!� ��������������������������������������������������������������������������������������������������������������������������� ��+

���������� .(��'����������� ���.������ ������ ��������*"����������������������������������������������������������������������������������������������� ������ ������� � �� �������������������������������������������������������������������������������������������������������������� ��%$�� ����� ����"�!���* � �������������������������������������������������������������������������������������������������� ��3#����� ����� �� ��������� * � ����������������������������������������������������������������������������������� ��+6��� �����A������������������������������������������������������������������������������������������������������������������������������� ��<6��� �����6�� �� � ��������������������������������������������������������������������������������������������������������������������� ��%

6��� �����A���6�� �� � �������������������������������������������������������������������������������������������������������� ���."��A�����A���� ������������������������������������������������������������������������������������������������������������������� ��+."��B��� ���������������������������������������������������������������������������������������������������������������������������� �%�6��� �����B������������������������������������������������������������������������������������������������������������������������������� �%�6��� �����?�� �������������������������������������������������������������������������������������������������������������������������� �%%6��� �����L����� ���������������������������������������������������������������������������������������������������������������������� �%+

� �� ���L����� ������������������������������������������������������������������������������������������������������������������ �9�7�""���������� �6�� �� � ������������������������������������������������������������������������������������������������������ �9�6�� �� ���� �"���� �-���������������������������������������������������������������������������������������������������������� �9%

6���!�!�����D���� � ��������������������������������������������������������������������������������������������������� �93�����!� ��������������������������������������������������������������������������������������������������������������������������� �3�

���������� )���0#����/��������'-����-����� ���> ����������� ��������������������������������������������������������������������������������������������������������������������� �39����� ���������� �� ��* � �������������������������������������������������������������������������������������������������� �33

J ��!����� �� ��* ������������������������������������������������������������������������������������������������������� �3�� ��- ��� ���� �� ��������������������������������������������������������������������������������������������������������� �3+

'"���� ������������������������������������������������������������������������������������������������������������������������������ �3+������� �� ��* ������������������������������������������������������������������������������������������������������������ �3+

/ � ������ ����-� �� ��* � ��������������������������������������������������������������������������������������������� ���G����� � ���� �� ��* � ������������������������������������������������������������������������������������������������� ���

B�������� �� ��* ����������������������������������������������������������������������������������������������������������� ��9� ��- ��� ������ �"����� �� ���� ���������������������������������������������������������������������������������� ��3

B���� � �� � ������������������������������������������������������������������������������������������������������������������ ��+���� ��� � ������ �� ��* ��������������������������������������������������������������������������������������� ��+B�� ����� �� ��* �������������������������������������������������������������������������������������������������������� �+�

B��� �� �� �� ����45������������������������������������������������������������������������������������������������������� �+%� �����������"��;�G����!�MN������������������������������������������������������������������������������� �+9

G���������� � ��* � ����""������������������������������������������������������������������������������������������������� �+3$���������� �����""������������������������������������������������������������������������������������������������������� �++#��*������������""���� ��� �� ��������������������������������������������������������������������������������������� ��<�����;���������� �� ���� ������������������������������������������������������������������������������������������� ���

�� ������� �� ��* � ��������������������������������������������������������������������������������������������������������� ���.���� ���� ���������������������������������������������������������������������������������������������������������������������������� ��3$���� � ���� �� ��* ����������������������������������������������������������������������������������������������������� �<<G�� � ����"�� ��� �������������������������������������������������������������������������������������������������������� �<�

,���� �� ���������������������������������������������������������������������������������������������������������������������������� �<��� ������ �� �������������������������������������������������������������������������������������������������������������������� �<%

Page 7: Thinking in Java. Edycja polska. Wydanie IV

�2�� !"�����#����$�%� �&��'����(���

�2�� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

� ����� ���� �� ��* ��������" ������������������������������������������������������������������������������� �<�>!��� �� ��* ��� ����-�������� ���������������������������������������������������������� �<+

#���* ��� ���������������������������������������������������������������������������������������������������������������������������� ��<�����!� ��������������������������������������������������������������������������������������������������������������������������� ��<

���������� �4�-#��������� *��=���!����� )�� �* ����� �-� ���������������������������������������������������������������������������������������� ���B� ���'��"�� ����� �� ��� ������� �� �OEP����������������������������������������������������������������������� ���=���!�� ���� ��� ��� ��������������������������������������������������������������������������������������������������������� ������ ���������!�" �-��"���B� ����������������������������������������������������������������������������������� ���K� !�� ���� �� ������������������������������������������������������������������������������������������������������������� ���

K������ ����01� ��������������������������������������������������������������������������������������������������������������� ���B����!������� !�01���������������������������������������������������������������������������������������������������������� ���."��K� !��� � ��������������������������������������������������������������������������������������������������������������� ���B�������� ���� !�������������������������������������������������������������������������������������������������������� ���.�� � ���� ����������������������������������������������������������������������������������������������������������������������� ��%?�����B� ������ !�01� ��������������������������������������������������������������������������������������������������� ���

#� ���� ���" ����������������������������������������������������������������������������������������������������������������� ��+����� �� ������������������������������������������������������������������������������������������������������������������������� ���/ � ������ � � � ���" ��-� ������������������������������������������������������������������������������������� ���. �������� �� ��������������������������������������������������������������������������������������������������������������� ���."������� ��� ��?�-� � ��������������������������������������������������������������������������������������������� ��9!�������"��01� ������������������������������������������������������������������������������������������������������������������ �%���� ������ �� ������������������������������������������������������������������������������������������������������� �%�?����� ����01� ����������������������������������������������������������������������������������������������������������������� �%9#� ���� ���" �������� ��� �� �D �� ��45������������������������������������������������������ �%3

B��� ���� �� ����������������������������������������������������������������������������������������������������������������� �%+B�� �� �� �� �� �� �� �-� ����������������������������������������������������������������������������������� �9<B��� ���� �� ��� ���� ���� � � � ���" ��-��������������������������������������������������� �9�

."��B� ���/������� � ����������������������������������������������������������������������������������������������������������� �9������!� ��������������������������������������������������������������������������������������������������������������������������� �9�

���������* ,�3��'��������'"� * ���� ����!�-���!��G//6��������������������������������������������������������������������������������������������������� �9%�������7"������������������������������������������������������������������������������������������������������������������������������ �93

A��� ���7"��� ������������������������������������������������������������������������������������������������������������������ �3�G��� ������"�����*"�����-� ����������������������������������������������������������������������������������������� �3%=� �������� ���� ��� ���������������������������������������������������������������������������������������������� �33

B� ������� ���� ���� ���!�������������������������������������������������������������������������������������������� �3�� ����"��� �* ��"��������������������������������������������������������������������������������������������������������� ���$��!�������������� ��������������������������������������������������������������������������������������������������� ��%>"������ ��� ������� ���������������������������������������������������������������������������������������������������� ��3

#�� * ���� ����� � ����������������������������������������������������������������������������������������������������������� ������������� * �� �� )�������* �7"��� ������������������������������������������������������������������������� �+<G��"�����2����� !�����"���� ������ ������� ���������������������������������������������������������� �+�

M��� ��� �!����� ������������������������������������������������������������������������������������������������������������� �+�$��!������ �N������������������������������������������������������������������������������������������������������������������� �+3��������������������������������������������������������������������������������������������������������������������������������������� %�<

6!��������" ��� ������������������������������������������������������������������������������������������������������������� %�36��� �������G//6� ������������������������������������������������������������������������������������������������������������������� %�3�����!� ��������������������������������������������������������������������������������������������������������������������������� %<�

Page 8: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� ��

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ����

���������� !����#�(��� ����� * �������� �����!�7EE� ������������������������������������������������������������������������������������������������� %<9� ��������*"������ ����������������������������������������������������������������������������������������������������������������� %<3

'��"������� ����� ������������������������������������������������������������������������������������������������������������� %<+."�������� ���������������������������������������������������������������������������������������������������������������������� %��G���!A���� ��������������������������������������������������������������������������������������������������������������������� %��

���*"���������� ����* � �������������������������������������������������������������������������������������������������������� %�����*"������!����� ���������������������������������������������������������������������������������������������������������������� %�3

#��� ����� ����������������� ��!������������������������������������������������������������������������ %��?���������*"����������!�����!��"���!�� ��!���* �������������������������������������������������� %�<?��������*"����� ���� �����"���:��� �� � ��������������������������������������������������������������� %�<��� � �"���:��� �� � ��������������������������������������������������������������������������������������������������� %���� ������������ ���� ����� ������������������������������������������������������������������������������������� %����� � �"���������� �B��� ����������������������������������������������������������������������������������������������� %�%

J����!� ���"��� � � � �������������������������������������������������������������������������������������������������� %��'��� ����!���"����� ���-� ����������������������������������������������������������������������������������������������� %��/��!������ ��� ������������������������������������������������������������������������������������������������������������� %��

4������� � ���� �7EE� ������������������������������������������������������������������������������������������������������ %��B�� ���������� ��!�� ��� �������������������������������������������������������������������������������������������� %�9.�����"� � )���� ��� �������������������������������������������������������������������������������������������������� %�3=�� ���� �������������������������������������������������������������������������������������������������������������������� %��

.�!��������� ��� �������������������������������������������������������������������������������������������������������� %%�/ � ����������!�" ������* � ��������������������������������������������������������������������������������������� %%�/�"������* ���*"��-� �������������������������������������������������������������������������������������������������� %%9

G!���������������������������������������������������������������������������������������������������������������������������������������� %9�B�!��"�� ��"������� ���������������������������������������������������������������������������������������������������������� %9�

4������ ���������!��"�� 8����������������������������������������������������������������������������������������������� %93.��� ���� �������������������������������������������������������������������������������������������������������������� %9�B�!��"�� ��"����������� !����� ������� ��������������������������������������������������������������� %3<.�� � ������ ��- �����!������ �������������������������������������������������������������������������������� %39

� ��"�!���������������������������������������������������������������������������������������������������������������������������������� %3�/��������� � ������� !�� ������ �� ��������������������������������������������������������������������� %3�6!�"�!���� �������� ����* �� !�� ��� ��-� ������������������������������������������������������� %����� �� ����� ��� ���� ����������������������������������������������������������������������������������������������� %��� ��� ������������������������������������������������������������������������������������������������������������������������� %��> ������������� ������ ��"������� ������������������������������������������������������������������������ %��

/�����!����� � ��� ����������������������������������������������������������������������������������������������������������� %������"� � ��� �������*"������������������������������������������������������������������������������������������ %��B!����� � ���� ������������������������������������������������������������������������������������������������������������ %�%.� ���� ��!���* � ����������������������������������������������������������������������������������������������� %��

$��!�������� �"����* ��������������������������������������������������������������������������������������������������� %+<#�� ���� ���������������������������������������������������������������������������������������������������������������������������������� %+�$�!������������������������������������������������������������������������������������������������������������������������������������� %+�

$�!������� �7EE� ����������������������������������������������������������������������������������������������������������� %+�$�!���������� ���!����� ����* � ����������������������������������������������������������������������������������� %+%>����� ���� �� �� ������ ����$�� �� � �������������������������������������������������������������� %+9$�!������� ����������!����-�� �N����������������������������������������������������������������������� %+�

/��� ����������� ���������������������������������������������������������������������������������������������������������������� %++.�!������� ������� ����������������������������������������������������������������������������������������� 9��

G��"������������������������������������������������������������������������������������������������������������������������������� 9��J�"��� ����!������������ �����������* � ����������������������������������������������������������������� 9�%.���������!����� � ����� ������������� ����������������������������������������������������������������� 9��B�!�"� �������� ����������������!� ����� * � �������������������������������������������� 9<�

Page 9: Thinking in Java. Edycja polska. Wydanie IV

���� !"�����#����$�%� �&��'����(���

���� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

����������������� � �"���� ������ ����������������������������������������������������������������������������������������� 9<������!� ����2���� ���� ��������� �������8� ���������������������������������������������������������������� 9<�

$"���"���� ������������������������������������������������������������������������������������������������������������������� 9��

��������� !��(�'�� ��7�� ���-������������"����8� �������������������������������������������������������������������������������������������� 9�</�"������������ ����������� �������������������������������������������������������������������������������������������� 9��/�"��� � �"�� �� ��� ��-� �������������������������������������������������������������������������������������� 9�%/�"��� ��"� �!� � �� ������������������������������������������������������������������������������������������������������ 9�3/�"�����������*"��� ������������������������������������������������������������������������������������������������������������ 9�<#�� ��������-������ �-� �������������������������������������������������������������������������������������������� 9��

?�����J �����""01� �������������������������������������������������������������������������������������������������������� 9��:��� �� �����-� ���������������������������������������������������������������������������������������������������������� 9��/ � ��������"������!� ����� �� * ������������������������������������������������������������������������ 9�+

= � �����"���J ������������������������������������������������������������������������������������������������������������� 9��.���� ������"�� ����������������������������������������������������������������������������������������������������������� 9���� * �� ������"�� ������������������������������������������������������������������������������������������������������� 9�%�� * �� �����"�!���* ���"�� ������������������������������������������������������������������������������������ 9�9B� �� ������"��������������������������������������������������������������������������������������������������������������� 9�+� ������� ������"������� �� ���� ����������������������������������������������������������������������������� 9%�

�����!� ��������������������������������������������������������������������������������������������������������������������������� 9%�

���������� .�����������(����� �������������!��������� * ������������������������������������������������������������������������������������������������ 9%%#����������������� * �������������������������������������������������������������������������������������������������������� 9%9

G�� � ����������� �� �!� �������������������������������������������������������������������������������������������� 9%3:��� �� ���"�������� * ��������-� ��������������������������������������������������������������������� 9%+B���� �����"����� �����-��������������������������������������������������������������������������������������� 99�

6��� �����7�""������ ���������������������������������������������������������������������������������������������������������������� 99+��� ��������"��� �������������������������������������������������������������������������������������������������������������� 93�

��� ������������� ��� ������������������������������������������������������������������������������������������������ 93�6��� �����A������������������������������������������������������������������������������������������������������������������������������� 93%.������ ��B������"���� )��"�!���* � ���������������������������������������������������������������������������������� 93�

B� ���B��� ������������������������������������������������������������������������������������������������������������������������� 9�<.�"����� ����������������������������������������������������������������������������������������������������������������������������������� 9��

.�"������ �� ����� �� ������������������������������������������������������������������������������������������������������� 9��

.�"������ ���� ���� �� �������������������������������������������������������������������������������������������������� 9�%.������ ��������������������������������������������������������������������������������������������������������������������� 9�9

#����� )������������������������������������������������������������������������������������������������������������������������ 9��B� ���?�� ����������������������������������������������������������������������������������������������������������������������� 9+<A�����,�-?���������������������������������������������������������������������������������������������������������������� 9+�

,��� �����������-���� �� ������������������������������������������������������������������������������������������������ 9+�>����������-�-7���01�������������������������������������������������������������������������������������������� 9+9,��� ����������� )���������������������������������������������������������������������������������������������������� 9++� ������� ���!������-�-7���01� ����������������������������������������������������������������������������������� 3��

#��* ��!�"�!������ ������������������������������������������������������������������������������������������������������������ 3�36�� �� ���� ������ ������������������������������������������������������������������������������������������������������� 3��#���� ������!� ����"���!�� ����������������������������������������������������������������������������������������� 3<<>� � ��������� ��� �!������"�� ������������������������������������������������������������������������������ 3<3#���� ������!� �������� !�� �������������������������������������������������������������������������������������� 3<+#���� ������!� ������ �� � ��!��������������������������������������������������������������������������� 3��

= � ���������� �� ������������������������������������������������������������������������������������������������������������ 3��B� �� ������� ������� ����"����������������������������������������������������������������������������������������� 3�3=��!������� "���������� ��7�""��������?��������������������������������������������������������������� 3�+B��- ������7�""��������?�� ������������������������������������������������������������������������������������ 3��

Page 10: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� ��

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ����

� ��-� � ���� ��� ����� ��������������������������������������������������������������������������������������������������� 3�<#��,�-?������������������������������������������������������������������������������������������������������������������ 3��

.������ ��45�<�����<�<� �������������������������������������������������������������������������������������������������������� 3�%Q��� ���M��!� ����� ������������������������������������������������������������������������������������������������������ 3�%,�-��"��������������������������������������������������������������������������������������������������������������������������� 3�9B����������������������������������������������������������������������������������������������������������������������������������� 3�9'��B���������������������������������������������������������������������������������������������������������������������������������� 3��

�����!� ��������������������������������������������������������������������������������������������������������������������������� 3��

���������1 ���� '��5��� '��� �*�."��K�"��������������������������������������������������������������������������������������������������������������������������������� 3�<

#����� ����� �� ����"���� ���������������������������������������������������������������������������������� 3��= � ��������� ���" ������"��* � ���������������������������������������������������������������������������� 3�%/ � ��������"��* ����� �������-������ �� �������������������������������������������������������� 3%�

#�� ����� �� ����������������������������������������������������������������������������������������������������������������������� 3%�/����6����B� �!������������������������������������������������������������������������������������������������������������� 3%�/����������B� �!���������������������������������������������������������������������������������������������������������� 3%�

$�� ����� ����* ���� ������-����� ����* ������������������������������������������������������������������� 3%���������6����B� �!�����!� �K�"�� 6����B� �!� ������������������������������������������������������ 3%%>�������������B� �!�����!� �K�"�� ������B� �!� ������������������������������������������������� 3%9

."���G��� ���# ��� � ������������������������������������������������������������������������������������������������������������ 3%3 *������� �����-� ����������������������������������������������������������������������������������������������������� 3%�?���������-� ����� �!������������������������������������������������������������������������������������ 3%�."�������!�������� ��������������������������������������������������������������������������������������������������������� 3%+

���������!�����"��G���!J���K�"������������������������������������������������������������������������������ 39�/��� �������� ����� �!����� �� �D �� �� ����������������������������������������������������������������� 39�

'��� � ����"��� �� ��������������������������������������������������������������������������������������������������� 39<#�� ������!� �� ����������������������������������������������������������������������������������������������������������� 39�K� !�� ��� �� ������!� �� ������������������������������������������������������������������������������������� 39�#�� �������"���� ������������������������������������������������������������������������������������������������������������� 39�� ��-� � ������������� �������-������������������������������������������������������������������������� 39%�����������������"��* ������� ����� ������!������������������������������������������������������������ 399B� �!�����D������������������������������������������������������������������������������������������������������������������� 39�

= � �������������������������-����"��* � ������������������������������������������������������������������� 39��������"��* ���� ��-� ������������������������������������������������������������������������������������������������ 33<

B��� �� �� �� ��D �� ��������������������������������������������������������������������������������������������������� 33�7�������������� �� ���� �� ���������������������������������������������������������������������������������� 33�>!���B����!�������� ���# ��� � �������������������������������������������������������������������������������� 33�� ����� � � �������� �� ���� �� �D �� �� ������������������������������������������������������� 33�

B�� � ����� ���!���� � � ���!�� ������������������������������������������������������������������������������������ 33�=� �� �� ��D �� ��� ����������������������������������������������������������������������������������������������������������� 339

.�� � ������-������������������������������������������������������������������������������������������������������������ 33+����� ��������� � �-����* ����-� ����������������������������������������������������������������������� 3��#���������� * � �������������������������������������������������������������������������������������������������������������� 3��?����"� �������!��� ���� �������� * � ���������������������������������������������������������������� 3�3B����*�� ������ !��������� -� ������������������������������������������������������������������������������� 3�3�"������ �� � � ��� ��!� �� ����������������������������������������������������������������������������������� 3+<'"��� �����"��* � ��������������������������������������������������������������������������������������������������������� 3+%

.�!� ���������������������������������������������������������������������������������������������������������������������������������� 3+�� ������!� ��������� !���:>6����������������������������������������������������������������������������������� 3+�� ��-� � ���� ��"���"��* � ��� !���>����������������������������������������������������������������� 3++J -� �45��04JG1��������������������������������������������������������������������������������������������������������� ��<

Page 11: Thinking in Java. Edycja polska. Wydanie IV

�*�� !"�����#����$�%� �&��'����(���

�*�� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

B� �"����������* �������������������������������������������������������������������������������������������������������������� ��������� �����"��� �������������������������������������������������������������������������������������������������������������� ��9

.��� �"��� �"����� �������������������������������������������������������������������������������������������������������� ���B���� ����� �� ��������������������������������������������������������������������������������������������������������� �<%

R?A� �������������������������������������������������������������������������������������������������������������������������������������� ��<� ��� ����� ����������������������������������������������������������������������������������������������������������������������������� ��������!� ��������������������������������������������������������������������������������������������������������������������������� ��9

���������� !������(�'������� 1������� � ���-�����* � �"������ �-� �������������������������������������������������������������������������� ��3

#�"��������!�� ����������� �������������������������������������������������������������������������������������� ���$�� ����!�����������* � �"������ �-������������������������������������������������������������������������ ��+

� ����������!���������� �"������ ���� ��������������������������������������������������������������������� ���#�"������ ����� ���-� ��� �� ��������������������������������������������������������������������������������������� ��</��!���!������5"���01� ��������������������������������������������������������������������������������������������������� ���6!�"�!������@��������������������������������������������������������������������������������������������������������������� ��%#��* �"��� �� ����������������������������������������������������������������������������������������������������������������������� ��9� ����������������� ����* �������������������������������������������������������������������������������������������� ��3M��!B����!����������* � ����������������������������������������������������������������������������������������������� ��<B���� �����"���M��!?�� ������������������������������������������������������������������������������������������������� ���?����������"��� ����"��"�!���* � �"������ �������������������������������������������������������������� ���

/���� �"������ �� �� �-������ �����"�� ��������������������������������������������������������� ���/���� �"������ ������!������* � �������������������������������������������������������������������������� �%<

G��� � ������ ��"�� ����� ������������������������������������������������������������������������������������������������ �%9G��� � ��������������!����* � �"������ �-� ����������������������������������������������������� �%+B���� ����!���������"��� ��-��"��"�!���* � �"������ ����������������������������������� �9<G��� � ����������!� �M��!?���������������������������������������������������������������������������� �9�>���"� �� � �!� � ������������������������������������������������������������������������������������������������� �9�

�����!� ��������������������������������������������������������������������������������������������������������������������������� �9%

���������2 6����'��� 1 ������ ���������������� ��������������������������������������������������������������������������������������������������� �9�

$������ ����������� ��������������������������������������������������������������������������������������������������� �9+?��������� ����������������������������������������������������������������������������������������������������������������� �3�

� ���� ��������� ��������������������������������������������������������������������������������������������������������������� �3<M"�!���������������������������������������������������������������������������������������������������������������������� �3��� ������� �� ����!� "��-� �������������������������������������������������������������������������������� �3�:��� � �����"��* ��� � � ���-� �������������������������������������������������������������������������������� �3�J������������� ��� ����������)� ��������������������������������������������������������������������������������� �396!�"�!���� ����� ���� � ������������������������������������������������������������������������������������������� �39

� ��� ����������������!� ������������������������������������������������������������������������������������� �3+� �� !����� ������� �������������������������������������������������������������������������������������������������������� ���J������� ������ ������������� �!��������������������������������������������������������������������������������� ��9

S�������������*"��� ������������������������������������������������������������������������������������������������������� �+%6!�"�!�����S����� ����������������������������������������������������������������������������������������������������� �+9��� ��������������� ������������������������������������������������������������������������������������������������� +��

�����!� ��������������������������������������������������������������������������������������������������������������������������� +�%

���������� �������� � 7� �2���"��� ��*���� �� �� ��������������������������������������������������������������������������������������������������������� +��

B������� �������� ��������������������������������������������������������������������������������������������������������� +�+�"��������� ���������������������������������������������������������������������������������������������������������������� +<<

����� �� ��"� ��� � ����������������������������������������������������������������������������������������������������� +<�$������ ������ ���������������������������������������������������������������������������������������������������������� +<�."��/- ��� ������������������������������������������������������������������������������������������������������������������� +<�#���� ����������������������������������������������������������������������������������������������������������������������� +<9

Page 12: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� ��

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ����

> ���� �� ������ � �������������������������������������������������������������������������������������������� +<+���������2� �� ��!� ���� ���� ������������������������������������������������������������������������������ +��� �� ����� ���� ���������������������������������������������������������������������������������������������������������������� +�<� ��� �������������������������������������������������������������������������������������������������������������������������� +��# ���D��!��������������������������������������������������������������������������������������������������������������������� +��# ��������!�� ��* � ���������������������������������������������������������������������������������������������� +��/� !���"���� ������������������������������������������������������������������������������������������������������������������� +��I ������ ��* �������������������������������������������������������������������������������������������������������������� +��/ � ������ ���� ��������� ������� ���� ���� ������������������������������������������������������������ +�%: ���� ��* ������������������������������������������������������������������������������������������������������������������ +�9� ��- ��� ���� �� ��* ��������������������������������������������������������������������������������������������� +�3

#��*�����"���������* � ������������������������������������������������������������������������������������������������������� +��=�� � � ������ ���������* � ������������������������������������������������������������������������������������ +��G���� ������� ��*�� ����� ��������� ��*�����"���� ������������������������������������������� +��J��!� � )��� ������ )� ����������������������������������������������������������������������������������������������� +��."���&��!� �(� ������������������������������������������������������������������������������������������������������������ +%%B������ ��������������������������������������������������������������������������������������������������������������������� +%9B��- ���������� ��������������-�������* ���������������������������������������������������������� +9<A��"���!� )� ���� ���������������������������������������������������������������������������������������������������� +9�

� �� � ���� ��������� � ���������������������������������������������������������������������������������������������� +9��� *�����������0��!�"�1� ���������������������������������������������������������������������������������������� +9�� �� � ������"��� ����� ���� �������������������������������������������������������������������������������� +93#�!�������� �� ��� �������������������������������������������������������������������������������������� +9�B� ������� �� ��� ������������������������������������������������������������������������������������������������� +39

#��*��������� ��* ���������������������������������������������������������������������������������������������������������� +3�?������ ��01���������J""01� ��������������������������������������������������������������������������������������������� +3+������01����� �������J""01� ����������������������������������������������������������������������������������������������� +��� ��������������!���� ������������������������������������������������������������������������������������������������ +�3� ������@������!��������"����� ����������������������������������������������������������������������������������� ++�� ����� �������-���!� ��������!������!� ������* ���������������������������������� ++3

>�"��������� ������������������������������������������������������������������������������������������������������������������������ +++=� ����!�����������"�������� ������������������������������������������������������������������������������������������ <���

7����$� �A�-� ���������������������������������������������������������������������������������������������������������� <���7�"�' �� � ����������������������������������������������������������������������������������������������������������������� <��9$�"�L������������������������������������������������������������������������������������������������������������������������ <���� �� ���'"�����L����� ������������������������������������������������������������������������������������������������� <�<<B�� � �������" �� �2��"�� ����� �-!������ ��������������������������������������������� <�<�B�!�-� ����������������������������������������������������������������������������������������������������������������������� <�<3MN-��� ����������������������������������������������������������������������������������������������������������������������� <���

B�!�"��� ���������������������������������������������������������������������������������������������������������������������������� <���B�!�"������������ ���� ��������������������������������������������������������������������������������������� <���B�!�"���"�� ���� ������ ���������������������������������������������������������������������������������������� <��3G������"������ ��������������������������������������������������������������������������������������������������������� <��<

#����� )� ��������������������������������������������������������������������������������������������������������������������������� <��9�� * �������-��"�����!�����* � ������������������������������������������������������������������������������� <��9.������ �������"���� ��������������������������������������������������������������������������������������������������� <���'"��� ��������!�������� ������������������������������������������������������������������������������������������� <�%<'"�����G��# ���A�������������������������������������������������������������������������������������������������� <�%�

����������� ��������������������������������������������������������������������������������������������������������������������� <�%%�����!� ������������������������������������������������������������������������������������������������������������������������� <�%+

$"���"���� ����������������������������������������������������������������������������������������������������������������� <�9<

Page 13: Thinking in Java. Edycja polska. Wydanie IV

� �� !"�����#����$�%� �&��'����(���

� �� ���������� ����� ��������� �������������������������� � �������������� !������"#$%#����

���������� 8��3�'���������3�����0 ��������� �2 �J�"���� ���������������������������������������������������������������������������������������������������������������������������������� <�9%����� �����"�������B ���� �������������������������������������������������������������������������������������������������� <�99

�"��� !�� ��������������������������������������������������������������������������������������������������������� <�9+/ � ������� ������� ����������������������������������������������������������������������������������������������������������� <�9+� ��- ��� ������ ����� ������������������������������������������������������������������������������������������������ <�3����� �������� ������������������������������������������������������������������������������������������������������������������� <�3�G��!����������"�!���* ����� ������ �������������������������������������������������������������������������������� <�3�

'� �� A����� ���������������������������������������������������������������������������������������������������������������� <�3%K"� A����� ������������������������������������������������������������������������������������������������������������������� <�39: ��A����� �������������������������������������������������������������������������������������������������������������������� <�39: ��'�A������������������������������������������������������������������������������������������������������������������� <�33�������� ��������� ������ �������������������������������������������������������������������������������������� <�33'�NA�������������������������������������������������������������������������������������������������������������������������� <�33=�"������ �� � ����8� ������������������������������������������������������������������������������������������������� <�3�

?���"��� �� � �B ����� ���������������������������������������������������������������������������������������������������� <�3�G�������� �� �������� ���* �������������������������������������������������������������������������������������� <�3+"�������� ��"���� �� � ������������������������������������������������������������������������������������������������ <���

#�� �����!��������B ���� ���������������������������������������������������������������������������������������������� <��9� ������� ������������������������������������������������������������������������������������������������������������������������ <��36����� ����������������������������������������������������������������������������������������������������������������������������� <��+����� ������ ������������������������������������������������������������������������������������������������������������������ <�+<��"������� �� ���������������������������������������������������������������������������������������������������������������� <�+<G!��� ���������������������������������������������������������������������������������������������������������������������������� <�+�?�������� ���������������������������������������������������������������������������������������������������������������������� <�+���"� ��� �� ������������������������������������������������������������������������������������������������������������������ <�+%� ������� ��� ������������������������������������������������������������������������������������������������������������� <�+9A����� �� ������������������������������������������������������������������������������������������������������������������� <�+3A������������������������������������������������������������������������������������������������������������������������������������ <�+�>������������������������������������������������������������������������������������������������������������������������������� <<��������!�����* � ������������������������������������������������������������������������������������������������������� <<��?���� ����������������������������������������������������������������������������������������������������������������������������� <<��?������������� �� �������������������������������������������������������������������������������������������������������� <<�3G��� ���� ��������������������������������������������������������������������������������������������������������������������� <<�+������"��� �� ������������������������������������������������������������������������������������������������������������ <<<�������"��� ���"��* � ������������������������������������������������������������������������������������������������ <<<%,/?A� ���!������-�B ���������������������������������������������������������������������������������������� <<<3B� ����� �� ��������� ��� ������������������������������������������������������������������������������������������ <<<3>!������"������ �������������������������������������������������������������������������������������������������������� <<<+$ �� �@����"�����-� ����������������������������������������������������������������������������������������������� <<�<

4=A��� ��45�#���B� �� ��������������������������������������������������������������������������������������������������� <<�<B ����� ��*���� �� )��������������������������������������������������������������������������������������������������������� <<�9

>���������� ��������������������������������������������������������������������������������������������������������� <<�9#���"���� ��"� ��� � ������ ������� ���� ���� ����������������������������������������������� <<��

� �� !� ���� ���"�������!��������45'���������������������������������������������������������������� <<�%7��!��������!�������45'��8����������������������������������������������������������������������������������� <<�9#������������ !�������!����������� �����"� �6�� ������ � ������������������������������ <<��' ������ ����������!������� ����������������������������������������������������������������������������������� <<��.�!��������45'��������- ������ ���������������������������������������������������������������������� <<�9��� ������!��������45'��� �������������������������������������������������������������������������������� <<%�' ��������� ������������!������* �45'��� ������������������������������������������������������ <<%<#� �������!������-�45'����������������������������������������������������������������������������������� <<%�

J"�� ��� �� �������"�������B ���� ���������������������������������������������������������������������������������� <<%�

Page 14: Thinking in Java. Edycja polska. Wydanie IV

�� �� +������� '��� ��

���������� ����� ��������� �������������������������� � �������������� !������"#$%#������ ����

K"�N�2��"������"������� ��� !���K"�-� ��������������������������������������������������������������������� <<%�J-��@�K"�N����������������������������������������������������������������������������������������������������������������������� <<%�.�!��"� ����?R?A��������������������������������������������������������������������������������������������������� <<%%?R?A����� �����J����B ������������������������������������������������������������������������������������������ <<%9.������ �������� �"��� ���������������������������������������������������������������������������������������������������� <<%9M�����������"�� ����������������������������������������������������������������������������������������������������������������� <<%�>� ���������������������������������������������������������������������������������������������������������������������������� <<%+��� ��������45 ������������������������������������������������������������������������������������������������������������ <<%+?���"�����-��� � ��������-� �������������������������������������������������������������������������������� <<9�.�!��"� ����������"����������������������������������������������������������������������������������������������� <<9�

J�"�����B#/� �������������������������������������������������������������������������������������������������������������������� <<9�6���"� ����B#/���������������������������������������������������������������������������������������������������������� <<9%J-��@�B#/� �������������������������������������������������������������������������������������������������������������������� <<9%M"�!��� ������ � �� ������ ������������������������������������������������������������������������������ <<9�?���� ����������������������������������������������������������������������������������������������������������������������������� <<3����"��������@�� ����������� ������������������������������������������������������������������������������� <<3<: ������������������������������������������������������������������������������������������������������������������������������� <<3�#��*���� �� )� �B#/� ������������������������������������������������������������������������������������������������� <<39B#/����B ���8������������������������������������������������������������������������������������������������������������ <<3�

�����!� ������������������������������������������������������������������������������������������������������������������������� <<3�>����� ��������������������������������������������������������������������������������������������������������������������������� <<3+

9������6� :���������0�0�������-'�� ��1�B��"�!����������� ��� ������������������������������������������������������������������������������������������������������ <<�</-����������7������������������������������������������������������������������������������������������������������������������������ <<�<B���"�����/-����������45� ������������������������������������������������������������������������������������������������� <<��B���"�������7$DG�?D���,���D���45��������������������������������������������������������������������������� <<��B���"�����/-����������������� ����������������������������������������������������������������������������������������������� <<��/-����������M��� � ����45�������������������������������������������������������������������������������������������������� <<��/-�������������� ���0 ��-�451������������������������������������������������������������������������������������������� <<��B���"�����/-�������������� ����������������������������������������������������������������������������������������������� <<��.����"������"���� �����* � ������������������������������������������������������������������������������������������ <<�%

9������;� <����� ��1��� �� !� ���� ����������������������������������������������������������������������������������������������������������������� <<�3M���� ���� ��� ����� �� !�������� ������������������������������������������������������������������������������� <<�3.�� ��� ��������������������������������������������������������������������������������������������������������������������������������� <<��

J�"������ ������ ���� ������������������������������������������������������������������������������������������������ <<�+���-��� ��������������������������������������������������������������������������������������������������������������������������� <<+<A����!��-���� ���������������������������������������������������������������������������������������������������������� <<+<

+�������� ����

Page 15: Thinking in Java. Edycja polska. Wydanie IV

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

��������

���������� �� � �� � �� ��� ��������������������� ������������ ��������� �� ����� � ������ ����� � �� �� �� �������� ��� � ��� ���� � ���������������������������� ����� �� �������� ����������� !�� ������ � ��� �� �� ������������ ������������ � �������������� �"�� ���#$

�%��� ���&��'(��")*+,-.*,/*0

����� ������ ����������� ��������������������������� � ����������������������������������������

��������� ������������� ��� ������������ ������������������������ ������������������������ ���������!��"��#��$%������ ������� �������������� ���&��������������������� ��������������������� ��������%������������ ������'����������������������%�����������������������������������%������� ��(����������%��������%���� ��%������� ����'���)����������������������������� ������ �� ����*���*� ����������+������������� ��� ������������ ��

&����������������������� ��������������������������������������������� �����1�����1�������2���� �����%�,,)$��-�������� ������� �����������*�������������� ������������� )������ ��� ������� ��� ��%� �������� ���� �������� ������������ �����������.����������������������������������%��*+��������������� �����.������������ ���� ���������� �����������%������������� +�����������������3(��������4���� �����������������������*������������#5���6���#����

/�� +����������������������� %��� ������ ���������������������� �������� ���� ���&�������������*������� ���+��� ���������������������������������������������0���� ��������*������� �������������� ��������������*%����� ���������������������������� � ���*������1������� � ������ ������ � � ����%���������� ���������������0������������*�����������������������*�������������������� �����+��� ���0������������������������ ����� �'������������� �����������������������#� ������ ������� ������� �������������� ������ � � �������+���������������'���� ����%������ ���

Page 16: Thinking in Java. Edycja polska. Wydanie IV

�� ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

� ������ ��+�������������������������������������� ������������������������������ ������)������� � ����� ��������+���������� ��� %������������+%������������������ ����� ����������*�� ������� �����+�������������

"�#�$��%&� � �#�� ��% �� ��� ������������������������������ ��������� ���2 ���������+�����+�����%� ��� � +��������%� ����� ���� ���������������� ��+%� �������� ��������� �������� ���� �� ���� ����� ��������� ���)���������� ���������� ���������������� ����������(��.���� ���� �%�������������� ������ ���3���# ������������ ������������������� ����������&���������������������*� �����%���������������� ��� � �����* ���4�����%�56!7.���.$%���������������� ��������� �����������5�������������������������������������������%� ����������������������� �������������������������� ���������������� ����������������*�������������������%�������������������0�� �������� �������� )����������������� ����+� ��� ������ ��� ����������������� ������������������� ������%��������� ���%�������������� ���������%������ ����������$������������������� ��������������� �����������������0�����%��������� ���%���������������������� �%�������������� ���'����$��&���������������������������� �� ��������������������� ���������'�����%� � � ��������� � ���� ��������� ���������� ����������������%� ���� �%� �� �������� ����������������������������������� ���� ���8�������������������*�������� �����0������������ ���� ���������%������ �����������������������

6�������� ��������������������� ���������������������������&������ ����������������%������� ���97!)�����6)9%����� ��������� ����������������������� �&����������������� ����������� ���������������&�����������������

������������$��):,9,�������������������������������� ��������� ���)������ ����� ������������ �� ������������ ������� ��� ������������*� ����� ������ ����� �������� �����$���������������������� ��������������������� �����������'�������� �������������������� ��������������� ��$���� ��������*���� +� ������0�������������� �� �������������%��������� ����������������%� �������������*����������*���� ���� �����'��������

)�������������������������������� %��������� ��������� �������� ���������0������������� ����������� ������������ �������� :���������� �� ��� ���� ���������������%��������������������� ��� ����� �������������������������,���� ����� ��� ����������������������� ������%� ��� �� �� ��*������������������������������ �����%�� ��� �� ���� ������ ��������������� ����� ������������� � � ���0��� �������%������������� ���������������������������������$��)�������������� ����������������������������� ��������'������� �����������������������������������*��������������%���� ������������������������������� ������� �����������'����������������� � ��������������6������� ������� ������ ��� ����� ������� � ���������� �� ���*%� �������� �������� ��� ���� ��� ;� )�������������������������� ��������+������������ ������������*������� �����*%�������

����������������������������������������������������������; <����������� �������� �����������%� ����������������������������������������������%������������

���������� ��+����������������������������������)��� ����������� �������� ���*����� �� %���� ������ ��� ����������� � � ��� � ��� ����������� � ��������� ������ ��� ���$�)�����/���*��5���%�5����� � ��������� �������&�� %�6�����0&�����;==>�

Page 17: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� �#

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

�����������*���������%�����������������������*��������� �������)� �����������0�������� ��������� � ������ ����� ��� ������ ��������������� ������������� ��� ���� ��������������������������� �%�������� �������+%� � ����������������0������<������� ���� ��� �������� ������ ����������� ����������������������������� ��� ����� ��*������������ ��������*�� ��� ������ ���������

6������������������ +����������*����*�!������%������������������ ������������%����������� ��������������������#�"���.��*��������������� ���������0�� �����������(

����������������� �������2 ����������+������������ ������� � ������������ %��������������������*�� ������%����� ����� ���������+� �����%������������+�������������������� ���/����������%������� ������� ��������� ��������������� ���%��������%������������$�� ��������������+����������������� ��������

�$�������������� ������ ������������������������� ������ �������� ��� �������������� �#��&������������������������������������ �� ������������������������������� ������ ���2 ����� ��� �+������������ �������������'���� ��������� �� ��������������������

������ ���� ������ �������� ��� �������� ������ � ����� ����#7����������%������������������%�� �� ���� ���������������� � � ������� ���*���������5��� ������������������ ����������%������� �� ������ �����*��� � +��������� ���������

�%���� ���� ������ ���������#�2��� ���������%��� ��������� �������� �������� ��� �%�������������� ���������������������<� ������� �� ����* ����� ��� ���� � ���������� �����������(��#���������������� �������� �������+3��

�&��������� ��� ����������������� ��������������������� ����#/�������������%� ����� ��� ��� ����������%�� ����+�������� ����)������������������� ��� ���� ������ ������������������'������%���������� ���� ���������+�������������������������'��������,��������%�� �� ���� ������������������� ������ ����'������%�������� ������������������������������������������������ ����������������'��������/��� �� ��� ��� !� ���� ������� �� ��� ����*���������������������������

5������ ���� ���������� ��������������������� ��5�*(

1������ �� ��� �(�� ������ � �� !#

,��������%� ��������� ��������+���������� ������ ��� � ��� �������$%������ ������ ������*������������$����� ���������� ����� �������������������� ��+���������*������*�������������������������������� �%����� ������������ ������0 ������������������������ ��?�

����������������������������������������������������������? 1�� ������� ����������������� ��%���� �� ���������������+�������������� �������� ���*����������*

�������� ���*��������������*���������*%������� ��� �� +������*��������������������������&������*����������*�� ��� +����������� ����� �+���������������������������� ��%������������������

Page 18: Thinking in Java. Edycja polska. Wydanie IV

%' ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

'��������#� � ��������%#)�������������������%���������������������������� ���������� ��������%����������������6����������������������������������������������������7������0�� ��%� ������������������%�� � ������������%���� � ������ ������������*��������������������*����*��*���������*����*�����%������������ ������������0�������� �����!�����@A��)������������������������������������������0���� ������������������%��������� ���������������������

#�������������������� �%�!���������������� ����������������������������� �%�����*� ���������������������� ��������������2���������������������������������� ����%� �������%� ���%� �������� �� ���� ��������� ���*����������������������,������%�������� ���������������� ��������*��������������������������������%�������������� ������ ����������� �� ����� ������� �� �� � ���� ������ ����� �� � $�� /�������� ��������� ���*� �����������*� �� �$� ���� ��� � �� '������������*������ ����������������������������������6�������� ��� ����������*����*0�� ��� ���������������%� ����������������(�� ��������+�������������������� �� �������������������������������������������� ��� ������������$%� �� ��0�� �������������+������ �������������������������������������������� � ����������������������������%��������� ���� �%�������������+$��!������� ��0�����$����� ������������ ����������*��������� ������ �������������%��� ������ ��� ������ +������ $%�������� ���� ���������������������������� ���� �������0��������������� ������������������%��� ������ ��������� ��� �������������6�������� ��������%����%��������� ���� ���+��������������������������������������������������������5������� �����������%����� ������������ ������� �� �����%��������'���� �� ������*�������*������

/����� �%������ �������������������������� �� ������ ������������ ������0���������*������%������������������������� ��������������������� ������������ ��%����������1����������������������������%������� ������ �+�������������������B�

)����� ���������� ������������������� ����� ��*�������������� �����*���������*$�������*������*�� ����*����*������*� � �� ����*$%� ���������������*������������������%� �����������������������������%���������� ���������������������*�0��������������� ������� ����� +$����������������*������� ������ �� ���*�� $�#������ �� ����� ����� ��� ���%� �� ����������� ��'���� �� ����� ������� ��� ����� ���� ����������������������� ��������������� ������� ������ ���*� ��������� ��������*������� ������������������ �����*���������� �������������*0�������� ��'���� ���-��� ������ �� ������������ ������������ ������� ����*�����������*%������'������*����������*���������!������������������������� �� ����������������������������� ���� ������ �%� �����������������%�� ��������������0������������ ���������

)���������������������������������� ������������������ ���2 �������������+�� ��� ��� %� ���� ���������� �������������������� ������ � ���� ��������������������������%� ����������������� ������ �%� �����*��������������� �������0�� ���������+��� ���� �����������������*����� �� �

����������������������������������������������������������B <������������� �������� ������%�������� �%� ��������� �����������'� �%��������������� ��������

���������� ����������'� ���

Page 19: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� %�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

��������� ���� � ��������%�� ����������+���� ����� � � ��������%������� ������������+���������%� ����������������������������������������#�����������������*���� ������������������������ �������������� �����������������������0�� ��������������� ��������������������� ����� ������

#��� �����������+���������������������� �� ��������3�2����������+� ��� �������� ��������������������������� ������ �%������ � ������ ��������������� �%�����0����������� ������������������ ���������� ���������� ��������)��������� ��������� ����������+����� �� ����� �������� ��� �����%� ������ ����������+������0������������������%����'��������� ������� ��������"���%��������'� �� �������������������������������)������������������ ����+������������ �� ������(

����� ��� � ������������������

7����'� �������%�� ���� ������� ���������+���������������%������ ������������+��������� ������ �������/��%�����������������������%���������� ������������� �� �1��������������������������������������������� ������������������/������������ ��� ����� ����� ����� �������'���� %������� �����������������*���%������� ��� ������ ������������������������ ����� ���������)��������� ������� ��� ��������������������������� �����$�����������������������%� ��������������0��������������+� ����� ����$�

&���� ����������������������� ��� $� ��� �����%����� ���������������������������� ���� �%��� �����%� ����� ������� ������ �+%��(���������%����������%��� �0�������������������������!��������������������� �����������������'������������0

'����� ��� �$��������������%������� ������������������������������� ���� ��0��������������������������������������&���������������������������������������� ������� ���� ������ ������� ������������� ����������%� �����*���������+��1������������������ ����������������'��������*��������� � �������0�������� ��� � ������������������������������������������������������

)������������ ��� � � �������� ���� ������ �� '������� ���'��������� ������829 �����7��"���5������� & ��� ����� � �������� ������������$�� �� ��� ���� ����������������������������� �%���������������� +������������� ������� � ����� %�����������������*� ��%��������*�����������+$%������� ���� "��������� ����

'���� ����� �����������%� ����������� ����������������������������������0��������������$��5������� ��������������*��� ������*� �����829��������������� �������������'���� ��������������%������� �������� +������ ������� ������0�������#� ���������� �������������������������� ������� ���� +��� �

Page 20: Thinking in Java. Edycja polska. Wydanie IV

%$ ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

'��������#� �� ��#(���)��������������������������������� ������������� ���������� ������*����0����� ��������������� ������ ���������*� �������������*���������!���������������������������������� ��������%������� �� �������� �����������'�������*

�������������������<����������� ���������������������������� �� ����������� ������������ ������ �� � ��������� ������� �� � ������ ������$� ���� ���� ���*� ������%������������������� ��� ������� �������������

#���������������%��� ����� �������� +�������� ������������%� �����������������������(��������%��� ��� ���������������%���������� �� +� ������������%� ��������������� ��������� � �����3���<�� ��������%� ������ ����%� �� ������������������ ����2 ������������������+��������������� ���������%������'�������� '�������%���� ��������������� ���*����������������������� �������������������� ���������������������'��������������������������������*��2 ����������������*�������� � ������� %��� � �����%��� ������������� ��+3�#����������������������� ����+�������������� ����*������*���������� � �������������+�������������� ������*��0��� �� 3�)�� �� �������������%�� ������ ���� +��������%����������� ����� ������������+%� ������������� ����������������%� ��� �����������������+����� �����������%� �� ����������� � � ������ ����/������� ��� ������������������ �������������������������

&���� ����������������� �������������������� ������� ��� ����� (����������0���������� ��� � ��� ��������'��� ������ !� ������� ���� ���������������������� �� ��� �� ����� �������������,������� ��%� �� �� ��� �������� '���������� �����0������� �����*� ���������%������ ������� ��������+������������������������$����������� ������������#���������������%��������� �� ���� ���������� ���0������ �������%� ���������������� ���*� ������������ �� ������ '���� �������<����������%����� ������������ ��%�� ���� +���������%� ������������ ���������%������������������������������'�����������������������1��������� ���� %�������������� ������ ������������� �������������� ������������� ��������������

�� �� ����������#����������*����������+����������������� ��������������� ���'������������C������������������������ ��'���� ������� ���������������������������� ��������%�����������������%��������������+�����������'� �������0 ��%����������������������� �������������������*����� ������������ ������������������������������������� �� ����������������������� ����� ���� ������������� � �� ����������� ���������$�� /������ ������������� �������+� �� ������ ����*� �0��������*%������������+��������������������6��������� ������������������� ���� ��������������� �������*��������&���������%����������������������0 �������� ��������������� �������� �����������%����������������� ����+������������#��� ����� ������������+%����� ������������������������������� ���������������%������� ���������������+� ������������ ��������'� �����������$%�������� ���������� �� +��������������������� ���*��� ������������������������������ ���*��������*� ������������������������$�

/����������������� ����������������� ������� ����%���������������������� ��������0������������������������������ ��������%�������� ���������� ��*%�����������������0�� ��� ������������+���� ���������������������+���������� � ��� �������+���� +�������������������� ���������*�����������������%���������������� �� ����������+������������� �����

Page 21: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� %�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

)��� �������*����� �%�&��������+����� ���������� ��������� ���� �� ������� ����� ����%����������'���� ��������������*$�������� ���� ��������� ��� ���������������� �����DC�����������������%����������������� ��������������*�������*������� ��*$��.��������������0������ ������������������������0���� ���������*�������������������������� �������������� ��� .���� ������� ���� ���� ��������� �������������� �����*� ���%� ������ ��0�� ���� �������� ���0�������� ��������%���������������� ���%������ ������ �����0�� ������������-�����3�)����� ��%���������%������ ������+��������������������������� 0������%� �� ������ �������� ��������+���������� ��� +%� ���� ���� �� ��� �����������������������*���������� ������� ����8�������� +������� ��������0�� ������������� �����������%��������������� ���� �� �����+�������������������0��� �������������'����������������� 0��������1����������������������0�������� ������� �������� ��� ��������������*�

<�����������������+�������������������������� ���&��� �� ����� ��������� ����������0������������ �������������*��������������������������� �������� ��������������0������ ������� %� ���� �� ���� ������� ���� ���� � ���� � �� � � �������%� � � ��������� ���������� %���������%�������������������� ������������ �������� ������ ��������%��������������������������������� ���� ������������������������������� ���� ����������������*%�����������������0������� ������� �����+�������������������� �� �����������������������������������������������<����� � ��������� �����*����%������������������������� ������������������������������������ �����%�������*�������� ������ ��� ��� ���� ������ �� ������ ����� �������� ����� &������� ������������������������������� ������

)�������������������������������� ��� �����* +��������������������������������� ������������������%�������*������������������+����� �������� ����*������0������������ ������*������ �������������������*%������ � ���*� �������� �� ���0���'� ��%� ������� ������� � � ��������� �� ���� �������� ���������*� ������������������� ����������������� ���������%������������������������ ��+��%��������*�������%������%����� ��������+�

-��������������������������������� ��� ������ ���������� �������������0���������������� ������*����*��������������������������������� ��������������� ����� �����������������0���������2 ���������������������������+� �� ����������������������������������������������%������� ��� �������������� � ���� ��� �����������$���������+� %��������������������� ��#� ��������'� �������������� ��� ������������� ���������������*�����%��������� ��� ������������ �����������

#�"����������������������������� ��������������������������� ��������*��! ��(� ����� ��������$%��������� ��������$������������� �*�����$��7�*�� ���������������� �������+�����������! ������������"�� ������� ��� ����� ����������"����$������0� %���� �������� �������� ����������� �� ���*������*���'���� ���!����'������ �����������%� ����'���� ��� ���� ��������� ���%����������������%� ����� ������*�������� ������� ����������� ���������� ���� � � '���� �� ��������*�� #� �����

����������������������������������������������������������D /��������������������� �������� ������%�!������2��������

Page 22: Thinking in Java. Edycja polska. Wydanie IV

%% ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

����� ��� ���+����������*� �������$��������������� �����%����� ��������������� ��������� ��� � ���������������� �����������!����������������������������������������� ��������������� ����������������%� ���������������� ���������� �� ���� ���������������������������%������� ���������������*���� ���*� �����������) ������������������������� � � ���������

#�"������������ ������ ������������ ��%������� �����������������%� � ������������������������������*������'���������,��� ���� ������������� �������������

������ �� �� �����$%������� �����������*����������*��� ��� �������+�����������������������������%��������������������������������� ���� ������������

+��*������������#� �������*����� �%�

!���������������������������������� �������� �������� $�������+�� ��������'���0����������,���� ���� � �����%�� ��� ��� ���������������������������� �������������%� ���������� �����������������+����������������������� ������������������� ������������������� ������� ���������� ������������ � ���������%�������� ��������������������������������8� ����������������������������������������� ���� ��� ����������*������������������������*� ������������������

<� �������������������������������������� �������� �������� �������������� ����%�� ��� ������������ ����� ��+����������� ������� ������<�������������0��������������������������<��������� ����+���������������� �����������0���� �� ���� ��� ����� �+����� ���*� �����$��� �����*��������������� �������������� ��� ����� �����*�� �� ����)����� �����������������%�� �0�� ������ � ������� ���*%������������� �������������� ��������� � ����������������$C � ���������� ����*���������������� �������������������������$%������������ ���� ���� ���� ����� ����� ����$�������� �� ������ ������ ���� ������� �� ������������%����� �����������������*�����������������

<�� ��� ��������������� �����829������� �� ���������� ���� ��� ��� ���0���������������1������ �������� ���+�������� �'������������������� ���� ������������������������ �� �>$�

������ ���� ���������������� ��������� ����,�������������������� ���� ������ ���������������%����� �������� �������� ��� ���*� � ������������0���������2 ���������������������������+%������������ �������� ����������������,�����������0����� ������ ����������+������������������%��������������������� ���������*���������������,���������� ��������������������������������� ��������� ��%������ �������������������������������� ������ ������������ � � ��������������� ��

����������������������������������������������������������> /������������������ ��� ������������� �������� ��� ������������%��������� ����� ������� �

������������� �������������� ���������� ��

Page 23: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� %&

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

)����� ��������������� ���� ���� ���������������������������������������%�� ��� ������������� �������������������� ���%���� ������� ��� ���������������������+�'���������� �%� ����� �� �������+���� ������&����������������������0���������������������������������������)�����������������*����������� ������� ����������� ��� � ������� �+�� ����������� �%������� ��������������������� �����������-�� ��������������� �������� ��������������� � ������������������ ����1������'�������������� �������� ���*�� ������������������� ���%����� � ���� ������ �������� ����������%���������������

����������7����������� ���������������������������� �������)������� ���+������ ���������������'���� �������������������������� ������� �� �������������������������� ������������'������� ��������������) ���� ������� ����� ���� ����������� ���������� �������������������� ���� ������������������������

<��������������%������������� ���������������*������������ �����*��������0���������� ����������� �����+������������ ���� %� ������ � � ���� � '���� �E����� ��������������������������� �� ��������������������������� ��������0�������*��������������������� ��/���� �����'����������� ������������������������������������ � �������(���� ���$��������%� �������������������� ������������ �� ���� � ���� ��� � $�������������'������%����������������� ������������ �������� %���� ����(��� ��������� � $������������������� �����������

!�������������� ���������������829� �����������������������*��� �������� �#����� ��� ���������%�������*����*�� ����+��� �� $�

/��� ���� ���� �� ������� �� ���� ����������*� ��� ������� ������ �������� �� ��*������ �������� �������������������-���������� �������+�����������*�������*�����%��� ������ �� �������+��� �� � �����*� �� � �����%� ��� ��������+��� �� � �����0������ �����������+� �� ������ $��-����������������� �� ���� ���� ������� ����� ���� ������%�� ��� ��� ���� ������������*� �� ��������*����*��/��������������� ��� ���*�� �� ������ ���*�����%� ������ � �������� ������������*� ��� �������*����*��/�����������������������������������������*�����%��������*�������� ���������������&������������������������*�������������� ����������� ���� �� ���������� �����*������

:��� ��������������������� ����� � ������������������������������/������������ ����� ������������ ��������������������� ���� %����� +� �����2 ���+� ��� ��%� ���������� ��� ��� ��� ��� �� ���� -�� � � ��� ��������+� �������

Page 24: Thinking in Java. Edycja polska. Wydanie IV

%( ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

�����'����������� �������������%��������� ������������*�� ��������������������$�����������*������ ����������������� ������+����������%������������������� ������������������$��<�����������*�������� �������������������� �������� +���0��������� ���� ������� �����������$��&��������������������������������������+*������*� ��������� � � ����� ���������������� ���������������*����� �� ���*������������

#������������� ������������������������'������������������������� ������+�� +��������������������������������� ������������������ ������5������������ ���������'������������� ����������������%���%����� �������� ���'������ ������+����������%���������%��������� ��%��������������&������������� ��������������������$��� ��������'�����������'����(��� ��%���������%���� � ���������%��������*��� ���� ��������+������������*�������������*�������<��������'������� ���+����������������������������<�����������*�������� ���+��� ��%�������'����������������� ����������F������*������������� �������������� ����%� ������ �������� ��������������������� ����'�����

,������������ ����������������*���������� �������������� ��%������� ����� ���������������������������� ����������������� � ������������������*������ ������*������� �������������%�*������*������� �������������������%� ����������*����������������������������� �������������������������������������������#���������������*����������� ������������������ �����������������������0�� ������� ����)�������� ������ ����� �����������������������������������0�������������������*����� �� �

)�����������������������������������%���������������������������������������� �*+���������������� ������������� ���������������� ���$%������� �%����� ��� ���%���� �������'� ����������� ��6��������������������������%� ������ ���������+�������������������� %��� ���+���������������� ������������������*��� ��)0����� �������������������*������������������������%�� �����������+%� ���� � ���(��� ��������� ���������� ��� ��,���� ����� �����������������������0�����(��,�� �� ����'���� ���/���� ������������������������������� � +� ���� ����������������*��������������������������������������������������������

)����� ������������������%� �������*������ ��������������'� �%������������������+ ��� ���� ��������������������� �%�����������������+�������������%�������������������� �������������#� ����������%���������%���������������� ��������

Page 25: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� %)

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

��� ��������������%����������������� ������� ��� � ������'� �������� ������*�����������*��� �������������������� ���������������������������������%������ �����*�� ��� �����������������%������� ����������������������� ���

7����� �������������� ���������� ��������*��� ����������� ����������� �)�������� �������+������(���� ��������� ��������������������<���� ������ �������'� ������������� ��,��������%� ���������������������������������%������ ���0��%������������������ ��� � �������������/��������������������� ������������������

���%� �����������%������������� ���������������&���� ����� ����������+��� %�������������������������� �����*���������*�������/����������������� ����������0������� �������� ��������� �� ���� �������������������������

.*+������������������� ���� ��������� �������������#�"��%������������������ � ������� �������������������%����� ��������+$��������+�������� +�����������*�������������'� ��%����� ��������� �������� ��-������������������ ��� 0�������������%���� ������������ ����������+���� ���*�� ��� � �������� % ������� � � �(�� �� ������� �� � � ������������ %���� ���� ��� � ���������� ��� ������8��������$�

&�����������'�����������������������������������������*��� � � ��� ���'�0��� ��2�����(��.*� �������������+�� ���� ����� ��������'� ��%�������������������������+�� ��������

Page 26: Thinking in Java. Edycja polska. Wydanie IV

%� ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

,-������ .� �,�������������������� .

&������������������������ �������+�������� ���� +(������������ ����������0���+��� � ���������������'��������������������������� � ��������� ���� ����������� ����*$3�,���������� �%� �� ����� ��*���� ���� ���� ����� ���� ���������� �������%� ������ ���� ����� ���� �����'� ���&� ���������� ������ ���������� ������������������������������������������ ���� ��������+��������� �� ���� ��� ��%������������������� ������� ������������ � �� �� ��� ��� �� ���������������������������$��#�������������������������������������������������������������1�� 0������� ������� ����� �����*�� ���� ���������������������� ��� ������� ��� ��� � ����� ��� ��� �����(��$%������� �� ������������+���� �� ����� '���� ��!���������������� ���� �����������������������������������������������������������*�������������������%���������������

&����������*������� ��*������������������*���������*���������������'� ��� ��� ����������������������� ������������������������������2 ������+������� ������������� �����������%� ����� ������ ���� +����� ���� � � ������%������� ����'���� ������� ���� ��������������������/������� ����� ��� ������� �+� ��������������������� C��������������������������'� �������������%� ����� ������������� �����������%�������������� �����������+%� �� ��������������:��� ����������������������� ��)����� +��%� ���������������������������������*��� ��%�������������'� ������� ���������� ��*��������&���� �������%� ����������� ����� ���������� �� ������������������� ���� ������ %���������������������*����+%� ����������+��1��������������������������� ����������� ���������������������� �%��������� ������+��� �� ������ ��)����� ���������*��� ��� �������� ��������������� �*�������%� ���� ������������ ������������ �� � �� �*��� � � �� �� � ������������7����'� ���������������������������%���������� ���������������������������������'� ��������������

,����� ��������������������� ������ �������� ���� � ����%� ���������������������� ����������� ����������������������������������+��������������������������������������%������������������+������� ������������������������������� �0��� ������� ����������������+��-����������������������� ������������ %� ����� ��� �������+����� ������������� ��������������������

)������������� �������� ����� ���� ���� ������ �+%� �������� ������ ���������� ���� +$� ���� ���������������%���'���������������� ���%������� �����������������������1�������� �������� ����� ��+������� �%���������*�������� +������������*'���� ���������'� �����������*��� � ����������� ������)����������������������� �������� �����������������������������+����������

Page 27: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� %#

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

+����� *�� /�������0��� �������*��������

)������������*������*������������*������� ����������+���������������� ��������0������������������ ��������%���������� ���������)�������������������������0��� ����������������������&���������������'��������'���� ��������� �����%���������� ������������%������� ����������������� ����%�����������%���� � ������������������'�������%������������������ ����������������'���������&�������������� ���+���������%��������������������� ��%�������'���� ������������� ��������������������������������'�����%��������� �� ��� �������%��� ��������������� ������������������

<�������������������������������������*������%������������������ ������ ��0����*��� ��������������������������������������������������� ���������*������ ���2 ����������������������+���������'�����%��������� ��� ���%��������'�0�� ��'���� ������ ���*��� � ��������������*�'������/����� �� +����������������������������������������*���������*����*� ������ �����������*����0����� �������%������� ������ ����������� ����%���� � ��������� ������������� 0���� ��������������

)������������������������������*����*� �����*������*����������������*� ����� ���� ��� '����%� ������� ���� �����%���������� ���������� ����$������ � ��������������������#� ���'���� �������������������+����� �'������%������� ���0�������%� ������� � �����%� ���� ��*��� ��� ������� ������%� ���� �� � �������%������������� ����������������� ����� �+%�������������������������������+���������� '���� �� ���������� �� ������� ������������+��� ��%� ��������� ������ � ��%��������������������������%���������� ����� ���� ����%������'����������

#� ���������������������+%�������'������������� ������������%���������������0������������������������������������������� ����+����������������� �����������������������������*�������������������� ���� ���������+%�����������������������������������.����������3�<���������������� ���������������������������������� ����� ��������������������������������%�������� ����*���������*��������#�����������������������������������������������%��������������������������+����� ����������������� ����������������������*���������%��� ���������������������#����� ���� ������� �%� ���*+���� ���������������� ����������� � ����������������������%��� ������������ ������� ��������*����� ! ��������%��������������%���"��������������������$3

Page 28: Thinking in Java. Edycja polska. Wydanie IV

&' ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

,�������� � ���� ��������� ��������� ������������ ��������(� �������� ���� �������+�'���� ����������� ����������&��������'���� ��������������������0������� ��������������������*��������� ��� ����������������� � �� � ����� ���������$���������������� ����������+%������� ����� ��� �'���� ������� �������������+������� ��1�������%� ���������������� �����������'���� ������ �� ������%��������� �� ��� �����������$������������ ��������������������� ������������%��������������+����������&��������������������������������������'������������������ ������+������������ �����������������%��������������0������������������������������������������ ������������� ������

&� ���� ���� ������ ���� ������� ������������ �������� ��������� ������ �� ������ � �� � ������ ���������$��)�����������������������������������%������� ������������%����� ������������������� ������������������������������������ %� �������������� �%���������������������������������������� ����� ��%��������� �����% ���������� �������+�

&���������������������� ������ ������#�"�������������������������� �������0����������� ����'����������������� �����������������������������������'���0� �������*������ ����������� ���������� �������������������������������G�%�)���'����$���� ���������� �����������*����+��� ������� %������ � �������0�������������������������'��������������������������������������������%������������ �%�������������+�

&����������*� �����*�������� ���������������+%� ������� ������'���� ���������0� ������������� ��������� ����� ������ �� �����.HH������������������������� ������������������ ��$��&� �����*����*����������'���� ����������*���� �������� ��������������� ������)��������������%���������#�"���������������� ����� ������� ����������������� ���+� �����*���������*�������������*%����������0���+�������'�����

:��� ��������������'���������:���������� ���� ���*�������������������'� ���$��0���������������������������� ��� ���������������6��������������+������������0���'����%��*������ ���������+�'��������������������� ����*�������������������������������������������� ��� ������������'� ������������ ���������� ��������� ��� ������'���� �������'����� ��������%��������������������������������������� �����������������)��� ���%� � ������ ���%�������� �����%� �������������������������0���������%���%����������������%�� ������������������������������'���������������0����� ����������� ��������� ��� ���������)������ ������������������ ���

#� ������������� ���#�"��� ��������������������� ������+$����� �� � ����� (

���������� �������������� � ���!!###��������"���#

������� ���� ��������� �'���� %� ������ �������� ��������������������������%�����������+�����������������������#� ���'���� ���#��� ����������������� ����������'�����������������(

Page 29: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� &�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

$�%���� �$�%����&��"%''�� �&��"%'���(������� �(������������� ���������� �'�������� ����

�����������#��� ���� � ��������������������+���������%�������� ������������������������

&�������� ���������+�������� �������������:��� ���������(

������ ����

$��"� �����������������'���� ������� �� ����������������%�" ����)����� �$��"� ������� ���'�����%�� ���� ����+������� �������������������� ���#��� ����1�������%� ��� �����������%� ������#��� ���� �������+���������������%�" ��%�� ����+�����0���������������$��"��/%������� ������%� ������ ��������������������������������

)���������%����� ������������������������*��������%� ����������������������0����%���������������� �������� � �������� �����$��:���������� ������ ���������������������������������� �'���%����� ��� �������� ��������%��� �������0������� ���� ������������������������������� ����� ������������������������*�0��������� � ������� ��������:������������������������������������������������� ������ ���������(� ������ ���������� ��������������������� ��

)����������������������������������������*���� ����*���������������� %��0����� ������������������������ ���������� ������ � ����������������%�������������� �����!�� �������������������#��� ��(

���� � ���!!###��������"���

#�������+%������������ �����(��#� �� ���� ��� ����%�������%� � �� ���� ����������%���������%�������#� ��������������������� �����������������%� ������ �����+�%�" ��%���� ��� ���������������%������������������+������������������ �������������������� �'�������&���� �����'������������������������(��#� ��� ���� �'���� %���������%� �����'����������+��� ����������+��1������ �������� �� ��� �����������������������

&���������������#��� �������� ��'���%� ���� ��� ����������� ���� ��%���������&������������ ��������������$��"����� ����������������������� ��������0����������������������� ����� ����������&����������'���%� ������ � ����������

Page 30: Thinking in Java. Edycja polska. Wydanie IV

&$ ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

���� ����������������������������� �%�" ��%������������� �������*�������0������� ��� ������������� ����� �� � %�" ���� #���� �� �������� ��%� ������ � �� ��� ����������������������#�"�%������ ���#��� ��%��������%��� �������������������������������������<����������������� ��������%� ��� � �������� ������ ���������� �����'��������*��������� ������%�" ��%������� ������'������*����$��"%�&����������'�����2�������� �������'���������� ���� ��%������������������������������������������� �� ��� ���������������������� ��������������+%� ������������%��������� ���%� ����� �����+������������������������*�������������� �������0��������������%���������%����������%������� � ��� ����������������������� �

1��� ���� ����%��������������#��� �����������������*%������ ���*���������������������%��� ���������� ��������� ���������� �.HH� �����%������������������������������������������������+�������� ������������ ��&�#�"��� ������� ��������������������*� �����*������0���*$������� ������������%����� ��� ������� ����������� � ������ �$�������,��0�� ���� %� ��*������*������ �������������������� ������������ ���

&�*������*������ ����������������������������������������� �������������'� �%��� ����������� �������������� � ���������� ������6���������� �����������������.HH$�������� ���%� �����������%������������������������'������������ �����1������������������������ ����� �������������������� �������.%���� �������� ������0��� ����#������ � ���*�������������+���������������%�������������+������*������*� %�����������+���� ���� ����� %� ���� �������������������� �������������-���������� �� ���� �������������%� �� ���������%�� ����� ����� ��� �����%����0�����������'� ���-�����������������������'� �������������� �����������+�� ������������ ����+�� �� ��� �������������������������$��.�������������������� +�.HH� �������������3�#� ����� � � �������� ���� � ����������������� ��������.�������� �������+��������#� �������������������%�������� �%������� ���#�"�%��� �����+�� �������� ������������

&�*������*��� ��� ������������������������������ �����������������*� '���� ����������������� ��������&����%� �� �������������������� ��� ��������+� ���� ������������������������&����������������� �������������+������� ���������%������� ����������������� ��������������������������

F������*����� ��������������������� ���������������������������� ����( ���������� � �� � �� ��� �� ���� ��� ����� ��� ����*������#�"�������.HH$��)�������'���� ������������������������ ���������������������� �����������%������������������������������%������������������ ������� �+��#���������������������������������������� �������������������%������*� ������������ ����%���������� 0���������� ���� ��������� �����������������

Page 31: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� &�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

2�������

!����������������������%������������� ������������������*������� ���������0����������%����� ������������������� � �������+%����������������� %��� ������0

�������������������*����+��!� ��������������+%������� ����������*�����������+3/����'���� �� ���������� ����� ��������������������������

:��� �������� ��� ��������������� ���������������������� ��� �������������(��������������������������&����������������������������������������� ���������������*�� �����'����� ���������*����������2���� �������� ���������+������������'���%�� ��� �� � �������� ����*����������� ���� �������0�����������-��� ���� �������� �� (����������%������������������ ���������� %���������� ����� ��������#�"��������������������%������ �������������� ���� ��� ������ ����������������������$%�� ����������������� %������ ���������������%������� +��������%��������������������<������������ ���������+%������������ ����������*�������*��������������)�������������������������������� +�� �������������

<������ ������ �������� ����������������������� ��������������������������&�.HH������������ ������ �� �������������������� ������ ���� ���������������������!/9 9� �� ��3���� ��&��� �$��&� �����,� ����)�������������������� ��� +�������0���I.9� 6��� �4��������&��� �$��!��������������������������� �������������������/�� ��#�"����������������������� �������������������� ��&����������*���������*����������������� ���� ���������������� ������������������*�����0��� %��������*��� � ������#�"��$������� ��� ����������������������� ���*�������(������� ���*����� �������'���� ��� ���*��������*��������������� �$%������(��� �������� ��� ���� �� ���� �����%�������� ��� � ��������������������$%���������� ������0�*�������� ���������� ���*� �� � ��������$��5�������� ������������ � �������������+(��� ��%�������%����������

1��� ������������������������������%������������� ���%����������%�������� ����� ���������+����������� ��������������������� ������������������������������%������������������������������� ���*���*����� ����7����� ���������%���������*���������� ������������ ����������������)���������%� �������������0�� ��� ��������'� ��������� ���������*�������1��*�������� ��������'� �������� ��� �������*������������*��������� � %��������������� ����� �������������������,��� �������'� ��� �� ��������+�������� � ���������� ���� ������ ���������������� � �����)� ������%� ����� ��������� ���*� �����*� ����� �� ��� �� ���*� ���������*� ���� �����<� ��������������������� �)����'������'���'�����,���������������������� �������������������%��� � ����������� �����'� ��� �����*� � �� �����������*���������0�� ��������#��������� �������� ���� ����+�������*�����������������������-0�� ����������������������������)����'���� ��������� ��������� �������������0������������������������������� �������%�������������������� ����� ����#����� �������������� '���'������������� ��� ���� ��������������� ���� ������������������������� ��������� ���%��� ��������� ������������� �� %������0� ����� ������� �� ���� ���������1������� ������%������������������ ���������� ���

Page 32: Thinking in Java. Edycja polska. Wydanie IV

&% ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

����������� ���������������������� ���� � '���'���$��/�������������� ���� ���� ��0���� ��'������ +������ � ��������� ����� ����������� ��������&�'������� ���0����������� ������� +������������������������ ���� %������������������ �����'������ ������������+��� ���������� )����'���$��-�� ��� ���������� � ������ ���������������� ������������� �����������������������������

���� � ������ ���3�����0*��4

&� ���� ��*� ����� �������� ���*� �������� #�"�� !J>� ��������� �����*������� ��0������ �����%�����������������(�$�������F������*������ ����������������������0�� �%� �������������������� ����������������������$�����%�������������������� �������*����+���������� �������� ������*����+�������@��/���� ������� �������������������� ��� �������������*�������������

8 ��� �����������������%����������������������������'����� �����������%����� 0��� �����������*�������#�����%������������������*�� ��������������$�����%������������������������������� ���� ��������������� ���� %�������������������'���� ������������������������������������&� �� �������%������� ���������� ���'����� �������$�����%�������������������������� ������������#����������������+� ������������� �������'� ����������%�������������� �������������3

7������������������������ �������������%� ����������� ������� � ����������������*������*������������������������������������ ������������������� ����������������� ���� ���������� ����� ���� ���������� /��� ���� � ���������� ��������� ��� ��������� ��������� ���������� �����$����������� ��������� %������������������%� ���� ��� �������� ����'������%������� ������������ ��������������������������<���� ��� �����������������������+%� ������������������$������ ���������� �� ���� ����������'���� ������������ ������+��������� ������������������������%��*���� ���� ��� ���������������� ���������������%���������������������������

!����� ������ ���� �������������������������������� ��������������������� ��������%����� �������� ��������� �����������������%���������� ������ ������:�������$����� ����*���������� ��� �� � � �����������2������������ �������������������'����� ������������������%�����������������������������������%����� ��+% ��������� ����������������� ������

:��������������%����� ���������������� �� ���������������������������������%���� ������������������������������� ���������������������������������������� �� ������������2 ��� ������+%� ���� ���� ������ �� ��� ��� � ������ ������+������������� ��������������*�������*���������������������������������+������������������� +���������������� �� +�������������� ���3�:��� ���������� � � ������� ��� ����� � � �������� ����$� �� ����%� ������ �������� �����0�������������� ��������������������������0�������������<��������������������0��������������� ������+������������� ���%��������������� ���������������%�" ���������������� ������%�" ���

����������������������������������������������������������@ <������������������������������*C����*������������������� ��������������*� ��������*$

���������*� ����� �����:���$�������������#�"���!J>������������������������������������������&�������������������� ��� ������ ���

Page 33: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� &&

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

#��� ����� ��� ����*��� �����#�"���!J>� ������� �������� +�����������������0�����*%�������*��� ��� ���������� �������������$��)����������� ������� ��������� ������������� ����*�����������������%������ ������������������ ���*������� ��<����������������������)����'���� �������������$������� ������������� �������*���������������������%�" ����������� ����(

)����(��'*������+�������� �)����(��'*������+���

)����������� ����������������������������������������������������������0������ � �����#�"���#����� ������������ �%���� �� +������������*������������� ��� +�����������������*�������������*����� ���� ���

���������������0����� #����� �� �� ��������%����������������+%�������������������������������������� ���������������������� ����+���������%���� �������������� ��+�%����������+�������������������%������ ��� ������������������������+��1������� ������������� ������������������������ ���� ���+������������������������������ ����������%����������������%� ��� ������������%������� �������� �������� +��#��������������������+���0���� ������������������ ������������

1��� ��%� �� �������� ������� ������� ���*�� ����������� ��� �������� /��� ����������� ��������� ��� ���+������� ��������������������������%��������������0� �������� ����������� ��� '������ �� �� �� � �� � ������ � ������ �$��<�� ��������� ������� ������������ �� �� � �����(� ������� ������+� �������� ��� ��� �� �����*�������������%� �� ���� ����� ���� ��+��������� ��� ����� ��� �� ��� �� ���������0��������������������������������� ��&������*����� ��� ������� ������ +������� ��0���%��������� �������������������

5�+�� �� ������������ ����������������������� ������ �������*��������*C���+� ������� �������������� ������������*������� ������%� ����������'���� ������0������������5�+�� �� ������������������������������*������*��������������0 ���*�����������6����������������������������������*��������������� ���������%����������� ���������������%� � �� ���������������%������� ��������� �������������������������<��� ����%����������������������� ����������%� ��� �����������0�� ������������� ������������������������������ ��

/������������� ����������(��� ������������� �+%�������� ������� +������3�������������� ���� � ������������ ���� ��� ����������%��������� ��� ������������0���+��/�������������� ���� �� ����+���������� ���*������� ��*%�������������*���������������*������� ���*� ����������������������� �����*� ���.HH$�� ������+��� ��������� ���

��������� �� ��� ������������� �� ��� ������������������ ��� ����3�# ����.HH���� �� �� ��� ����%� �� �� �� ��� �� � ����� � ���� ������ �'������ ��%� ������ �� �������� �����������&������� ��� ������������� ������ ������������������� ������ �+������������*��������������� ���������������������������������������0������������������������������ ������� ������������������������*� ���� �����(

Page 34: Thinking in Java. Edycja polska. Wydanie IV

&( ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

������ ���($������������������ ������������ ������������ ��������������������������������������������������������� ���%�� �� �� �� ����� ���������� +%�����������������+������� ����� %������ �����������������������������������������������#� �������� ���� ���� ��+�������� �����������%� ����� ������������������0�������� ��������%����� �����������������������������*������������%��������� ���� ����������� �����������������

-������ ���� ������ ����� ��� ������������ ��������� ������������������ ���� �������������� ��!��� �������� �����%������������ �����������������%������������������ ���%� ���������+��������*� ���������������������������������� �������������� ������������������ ������� ���������� ��������� #� ��� ������� ���� ����������%�������������������������������)����� ����� +� �������� ����������������������������������%����������������� ������ � �������������������������� ������������ ������ �������������������������������������������� ����������������� �������������� ���� ��� ��� ���������� ������ ��������� ��������� ����������� ������� ������������������������ ����������� �������������������� C����������������������������� ������������������ ��������������������� �����*����������������� ��$��.��������������������������������� ���������� ������ ���� ������������0�������*������������������ ��������������������

:��� ��������������������� ����������������� ����%� ����������� ���+������0�����%������������������� ���������������� ������������������������ ��������������������� ���������������������������������������������)�������� ��������0������ +��������� ����������������������������������� �������������*���0���������������������*�

#�"������ ����� ����������������� �����A��1���� ���������%������������������%� ���������������������%�����������+� ������������������������

7�� ������ ������������� �������������&� �����*������ ���*��������������������������������������������������������������������� �������������������������+�#� ��� ��������������������������������������%����������������������������� ��������&� ����������� ���.HH������������������� �+%���������� ����������+

�����%��������������������� �� ��%� � ������������ �������������� �� �������� �����������������������*�.HH$��#�"���������������������������� ���� ����� �� ��%�������������������� ���%����������������� ���� � �� �����%������� ����������� ������,� �������� ������ �� �����������$� �������� ����������������������� ����%��0����� ������� ������ ������� %�������������� ����+%������ +����%� �������������0����+��.��� ��� ���%��������������������� ��������� ��������������������������0����������������� ��� ����������������������� ��������.HH$�

&�#�"����������������������� ������������������������� ��������� �����0����� ������������� ��� �*+������� �� ������������*��������������� ���������������*$��,� �������������%����������������� ���� � ���������%�������������������������� +��-�� �������� ���������� ������'���%� ���������������������������� �� ���� ������������ ���$�����%��������������������� ��������+������� �������0������ ��� �������$� ������ �������������� #�"��� ���� ��������� �������� �� � �� .HH�2��� ��������� ������ �������������������� ������

����������������������������������������������������������A !��� �������������������� ��������������%���������������� ��� �

Page 35: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� &)

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

'�#(�� ��%&��0�5��*������ �����($�0�

,����� ��������������� ��������������������������� ��������� ���������� ����0��� ����*����� ��1����������� ��%� ����*������ �������� �����������������*���������� �������%������ ������������������� ���������������%������� ������������ +����� ������������������)���� ������������� ����������� ������������������������ ��*%�� � ��� ���������������� ���� �� �� ��� �����������������*��������0���$�)������������������� ��� �����*���������������� ���� �����%� ����*���0���� � ������� +���������������������������������� ������� ������� �%��������0������ ��� ����������������� ���������������������������������*��%������������ ���� ��%����������� ��������%�� �������� �� �������� ���������+�

2��*��������������� ����� ������:�������( ������$��� ������ ����������� ��� 0������ ������������������%������������ �������������������� �����&� ���� ����������%������� ��������������������� �������� ��������� ��%������� ������ ������+������*��������������������� ��������� ��������� ���� ������:�������( �����$������ ������ ����� ������������������������������������� �����,��������� ���� �������������� � ��� � ��������������������%��������� ������������%������ ��� ����������������� ������������������� �������+��������������������������� ������� ��.�����������������������������������������������%������� �������������������������������+%������������� ����� ���� ��� ����1���������� ������������$��� ������ ����� ������������������������� ����������������������� � ������ �� ��� �$����� ������ ����%� ������������� �����������*������ ������+���������������������������0���� %� ���� ��������������������������������� ����&� ������������ ���� ���������'����� �������� ���������� � ������ ���1����������������������+�����������������%�� ����� ������������+����������� ���������������������������������������������������� ���������������� ����

)����� ������������� ����� #�"�� ����� �� �� ��� �� � �� �����*� �����������0������%���� ����*���������������������������� ������������� ���� ���������������������� �����*�� #� �� ��������������� ��������������� ��������������+�� ����%�������� ��������� ��� ��� ��� ��� ����/����������������������� ���������� ��������+������ ��� ����

&������������+%� ���*+��� �����*������������*���������� ���� ������������0�����������������������%��� �������������*��������������� ��������� �������*������� � � ����������� �������������������*����� ��� �

+#�0(��� �� /#��� ������������*������� �� ������������ ���� ���������������������� ��0�� ��� ������������������9���������������������������������� %� ������������������������������+��� ���� � ������� +%��������+� �� ���� ������ ���������+���������� ��������� )������������ ���� �� �� )�� ����������� ��� ������ ��

Page 36: Thinking in Java. Edycja polska. Wydanie IV

&� ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

��������� ������ ����������������������������������������������� %��������0������������������������������� �������������������������� �����.*+���������������� �%����� ��������������������������� ��%������ ���������������������������������������������������������������

)����������� �������������� ������������������ ������������*�������������*����0����*%� ����� ���������������� � ���������������*���������������������������������� ����� ������� ����'��������%���� ���������������� ������ +���� ���� ����0���� � �'���������&��� ���� �������� ��� ������ ��������� ��� �� � '��������� ����0������ �����%��������������������� ��������� �� ��� ���������������$���������� ������ ��� �����������(�� ����$��/���������������������������������� ��� �� ���������'� ��� ����������-�� ���� ����� ��������� ��������+������ ������ ������� �� �������������%������ � ������������������������������ ������������0������������������� ��������������������

& ����� ������� ����������������������������� ������������������#� ��� ������������������ ��������� ���������������%��������� ���� ����� ������+�����0�������������������*%���� ���������� � ��� �����������+��������� ������������#��� ������������ ��� ������������� ����� �����%� ��������������������������0�����+��� %����������������� ���������������������� ����� ������)������ ����������������������� ������ � �������������������������������%�������������������� ����� �����*���������

)�� ������������������� ��������+%� ������ ��� +� ������������������������#���� ������������������������������������#� ����� �� ��� � ������ �������������������+��� ������������������%������������ ���������<��������������������������� �������� ����������+���'���� ������������ ��&��������� ���������������������%��������� � ���� �����������$���+�������%����� ���+����������������� �����6�������� ������� �������%������ ���� ���������%������������������� %������ ���+�������� ������������������������

&��� ��� +� ���� �� #�"��� �� �� � ����C� �� #�"�� !J>� ��������� �� � �� � ����������������������������

� � ���6�������#� ������������� �#�"�� ���� ������� ������ ������������������%�� ���������+%��������������� ���������� ������������ ������� ���� ��������� �����������0���������3�1������������������������ ���������������������� ����� �������������������� #�"�� ���� ������ � �������� ����� ���� �������� ������� ���*� ����������0�������������*������� �� �������� �����������������������������&���&����&���

7��%�#��#��/�+++8

)�� �������+�&&&�� ���� �������+��� �������%����������������������������0'�������%���������� ����������������������2 ����������� ���+��� �����������%���������������� � ����&&&3�#����������������+%���� ���������+�����������������������0����������� ������������������� ����������'��������

Page 37: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� &#

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

"���� � ���������*����9#�����

)����� ��������������0������� ������� ����%� �����������������������������'���� � ����� ����� �������*%��� ������������*��������������*$%��������*�����������+���

������������� ����������������������������������������0������� �������������� ����� ���������� ��'���� ��� #� �� ��'���� ������� ���������%���������������������� ��������������*���������.�� +(�������������'���� �%���������������0���� �����'���� �������������%��������� ���� �� ���� ���'���� �%��� � ��������������������� ��������������;����������������� ���������������� �� ����� ����������������� %�������������� ���� �����������%����������'���� �%������������ ������ ���������� ����������

)�������� ������������������� ����������0����������� ���� ���� ����� �����������)������������ ������%� ������� ����������������� ��� ������ �������� �+��������������,�����%��� ���������������� �������������� �������������������*%�������� ������������������ ��+��������������*%������� �� +� ����� �� ��� �� ������ +���������-���������������� �������� ���������������������������*���0'���� �������������,��������%� ��������������+%�������������� �����������������������������*������*���������� ������������������ ������������������������*������� ��������� ��������������������������� ���$���������������������������� � �������%��������+���������%� ��������� �� ���������������������*��������%������ ���� �������� ���������������������%��� ��������� �������+��&������������������������������� ���*���������������������������������� ���*�<���������������������� ������������ � ��(����� �� ��*������ ������ ����������+������� �� �����������*������������������������%� ���������� ����� ������ ���������������6�����������+������ ������%�������� ����� ������� ��������%����������� +������������������������������� �������%�������������������������������0�����������%������� ����� ������������ �� ���� �� ����� � ����������� ��$��&������� ��������������������� �� �� +��������� ����������

)����������������������������'���� ����������������������� � ��%� ���������0����� ���� �������+�������������������#������ ���� ������������ ��(��������0�����������������0����������������� ����������*�������� ��� +����������������*�,������������������%���� ����������� �������������� ����������� �������� �0������������������*%��� �������������������*�����������������������*����������*%� �������*%� �� ����*��&�������� ��� � ������� �� � ���� ��������������� ���������������������*���������������� �������������� ����������5���������������������������� ������%�������� ����������� ����������������� ���0����+������������������'� ����)����������0������������������ �� ������ ���� �

:��/�+++�% ������ �����#�����

!��+�&&&� ������� ���������������������������� ����������0��������<������� �� �������� ������������������� �������������������� � ������ ������ �� ����� �������<����������������������+%���� ��������%������������� ����������+����������������%���� ����������������� ���� ������������������� ������������� +%�� ������������+���� �����$�

Page 38: Thinking in Java. Edycja polska. Wydanie IV

(' ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

)�� ���������������������� ��������������<�� ������������������������������0����������������������%���������������������������'�������������������� �������������������� ���������&����������������� �� ��+����� ��� �� ��� ������0����������� ����� �� ��������� .*����� ������*� � �� ��� �����0������%� ���� ���� ���������������+���'���� �����������%��������������� ��+����������*������*����������%���+�������'���� ������� �+������������ ������������ �����*�������������� ����'����������������������������$��! ���������%� ����������������� ��&&&�

)���� ������&&&�������� ���������������%� ������������'���� ��� ����+���0���������������������������������������������� � ���������������������

��������� #����� �� ����� ������ ����� ����� ����������� �� ���� ���������� ���������*� ���� ��&��������� �������������������������������������� +�����������������

��������%� �����7��������%������������ ���������%�������������������������������� %������������������������%�����������������+���'���� �������������������%���������������������������������2�������� +���������������������%�������0������ %� �� ������������ ������'����������)���� ��������� ���� ���������� �����%�� ������������������+��������� ��������*����� �����������*� �������� ���������������������%������� ������������� ���� �����������������+� �����*���0������%���������������������+��� ������������$�

6������� ��+����������%����� ����������� �� ��<����� �����������������'����������������%������ ���+����� ������� �������������� ������*��:��� ��������������*��������� ������ ������������� ����������*����������������������0������������<��������������� ��� ������������������� �

"���� ��� �������#��������*����

)�������� �� ���� ���*��������� ������� � ����� ������0����� ������ ���������� �������0���� ������� +%����������������� ����������������������������!�������������������������������������� ������������%������� ���������������������������� ��������)��������F/29������������������*����������������������*(���� �������%� �������%�������������������%����������������� �����������������%�������� ������������+���������������������'�������������������� �����������$������*'����������������������������/� �����������*����������4�����< ��� =�����" ��� ����������������'� ����������� ��%�����������.�7$�����������������������������������&&&��/��������� ���� �����������.�7%������ ������������+��<� �� ����������������� ������������������������ �� ������ ����������������������������0������������������ ������ ����������������������������� �����%������������������������������������������ %�� �����������������+������������ �������������� ��0 ������� ����� ��������$��)������������ ���+������������ ��� ��� �������<� �� 0��� ����������� ����)��%������� � �������������������������������������%�����0

���������������������� ����������������������������%��� ��� ����+������������������*���������*%������� �������������� �� �������������� �����.������ ��������� +�������� ������)��*�� �� �������������������#2�(��#���$%�������������� �������� ��������� �� ���������� �

,�������������� ��*�������� �����������*� ����������� ������ ���������������.�7%������� ��������� �������+����������������������#����� ���������������0����� ���������*� ��� ��������*�.�7�� �� ������ ���+� �� � ������ �����������

Page 39: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� (�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

)������� ���������� ����������������� ���,������ ���������.�7���� ��������������*%����������� �����+����������%���������� ���������������7��������� �����������*�������� �������� .�7� ���� ��� ���� ���$�� )������� �� �������� 7��������� ��������������%� �� ������������ +������������������������������������������ �0����� ������ ��� )��������%�������� �� � ��������+�������������������� �����������'���%������� ������74� <� �(���=�����( ���>��� �$����������+���������������0������������������������������ �� ����� ����������� �������� �����������������0������������������� �����������%� ��������������������*���'���������)�����0�� ���������������1������� �������� ��������������������������������!����������*����

�������.�7%����������������� �%�'����� ������ �F/29���'��� � ���� ����%�����0�� ����������� �����������/�������������'� +��� ������������ ����������������+��������#�����������������%�������������������

:��� ������� ���������������������������������&� ��� +����������%����������*����� ������ �����%����� ����������%�� � �����������������+����� �� +��0���� %������������������������������������������F/290������� �������������%� ������������������� �� ����� ��)����������������������������������%� ������� 0������&&&����� ������� ��� ����������%������� �������������������������������%����������������� ������������������������������ ���������

)������������������������������������������������� �����%� �������� ����� �� �� ���������������������������������)���������� ������ ������������%�������� �������'���(������ ����������������� ���� �������������������������� ����&�� ����������������������+%������� ���� ��������� ����� ��������������� �� �����0������*������������������������������������:������������������������������������� ������������� �����*��������������������������������

;���(���#�� %&��

#��������������� ������ ���*���������������������������������������������� ���������������������������� ���*� ������������$��#�����������%��� ������������ ����+�����'���� ��������� ������������ �� ��� ���������������%������� ������ �������������������� ��������� �������2����������� �����(������ ������ ������0�����+������������������������ ���� ������������� ������� ���� � �������$�-�� ��� ����������������� ���������� �������������� ���� �� ��%� ���������������*����� �������������������������������������������*��������������+�������0��������������������� ��������2������������� ����� ��� ����� +���������0������������0������%������� ������ �� ������������������ ��������������������� ����������������������������������� ����������������� ����������������� � ���������1������������������������� ����������������������������* ���������������������������������� �������������������� ������ � ��������0����� ����������������� ��$�

�$���#�������

&�������������������������� ���*�������������� � ���������������*���� ��������������������������� ����������������������� ������������������� ��������������� ����������F/29��2�������������� ���������� �������������������������������������� �������������� ��������# ��������������� �������������

Page 40: Thinking in Java. Edycja polska. Wydanie IV

($ ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

������������� �� ��� ������� ��� �� �����F/29��)�������������� ����� ���� ���0����������� ����'��������������F/29%����������� ���� ����������� ����� +�������0���� �����%��������� ���������� ��&�� ��������� ������ �����%� ����� ���������0������� ����+������ ����� �������������$��������� �����#�������������� ���� �����+��������� ���� %������� ��� �����*����������*����������� ��������������*����� �

#��������� ������������%��������������� ����������������*���������������� 0���*$�� ����������+����� ��� ������������*������ ������&&&(���#�"�!����� ���������������������������#�" ��������������������%� ������ ��������+��������*�������������� ������ ��������#�" $��<�������%����� �� ����������������������� ���*������ ������*��� ��� ��������������������� ��+��!����� ������������������������� �� �����#�"�!���������������?45@9�����%����������������*������ �0�������������������������� ��������������� ������������ ��������'�����2����'�%�'�0�� ������ � �������������I5!�����%������������� ���������#�"�!�����$��1����������� ����� ����� ������������ �� ������� ������� ��������+� �� � �� �� ���� ���������������������� �� ���*� ���������� �� #�"�!�������� ����������� ������+������ ������������������������������� ���*������ ������*��-�������� �����0�*������������ ������������#�"�!������� �������+� ������� ������ � ��-������������� � ���������� �����*+����%� ����������������������������������0����� ������������� ������� ������#�"�!������������������2���

&���+������%� �� �������������%�� ���������� ��������� ������&&&%�� ����������0��������� �������������'�������������������%����������������������������*�� ������� � ������� ���*� ���'������*� �����'� ���� � ��������� ����� �� �(�� � ���� ������" ��%������������87$��# ���������������� ����� ��+�GK�������������������0�������*�����������������������������������:����� �/�� �������� ������� ����� ��+��� ������*�GK���������*%��������� � ������������������� ���������� ���������� ������� ������&&&%��������� ����� �+���*�� ����%���������������������������� ��� �������� �����%� ����������������� �����#�"��

� �

#� �� ����� ����������� � ���� ��+�GK���������������������������������00������%���������������?K������������������������� ���������3�,��������� �0������� ��������� ������� ���� #�"��� #���� ������ ������ ��� ����������������������� �������������%������ ������� �����������#�"�� ������ �������������%�����������+��������� �����%������������� ��������������������������������0���� ���*� �����*%������� ��(����� ��� +%���� �������������*%������������������������������������������������#�"���� ��������������������������������������� ������������*��� �A 8 '��9� ���

6���� ����������������%����������������� ������������� ������ �������#��������0������������������� ����������������&&&� �������� ���������$�����������������������������%���������� ���������#������ ����� ������������������������������������������*���������������������������������������������%������� ����������������� �%����������� ��� ��8 �������������� ���� ���� ����� ���������������������������������� �������� ����������� �������� ���#�"���0���������� ��������������������%� ����������������������� �����������%�������������������� �������������������������*����������*������ ���*�������� �����

Page 41: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� (�

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

��������������������������#�"�� � ��������*�������+��� ��� +�������$��)���0�� �#�"�� ������������������ ���� ������������������%�� ����� ��������+�������� �� �� �������������������%� ���������������� �����������������<���������������������������+� �����%���������+%� �� ������� ���� �����������������%������������� �������������+���� ����� ���� ��� �������� ���������������%��������������+%� ��������������� ������������� ���������������,������ ���������*��������������� �� ������������%�����������*������������ ���������������� �����+�����������%����������� ����������������������������7���������

<*���� ��

���� ������ ��%� ������ #�"�� ���� ��������� �� � ��� ���������*� �� ���*� ���������������� ��������#�"��� ������ �������������%���������'����������� ���� �������0����� ��������������������� ����������������������������������%����� ����� �0���������������� ���������� �������������� ���������� ������������������� ����������� ��*������������*��6����������������� ������� �

&������������ ���������&&&����� ���� ���������� ��������%����������������������������� ������� ������ ����*������<� �� ��������������������� ��������0��� �����* +������� ����*�� ������������ �� ������������������� �����������0��������#�"�� #:J%���#�"��:�������J�"�������$����������;K0������ �������������9������������������+���������� ����������� �'�����2����'�������� �������#:J������� ������7��������JL������/������������� �������#�"���������������������� ��� ���� �

2����������� ����������� ���*�����#�"��&���!�������� ����� ��� ���������*������ ��*� ����������� 1�� �� � ����������� ��� ����� ���%� ������ ���*���� ������������������������� ���������%����������������� ��������������'���������������� �C���� �������������������� ����������� �������� ����������*������������� ���� �� ��������������������������*���'��������*���������� ��������������%��������������� ��� ��� ����

&� �������� ����'������ �����'� ��� � ���������� ���� ������ �� � ��� %� ����� �� ���*�����>��:�'�����2��������%����������������������������������������0���%� ���� �� ������*� ��� ���*����� 4��*�� )����� � ���� � =G� ������� ����� �����&&&������� �� ������������� '������4��*� ������� �� ����� ���������������0���*� ��������*� ��������������� ���*$%�� ����� ����+� ��� ������*���� ���� ������������7������ ������������� �������������4��*������ ��� ���������������!�0��������� ����6����!���������� ����� �����J.26!�����%���������������� ������0�������������+%����4�L��������������������������������������� ���*��������0���� ������ �����%��������������������������� ��� �������#�"�!��������&��������������������������������������� ������������ �� ��������������������� �����

�=>����7?

,�� ��� ����� ������ ������������������� ������� #�"�� ����� ���������6���"�M%�*+������������%� ���������� ���������� ��������� ������ ����&�������<��� ����2����'�������������������������#�"�������'�� �# ?3����� ����4B��)��'����<J/� �������� ��� �� ������������������ �� � ��� A 8��������������������������� ����%�������� ����� ������.N���#�"��� �����������5���� �������� �������� �����

Page 42: Thinking in Java. Edycja polska. Wydanie IV

(% ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

����%� �� �2����'���������������������� �������������������� ���������0�������������*��,����� ����2����'������������ � �������� %���� ��������������0���+%�����#�"�������������������%��������+������ ���������#������������������0��������������������������������)������������������������ ���������� �#�"�������������������������������C���� ���������������� �������� �����#�"���������0���'�������%������ �� ���� �.N��������������%����������*�������� ����� ������0��+��%�������#�" %�������������������������#�"�������������������#�"��!J>��� ��'�����������������������������

6������������������������������������������������� �������'�����<J/� �����%����2����'������������������������������ �� ��������������'��������������2����'���������%� ����������������+� �������������%����� ����2�� ���#�������#���$��������� ��� ����������� ����'�����<J/������� � �����������*�9���L��#����������������� �������������������� ����������� ����� ����������2����'������� ������ �� ����������*�������������'���� �<J/�������������� � � ������� ������� ������������� �������������

6������������� ����� ���

!��+�&&&� ������ ����� ��������� �������������������0������%��� ������ ������������� ������� ����� ����*�������������������������������������� ������������������������0����������� ���'������)����������� ������� ���������0����������� �� ������ ����������������������������������������������������������� ������� �������������������,�������������� ������� ���� ��0���������������� ���� �&&&�����������������������������������������*����&&&� ����� ����������������'����� �� ���������� ����������� �'����%���� ���� �������������������7������������������������� ������������������ ������� �7�������%������ �� ���'���������������+���� ����'������*�����������#� ����� +���������� �������������������%����� ���� %� �������� � �������� ������������������������� ���� %� ��������� ������� ������+���������� ��������� ���������������������������%������������������������������� �����*���������� ������������

)�������������� ����������������� �������������������������*����������0������ �����������������������������0��������#� ������������������7���������%���������%���� ���� ����'������ ������������%��� ������ ��������������������� ����� %����������������*���+������������ ������ ����)������ �������� ���������� ����������������%� ��� ����������������#�"��

)���� ��������������%�����������������������*��������� ��<��� ���� ����� �������0�� %� ��������������������� � �������+�������'�����7���0&�������&������������������������ �� +���������������� ������������+��� �������������*����������&���������� ��� ����������������+������������������ ��� ����*%� ������� ���*���������� ��*����������/������������'��������� �������+����������������������� �������� �������������� .���� ������� ��� ����������� ��������� � ���� �� �� ��0��������������� ������������������������� �����%������� ����� �������������� ���������������������������#� �� ���� ������� ������������������ ��������������%�� ��� ���� ��������� ������� ������������� ������� �����%��� ���� �� �������0������������� �� ������������������������������������������������������� �����

Page 43: Thinking in Java. Edycja polska. Wydanie IV

������������������������ ��� �!��� "� (&

���������� ����� ��������� �������������������������� � �������������� !�������! ���� ��

&����������������������� ���������������� �� �������������0��������� �������� ����� ������������������������ ����:��� ������������������������������������� ��� ������ � ��� � ������� �������)����� �������������������������������������� ��������������%���������������������� ���� ���� ���� ��� ����� ������� ������� ���������� �������#������������������������������� �����������������������������������������������������������������

"���� ��� �������#�������#�����

&�����*������ ������� ����� ��������������������������������������������.������� ��������������������� ���������������3�<� �� ������� ������� ���������(�&� � ��������������<��� ���������� ���������������� ������������������������������(� ������� �F/29%�������%������#�"�%������������

5������ ������������ ������������������������������� ���������������� ��� ��� � �����*��&������ ����������*�������� ����������� �� ���� ���������� �������������*%��������������'����� �� ������� �F/29�������������������������� ����� ���� � �� ����������� ������ �� �������� ��� #�"��� ��� �����������0��������������������� ���+��������������'������������������������%��� ����������������� ���� ��������$��)�������� ������ ��� ������������*������ ��������������������� �� ������ �����������������������������������������������������*��/������������ ���������� �����+������������������ ��� �������������� 0�������������������%������������ ���� ���� ��������������������������������/������ ���� �������� .�7� ������ ��� �� ������� �������� ����� ������� ����� � ����)���%�)��*������.HH%����� ��������� ��� �������� ��������������������&� ��������� ������������������������������ ���#�" ��8� ���� ���������������� ��������������������������������������������������������!��������� ��*���*���#!)� ������ � ������� ��� ����� �� �� ������ ������� ������������� �� ������������� �������1� �������������� '���� ���� ���*� ������&&&������*������#�" �� /��������������������������������� ���3(��������?���������A 8 ������ �����#5���6���#���$�

&� ��� +������������#�"����� ���������������������&����������� ���#�"�� ���� 0��������������������������������������%�������� ������ ����+�������0��� ����������!�� �#�"�� ������������ � ������ � +%������� ��� �� ��������0���������%��������� +%�������*� +%���� �� +��������������������*���������*�������� ����*��� ���������� � ���*��� �����������������*�

"��#���� ���&������������%� ������ ��������������������(���'���� �������*������������'���� ��6�������� +�������������������������%���������� ������ ���������+%����� ����+���������'���� ���������+������������� ���%�����������+���������� ����0����1����������������� ��������������� ��� ������*�������� ������������������������������������������������������� ���+�������������%������� � ������������ ������������������ ��������������� �������� �������������

Page 44: Thinking in Java. Edycja polska. Wydanie IV

(( ����������� ��������������

�� ���������� ����� ��������� �������������������������� � �������������� !�������! ����

)����� ������������������������ �������� +������*%�������� ������� +�� �����*������������*%�� ���� �������+�������������� �����%� ������������������ �����#�"��� ����+�������������� �����������%��� � ��������� ����� ������������������/��� �����������������������������(���������������������� ����������������������� ������������������� �������� ��������������������/%����������%�����'���� �������������������� ���*�� ����������������������� ������ �������� ��� ����� �� ����������� � �������� $� ���� ������������������� ����*��������%����������� �����������������������������������#��� ������� �����*������������������������������������ �����%� ������������ ����������0������ ����������+%������ �� �������<� �� ��� ���� ������ ��������������%��0����� ������������������������ �����*������������������������������ ���*��������

)���������������������#�"���������� ���+����������� �����&� ��� ���%������0��+��� ��������������������+%�����#�"������������������ �������� �%����� ������ � � ����� � �+� ������ ����� ������������ ����� �� ������� � �����$�� #� ������%� ���������������� �������� ����������������������� � ����������� ����� � ���������� ���� ��� ������'�����������������%�������*�#�"�������������� �%���� � � ����� �����+� ���� ������ ������������ �� �������� ��� ������ ������������������ ����)��*�C����������#2�(��#���$��#� �����������������������������#�" ������'������� ���������������%�� ������� ������������ ���� ���������0����������*��� ��