java面向对象中的一些小知识点(二)

1、静态变量和静态方法是类具有的属性,可以理解为是所有对象共享的内容。我们通过使用static关键字来声明一个变量或一个方法为静态的。一旦被声明为静态,那么通过这个类创建的所有对象,操作的都是同一个目标。一个对象改变了静态变量的值,那么其他的对象读取的就是被改变的值。

2、不推荐使用对象来调用,被标记为静态的内容,可以直接通过类名.xxx的形式访问。

 

 

 3、类的加载机制

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

 

 

 

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

 

 

结果为0 

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

 

 

 

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

7、执行顺序

 

posted @ 2022-08-10 16:46  hefuhao  阅读(33)  评论(0)    收藏  举报