final与static final变量(原生类型)的初始化方式
来源:互联网 发布:js让按钮失效 编辑:程序博客网 时间:2024/06/05 01:55
public class FinalOriginalTest { private final int a; private String name; public FinalOriginalTest(){ a = 3; } public FinalOriginalTest(String name){ this.name = name; } public static void main(String[] args){ FinalOriginalTest ft = new FinalOriginalTest(); FinalOriginalTest ft1 = new FinalOriginalTest("hello"); } } public class FinalOriginalTest { private final int a; private String name; public FinalOriginalTest(){ a = 3; } public FinalOriginalTest(String name){ this.name = name; } public static void main(String[] args){ FinalOriginalTest ft = new FinalOriginalTest(); FinalOriginalTest ft1 = new FinalOriginalTest("hello"); }}
问题1:上面的程序能否编译通过?如果不能,请说明理由。
解答:不能编译通过,可能没有初始化变量a。因为对于final类型的成员变量的初始化,在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。所以需要在public FinalOriginalTest(String name)构造方法中给a赋值。
注意:final可以用在类、方法、变量上。
1、final用在类上,表明当前类它不能被继承,没有子类。
2、final用在方法上,表明当前方法不能被override,不能被重写。
3、final用在变量上,表明当前变量是一个终态的变量,是一个常量,这个变量的值一但被赋值后就不能被改变了。
对于final类型的成员变量的初始化方式:
1、声明变量时直接赋值
2、在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。
问题2:上面的程序中,修正问题1之后,将private final int a;改为private static final int a;能否编译通过?如果不能,请说明理由。
解答:不能编译通过,因为a是静态变量,在这个类还没有实例化的时候,它的值就已经有了。所以对于一个int类型的static final类型的变量a来说,我们只能在声明的时候就给它赋值private static final int a = 3;然后把构造方法里面的赋值给注释掉,这样编译就能通过了。
总结:对于final类型的变量,对于不加static我们可以有两种方式给它赋值:声明变量时直接赋值;在构造方法中完成赋值,如果一个类有多个构造方法,就要保证在每个构造方法中都要完成对该final类型变量的初始化工作。对于一个变量既是final又是static的,我们必须在声明变量时直接赋值。
- final与static final变量(原生类型)的初始化方式
- final与static final变量(原生类型)的初始化方式
- Java常见笔试面试题目解析(一):final与static final变量(原生类型)的初始化方式
- final变量的初始化方式
- final变量的初始化方式
- Java中static final变量的初始化
- static final成员变量的初始化时机
- static与final变量
- final与static变量
- Java中final变量的初始化方式
- Static初始化代码快访问static final变量的经验
- java final static 与final 修饰变量的区别
- final变量的初始化
- final 与static final修饰变量区别
- final 与static final修饰变量区别
- final 与static final修饰变量区别
- Java常见笔试面试题目解析(二):final与static final变量(引用类型)的引用不变
- class文件结构[2] static final、static、final、普通类型成员变量的赋初值
- Xml解析dom,sax,pull理解
- 统计文件中每个小写字母的个数
- NYOJ 题目221 Tree
- Exception:SSLHandshakeException
- 数据仓库的构件
- final与static final变量(原生类型)的初始化方式
- 【字符串最小表示法】 POJ 1509 Glass Beads
- opencv程序十五:实时视频轮廓检测
- cocos2d游戏开发第一课 - 创建IOS模板工程
- Android_actionbar使用_141016
- 一个fork的面试题
- 栈
- hibernate 的Session中save和load,close方法的底层实现原理
- Android开发性能优化