English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
В Java класс будет иметь три типа переменных, то есть статические (класс), экземплярные и локальные.
Экземплярные переменные-Эти переменные принадлежат экземплярам класса (объектам). Они объявлены внутри класса, но вне методов. Они инициализируются при инсталляции класса. К ним можно обращаться из любого метода, конструктора или блока конкретного класса.
Класс/статические переменные-Класс/статические переменные принадлежат классу, как и переменные экземпляра, они объявлены вне методов класса, но с использованием ключевого слова static.
Они могут быть доступны на этапе компиляции, и вы можете к ним обращаться до инсталляции класса/не инсталлируя класс, всего один экземпляр статического поля доступен в классе, то есть значение статического поля одинаково для всех объектов. Вы можете использовать ключевое слово static для определения статического поля.
Локальные переменные-Эти переменные принадлежат методу/блоку/конструктору и объявлены/определены в них. Их область действия расположена внутри метода (или блока или конструктора), и они будут уничтожены после выполнения.
Таким образом, если переменная объявлена в блоке try (и это также верно для любого другого блока), переменная будет расположена в локальной области этого блока, и ее жизненный цикл закончится после выполнения этого блока. Таким образом, вы не можете получить доступ к переменным, объявленным вне этого блока.
В следующем примере мы объявляем переменную result и пытаемся к ней обратиться в finally блоке, что вызывает компиляторную ошибку при компиляции.
import java.util.Arrays; import java.util.Scanner; public class ExceptionExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int[] arr = {10, 20, 30, 2, 0, 8}; System.out.println("Массив: " + Arrays.toString(arr)); System.out.println("Выберите числитель и знаменатель (не 0) из этого массива (введите позиции от 0 до 5)"); int a = sc.nextInt(); int b = sc.nextInt(); try { int result = (arr[a]) / (arr[b]); catch(Exception e) { finally { } System.out.println("Это finally блок"); System.out.println("Результат " + arr[a] + "/" + arr[b] + ": " + result); } } }
Результат вывода
ExceptionExample.java:21: ошибка: символ не найден System.out.println("Результат " + arr[a] + "/" + arr[b] + ": " + result); ^ символ: переменная result местоположение: класс ExceptionExample 1 ошибка