黑马程序员-Java之构造代码块、构造函数、静态代码块

时间:2023-02-11 17:09:29

------android培训java培训、期待与您交流!-------


执行顺序:静态代码块>main()>构造代码块>构造函数


普通代码块:main()函数里用{}包起来的代码块,它和一般的语句执行顺序无先后,即谁在前谁先执行
代码:
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("这里是普通代码块之前");
{
System.out.println("这里是普通代码块");
}
System.out.println("这里是普通代码块之后");


}
运行结果:
这里是普通代码块之前
这里是普通代码块
这里是普通代码块之后


构造代码块:在类中定义且没有加static关键字的代码块,在每次创建对象时被调用,优先于构造函数调用。
代码:
public class Test {
{
System.out.println("这里是构造代码块1");
}
Test(){
System.out.println("这里是构造函数");
}
{
System.out.println("这里是构造代码块2");
}


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("test1对象:");
Test test1 = new Test();
System.out.println("test2对象");
Test test2 = new Test();

}


}
运行结果:
test1对象:
这里是构造代码块1
这里是构造代码块2
这里是构造函数
test2对象
这里是构造代码块1
这里是构造代码块2
这里是构造函数


静态代码块:定义在类中用static修饰的代码块。每个静态代码块只会执行一次。由于JVM在加载类时会执行静态代码块,所以静态代码块先于主方法执行。
代码:
class Demo{
{
System.out.println("这里是Demo的构造代码块");
}
Demo(){
System.out.println("这里是Demo的构造函数");
}
static{
System.out.println("这里是Demo的静态代码块");
}
}


public class Test {
{
System.out.println("这里是Test的构造代码块");
}
Test(){
System.out.println("这里是Test的构造函数");
}
static{
System.out.println("这里是Test的静态代码块");
}


public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("这里是main()");
new Demo();
new Demo();
new Test();
new Test();


}


}
运行结果:
这里是Test的静态代码块
这里是main()
这里是Demo的静态代码块
这里是Demo的构造代码块
这里是Demo的构造函数
这里是Demo的构造代码块
这里是Demo的构造函数
这里是Test的构造代码块
这里是Test的构造函数
这里是Test的构造代码块
这里是Test的构造函数