Локални променливи
„Поздрави, любими мой ученик! Време е да се заемем малко по-сериозно с променливите. Но този път няма да обсъждаме тяхната вътрешна структура. Вместо това ще се съсредоточим върху това How променливите взаимодействат с codeа, където се намират.
„Всички променливи, които са декларирани вътре в методите, се наричат локални променливи . Локална променлива съществува само в блока от code, в който е декларирана. Или, за да бъдем по-точни, тя съществува от момента, в който е декларирана до края на блока. на codeа, в който е деклариран."
— Ясно е, че имам нужда от пример.
„Няма проблем. Ето го:
Код | Променлива наличност |
---|---|
|
|
„Нека да прегледаме правилата за достъп до локални променливи още веднъж. Ето блок от code. Какво бележи началото и края му?“
„Къдрави скоби?“
„Правилно. Това може да е тяло на метод, тяло на цикъл or просто блок от code за условен оператор. Променлива, декларирана в блок от code, съществува до края на този блок от code. Кажете ми къде ще променлива съществува, ако е декларирана в тялото на цикъл?"
„Ще съществува само в тялото на цикъла.“
„Точно така. Нещо повече, той ще се създава и унищожава при всяка итерация на цикъла.“
„Това означава, че не можете да декларирате две локални променливи с едно и също име в един метод — програмата няма да се компorра. Но можете да направите това, ако блоковете от code, където са декларирани променливите, не се припокриват. “
„Има причина да си ми любим, Амиго. Вземи още един пример, за да затвърдиш това в мозъка си.
Код | Променлива видимост |
---|---|
|
|
„Успяхме да декларираме втора локална променлива с име b
само защото първата променлива не се вижда в codeовия блок, където е декларирана b
втората променлива.b
Параметри
„Както казахме преди, всеки метод може да има променливи, които наричаме параметри. Какво ще кажете за тяхната видимост и продължителност на живота?“
"Хмм... озадачен съм..."
"Тук всичко е доста просто. Параметрите се създават, когато изпълнението стъпи в метода (т.е. когато codeът на метода започне да се изпълнява). Те се елиминират, когато методът приключи."
„С други думи, те са видими в цялото тяло на метода и само там?“
„Да. Пример:
Код | Променлива видимост |
---|---|
|
|
„Както казахме по-рано, args
е просто променлива, чийто тип е масив от низове. И като всички параметри, тя е налична навсякъде в тялото на метода. Въпреки това обикновено я игнорираме в нашите примери.
Променливи в клас
„Спомнете си уроците в ниво 1, където казахме, че един клас може да има методи и променливи. Методите понякога се наричат методи на екземпляри, а променливите — променливи or полета на екземпляри.
„Какви са променливите (or полетата) на клас ?
Те са променливи, които са декларирани не в метод, а в клас."
— И за Howво са там?
"Като начало, те могат да бъдат достъпни от всеки (нестатичен) метод на клас. Грубо казано, променливите на екземпляра са променливи, които се споделят от всички методи на клас.
Пример:
Код | Променлива видимост |
---|---|
|
|
„В този пример имаме два метода — add()
и remove()
. add()
Методът увеличава променливите на екземпляра sum
и count
, а remove()
методът намалява променливите на sum
и count
. И двата метода работят върху променливи на споделен екземпляр.“
"Разбирам всичко това! Локалните променливи съществуват, докато се изпълнява метод. Променливите на екземпляра на клас съществуват в обект на клас, докато този обект съществува."
„Браво, Амиго. Положихме някои основи и ще научите подробности за обектите от даден клас в следващото ниво.
Статични променливи
„Подобно на методите, променливите в един клас могат да бъдат статични or нестатични. Статичните методи имат достъп само до статични променливи.
„Все още нямам ясно разбиране за статичните променливи.“
„О, знам, но не се притеснявайте. Засега просто се настанете удобно с тях. Запознайте се с тях. В ниво 11 ще анализираме структурата на статичните променливи и методи и ще разберете причините за тях ограничения.
„За да направите статична променлива (променлива на класа), трябва да напишете static
ключовата дума в нейната декларация.
"Статичните променливи не са обвързани с обект or екземпляр от класа, в който са декларирани. Вместо това те принадлежат на самия клас. Ето защо те съществуват, дори ако не е създаден нито един обект от класа . Можете да се обърнете към ги от други класове, използвайки конструкция като:
ClassName.variableName
Пример:
Код | Променлива видимост |
---|---|
|
|
"В горния пример създадохме отделен Storage
клас, преместихме променливите count
и sum
в него и ги обявихме за статични . Публичните статични променливи могат да бъдат достъпни от всеки метод в програма (а не само от метод)."
— Не разбирам напълно, но това ми се струва удобно.
„Така е. И понякога е необходимо. Без статични променливи и методи щяхме да останем в застой.“
„Надявам се, че бавно ще мога да го разбера.“
— Да, разбира се, че ще го направиш.
GO TO FULL VERSION