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

  • 相关阅读:
    Java 实现 蓝桥杯 生兔子问题
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 蓝桥杯 基因牛的繁殖
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    Java实现 LeetCode 33 搜索旋转排序数组
    深入探究VC —— 资源编译器rc.exe(3)
    深入探究VC —— 编译器cl.exe(2)
    深入探究VC —— 编译器cl.exe(1)
  • 原文地址:https://www.cnblogs.com/wanghlblog/p/14476444.html
Copyright © 2011-2022 走看看