Słowo kluczowe static w Javie

W poprzedniej części przyjrzeliśmy się modyfikatorom dostępu i pakietom.

Słowo kluczowe static

Modyfikator static pojawiał się już wiele razy w naszych wcześniejszych programach. Po krótce wspomnieliśmy o istnieniu metod statycznych we wpisie dotyczącym metod. Wielokrotnie pojawiała się także w metodzie main. Podobnie jak w przypadku modyfikatorów dostępu static możemy zastosować także do pól.

Pola statyczne

Czym się różni zwykłe pole od statycznego? Główną różnicą jest to, że pole należy do całej klasy, a nie konkretnego obiektu. Innymi słowy gdy utworzymy 10 obiektów, to pola niestatyczne mogą mieć inny stan lub wartość, a pola statyczne są identyczne, gdyż należą do klasy (nawet gdy nie istnieje żadnej obiekt danej klasy, to można odwołać się do pola statycznego).

Dobrym przykładem zastosowani pól statycznych są różnego rodzaju stałe matematyczne. Zgodnie z dokumentacją klasa Math posiada dwa pola statyczne.

Dostęp do nich możliwy jest wpisując bezpośrednio nazwę klasy i pole.

Możemy również utworzyć własną klasę, w której wykorzystamy stałe statyczne (dla przypomnienia należące do całej klasy, a nie konkretnego obiektu). Wyobraźmy sobie, że nasza klasa będzie opisywała różnego rodzaju zegary w sklepie. Mimo ogromnej różnorodności towaru (budzik czy na rękę, cyfrowy czy analogowy, sportowy z funkcją stopera czy elegancki pasujący na wyszukane okazje) łączy je jedna cecha – wszystkie powinny tak samo odmierzać czas. W związku z tym możemy zadeklarować takie stałe jak liczba godzin na dobę, liczba minut na godzinę oraz liczbę sekund na minutę.

Metody statyczne

Podobnie jak w przypadku pól, tak i metody działają nie na konkretnym egzemplarzu klasy. W związku z tym aby uruchomić metodę nie ma potrzeby aby tworzyć obiekt, a wystarczy odwołać się do klasy, z której chcemy wywołać metodę, a następnie podać jej nazwę. Do pokazania przykładu ponownie skorzystamy z klasy Math.

Warto wiedzieć, że metodę statyczną można wywołać korzystając z obiektu, ale nie jest to prawidłowa praktyka gdyż nie wpływamy w ten sposób na jego stan.

Metoda main

Statyczna metoda main() służy do przetwarzania danych w programie. Dzięki temu, że jest statyczna do jej działania nie jest potrzebny żaden obiekt. W skrócie można uznać, że to właśnie w metodzie main() zaczyna się nasz program. Jej brak zostanie natychmiast zauważony przez kompilator, który zwróci odpowiedni komunikat.

Metoda main w kilku klasach

Metodę main() możemy napisać w każdej klasie wchodzącej w skład pakietu. Może to być przydatne w przypadku gdy chcemy przetestować konkretną klasę i jej działanie. Jak jednak rozróżnić, która metoda main() jest tą, która powinna być używana? W przypadku gdy kompilujemy programy z wiersza poleceń należy użyć polecenia:

Jeżeli korzystamy z IDE Eclipse możemy ustawić główną klasę w parametrach uruchomienia programu.

Parametry metody main

Metoda main() ma następującą składnię:

Jak widać do funkcji main() przekazywana jest tablica łańcuchów znakowych String o nazwie args. Dostęp do niej jest prosty gdyż tak jak w przypadku każdej innej tablicy należy napisać jej nazwę oraz indeks:

Aby przekonać się jak dokładnie działa przekazywanie argumentów skorzystamy z prostego programu.

Ponownie można skorzystać z kompilacji z wiersza poleceń:

lub wpisać ten sam argument w parametrach uruchomienia Eclipse. Efektem uruchomienia programu będzie wypisanie w konsoli wszystkich argumentów.

Ustawianie parametrów w Eclipse

Aby ustawić parametry uruchomienia w Eclipse należy kliknąć w menu na run,a następnie na Run configuration.

parametry uruchomienia w Eclipse
parametry uruchomienia w Eclipse

Następnie z okienka po lewej stronie wybrać klasę, w której znajduje się metoda main(), w okienku po prawej w zakładce arguments wpisać argumenty, które chcemy przekazać do programu.

parametry uruchomienia argumenty Eclipse
parametry uruchomienia argumenty Eclipse

W następnej części pokażemy podstawowe metody obsługi wejścia i wyjścia.