这三个我们也常称作:构造函数,构造代码块,静态代码块
实践即所得:
1.在本类的main函数中实例化本类对象时:
/**
* @Author: QianQian
* @CreateDate: 2019/12/4 11:04
* 构造函数,构造代码块,静态代码块
*/
public class Test {
static {
System.out.println("我是静态代码块");
}
{
System.out.println("我是构造代码块");
}
public Test(){
System.out.println("我是无参构造函数");
}
public static void main(String[] args) {
System.out.println("......................\n第一次示例类的对象:");
Test test1=new Test();
System.out.println("......................\n第二次示例类的对象:");
Test test2=new Test();
}
}
结果:
2.在其他类中实例化此类
代码:
**
* @Author: QianQian
* @CreateDate: 2019/12/4 11:04
*/
public class Main{
public static void main(String[] args) {
System.out.println("......................\n第一次示例类的对象:");
Test test1=new Test();
System.out.println("......................\n第二次示例类的对象:");
Test test2=new Test();
}
}
结果:
3.调用类的静态方法时
/**
* @Author: QianQian
* @CreateDate: 2019/12/4 11:04
*/
public class Main{
public static void main(String[] args) {
TestOne.print();
TestOne testOne=new TestOne();
}
}
class TestOne {
static {
System.out.println("我是静态代码块");
}
{
System.out.println("我是构造代码块");
}
public TestOne(){
System.out.println("我是无参构造函数");
}
public TestOne(String s){
System.out.println("我是有参构造函数");
}
public static void print(){
System.out.println("hello world");
}
}
🛠总结:
- 静态初始化器永远只会执行一次
- 当把本类作为程序的运行入口,那么即使main函数里面为空,静态初始化器也会执行
- 当在其他类中第一次实例化本类时,会一次执行 静态代码块---构造代码块---构造函数
- 当调用一个类的静态方法时,会先执行静态初始化构造器
- 在每次调用构造器时,会先调用实例化器,然后再执行构造器
谢谢观看!觉得🆗点个赞呗!😀