sunhaoran1115
sunhaoran1115
2015-04-05 01:03
采纳率: 66.7%
浏览 3.2k
已采纳

FileReader fr = null; 为什么要先定义fr为空置

import java.io.*;
public class TestFileReader {
public static void main(String[] args) {
FileReader fr = null;
int c = 0;
try {
fr = new FileReader("d:java\TestFileReader.java");
int ln = 0;
while ((c = fr.read()) != -1) {
//char ch = (char) fr.read();
System.out.print((char)c);
//if (++ln >= 100) { System.out.println(); ln = 0;}
}
fr.close();
} catch (FileNotFoundException e) {
System.out.println("找不到指定文件");
} catch (IOException e) {
System.out.println("文件读取错误");
}

}
}

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • danielinbiti
    danielinbiti 2015-04-05 01:24
    已采纳
    点赞 评论
  • caozhy

    这不是必须的。
    FileReader fr; 这样也可以。

    点赞 评论
  • devmiao
    devmiao 2015-04-05 01:11

    给变量一个初始值这是一个好的编码习惯。这里
    FileReader fr = null;
    fr = new FileReader("d:\\java\\TestFileReader.java");
    也可以写成一行
    FileReader fr = new FileReader("d:\\java\\TestFileReader.java");
    两者执行效率和功能等价
    而且看起来fr也可以定义在try块中

    点赞 评论
  • 91program
    91program 2015-04-05 01:37

    定义时赋初值是编程建议的风格,但是只是建议,不是强制要求。这样做,只是好的习惯。

    点赞 评论
  • woodbean
    woodbean 2015-04-06 08:11

    这段代码中是没必要加"=null"的。不过如果想在try-catch块之外继续使用变量fr的话,则是必须先赋初值的。Java编译器会对代码进行静态分析,以避免任何可能的不赋值就使用的情况。这个例子中,如果try中的代码出现了异常,有可能导致fr=new FileReader(...)没有执行,从而在try-catch之后的代码中就没法使用fr了。其实也可以在try-catch之后加个finally块,并在其中给fr赋初值:
    finally{
    fr=null;
    }

    点赞 评论

相关推荐