小编典典

java try块内定义的变量的作用域是什么?为什么在try块之外无法访问它?

java

在下面的Java程序中,即使成员“ x”在try块之外定义,也可以在try块内部访问它。如果是“
y”,则在try块内定义。但是在try块之外无法访问它。为什么会这样呢?

package com.shan.interfaceabstractdemo;

public class ExceptionDemo {
    public static void main(String[] args) {
        int x = 10;
        try {
            System.out.println("The value of x is:" + x);
            int y = 20;
        } catch (Exception e) {
            System.out.println(e);
        }
        System.out.println("The value of y is:" + y);
    }
}

输出为:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
y cannot be resolved to a variable

at com.felight.interfaceabstractdemo.ExceptionDemo.main(ExceptionDemo.java:12)

阅读 794

收藏
2020-11-30

共1个答案

小编典典

任何{}块都定义Java中的作用域。因此,y在try块内声明的任何变量(例如)都只能在try块内访问。

x在包含try块的外部块(即整个main方法的块)中声明,因此可以在try块内部访问它。

2020-11-30