- Область видимости переменных в Java
- 2. Область действия класса
- 3. Область применения метода
- 4. Объем цикла
- 5. Область применения кронштейна
- 6. Область видимости и затенение переменных
- 7. Заключение
- Пример второй — Применение this для явного вызова конструктора
- Кофе-брейк #236. Ключевое слово this в Java: способы и примеры использования
- 2. Ключевое слово this с геттерами и сеттерами
- 3. Использование this в перегрузке конструктора
- 4. Передача this в качестве аргумента
Область видимости переменных в Java
В Java, как и в любом языке программирования, каждая переменная имеет область видимости. Это сегмент программы, где переменная может использоваться и является действительной.
В этом руководстве мы познакомим вас с доступными областями действия в Java и обсудим различия между ними.
2. Область действия класса
Каждая переменная, объявленная внутри квадратных скобок класса ( <> ) с модификатором доступа private , но вне любого метода, имеет область действия класса. В результате эти переменные можно использовать везде в классе, но не вне его :
public class ClassScopeExample private Integer amount = 0; public void exampleMethod() amount++; > public void anotherExampleMethod() Integer anotherAmount = amount + 4; > >
Мы видим, что ClassScopeExample имеет переменную класса amount , доступ к которой можно получить в методах класса.
Если мы не используем private , он будет доступен из всего пакета. Прочтите статью о модификаторах доступа для получения дополнительной информации.
3. Область применения метода
Когда переменная объявлена внутри метода, она имеет область действия метода и будет действительна только внутри того же метода:
public class MethodScopeExample public void methodA() Integer area = 2; > public void methodB() // compiler error, area cannot be resolved to a variable area = area + 2; > >
В методе A мы создали переменную метода с именем area . По этой причине мы можем использовать область внутри метода A , но не можем использовать ее где-либо еще.
4. Объем цикла
Если мы объявим переменную внутри цикла, она будет иметь область действия цикла и будет доступна только внутри цикла:
public class LoopScopeExample ListString> listOfNames = Arrays.asList("Joe", "Susan", "Pattrick"); public void iterationOfNames() String allNames = ""; for (String name : listOfNames) allNames = allNames + " " + name; > // compiler error, name cannot be resolved to a variable String lastNameUsed = name; > >
Мы видим, что метод iterationOfNames имеет переменную метода с именем name . Эта переменная может использоваться только внутри цикла и недействительна вне его.
5. Область применения кронштейна
Мы можем определить дополнительные области в любом месте, используя скобки ( <> ):
public class BracketScopeExample public void mathOperationExample() Integer sum = 0; Integer number = 2; sum = sum + number; > // compiler error, number cannot be solved as a variable number++; > >
Номер переменной действителен только в квадратных скобках.
6. Область видимости и затенение переменных
Представьте, что у нас есть переменная класса, и мы хотим объявить переменную метода с таким же именем:
public class NestedScopesExample String title = "ForEach"; public void printTitle() System.out.println(title); String title = "John Doe"; System.out.println(title); > >
В первый раз, когда мы печатаем title , будет напечатано «ForEach». После этого объявите одноименную переменную метода и присвойте ей значение «John Doe ».
Переменная метода title отменяет возможность повторного доступа к переменной title класса . Вот почему во второй раз он напечатает «John Doe » .
Сбивает с толку, верно? Это называется затенением переменных и не является хорошей практикой. Лучше использовать префикс this для доступа к переменной класса title , например this.title .
7. Заключение
Мы изучили различные области видимости, существующие в Java.
Как всегда, код доступен на GitHub .
Ключевое слово this