静态方法和构造方法的执行顺序以及代码块的区分

静态方法构造方法执行顺序以及代码块区分

public class Method{
	
	//构造方法
	public Method(){
		System.out.println("我是构造方法");
	}
	
	//静态方法
	public static void staticMethod(){
		System.out.println("我是静态方法");
	}
	
	public static void main(String[] args){
		Method.staticMethod();//创建对象前调用静态方法
		Method m = new Method();//创建对象的同时调用构造方法
	}
}

通过观察上面的代码可以得出以下结论:
1.静态方法不需要创建(实例化)对象,就可以调用
2.静态方法在内存中开辟空间时,就已经存在
3.静态方法的优先级高于构造方法

//构造代码块
{
	System.out.println("--我是构造代码块--");
}

//静态代码块
static{
	System.out.println("--我是静态代码块--");
}

通过上下对比可以观察出:(区分方式)
构造代码块可以看作是省略了修饰符命名(类名)的构造方法
静态代码块可以看作是省略了修饰符返回值类型命名(方法名)的静态方法

public class Block(){
	//构造方法
	public Block(){
		System.out.println("--我是(无参)构造方法--");
	}
	
	//静态方法
	public static void method(){
		System.out.println("--我是静态方法--");
	}
}

通过观察,产生设想:
静态代码块会不会和静态方法优先级高于构造方法一样,优先级要高于构造代码块
进行验证:

public class Test{
	//构造代码块
	{
		System.out.println("我是构造代码块");
	}

	//静态代码块
	static{
		System.out.println("我是静态代码块");
	}

	public static void main(String[] args){
		//测试1:什么都不写的情况下执行
		//测试2:创建(实例化)Test对象后执行
		Test t = new Test();
	}
}

测试1的结果:在这里插入图片描述
测试2的结果:
在这里插入图片描述

所以通过上面的测试,证实猜想正确
说明静态代码块优先级高于构造代码块

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值