这个问题涉及到了变量的变量的初始化问题 1, 成员变量的初始化,对于成员变量不管程序有没有进行显示的进行初始化,Java虚拟机 都会给它初始化默认值初始化默认规则为 1.1, 正数型(byte,short,int,long)的基本类型数据默认值为0 1.2, 单精度浮点型(float)的基本类型变量默认值为0.0f 1.3, 双精度浮点型(double)的基本类型变量默认值为0.0d 1.4, 字符型(char)的基本类型变量默认值为“\u0000” 1.5, 布尔型基本类型变量默认值为false 1.6, 引用类型变量的默认值为null 1.7, 数组引用类型的变量默认值为null,创建数组变量的实例后如果没有显示的为每个元素赋值,Java会把每个元素初始化为其相应类型的默认值 2, 局部变量的初始化, 2.1, 局部变量声明之后Java虚拟机就不会给它初始化默认值,因此局部变量必须经过显示的初始化后才能使用它,如果编译器确认局部变量在使用之前没有被初始化,编译器会报错。 2.2, 局部变量没有初始化,并且在方法中一直没有使用,则编译和运行都会通过。 3, String line =null,这句话被定义在了main方法内部,属于局部变量,因此编译器认为 可能是程序员忘记了初始化,因此报错提醒要对局部变量初始化后再使用
1, public class Test { 2, public staticvoid main(String[] args) throws Exception { 3, 4, File file = new File("src//hello.txt"); 5, BufferedReader br = new BufferedReader(new InputStreamReader(newFileInputStream(file))); 6, 7, String line ; 8, System.out.println(line); 9, while((line=br.readLine())!=null){ 10, System.out.println(line); 11, } 12, } 13, 14, } |