类加载机制

类加载相关

静态代码块
定义在类中方法外, 静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
该类不 管创建多少对象,静态代码块只执行一次.
一个类中的静态代码块可以有多个,位置可以随便放,

它不在任何的方法体内,

JVM加载类时会执行这些静态的代码块,
如果静态代码块有多个,

JVM将按照它们在类中出现的先后顺序依次执行它们,每个代码块只会被执行一次。

静态方法属于类本身,

非静态方法属于从该类生成的每个对象。
如果您的方法执行的操作不依赖于其类的各个变量和方 法,
请将其设置为静态(这将使程序的占用空间更小)。
否则,它应该是非静态的。

静态方法在访问本类的成员时,只允许访问静态成员(即静态成员变量和静态方法),而不允许访问实例成员变量和实例 方法;实例方法则无此限制

静态代码块在非静态代码块之前执行(静态代码块—>非静态代码块—>构造方法)。
静态代码块只在第一次new 执行一次,之后不再执行,而非静态代码块在每new一次就执行一次。

静态代码块是自动执行的而静态方法是被调用的时候才执行的.

非静态代码块与构造函数的区别是:

非静态代码块是给所有对象进行统一初始化,

而构造函数是给对应的对象初始化,因 为构造函数是可以多个的,
运行哪个构造函数就会建立什么样的对象,

但无论建立哪个对象,都会先执行相同的构造代码 块。

也就是说,构造代码块中定义的是不同对象共性的初始化内容。

posted @ 2021-12-13 12:47  姚狗蛋  阅读(20)  评论(0编辑  收藏  举报