构造代码块、局部代码块
来源:互联网 发布:怎么修改数据库时间 编辑:程序博客网 时间:2024/04/29 02:04
代码块的类别:
1.构造代码块 。 构造代码块的大括号必须位于成员位置上(类之内,方法之外)
2.局部代码块。 局部代码块的大括号位于方法之内。作用:缩短局部 变量 的生命周期,节省一点点内存。很少用
3.静态代码块。 静态代码块是静态代码块所属的类被加载到内存的时候执行的。
静态代码块的应用场景:以后主要用于准备一个项目的初始化工作。
比如:从配置文件中读取数据库用户名与密码。
构造代码块作用:给所有对象进行统一的初始化。构造函数的作用:给对应的对象进行初始化。
构造代码块是在创建了代码块所属类的对象的时候调用一次。
构造代码块格式:
{
构造代码块;
}
注意:构造代码块的大括号必须位于成员位置上(类之内,方法之外)
*** Author:Liu Zhiyong* Version:Version_1* Date:2016年4月14日10:28:49* Desc:构造代码块、局部代码块*/class Boby{int id;String name;//构造代码块{System.out.println("构造代码块被执行了。。。。");cry();}public Boby(){System.out.println("无参构造方法被执行了。。。。");//cry();}public Boby(int id, String name){System.out.println("带参构造方法被执行了。。。。");//cry();}public void cry(){System.out.println("哇哇哇哇哇的哭。。。。");}}class Demo38 {public static void main(String[] args) {//局部代码块 作用:缩短局部 变量 的生命周期,节省一点点内存。很少用{new Boby();Boby b1 = new Boby(22, "狗娃");System.out.println(b1.id+"#"+b1.name+".....................");new Boby(33, "鸭蛋");}System.out.println(b1.id+"#"+b1.name+".....................");//这里会报错,局部变量生命周期已经结束}}
局部代码块的大括号位于方法之内。 作用:缩短局部 变量 的生命周期,节省一点点内存。很少用
构造代码块要注意的事项:
1.java编译器编译一个java源文件的时候,会把成员变量的声明语句提至一个类的最前端。
2.成员变量的初始化工作其实都在构造函数中执行的。
3.一旦经过java编译器编译后,那么构造代码块的代码块就会被移动到构造函数中执行的(使用javap反编译来观察编译后的结果), 是在构造方法之前执行的,构造函数中的代码是最后执行的。
4.成员变量的显式初始化与构造代码块的代码块的代码是按当前代码的顺序执行的。
理解代码1:
/*** Author:Liu Zhiyong* Version:Version_1* Date:2016-4-14 10:55:59* Desc:构造代码块要注意的事项:1.java编译器编译一个java源文件的时候,会把成员变量的声明语句提至一个类的最前端。2.成员变量的初始化工作其实都在构造函数中执行的。3.一旦经过java编译器编译后,那么构造代码块的代码块就会被移动到构造函数中执行的, 构造函数中的代码是最后执行的。 4.成员变量的显式初始化与构造代码块的代码块的代码是按当前代码的顺序执行的。*/class Demo39{public Demo39(){//构造函数初始化i = 400;}//调试方法:调换成员变量 和 构造代码块的顺序,看看i的值int i = 22;//成员变量显示初始化 .....注意定义成员变量的位置在这里,为什么没有报错????//调试方法:调换成员变量 和 构造代码块的顺序,看看i的值//构造代码块初始化{i = 100;}public static void main(String[] args) {Demo39 d = new Demo39();System.out.println(d.i);}}
理解代码2:
/*** Author:Liu Zhiyong* Version:Version_1* Date:2016年4月14日10:28:49* Desc:构造代码块、局部代码块*/class Boby{int id;String name;//构造代码块{cry();}public Boby(){}public Boby(int i, String n){id = i;name = n;}public void cry(){System.out.println(name + "哇哇哇哇哇的哭。。。。");}}class Demo38 {public static void main(String[] args) {Boby b1 = new Boby(22, "狗娃");System.out.println(b1.id+"#"+b1.name+".....................");}}
代码2结果:
0 0
- 构造代码块、局部代码块
- 静态代码块、构造代码块、局部代码块
- static代码块 构造块 局部代码块
- Java中的代码块(静态代码块、构造代码块、局部代码块)
- 0808:局部代码块、构造代码块、静态代码块、多线程代码块
- 静态代码块、构造代码块、局部代码块、构造方法的执行顺序
- 局部代码块——构造代码块——静态代码块 (In Java)
- 黑马程序员——局部代码块、构造代码块和静态代码块
- 局部代码块——构造代码块——静态代码块
- Java的静态代码块、构造代码块、局部代码块
- 局部代码块——构造代码块——静态代码块 (In Java)
- java--局部代码块——构造代码块——静态代码块
- JAVA自学日记1-构造代码块,静态代码块,局部代码块总结
- 面向对象—静态代码块+构造代码块+局部代码块
- Java中局部代码块、构造代码块、静态代码块的区别?
- java基础之静态代码块,局部代码块,构造代码块区别。
- 构造代码块,静态代码块,局部代码块与new对象时,执行的次序
- 局部代码块
- POJ 2240 Arbitrage (Floyd最短路变形)
- Python之文件
- 很特别的一个动态规划入门教程
- qt的QTabelWidget控件单元格读取错误的解决方法
- 百度面经+笔经(转自fengsanshao)
- 构造代码块、局部代码块
- 傅里叶变换的由来及复数下的傅里叶变换公式证明
- L2-012. 关于堆的判断 (堆操作)
- Archlinux+VMWare
- 1_数据结构简介
- 优化篇-“移动端”图片上传架构的变迁
- windows下将mysql加入环境变量
- 【SysML】模块定义图(BDD, Block Definition Diagram)
- 内网穿透端口映射工具