在下面的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)
任何{}块都定义Java中的作用域。因此,y在try块内声明的任何变量(例如)都只能在try块内访问。
{}
y
x在包含try块的外部块(即整个main方法的块)中声明,因此可以在try块内部访问它。
x
main