java基础---初始化块
来源:互联网 发布:kenrobot 软件下载 编辑:程序博客网 时间:2024/06/06 07:46
一、概念
作用:与构造器作用非常类似的是初始化块,它也可以对Java对象进行初始化操作。
性质:是Java类里可出现的第4种成员(Field、方法和构造器),它没有名字,也没有标识,因此无法通过类、对象类调用初始化块。初始化块只在创建Java对象时隐式执行,而且在执行构造函数之前执行。
二、使用
语法格式:
[修饰符]{
//初始化块的可执行代码
}
修饰符只能是static,使用static修饰的初始化块称为静态初始化块
初始化块里的代码可以包含任何可执行语句,包括定义局部变量、调用其他对象的方法、以及使用分支、循环语句等。
三、初始化块和构造器
从某种程度上来看,初始化块是构造器的补充,初始化块总是在构造器之前执行。
与构造器区别:初始化块是一段固定执行的代码,它不能接受任何参数。因此初始化块对同一个类的所有对象所进行的初始化处理完全相同。
使用场景:如果有一段初始化处理代码对所有的对象完全相同,且无需接受任何参数,就可以把这段初始化处理代码提取到初始化块中。
使用好处:通过把多个构造器中的相同代码提取到初始化块中定义,能更好地提高初始化代码的复用。
四、静态初始化块
静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行,因此静态初始化块总是比普通初始化块先执行;
它通常对类Field执行初始化处理,不能对实例Field进行初始化处理;
属于类的静态成员,不能访问非静态成员;
五、执行顺序
一个类中可以有多个构造器,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行;
普通初始化块、声明实例Field指定的默认值都可以认为是对象的初始化代码,它们的执行顺序与源程序中的排列顺序相同;
创建一个Java对象时,不仅会执行该类的普通初始化块和构造器,而且系统会一直上溯到Java.lang.Object类,先执行Java.lang.Object类的初始化块,开始执行Java.lang.Object的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器... …最后才执行该类的初始化块和构造器,返回该来的对象。
系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且会一直上溯上Java.lang.Object类(如果它也包含静态初始化块),先执行Java.lang.Object类的静态初始化块(如果有),然后执行父类的静态初始化快... …最后才执行该类的静态初始化块。
作用:与构造器作用非常类似的是初始化块,它也可以对Java对象进行初始化操作。
性质:是Java类里可出现的第4种成员(Field、方法和构造器),它没有名字,也没有标识,因此无法通过类、对象类调用初始化块。初始化块只在创建Java对象时隐式执行,而且在执行构造函数之前执行。
二、使用
语法格式:
[修饰符]{
//初始化块的可执行代码
}
修饰符只能是static,使用static修饰的初始化块称为静态初始化块
初始化块里的代码可以包含任何可执行语句,包括定义局部变量、调用其他对象的方法、以及使用分支、循环语句等。
三、初始化块和构造器
从某种程度上来看,初始化块是构造器的补充,初始化块总是在构造器之前执行。
与构造器区别:初始化块是一段固定执行的代码,它不能接受任何参数。因此初始化块对同一个类的所有对象所进行的初始化处理完全相同。
使用场景:如果有一段初始化处理代码对所有的对象完全相同,且无需接受任何参数,就可以把这段初始化处理代码提取到初始化块中。
使用好处:通过把多个构造器中的相同代码提取到初始化块中定义,能更好地提高初始化代码的复用。
四、静态初始化块
静态初始化块是类相关的,系统将在类初始化阶段执行静态初始化块,而不是在创建对象时才执行,因此静态初始化块总是比普通初始化块先执行;
它通常对类Field执行初始化处理,不能对实例Field进行初始化处理;
属于类的静态成员,不能访问非静态成员;
五、执行顺序
一个类中可以有多个构造器,相同类型的初始化块之间有顺序:前面定义的初始化块先执行,后面定义的初始化块后执行;
普通初始化块、声明实例Field指定的默认值都可以认为是对象的初始化代码,它们的执行顺序与源程序中的排列顺序相同;
创建一个Java对象时,不仅会执行该类的普通初始化块和构造器,而且系统会一直上溯到Java.lang.Object类,先执行Java.lang.Object类的初始化块,开始执行Java.lang.Object的构造器,依次向下执行其父类的初始化块,开始执行其父类的构造器... …最后才执行该类的初始化块和构造器,返回该来的对象。
系统在类初始化阶段执行静态初始化块时,不仅会执行本类的静态初始化块,而且会一直上溯上Java.lang.Object类(如果它也包含静态初始化块),先执行Java.lang.Object类的静态初始化块(如果有),然后执行父类的静态初始化快... …最后才执行该类的静态初始化块。
阅读全文
0 0
- java基础---初始化块
- Java基础——初始化块
- java静态初始化块、实例初始化块
- JAVA中面向对象基础:抽象类、初始化块
- Java基础(四)——初始化块
- java基础,静态变量,静态初始化块,初始化快,成员变量的初始化顺序
- Java中的初始化块
- Java中的初始化块
- Java中的初始化块
- Java:初始化块
- Java中的初始化块
- Java的初始化块
- java中初始化块
- java 初始化块笔记
- Java静态初始化块
- java初始化块
- Java 静态初始化块
- java 初始化块
- grep + kill 杀死指定命令的进程
- 日复一日对着电脑何谈健康?想要改善如何做
- 了解Java线程的start方法如何回调run方法
- 20171114memo
- Android利用ListView实现多种Item的复杂布局
- java基础---初始化块
- Playfair密码
- 使用androidstudio3.0时butterknife报错解决方法
- excel的单元格合并
- BFS\DFS\A*\Dijkstra\Prim算法等的简介
- haproxy+keepalived实现高可用负载均衡
- 图形数据库Neo4J简介
- python串口编程整理
- linux 查找命令find和grep使用