Java中静态代码块,普通代码块,构造函数详解

//执行的优先顺序:静态代码块>mian方法>构造代码块>构造方法。

其中静态代码块只执行一次。构造代码块在每次创建对象是都会执行。

牛客网的一道经典题目:

package go.jacob.day612;

public class Demo3 {
	public static Demo3 d1=new Demo3();
	{
		System.out.println("A");
	}
	static{
		System.out.println("B");
	}
	
	public static void main(String[] args) {
		Demo3 d2=new Demo3();
	}
	/*
	 * 运行结果:
	 * A
	 * B
	 * A
	 */
}

package go.jacob.day612;

public class Demo3 {
	static{
		System.out.println("B");
	}
	public static Demo3 d1=new Demo3();
	{
		System.out.println("A");
	}
	
	public static void main(String[] args) {
		Demo3 d2=new Demo3();
	}
	/*
	 * 运行结果:
	 * B
	 * A
	 * A
	 */
}

1 普通代码块

package go.jacob.day612;

public class Demo3 {
	/*
	 * 普通代码块:在方法或语句中出现的{}就称为普通代码块。
	 * 普通代码块和一般的语句执行顺序由他们在代码中出现的次序决定--“先出现先执行”
	 */
	public static void main(String[] args) {
		{
			int x = 3;
			System.out.println("1,普通代码块内的变量x=" + x);
		}
		int x = 1;
		System.out.println("主方法内的变量x=" + x);
		{
			int y = 7;
			System.out.println("2,普通代码块内的变量y=" + y);
		}
	}
	/*
	 * 运行结果
	 * 1,普通代码块内的变量x=3
	 * 主方法内的变量x=1
	 * 2,普通代码块内的变量y=7
	 */
	
}

2.普通构造代码块

package go.jacob.day612;

public class Demo3 {
	/*
	 * 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
	 * 构造代码块在创建对象时被调用,每次创建对象都会被调用,
	 * 并且构造代码块的执行次序优先于类构造函数。
	 */
	{
		System.out.println("第一代码块");
	}
	
	public Demo3(){
		System.out.println("构造方法");
	}
	
	{
		System.out.println("第二代码块");
	}
	
	public static void main(String[] args) {
		new Demo3();
		new Demo3();
		new Demo3();
	}
	/*
	 * 运行结果:
	 * 第一代码块
	 * 第二代码块
	 * 构造方法	 
	 * 第一代码块
	 * 第二代码块
	 * 构造方法	 
	 * 第一代码块
	 * 第二代码块
	 * 构造方法
	 */
}

3.静态代码块

package go.jacob.day612;

public class Demo3 {
	/*
	 * 构造代码块:直接在类中定义且没有加static关键字的代码块称为{}构造代码块。
	 * 构造代码块在创建对象时被调用,每次创建对象都会被调用,
	 * 并且构造代码块的执行次序优先于类构造函数。
	 */
	{
		System.out.println("普通构造代码块");
	}
	static{
		System.out.println("静态代码块");
	}
	public Demo3(){
		System.out.println("构造方法");
	}
	
	public static void main(String[] args) {
		System.out.println("Demo3主方法");
		new Demo3();
		new Demo3();
		
	}
	/*
	 * 运行结果:
	 * 静态代码块
	 * Demo3主方法
	 * 普通构造代码块
	 * 构造方法
	 * 普通构造代码块
	 * 构造方法
	 */
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值