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

从最终{}访问时,try {}内的(java)变量作用域是什么?

白浩荡
2023-03-14
问题内容

我注意到当在try {}中使用以下变量时,例如,从最后我不能在它们上使用方法:

import java.io.*;
public class Main 
{
    public static void main()throws FileNotFoundException
    {

    Try{
           File src = new File("src.txt");
           File des = new File("des.txt");
           /*code*/
     }
     finally{
              try{ 
                   /*closing code*/
                  System.out.print("After closing files:Size of src.txt:"+src.length()+" Bytes\t");
                  System.out.println("Size of des.txt:"+des.length()+" Bytes");
                  } catch (IOException io){
                       System.out.println("Error while closing Files:"+io.toString());
                  }
            }
     }
}

但是,如果将声明放置在Try {}之前的main()中,则程序编译时没有错误,那么有人可以指出解决方案/答案/解决方法吗?


问题答案:

在进入try块之前,需要声明变量,以使它们在方法的其余部分范围内:

public static void main() throws FileNotFoundException {
    File src = null;
    File des = null;
    try {
        src = new File("src.txt");
        des = new File("des.txt");
        /*code*/
    } finally {
        /*closing code*/
        if (src != null) {
            System.out.print("After closing files:Size of src.txt:" + src.length() + " Bytes\t");
        }
        if (des != null) {
            System.out.println("Size of des.txt:" + des.length() + " Bytes");
        }
    }
}


 类似资料:
  • 问题内容: 在下面的Java程序中,即使成员“ x”在try块之外定义,也可以在try块内部访问它。如果是“ y”,则在try块内定义。但是在try块之外无法访问它。为什么会这样呢? 输出为: 问题答案: 任何块都定义Java中的作用域。因此,在try块内声明的任何变量(例如)都只能在try块内访问。 在包含try块的外部块(即整个方法的块)中声明,因此可以在try块内部访问它。

  • 我的代码有上述错误。我尝试通过将我的btnsav声明为最终版本来修复此问题,但随后我收到另外两个错误: 未知类:“btnsave” 不是一个声明 你知道我如何修复这个错误吗?

  • 我知道这个话题听起来像是重复的,但我并不是想在这里调试这个问题,而是想绕过它。 我的程序应该做的是:对于文件夹中的每个文件,创建一个新按钮。如果您单击此按钮,请输入您刚输入的文件夹的名称。 现在我遇到的问题是,“fileName”变量需要放在final中,因为Java提供的是对象的指针,而不是值本身。但如果我这样做,则只会为任何按钮发送最后选择的文件名。

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

  • 这个程序是我的类的最终赋值,我在弄清楚为什么我收到错误“从内部类引用的局部变量必须是最终的或实际上是最终的”时遇到了问题。该程序正在运行并发线程来对#的数组进行排序,然后找到该数组的高值和低值。当我在没有并发的情况下创建它时,我没有这个错误。我正在努力确定在哪里最终确定高变量和低变量。 这是产生错误的代码块。如果我使int高=数字[0];或int-low=数字[0];final,然后我得到一个错误

  • 问题内容: 我一直在寻找一些Java基本集合(的宝库,fastutil,HPPC)和我已经注意到,类变量有时声明为图案的局部变量。例如: 我已经进行了一些基准测试,看来这样做时速度 稍 快,但是为什么会这样呢?我试图了解如果注释掉函数的前三行,那么Java将有何不同之处。 注意:这似乎与此问题相似,但这是针对c ++的,并且没有解决为什么声明它们的原因。 问题答案: 此处的关键字是红色鲱鱼。之所以