本文共 484 字,大约阅读时间需要 1 分钟。
我们知道构造方法是给对象进行初始化的,对象一创立就会被实例化,在构造方法中有一个构造代码块和静态代码块,两种都是给对象进行初始化的。
但是有什么区别了?
我们知道构造代码块在执行的时候优先于构造函数和其他方法的执行
运行结果如下:
来看看静态代码块是如何运行的:
运行结果如下:
由此可知静态代码块比构造代码块的优先级更高
这是为什么了?因为我们在运行的时候Test类被加载了,当碰到static的时候就会被执行,构造代码之所以没有被执行是因为我们启动java虚拟机把Test.class文件加载到内存中,这里就会执行静态代码块,而创建对象是后面执行的所以比构造代码块先执行,简单来说就是随着类的加载而加载,如:
我并没有创建对象而是调用静态方法,运行结果如下:
因为我们要调用Test里面的方法所以也要加载Test类,所以静态代码块执行了,如果下列代码你能猜出结果说明你已经很熟悉静态代码块和构造代码块了
运行结果:
注意: 静态代码块只会执行一次因为是随着类的加载而加载而不是创建对象就会执行的,而构造代块是对象的一旦创建就会执行一次的,
运行结果: