Zmienne lokalne
„Witaj, mój ukochany uczniu! Czas trochę poważniej podejść do zmiennych. Ale tym razem nie będziemy omawiać ich wewnętrznej struktury. Zamiast tego skupimy się na tym, jak zmienne wchodzą w interakcję 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 mówiąc dokładniej, istnieje od momentu zadeklarowania do końca bloku kodu, w którym jest zadeklarowany”.
„Oczywiście, potrzebuję przykładu”.
"Nie ma problemu. Proszę bardzo:
Kod | Zmienna dostępność |
---|---|
|
|
„Omówimy jeszcze raz zasady dostępu do zmiennych lokalnych. Oto blok kodu. Co oznacza jego początek i koniec?”
"Nawiasy klamrowe?"
„Zgadza się. 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. Powiedz mi, gdzie zmienna istnieje, jeśli jest zadeklarowana w treści pętli?”
„Będzie istnieć tylko w treści pętli”.
„Zgadza się. Co więcej, będzie tworzony i niszczony przy każdej iteracji pętli”.
„Oznacza to, że nie można zadeklarować dwóch zmiennych lokalnych o tej samej nazwie w jednej metodzie — program się nie skompiluje. Ale można to zrobić, jeśli bloki kodu, w których deklarowane są zmienne, nie nakładają się na siebie” .
„Jest powód, dla którego jesteś moim ulubieńcem, Amigo. Weź jeszcze jeden przykład, aby utrwalić to w swoim mózgu.
Kod | Zmienna widoczność |
---|---|
|
|
„Mogliśmy zadeklarować drugą zmienną lokalną o nazwie b
tylko dlatego, że pierwsza zmienna nie jest widoczna w bloku kodu, w którym zadeklarowana jest b
druga zmienna.b
Parametry
„Jak powiedzieliśmy wcześniej, każda metoda może mieć zmienne, które nazywamy parametrami. A co z ich widocznością i czasem życia?”
"Hmm... jestem w szoku..."
„Tutaj wszystko jest dość proste. Parametry są tworzone, gdy wykonanie przechodzi do metody (tj. kiedy kod metody zaczyna się wykonywać). Są one eliminowane, gdy metoda się kończy”.
„Innymi słowy, są one widoczne w całym ciele metody i tylko tam?”
„Tak. Przykład:
Kod | Zmienna widoczność |
---|---|
|
|
„Jak powiedzieliśmy wcześniej, args
jest to po prostu zmienna, której typem jest tablica łańcuchów. I podobnie jak wszystkie parametry, jest dostępna wszędzie w ciele metody. To powiedziawszy, zwykle ignorujemy ją w naszych przykładach.
Zmienne w klasie
„Pamiętaj lekcje na poziomie 1, gdzie powiedzieliśmy, że klasa może mieć metody i zmienne. Metody są czasami nazywane metodami instancji, a zmienne — zmiennymi instancji lub polami.
„Jakie są zmienne (lub pola) klasy ?
Są to zmienne zadeklarowane nie w metodzie, ale w klasie”.
— A po co oni tam są?
„Na początek można uzyskać do nich dostęp z dowolnej (niestatycznej) metody klasy. Z grubsza mówiąc, zmienne instancji to zmienne, które są wspólne dla wszystkich metod klasy.
Przykład:
Kod | Zmienna widoczność |
---|---|
|
|
„W tym przykładzie mamy dwie metody — add()
i remove()
. add()
Metoda zwiększa zmienne instancji sum
i count
, a remove()
metoda zmniejsza zmienne sum
i count
. Obie metody działają na wspólnych zmiennych instancji”.
„Rozumiem to wszystko! Zmienne lokalne istnieją podczas wykonywania metody. Zmienne instancji klasy istnieją w obiekcie klasy tak długo, jak ten obiekt istnieje” .
„Dobra robota, Amigo. Położyliśmy trochę pracy przygotowawczej i poznasz szczegóły dotyczące obiektów klasy na następnym poziomie.
Zmienne statyczne
„Podobnie jak metody, zmienne w klasie mogą być statyczne lub niestatyczne. Metody statyczne mają dostęp tylko do zmiennych statycznych.
„Nie mam jeszcze jasnego zrozumienia zmiennych statycznych”.
„Och, wiem, ale nie martw się. Na razie po prostu oswój się z nimi. Zapoznaj się z nimi. Na poziomie 11 przeanalizujemy strukturę zmiennych statycznych i metod, a zrozumiesz przyczyny tych ograniczenia.
„Aby utworzyć zmienną statyczną (zmienną klasową), musisz wpisać słowo static
kluczowe w jej deklaracji.
„Zmienne statyczne nie są związane z obiektem lub instancją klasy, w której zostały zadeklarowane. Zamiast tego należą do samej klasy. Dlatego istnieją, nawet jeśli nie został utworzony ani jeden obiekt klasy . Możesz odwołać się do je z innych klas przy użyciu konstrukcji takiej jak:
ClassName.variableName
Przykład:
Kod | Zmienna widoczność |
---|---|
|
|
„W powyższym przykładzie stworzyliśmy oddzielną Storage
klasę, przenieśliśmy do niej zmienne count
i i zadeklarowaliśmy je jako statyczne . Dostęp do publicznych zmiennych statycznych można uzyskać z dowolnej metody w programie (a nie tylko z metody).”sum
„Nie do końca rozumiem, ale wydaje mi się to wygodne”.
„Tak jest. A czasami jest to konieczne. Bez zmiennych statycznych i metod byśmy utknęli”.
„Mam nadzieję, że powoli będę w stanie to rozgryźć”.
– Tak, oczywiście, że będziesz.