不适合当程序员

导航

static{} java中的静态代码块

2021年3月3日笔试面试题:请问输出的是什么?请说出原理?

public class static_01 {
	private static String username = "小王";

	static {
		username = "小张";
	}

	public static void main(String[] args) {
		System.out.println(username);
	}

}

 (这个图片是错误的感谢:kali98k用户的修正和指点)

正确截图如下:

 

 

 

 

 

static 代码块。

这个关键字就是为了形成静态代码块(废话),用静态的形式来优化程序性能,static块

可以置于类中的任何地方,类中可以有多个static块,在类初次被加载的时候会,按照static块的顺序来执行每个static块,并且只会执行一次。 因次很多时候将会一些只需要进行一次的初始化操作放在static代码中进行。

还是没解决我想得到的问题,

答案:

 

 很明显了:根执行顺序有关

正常顺序:静态块(静态变量)-->成员变量-->构造方法-->静态方法

1.静态代码块(只能加载一次)

2构造方法(创建一个实例就加载一次)

3.静态方法需要调用才会执行

重点:

如果类还没有被加载:

1执行父类的静态代码块和静态量初始化,并且静态代码块和静态变量的执行顺序只根代码中出现的顺序有关。

2.执行子类的静态块和静态变量初始化。

3.执行父类的实例变量初始化

4.执行父类的构造函数

5.执行子类的实例变量初始化。

6.执行子类的构造函数

如果类已经被加载:

则静态代码块和静态变量就不用重复执行,菜创建类对象时,只执行与实例相关的变量初始化和构造方法

 

https://www.cnblogs.com/leiqiannian/p/7922824.html

posted on 2021-03-03 19:33  趋近于零  阅读(425)  评论(2编辑  收藏  举报