java try中的变量_为什么在try中定义的变量不能在catch中或在Java中最终使用?

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值