final变量的初始化方式
来源:互联网 发布:为什么选择软件测试 编辑:程序博客网 时间:2024/06/05 19:07
在研究String源码的时候,发现String类的值是保存在private final char value[]中的,但其却在构造器中被再次赋值。于是产生疑惑,为什么被final修饰的变量还可以被再次赋值?查阅后发现,final赋值可以有好几种方式,特此记录下来。
博文转载自:final变量的初始化方式
public class FinalTest1 { //-----------------成员变量------------------// //初始化方式一,在定义变量时直接赋值 private final int i = 3; //初始化方式二,声明完变量后在构造方法中为其赋值 //如果采用用这种方式,那么每个构造方法中都要有j赋值的语句 private final int j; public FinalTest1() { j = 3; } //如果取消该构造方法的注释,程序就会报错,因此它没有为j赋值 /*public FinalTest1(String str) { }*/ //为了方便我们可以这样写 public FinalTest1(String str) { this(); } //下面的代码同样会报错,因为对j重复赋值 /*public FinalTest1(String str1, String str2) { this(); j = 3; }*/ //初始化方式三,声明完变量后在构造代码块中为其赋值 //如果采用此方式,就不能在构造方法中再次为其赋值 //构造代码块中的代码会在构造函数之前执行,如果在构造函数中再次赋值, //就会造成final变量的重复赋值 private final int k; { k = 4; } //-----------------类变量(静态变量)------------------// //初始化方式一,在定义类变量时直接赋值 public final static int p = 3; //初始化方式二,在静态代码块中赋值 //成员变量可以在构造函数中赋值,但是类变量却不可以。 //因此成员变量属于对象独有,每个对象创建时只会调用一次构造函数, //因此可以保证该成员变量只被初始化一次; //而类变量是该类的所有对象共有,每个对象创建时都会对该变量赋值 //这样就会造成变量的重复赋值。 public final static int q; static { q = 3; } }
0 0
- final变量的初始化方式
- final变量的初始化方式
- Java中final变量的初始化方式
- final与static final变量(原生类型)的初始化方式
- final与static final变量(原生类型)的初始化方式
- final变量的初始化
- final变量的初始化位置
- 静态final变量的初始化
- Java常见笔试面试题目解析(一):final与static final变量(原生类型)的初始化方式
- Java中static final变量的初始化
- static final成员变量的初始化时机
- final修饰的成员变量初始化时机
- final 成员变量初始化
- C++变量的初始化方式
- C++变量的初始化方式
- Static初始化代码快访问static final变量的经验
- final 类变量 局部变量 初始化
- C++成员变量的初始化方式
- Java中Synchronized的用法
- Oracle执行计划分析
- UISlider小范围滑动不能触发抬起事件的BUG
- 聊天室控制,私聊选定一个线程
- 通过Jedis客户端连接不到redis(二)
- final变量的初始化方式
- git基础原理
- CSS 基础(011_Overflow)
- oj第七周训练D
- 秒杀系统优化思路
- 图像检索 原理
- Android测试之:MonkeyScript与MonkeyRunner常用API
- 基于JDBC 的数据库返回数据Resultset 数据绑定到Javabean
- 第八周 输出星号 1