Java-静态代码块、非静态代码块、静态方法,非静态方法

执行顺序:静态代码块--非静态代码块--默认构造方法--普通方法

使用地方:非静态代码块可在普通方法中定义(不过作用不大)。静态代码块必须在类中进行

使用场景:静态代码块可用来初始化一些项目最常用的变量或对象

                  静态方法可用作不创建对象也可能需要执行的代码

执行情况:静态代码块在类被加载的时候自动运行(通俗点讲就是new后自动执行了静态代码块)

                  静态方法只有在被调用的时候才执行

访问权限:非静态方法既可以访问静态数据成员 又可以访问非静态数据成员,而静态方法只能访问静态数据成员
                  非静态方法既可以访问静态方法又可以访问非静态方法,而静态方法只能访问静态数据方法

实例:

/*
 * 静态代码块、静态方法、普通代码块、实例方法
 */
public class Static{
	//默认构造方法
	public Static() {
		System.out.println("<<<<<<<<<<默认构造方法<<<<<<<<<");
	}
	
	//非静态代码块
	{
		System.out.println("<<<<<<<<<<非静态代码块<<<<<<<<<");
	}

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

	//静态方法中的非静态代码块
	public static void test() {
		{
			System.out.println("<<<<<<<<<<普通方法中的非静态代码块<<<<<<<<<");
		}		
	}
	
	//实例方法中普通代码
	public void test2() {
		System.out.println("<<<<<<<<<<普通方法中普通代码块<<<<<<<<<");	
	}

}
public class DoStatic{
	public static void main(String[] args) {
		System.out.println("一、new出对象后,执行静态方法test()。new后,静态代码块和构造方法都被执行");
		Static s = new Static();
		s.test();
		
		System.out.println("二、不new出对象后,执行静态方法test()。没有new的动作,静态代码块和构造方法都不被执行,只执行test()方法");
		Static.test();
		
		System.out.println("三、静态方法main中调用实例方法test2()");
		Static ss = new Static();
		ss.test2();
	}
}

结果:

一、new出对象后,执行静态方法test()。new后,静态代码块和构造方法都被执行
<<<<<<<<<<静态代码块<<<<<<<<<
<<<<<<<<<<非静态代码块<<<<<<<<<
<<<<<<<<<<默认构造方法<<<<<<<<<
<<<<<<<<<<普通方法中的非静态代码块<<<<<<<<<
二、不new出对象后,执行静态方法test()。没有new的动作,静态代码块和构造方法都不被执行,只执行test()方法
<<<<<<<<<<普通方法中的非静态代码块<<<<<<<<<
三、静态方法main中调用实例方法test2()
<<<<<<<<<<非静态代码块<<<<<<<<<
<<<<<<<<<<默认构造方法<<<<<<<<<
<<<<<<<<<<普通方法中普通代码块<<<<<<<<<

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值