• 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

  • 相关阅读:
    P1662 数7
    P3645 [APIO2015]雅加达的摩天楼
    P3396 哈希冲突
    P7479 至曾是英雄的您
    P7480 Reboot from Blue
    Apache Commons Collections
    ESP8266 WIFI杀手
    ESP8266 固件升级
    ESP8266 MicroPython安装与使用
    Window 安装子系统
  • 原文地址:https://www.cnblogs.com/wanghlblog/p/14476444.html
Copyright © 2020-2023  润新知