1. 我们需要先用javac把Hello.java编译成字节码文件Hello.class,然后,用java命令执行这个字节码文件
  2. 一个Java源码只能定义一个public类型的class,并且class名称和文件名要完全一致。
  3. Fina 修饰的为常量,常量名通常全部大写。
    使用var定义变量,可以少写变量类型。
  4. Java提供了两种变量类型:基本类型和引用类型
    基本类型包括整型,浮点型,布尔型,字符型。
    基本类型参数的传递,是调用方值的复制。双方各自的后续修改,互不影响。
    引用类型参数的传递,调用方的变量,和接收方的参数变量,指向的是同一个对象。双方任意一方对这个对象的修改,都会影响对方(因为指向同一个对象嘛)。
  5. 使用Arrays.toString()可以快速获取数组内容。
  6. 命令行参数类型是String[]数组。
    可变参数用类型…定义,可变参数相当于数组类型。
  7. 方法名相同,但各自的参数不同,称为方法重载(Overload)。
  8. java使用关键字extends实现继承。
    继承有个特点,就是子类无法访问父类的private字段或者private方法。
    用protected修饰的字段可以被子类访问:
  9. 子类如果定义了一个与父类方法签名完全相同的方法,被称为覆写(Override)。加上@Override可以让编译器帮助检查是否进行了正确的覆写。
  10. 如果一个父类不允许子类对它的某个方法进行覆写,可以把该方法标记为final。如果一个类不希望任何其他类继承自它,那么可以把这个类本身标记为final。
  11. 多态特性
public void runTwice(Person p) {
 p.run();
 p.run();
 }

实际在运行中的时候动态调用任何一种子类及其覆写的方法。

  1. 关于抽象方法和抽象类:
    通过abstract定义的方法是抽象方法,它只有定义,没有实现。抽象方法定义了子类必须实现的接口规范。
  2. 关于接口:
    使用interface可以声明一个接口,就是比抽象类还要抽象的纯抽象接口,因为它连字段都不能有。在接口中,可以定义default方法。
  3. 一个类只能继承自另一个类,不能从多个类继承。但是,一个类可以实现多个interface
  4. 关于静态字段和静态方法:
    静态字段只有一个共享“空间”,所有实例都会共享该字段。
    不推荐用 实例变量.静态字段 去访问静态字段;推荐使用 类名.静态字段 来访问静态对象。
    调用静态方法则不需要实例变量,通过类名就可以调用。因为静态方法属于class而不属于实例,因此,静态方法内部,无法访问this变量,也无法访问实例字段,它只能访问静态字段。
  5. Java内建的package机制是为了避免class命名冲突;包没有父子关系,com.apache和com.apache.abc是不同的包。
  6. JDK的核心类使用java.lang包,编译器会自动导入;