java面向对象中的一些小知识点(二)
1、静态变量和静态方法是类具有的属性,可以理解为是所有对象共享的内容。我们通过使用static关键字来声明一个变量或一个方法为静态的。一旦被声明为静态,那么通过这个类创建的所有对象,操作的都是同一个目标。一个对象改变了静态变量的值,那么其他的对象读取的就是被改变的值。
2、不推荐使用对象来调用,被标记为静态的内容,可以直接通过类名.xxx的形式访问。

3、类的加载机制
类并不是在一开始就全部加载好,而是在需要时才会去加载(提升速度)以下情况会加载类:
访问类的静态变量,或者为静态变量赋值
new 创建类的实例(隐式加载)
调用类的静态方法
子类初始化时
其他的情况(反射)
所有被标记为静态的内容,会在类刚加载的时候就分配,而不是在对象创建的时候分配,所以说静态内容一定会在第一个对象初始化之前完成加载。


4、定义和赋值是两个阶段,在定义时会使用默认值,定义出来之后,如果及现有赋组诺可,再进行赋值,而这时,调用了静态方法,所以说会先去加载静态方法,静态方法调用时拿到a,而a这时仅仅是刚定义,所以说还是初始值,最后得到0

结果为0
5、代码块在对象创建时执行,也是属于类的内容,但是它在构造方法执行之前执行〈和成员变量初始值一样),且每创建一个对象时,只执行一次!(相当于构造之前的准备工作)


6、静态代码块和静态方法和静态变量一样,在类刚加载时就会调用。
7、执行顺序


浙公网安备 33010602011771号