Java中final变量为什么在使用前必须要进行初始化
2017-11-06 23:22
1241 查看
final关键字我们并不陌生,但是final修饰的属性变量为什么必须在定义的时候或者构造函数中被初始化呢?
static final修饰的变量又为什么必须在定义的时候进行初始化呢?
首先要明白一点:
final修饰的变量表示赋值之后不能再进行更改,系统赋默认值也算赋值,因此系统也不会赋默认值。
如果不在定义的时候或者构造函数中对final变量进行赋值的话,则生成的对象中final变量的值是未知的(编译器也会直接报错),因此必须进行初始化。
如果用static final同时修饰变量的话,则变量必须在定义的时候进行初始化。因为static变量属于类,在调用构造函数之前就已经被系统赋予默认值了。
如果不在定义的时候初始化,那么既无法在构造函数中初始化,系统也不会赋默认值。则该变量被定义出来是毫无意义的。
static final修饰的变量又为什么必须在定义的时候进行初始化呢?
首先要明白一点:
final修饰的变量表示赋值之后不能再进行更改,系统赋默认值也算赋值,因此系统也不会赋默认值。
如果不在定义的时候或者构造函数中对final变量进行赋值的话,则生成的对象中final变量的值是未知的(编译器也会直接报错),因此必须进行初始化。
如果用static final同时修饰变量的话,则变量必须在定义的时候进行初始化。因为static变量属于类,在调用构造函数之前就已经被系统赋予默认值了。
如果不在定义的时候初始化,那么既无法在构造函数中初始化,系统也不会赋默认值。则该变量被定义出来是毫无意义的。
相关文章推荐
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- java匿名内部类使用外部变量时,外部变量必须是final,为什么?
- Java接口中的成员变量为什么必须是public static final?
- 为什么局部变量必须以final修饰(或者有final实效:java8)才可以在内部类中使用?
- Java接口中的成员变量为什么必须是public static final?
- Java中内部类中使用外面变量为什么final修饰?
- 大家来讨论!Java*为什么局部变量必须初始化才能使用?有在观察JVM的指点一下!
- 解析——java匿名内部类使用外部变量时,外部变量必须是final
- Java接口中的成员变量为什么必须是public static final?
- 【JAVA】在线程里使用线程外的变量为什么一定要是final类型
- 探索,java线程中使用局部变量:局部变量必须声明为final
- 为什么内部类使用的局部变量必须是final而全局变量可以是no-final
- Java接口中的成员变量为什么必须声明为public static final?
- Java 中,为什么在静态方法中可以调用的方法、可以使用的成员变量必须是静态的?
- java中内部类访问局部变量的时候,为什么变量必须加上final修饰
- Java接口中的成员变量为什么必须声明为public static final?
- Java接口中的成员变量为什么必须是public static final?
- Java接口中的成员变量为什么必须是public static final?
- Java接口中的成员变量为什么必须声明为public static final?