`

final非静态变量初始化

 
阅读更多
final变量可以在任何可以被始化的地方被始化,具体应该是构造函数之前或构造函数中,但只能被初始化一次.一旦被初始化后就不能再次赋
值(重新指向其它对象),作为成员变量一定要显式初始化,而作为临时变量则可以只定义不初始化(当然也不能引用)
即使是作为一个类中的成员变量,也还可以在初始化块中初始化,所以"其初始化可以在两个地方,一是其定义处,
二是在构造函数中,两者只能选其一"是错误的.


例如
final String s;

{
s = "sss";
}

初始化数据域的方法:
(1)构造器。
(2)声明时赋值。
(3)初始化块。(用{}括起来的区域)  初始化时首先运行初始化块然后运行构造器主体。
初始化静态数据域的方法:
(1)构造器。
(2)盛明诗赋值。
**(3)静态初始化块。

分享到:
评论

相关推荐

    Java并发--final关键字.docx

    而实例变量可以在声明变量的时候给实例变量赋初始值,在非静态初始化块中以及构造器中赋初始值。 类变量有两个时机赋初始值,而实例变量可以有三个时机赋初始值。当final变量未初始化时系统不会进行隐式初始化,会...

    JAVA基础知识精华总结 收藏

    (1) 非静态对象的初始化 在创建对象时,对象所在类的所有数据成员会首先进行初始化。 基本类型:int型,初始化为0。 如果为对象:这些对象会按顺序初始化。 ※在所有类成员初始化完成之后,才调用本类的构造方法...

    【04-面向对象(上)】

     –非静态导入,导入的是包下所有的类。如:import package.subpackage.*;  –静态导入,导入的是类的静态属性。如:import static package.className.*; Java 的常用包 •java.lang.*, •java.util.*...

    java模拟题库面试题目64道经典答题及答案

    1. 我们能不能声明 main()方法为非静态? 不能, main()方法必须声明为静态的,这样 JVM 才可以调用 main()方法而无需实例 化它的类。 如果从 main()方法去掉“static”这个声明, 虽然编译依然可以成功, 但在...

    Java经典面试题.pdf

    静态关键字用于修饰类的成员(方法、变量、代码块),使其在类加载时被初始化,并且可以通过类名直接访问。静态成员属于类本身,而不是类的实例。静态方法无法访问非静态成员。 4.什么是Java的final关键字? final...

    JavaLearnSummary:java学习总结

    JavaLearnSummary java学习总结 ...Ø final修饰局部变量:系统不会为局部变量进行初始化,局部变量必须有程序员显示初始化。因此使用final修饰局部变量时,既可以在定义时指定默认值(后面的代码不能再对变

    突破程序员基本功的16课.part2

    4.4.4 尽量少用静态变量 4.4.5 避免在经常调用的方法、循环中创建Java对象 4.4.6 缓存经常使用的对象 4.4.7 尽量不要使用finalize方法 4.4.8 考虑使用SoftReference 4.5 小结 第5课 表达式中的陷阱 5.1 关于...

    【05-面向对象(下)】

    •成员变量是随类的初始化或对象初始化而初始化的。final修饰的成员变量必须由程序员指定初始值。 •对于类属性而言,要么在静态初始化中初始化,要么在声明该属性时初始化。 •对于实例属性,要么在普通初始化块...

    Java 语言基础 —— 非常符合中国人习惯的Java基础教程手册

    创建对象包括声明、实例化和初始化三方面的内容。通常的格式为 : 1. 声明对象 对象声明实际上是给对象命名,也称定义一个实例变量。对象声明的一般格式为: type name 其中,type 是一个类的类名,用它声明的对象将...

    21天学通Java-由浅入深

    134 7.5.1 什么是静态变量 134 7.5.2 静态变量的访问 135 7.5.3 什么是静态常量 137 7.6 综合练习 139 7.7 小结 140 7.8 习题 140 第8章 继承(精彩视频:72分钟) 141 8.1 什么是继承 141 8.1.1 类的继承 142 8.1.2...

    疯狂JAVA讲义

    5.3.2 成员变量的初始化和内存中的运行机制 128 5.3.3 局部变量的初始化和内存中的运行机制 130 5.3.4 变量的使用规则 130 5.4 隐藏和封装 132 5.4.1 理解封装 132 5.4.2 使用访问控制符 132 5.4.3 package和...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

     3.2.1 定义和初始化string对象 76  3.2.2 string对象上的操作 77  3.2.3 处理string对象中的字符 81  3.3 标准库类型vector 86  3.3.1 定义和初始化vector对象 87  3.3.2 向vector对象中添加元素 90  3.3.3 ...

    C++Primer(第5版 )中文版(美)李普曼等著.part2.rar

     3.2.1 定义和初始化string对象 76  3.2.2 string对象上的操作 77  3.2.3 处理string对象中的字符 81  3.3 标准库类型vector 86  3.3.1 定义和初始化vector对象 87  3.3.2 向vector对象中添加元素 90  3.3.3 ...

    javaSE代码实例

    6.7.2 局部变量的初始化 90 6.8 this预定义对象引用 92 6.9 擅用系统已有的类 94 6.9.1 Java中的Date类 94 6.9.2 Java中的GregorianCalendar类 96 6.9.3 擅用系统已有类的思想 98 6.10 小结 99 第7章...

    Java并发编程实战

    2.2.2 示例:延迟初始化中的竞态条件16 2.2.3 复合操作17 2.3 加锁机制18 2.3.1 内置锁20 2.3.2 重入21 2.4 用锁来保护状态22 2.5 活跃性与性能23 第3章 对象的共享27 3.1 可见性27 3.1.1 失效数据28 ...

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的引用 147 6.2.3 使用点操作符的技巧 148 6.2.4 类的数组 149 6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车...

    Java入门1·2·3:一个老鸟的Java学习心得.PART3(共3个)

    6.2.1 在类中给每个变量一个初始值 147 6.2.2 定义自己的引用 147 6.2.3 使用点操作符的技巧 148 6.2.4 类的数组 149 6.3 小结:Java其实是个类和对象的世界 152 6.4 习题 153 第7章 Java中的方法——给汽车...

    Java面向对象程序设计笔记

    2.4.子类对象的构造和初始化: 11 2.5.方法的覆盖: 11 2.6.各种数据类型之间的相互转换: 12 3.静态成员 13 4. Final关键字: 13 5. 抽象类: 13 6. 接口 14 7. 接口与抽象类的区别: 15 8. 设计...

Global site tag (gtag.js) - Google Analytics