java修炼—static修饰的代码段

本文详细解释了Java中static修饰的代码段的执行时机。通过实例演示了static代码段仅在类首次实例化或首次使用类名调用静态方法时执行一次的特点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

找工作进行了一个多月了,还是没拿到一个offer,但是不会放弃,抓紧时间努力学习!总是有我的工作的。

在笔试的时候,曾经遇到过在类中用static修饰的代码段,如下面的类所示:

 

<pre name="code" class="java">public class myclas {
	private int ivar1;
	static {
		System.out.println("staic fregement");
	}
	myclas(){
		ivar1=333;
	}
	public void showsss(){
		System.out.println("ivar1是"+ivar1);
	}
	static void staicExampeFunction(){
		System.out.println("staicExampeFunction");
	}
}

 

 

 

 

 


 

static修饰的代码段,何时执行呢?

 

1)在实例化一个对象的时候会被执行一次,且,仅仅在第一次实例化一个对象的时候执行

 

public static void main(String[] args) {
		// TODO Auto-generated method stub
		

		System.out.println("下面会有输出吗?");
		
		myclas myvar1=new myclas();//这个时候会直接调用static代码块
		System.out.println("下面会有输出吗?");
		myclas myvar2=new myclas();
		
	}


结果:

 

下面会有输出吗?
staic fregement
下面会有输出吗?

2)在没实例化之前,用类名直接调用静态函数,也会被被执行:

 

public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		myclas.staicExampeFunction();//这个之前会调用static代码块
		System.out.println("下面会有输出吗?");
		myclas myvar1=new myclas();
		System.out.println("下面会有输出吗?");
		myclas myvar2=new myclas();
		
	}


结果:

 

staic fregement
staicExampeFunction
下面会有输出吗?
下面会有输出吗?

总结:无论实例化几次或者调用几次方法,static代码段都执行一次...比如,你创建了类的两个实例,但是只有创建第一个实例的时候static代码段才被执行.创建第二个的时候将不执行...使用类名调用静态方法也同理

     static代码段可以有多个.但是,效果和整合在一起没什么区别

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值