1. Zmienne lokalne
Porozmawiajmy trochę poważniej o zmiennych. Ale tym razem omówimy nie ich wewnętrzną strukturę, ale interakcję zmiennych z kodem, w którym się znajdują.
Wszystkie zmienne zadeklarowane wewnątrz metod nazywane są zmiennymi lokalnymi . Zmienna lokalna istnieje tylko w bloku kodu, w którym została zadeklarowana. A dokładniej, istnieje od momentu deklaracji do końca bloku kodu, w którym jest zadeklarowany.
Spójrzmy na przykład dla uproszczenia:
Kod | Dostępność zmiennych |
---|---|
|
|
Porozmawiajmy ponownie o dostępności zmiennych lokalnych. Oto blok kodu składający się z nawiasów klamrowych: może to być treść metody, treść pętli lub po prostu blok kodu instrukcji warunkowej. Zmienna zadeklarowana w bloku kodu istnieje do końca tego bloku kodu.
Jeśli zmienna jest zadeklarowana w ciele pętli, będzie istnieć tylko w ciele pętli. Bycie tworzonym i niszczonym na każdym etapie cyklu.
Przykład:
Kod | Dostępność zmiennych |
---|---|
|
|
Mogliśmy zadeklarować drugą zmienną lokalną z nazwą b
tylko dlatego, że pierwsza zmienna b
nie jest widoczna w bloku kodu, w którym zadeklarowana jest druga zmienna b
.
2. Zmienne-parametry
Jak powiedzieliśmy wcześniej, każda metoda może mieć zmienne parametryczne. A co z ich widocznością i żywotnością?
Tutaj wszystko jest dość proste. Zmienne parametrów są tworzone, gdy sterowanie jest przekazywane do kodu metody (kod metody rozpoczyna wykonywanie) i usuwane, gdy metoda się kończy. Są one widoczne w całym ciele metody.
Przykład:
Kod | Dostępność zmiennych |
---|---|
|
|
Jak powiedzieliśmy wcześniej, args
jest to po prostu zmienna typu tablica łańcuchów. I podobnie jak wszystkie zmienne parametryczne, jest ona dostępna wszędzie wewnątrz ciała metody. Chociaż w naszych przykładach zwykle to ignorujemy.
3. Zmienne klasowe
Jak pamiętasz z wykładów na poziomie 1, klasa może zawierać funkcje i zmienne. Funkcje są zwykle nazywane „metodami klasowymi”, a zmienne „zmiennymi klasowymi” lub „polami klas”. W rzeczywistości w Javie są to synonimy.
Co to są zmienne klasy (lub pola)?
Zmienne klasy to zmienne zadeklarowane nie w metodzie, ale w klasie.
Dostęp do nich można uzyskać z dowolnej metody klasy. Z grubsza mówiąc , zmienne klasowe są wspólnymi zmiennymi dla wszystkich metod klasy.
Przykład:
Kod | Dostępność zmiennych |
---|---|
|
|
W tym przykładzie mamy dwie metody — add()
i remove()
. Metoda add()
zwiększa zmienne klasy sum
i count
, a metoda remove()
zmniejsza zmienne sum
i count
. Obie metody operują na wspólnych zmiennych klasy.
Zmienne lokalne istnieją podczas wykonywania metody. Zmienne klasy istnieją tak długo, jak długo istnieje obiekt klasy, do której należą . Więcej o obiektach klasowych dowiesz się na następnym poziomie.
4. Zmienne statyczne
Zmienne klasowe, podobnie jak metody klasowe, są statyczne i niestatyczne (zwykłe). Metody statyczne mają dostęp tylko do zmiennych statycznych.
Na poziomie 11 przyjrzymy się, jak działają zmienne statyczne i metody oraz zrozumiemy przyczyny tych ograniczeń.
Aby uczynić zmienną klasową statyczną, musisz wpisać słowo kluczowe przed jej deklaracją static
.
Zmienne statyczne są powiązane nie z obiektem klasy, w którym zostały zadeklarowane, ale z samą klasą. W związku z tym istnieją nawet wtedy, gdy nie jest tworzony żaden obiekt klasy . Możesz uzyskać do nich dostęp z innych klas, używając konstrukcji formularza:
ClassName.variableName
Przykład:
Kod | Dostępność zmiennych |
---|---|
|
|
W powyższym przykładzie stworzyliśmy oddzielną klasę Storage
, przenieśliśmy do niej zmienne count
i sum
zadeklarowaliśmy je jako statyczne . Dostęp do publicznych zmiennych statycznych można uzyskać z dowolnej metody programu (a nie tylko z metody).
GO TO FULL VERSION