代码块是什么?怎么理解?
代码块长什么样?
我们首先要知道代码块在类中的样子:
public class Demo{
static{
// 这就是一个静态代码块
}
class{
//这就是一个实例代码块
}
}
-
通过上面我们可以知道代码块的样子
-
并且我们可以看到在上面一共写了两种代码块
代码块的分类:
代码块一共分为两类:
1. 实例代码块
实例代码块就是一个{java语句}
2.静态代码块
与实例代码块不同的是静态代码块由static关键字所修饰,表示这个代码块是静态代码块
-
这里我们要知道,什么是静态?
-
随着类加载我们就叫做静态
-
那什么是非静态呐?
-
随着对象的加载而加载就是非静态
所以要代码块有什么用呐?
- 代码块其实就是java为程序员提供的一个时机
- 静态代码块为程序员提供了一个类加载时机
- 实例代码块为程序员提供了一个对象创建时机
要这些时机干什么呐?
- 比如静态代码块给我们提供类加载时机就是要我们如果在刚刚加载类时做一些什么事情,我们就可以将要做的事情写在静态代码块之中
类什么时候加载?
1.mian方法所在的类会最先加载
2.创建某个对象时,这个对象的模板类就会加载
3.调用静态方法(类方法),静态变量(类变量)时,这个静态方法和静态变量所属的类也要加载
- main方法所在类比main()方法要先加载
注意:只使用类中的静态常量,不会加载这个类(这是java官方的一种优化)
- 这里涉及到静态常量池(静态常量是在静态常量池中被访问,而不需要加载类)
- 静态常量池就是方法区中的一块空间
都是静态内容哪个先执行?
静态内容根据上下文顺序执行
- 注意实例代码块的执行在执行对象的构造方法之前