Java学习笔记之初始化块(代码块)
来源:互联网 发布:概预算软件下载 编辑:程序博客网 时间:2024/05/16 06:58
类的第四个成员:初始化块(代码块)【属性、方法、构造器】
1.代码块如果有修饰的话,那么只能使用static
2.使用static修饰的叫静态代码块,没有使用static的叫非静态代码块。
一个复杂的实例:非静态代码块:
1、可以对类的属性(静态的 & 非静态的)进行初始化操作,同时可以调用本类中声明的方法(静态的 & 非静态的)。
如:
class Order { private String orderName; private int orderId; { orderName = "desc"; orderId = 1001; }2、里面可以有输出语句。如:
{ orderName = "desc"; orderId = 1001; System.out.println("我是非静态代码块1.");}3、一个类中可以有多个非静态代码块,多个代码块之间按照顺序执行。
如:
class Order { private String orderName; private int orderId; { orderName = "desc"; orderId = 1001; System.out.println("我是非静态代码块1."); } { System.out.println("我是非静态代码块2."); }4、每创建一个对象,非静态代码块就加载一次。
5、非静态代码块的执行要早于构造器!
如:
{ orderName = "desc"; orderId = 1001; System.out.println("我是非静态代码块1.");}{ System.out.println("我是非静态代码块2.");}public Order() { System.out.println("我是Order类的空参构造器!");}或者:
public Order() { System.out.println("我是Order类的空参构造器!");}{ orderName = "desc"; orderId = 1001; System.out.println("我是非静态代码块1.");}{ System.out.println("我是非静态代码块2.");}
★★★★★★★★★★★★★注:属性复制操作的顺序:①默认初始化。②显示的初始化或代码块初始化(此处两个结构按照先后顺序执行)。③构造器中初始化。④通过方法对对象的属性初始化。
静态代码块:
1、可以有输出语句。
2、随着类的加载而加载,而且仅加载一次。
3、多个静态代码块按照出现顺序执行。
4、静态代码块的执行要早于非静态代码块的执行,与出现顺序无关。
5、静态代码块中只能调用静态属性或者静态方法。
class Root { static { System.out.println("Root的静态初始化块"); } { System.out.println("Root的普通初始化块"); } public Root() { System.out.println("Root的无参构造器"); }}class Mid extends Root { static { System.out.println("Mid的静态初始化块"); } { System.out.println("Mid的普通初始化块"); } public Mid() { System.out.println("Mid的无参构造器"); } public Mid(String msg) { this(); System.out.println("Mid的带参数构造器,其参数值:" + msg); }}class Leaf extends Mid { static { System.out.println("Leaf的静态初始化块"); } { System.out.println("Leaf的普通初始化块"); } public Leaf() { super("我爱你!"); System.out.println("执行Leaf的构造器"); }}public class Test { public static void main(String[] args) { new Leaf(); }}/* *输出结果: * Root的静态初始化块 * Mid的静态初始化块 * Leaf的静态初始化块 * Root的普通初始化块 * Root的无参构造器 * Mid的普通初始化块 * Mid的无参构造器 * Mid的带参数构造器,其参数值:我爱你! * 执行Leaf的构造器 */
0 0
- Java学习笔记之初始化块(代码块)
- JAVA学习笔记(九)- 初始化块与静态代码块
- java代码块(初始化块)
- java学习笔记之代码块
- java学习笔记(十八)代码块
- Java学习笔记四(代码块 )
- Java学习笔记----代码块
- java学习笔记-代码块
- JAVA学习笔记之构造函数和初始化块
- java 初始化块笔记
- Java学习之初始化块加载顺序
- java代码块{}笔记
- 学习笔记之 Block代码块
- Java学习笔记(21)-- Java 代码块详解
- java学习笔记代码块和继承
- Java静态代码块学习笔记
- Java笔记之代码块、继承、final
- java静态初始化块学习
- 设置UIButton的文字显示位置、字体的大小、字体的颜色
- 立体匹配十大概念综述
- 空指针和野指针的区别
- 毕晓英4-01第二章,10题和13题
- SQLite数据库的基本使用
- Java学习笔记之初始化块(代码块)
- 迷宫问题算法设计与实现
- .net 中的orcale EF连接方法
- Beyond Compare小技巧(一) 部分视图操作
- 【leetcode】Climbing Stairs
- OpenCV三种立体匹配求视差图算法总结
- VS2010(AE10.0)打包:未能找到文件, 存储空间不足,无法完成此操作——WIN7系统如何修改虚拟内
- iOS开发之自定义对象归档
- 浅谈javascript六种数据类型以及特殊注意点