package day07;
/*构造代码块
*
* 作用:给对象进行统一的初始化。
*
* 格式:
*
* {
* 构造代码块
* }
*
* 构造代码块的位置必须位于成员位置之上。
*
* 代码块的类别:
* 1.构造代码块
* 2.局部代码块,大括号位于方法之内。 作用:缩短局部变量的声明周期。节省一点点内存
* 3.静态代码块
*
*/
class Baby{
int id;
String name;
//构造
{
System.out.println("构造代码块的代码执行了...");
cry();
}
public void cry(){
System.out.println("55555~");
}
public Baby(int i, String n){
id = i;
name = n;
// System.out.println("带参数构造函数被调用了。");
}
public Baby(){
// System.out.println("无参数构造函数被调用了。");
}
}
public class Demo4 {
public static void main(String[] args) {
//局部代码块(在开发中应用的不多)
{
Baby b = new Baby(1,"zhans");
}//执行到此,b的生命周期结束,b成为垃圾对象。
Baby b4 = new Baby();
}
}
package day07;
/* 构造代码块注意事项:
* 1.JAVA 编译器编译一个JAVA源文件的时候,会把成员变量的声明语句提前至一个类的最前端
* 2.成员变量的初始化工作其实都在构造函数中执行。
* 3.一旦经过java编译器编译后,那么构造代码块的代码就会被移动到构造函数中执行,构造函数中的代码是最后执行的。
* 4.成员变量的显示初始化与构造代码块的代码是按照先后顺序执行的。
*/
public class Demo5 {
public Demo5(){
i =33333333;
}
int i = 1111111;
{
i = 2222222;
}
public static void main(String[] args) {
Demo5 d = new Demo5();
System.out.println(d.i);
}
}
结果: