文章目录
- 问题1:final修饰基本数据类型(final修饰成员变量的初始化方法)
-
- 问题2:final修饰静态成员变量的初始化方法
-
- 问题3:final修饰引用类型的初始化以及注意点
-
- 问题4:为什么对于一个public类型的final的成员变量,一般都要声明为static的?
问题1:final修饰基本数据类型(final修饰成员变量的初始化方法)
1.代码
public class Demo01 {
private final int a;
private String name;
public Demo01(){
a = 3;
}
public Demo01(String name){
this.name = name;
}
}
2.分析
问题2:final修饰静态成员变量的初始化方法
1.代码
- 问下述代码能否编译通过,一个静态的final变量的初始化问题
public class Demo01 {
private static final int a;
private String name;
public Demo01(){
a = 3;
}
public Demo01(String name){
a = 3;
this.name = name;
}
}
2分析
- 一个静态变量在类加载完之后,实例化为对象之前就被加载了,而此时又被
final
修饰,所以必须要求有值!,所以这种情况下只能显式的进行初始化 - 如果把代码改成下述看能否编译通过呢?
3.问题2.1
public class Demo01 {
private static final int a = 3;
private String name;
public Demo01(){
a = 3;
}
public Demo01(String name){
a = 3;
this.name = name;
}
}
问题3:final修饰引用类型的初始化以及注意点
1.代码
public class Demo02 {
public static final StringBuffer s = new StringBuffer();
public static void main(String[] args){
s.append("hello");
}
}
2分析
public class Demo02 {
public static final StringBuffer s = new StringBuffer();
public static void main(String[] args){
s = new StringBuffer();
}
}
- 显然是不能的,
s
的地址变了
问题4:为什么对于一个public类型的final的成员变量,一般都要声明为static的?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)