问题描述
- 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:javaTestFileReader.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("文件读取错误");
}}
}
解决方案
有些情况下赋值了null就不会包变量未初始化了
http://zhidao.baidu.com/link?url=IPm8OXUs5QluOBQXD2PJ0vfO32pLb8U8CPkURSHWM8nUi71xMRd4ErOy7wiO0KgWMsYLFjxZvSLwQpnS8ZmivK
解决方案二:
这不是必须的。
FileReader fr; 这样也可以。
解决方案三:
给变量一个初始值这是一个好的编码习惯。这里
FileReader fr = null;
fr = new FileReader("d:\java\TestFileReader.java");
也可以写成一行
FileReader fr = new FileReader("d:\java\TestFileReader.java");
两者执行效率和功能等价
而且看起来fr也可以定义在try块中
解决方案四:
定义时赋初值是编程建议的风格,但是只是建议,不是强制要求。这样做,只是好的习惯。
解决方案五:
这段代码中是没必要加"=null"的。不过如果想在try-catch块之外继续使用变量fr的话,则是必须先赋初值的。Java编译器会对代码进行静态分析,以避免任何可能的不赋值就使用的情况。这个例子中,如果try中的代码出现了异常,有可能导致fr=new FileReader(...)没有执行,从而在try-catch之后的代码中就没法使用fr了。其实也可以在try-catch之后加个finally块,并在其中给fr赋初值:
finally{
fr=null;
}
时间: 2024-10-01 06:37:53