静态代码块 | B站Java学习笔记

本文介绍了Java中static关键字定义的静态代码块,包括其语法、执行时机(类加载时且仅执行一次)、执行顺序(自上而下)。还说明了静态代码块的作用,如可用于记录类加载日志信息,最后提及Java程序中有顺序要求的部分。

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

  1. 使用static关键字可以定义:静态代码块
  2. 什么是静态代码块,语法是什么?
static {

}
  1. static静态代码块在什么时候执行呢?
    回答:类加载时执行,并且只执行一次。
    一个类当中,可以编写多个静态代码块
public class StaticTest06 {
	static {
		System.out.println("A");
	}
	static {
		System.out.println("B");
	}
	public static void main(String[] args) {
		System.out.println("Hello World");
	}
	static {
		System.out.println("C");
	}

程序结果:
”A"
“B”
“C”
“Hello World”

  1. 说明静态代码块在main方法执行之前执行

  2. 静态代码块一般按照自上而下的顺序执行

  3. 静态代码块有什么作用?
    ① 静态代码块不是那么常用 (不是每一个类当中都要写的东西)
    ② 静态代码块这种语法机制实际上是SUN公司给我们java程序员的一个特殊的时刻
    这个时机叫做: 类加载时机

    具体的业务:
    项目经理说:所有我们编写的程序中,只要是类加载了,请记录一下类加载的日志信息(在哪年哪月哪日几时几分几秒,哪个类加载到JVM当中了)
    思考:这些记录日志的代码写到哪里呢?
    回答:写到静态代码块当中

public class StaticTest07 {
	static int i = 100
	static {
		System.out.println(i);
	}
	
	int k = 111; k变量是实例变量,在构造方法执行时,内存空间才会开辟
	
	static {
		System.out.println(k); 
		k变量可以访问吗?
		static静态代码块在类加载时执行,并且只执行一次
		类加载时,k变量空间还没有开辟出来呢
		错误信息:无法从静态上下文中引用费静态变量k

		System.out.println(name);
		这里可以访问name吗?
		错误信息;非法前向引用
		静态代码块和静态变量都在类加载的时候执行,时间相同,只能靠代码的顺序来决定谁先谁后,如果把下面的static String name = "zhangsan";放到这个静态代码块的上面,就没问题了
	}
	
	static String name = "zhangsan";
	静态变量在静态代码块下面
	
	入口,(main方法执行之前实际上执行了很多代码)
	public static void main(String[] args) {
		System.out.println("main begin");
	}
}

总结:
到目前为止,Java程序中,有顺序要求的是哪些?

1. 对于一个方法来说,方法体中的代码是有顺序的,遵循自上而下的顺序执行。
2. 静态代码块1和静态代码块2是有先后顺序的。
3. 静态代码块和静态变量是有先后顺序的。

注意:在一个类体中,两个方法x(), y() 是没有先后顺序的


仅供学习使用,内容版权归B站视频老师所有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值