zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Wannafly挑战赛29-A/B
    hdu-4819-线段树套线段树
    CF-877E-线段树+哈希
    CF-413E-线段树
    CF-787D-线段树建图+最短路
    CF-339D-线段树
    2017.4.26 慕课网--Java 高并发秒杀API配置文件(持续更新)
    2017.4.26 慕课网--Java 高并发秒杀API(一)
    2017.4.19 慕课网-通过自动回复机器人学习mybatis
    2017.4.18 linux中执行某文件提示权限不够
  • 原文地址:https://www.cnblogs.com/wanghlblog/p/14476444.html
Copyright © 2011-2022 走看看