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("Array: "+Arrays.toString(arr));
System.out.println("Choose numerator and denominator(not 0) from this array (enter positions 0 to 5)");
int a = sc.nextInt();
int b = sc.nextInt();
try {
int result = (arr[a])/(arr[b]);
}catch(Exception e) {
System.out.println("exception occured");
} finally {
System.out.println("This is finally block");
System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
}
}
}
输出结果ExceptionExample.java:21: error: cannot find symbol
System.out.println("Result of "+arr[a]+"/"+arr[b]+": "+result);
^
symbol: variable result
location: class ExceptionExample
1 error