java基础

1. java规定类字的首字母要大写

2. java文件名要和主类名一致(所以文件名的首字母要大写)

  编译:javac Hello.java

  运行:java Hello

3. 在一个java文件里面只能有一个public class,其他的class不能用public修饰,如果有多个类,那么编译后再文件夹中有多个.class

 

4. 对象创建流程分析

  加载类信息时,会调用静态代码块,在调用普通代码块,最后再调用构造器,完成对象的初始化

 

5. this和super关键字的比较

6.类什么时候被加载?

  1. 创建对象实例时(new)

  2. 创建子类对象实例时,父类也会被加载

  3. 使用类的静态成员时(静态属性,静态方法),当调用了子类的静态成员,父类也会被加载

7. 在创建一个对象时,在一个类中的调用顺序

  1. 先调用静态代码块和静态属性的初始化(如果有多个静态代码块和多个静态属性初始化,则按它们的定义顺序调用)

  2. 再调用普通代码块和普通属性的初始化(如果有多个普通代码块和多个普通属性初始化,则按它们的定义顺序调用)

  3. 最后再调用构造方法

8. 在创建一个子类对象时(有继承关系),他们的静态代码块、静态属性初始化、普通代码块、普通属性初始化、构造方法的调用顺序:

  1. 父类的静态代码块和静态属性初始化(优先级一样,按定义顺序执行)

  2. 子类的静态代码块和静态属性初始化(优先级一样,按定义顺序执行)

  3. 父类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)

  4. 父类的构造方法

  5. 子类的普通代码块和普通属性初始化(优先级一样,按定义顺序执行)

  6. 子类的构造方法

  释:当实例化一个子类对象时,如new Son();会发生下面事情:

    a. 加载类信息(先加载父类,再加载子类)时,会调用静态代码块和静态属性初始化,所以会先调用父类的,再调用子类的

    b. 再创建对象,即调用子类的构造器,构造器中隐藏了super();和普通代码块,如下:

     public Son(){  //其父类的构造器也类似

        //super();

        //本类中的普通代码块

        //初始化

     }

     所以由于super,会调用到父类的无参构造器,然后调用父类的普通代码块和普通属性初始化,然后再父类构造器的初始化,

     super完后,会调用子类的普通代码块和普通属性初始化,最后是子类构造方法的初始化

 

posted @ 2023-05-28 18:02  踏浪而来的人  阅读(12)  评论(0编辑  收藏  举报