java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

java静态代码块/静态属性、构造块、构造方法执行、main方法、普通代码块的顺序

这也是在笔试中的一个重要的考点,就有一个输出语句让你写出输出的结果。

理论知识:

静态代码块是:属于类的,在类加载时就自动执行。静态代码块定义时不能添加作用域符。

构造块是: 在类中定义的,且定义的位置与该类的其他的属性是相当的,就是不在该类的任何成员方法中,定义时直接用{ }包含即可,不用再添加其他任何的访问作用域符。构造块是每次创建对象都会执行一次构造块。

普通代码块:定义位置实在方法内部,在方法体内用 { } 包含即可。

下面给出测试的代码及测试结果,主要是查看执行的顺序,及多次创建对象时执行的顺序及结果。

public class Test_Static_Class {
    //静态代码块
	static {
	   
	   System.out.println("静态代码块");
   }
   {
	   System.out.println("构造块1");
   }
   //构造方法
   public   Test_Static_Class() {
	   System.out.println("执行了构造方法");
}
   //普通的成员方法
   public void test() {
	   System.out.println("在方法中的普通代码块");
	   //普通的代码块
	   {
		   System.out.println("普通代码块");
	   }
	  
}
   public static void main(String[] args) {
	System.out.println("执行了主方法");
	System.out.println("--------------------");
	new Test_Static_Class();
	System.out.println("------第二次创建对象---------------");
	new Test_Static_Class();
	System.out.println("------第三次创建对象---------------");
	new Test_Static_Class().test();
}
   //构造块
   {
	   System.out.println("构造块2");
   }
}
运行的结果:


多次创建对象,静态代码块只执行一次,且最先执行。

接下来执行的是构造快,构造块会每创建一个对象执行一次,且多个构造块会由上到下的执行。

在接下来执行的是构造方法,构造方法也是每创建一个对象就会执行一次。

在接下来就是调用普通的方法中的代码块,执行的顺序,在方法中没有什么特殊的。

对于静态属性,与静态代码块一样,也是在类加载时就会被自动执行,属于整个类的属性。

静态方法只能访问静态属性,一定不能访问非静态属性,但是注意这种说法的与我们通过对象来访问该静态属性,就是 对象名.非静态属性变量名, 这种方式就是我们通常在main方法中的一种访问方式。 这种访问的方式是可以的,但不能直接 非静态属性变量名 或静态属性方法。

对于静态方法中也不能直接使用this对象。




  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值