当前位置: 首页 > 面试题库 >

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

锺离声
2023-03-14
问题内容

在下面的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块内访问。

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



 类似资料:
  • 问题内容: 我注意到当在try {}中使用以下变量时,例如,从最后我不能在它们上使用方法: 但是,如果将声明放置在Try {}之前的main()中,则程序编译时没有错误,那么有人可以指出解决方案/答案/解决方法吗? 问题答案: 在进入块之前,需要声明变量,以使它们在方法的其余部分范围内:

  • 问题内容: 注意:这是在PHP中处理变量范围的参考问题。请关闭所有适合此模式的问题,以作为该问题的重复。 PHP中的“可变范围”是什么?一个.php文件中的变量可以在另一个文件中访问吗?为什么有时会出现 “未定义变量” 错误? 问题答案: 什么是“可变范围”? 变量具有有限的“作用域”或“可从其访问的位置”。仅仅因为你写一次 的地方 在你的应用程序并不意味着你可以参照从 到处 其他的应用程序中。该

  • 问题内容: 我读到try-with-resources 中的块是可选的。我试图在try-with- resources块中创建一个对象,没有后续块,只是从eclipse中获取编译器错误:“ 自动调用引发了未处理的异常类型。” 由于可以在try-with- resources中使用的每个资源都实现了,因此在调用该方法时可能会引发异常,因此我不明白该子句是可选的,因为它不允许我跳过从中捕获异常的过程。

  • 问题内容: 我一直在争论“访问器”一词的用法(上下文是Java编程)。我倾向于认为访问器隐含地是“属性访问器”,也就是说,该术语暗示着它或多或少地在其中提供对对象内部状态的直接访问。另一方坚持认为,以任何方式接触对象状态的任何方法都是访问器。 我知道你们无法赢得我的支持,但我很好奇您如何定义该词。:) 问题答案: 通过访问者,我倾向于想到吸气剂和吸气剂。 通过坚持所有接触对象内部状态的方法都是访问

  • 我正在做下面这样的事情,但它不起作用。为什么?又是如何做到的呢?

  • 问题内容: 在其他任何地方都可以访问在静态块内声明的变量吗?他们是什么样的成员(即,他们也是静态成员吗​​?) 问题答案: 通常,程序员不需要在静态块内声明任何变量,通常这仅是为了确保初始化静态变量以供类的所有实例使用(取决于静态变量的范围)。 与方法和构造函数变量一样,在静态块内声明的变量将在该块内是局部的。 JDK文件