【根据 尚硅谷 教学视频总结】

发博备查。


1. 常用 DOS 命令:
  - dir 列出当前目录下的文件及文件夹
  - md 创建目录
  - rd 删除目录
  - cd 进入指定目录
  - cd.. 会退到上一级目录
  - cd/ 返回到根目录
  - exit 退出 dos 命令行


2.  JDK (Java Developer Kit) 包含了 java 的开发工具及 JRE
    JRE (Java Runtime Environment) 包含了 JVM 及 Java 程序所需的核心类库等
    JVM (Java Virtual Machine) 是一个虚拟机,屏蔽了底层运行平台的差别(实现了"一次编译,到处运行")


3. 定义合法标识符:
  - 英文 / 数字 / _ / $
  - 数字不可以开头不
  - 不能使用但可包含关键字和保留字
  - 区分大小写,长度无限制
  - 不能包含空格


4. Java 命名规范:
  - 包明: 所有字母都小写
  - 类名接口名: 所有单词首字母大写
  - 变量名和函数名: 首字母小写,之后单词首字母大写
  - 常量名: 所有字母大写,单词之间用 _ 连接


5. 变量作用域: 一对 {} 之间有效


6. 数据类型: 基本数据类型(8种)/引用数据类型
    -浮点类型默认为 double


7. 基本数据类型转换: char → int → long → float → double
              byte → short ↑
      - 多种类型数据计算时,自动转换成容量最大的数据类型
      - byte, short, char 之间不会相互转换,三者计算时会先转换成 int 类型
      - 将容量大的给容量小的需要强制类型转换
      - 字符串不能直接转换为基本类型
      - boolean 不可以转换为其他数据类型


8. 若一个 java 文件中有 public 声明的类, 则 java 文件的文件名必须与类名一致


9. 在一个 java 文件中可以声明多个类, 但只能有一个 public 类


10. 数组属于引用类型, 是多个相同类型数据的集合

 

11.  面向过程: 是一种"谓语与宾语"的关系
      面向对象: 是一种"主语与宾语"的关系


12. 面向对象三大特性:
      - 封装
      - 继承
      - 多态


13. 声明属性的修饰符
      - private: 该属性只能由该类的方法访问
      - public: 该属性可以被该类以外的方法访问


14.
    1) Java 语言中,每个类至少有一个构造方法
    2) 构造方法的特征
        - 具有与类相同的名称
        - 不含返回值
    3) 若类的定义者没有显示的定义任何构造方法,系统会自动提供一个默认的构造方法
        - 无参
        - 无方法体
    4) 一旦显示的定义了一个或多个构造方法,系统便不会提供默认构造方法
    5)构造器主要作用: 初始化对象的属性


15. this 关键字:
      1) 什么是this: this 是当前类的一个对象的引用,是调用当前方法的那个对象的引用
      2) this 的用途:
          - 在方法中引用当前对象的属性或方法
              public String getName(){
                return name;
              }
          - 在类的构造方法中调用重载的工作方法. this 必须放在构造方法的第一行
              public Person(String name, int age){
                  this.name = name;
                  this.age = age;
              }


              public Person(String name, int age, String sex){
                  this(name,age);
                  this.sex = sex;
              }


16. 关于继承的规则:子类不能继承父类中私有的成员变量和方法


17. 覆盖方法必须和被覆盖方法具有相同的方法名、参数列表和返回值类型,并且不能使用比被覆盖方法更严格的访问限制


18. super:是在子类对象方法中对父类对象的引用
    -使用:
      1) 在子类对象的方法中引用父类对象的成员
        public String getInfo(){
          return super.getInfo() + ", info" + info;
        }
      2) 在子类的构造器中调用父类的构造器
         - 可以在子类中通过 super(参数列表) 的方式来调用父类的构造器
         - 默认情况下子类的构造器调用父类的无参构造器
            public Person(){
              super();
            }
        - 若父类定义了带参数的构造器,则系统将不再为父类提供无参构造器,而子类的构造器中必须调用父类的一个构造器,这时:
          ① 父类显示的定义一个无参构造器
          ② 在子类的构造器中显式的调用父类的带参构造器
        - 与 this 类似, super(参数列表) 必须放在构造器的第一行,这说明 this(参数列表) 和 super(参数列表) 不能同时出现


19. 多态:同样类型的变量,调用同样的方法 却产生完全不同的行为
    - 当父类的变量指向一个子类的对象,调用父类中已经被重写的方法的时候
    - 在多态的情况下(当父类的变量指向一个子类的对象),不能调用子类新添加的方法
    - 在多态的情况下,可以对对象进行强制类型转换
        1) 只有在具有父子关系的情况下才可以进行强制类型转换
        2) 父类的对象可以转换为任何子类的类型,但有可能会发生 java.lang.ClassCastException


20. instanceof 操作符:
    - x instanceof A 检验 x 是否为类 A 的对象,返回值为 boolean 型。
    - 要求 x 所属的类与类 A 必须是子类和父类的关系,否则编译出错


21. Java 的强制类型转换:
    - 从子类到父类的类型可以自动进行
    - 父类到子类必须强制转换
    - 无继承关系的引用类型的转换时非法的


22. equals 与 ==
    1) ==
        - 引用类型比较引用 (是否指向同一个对象)
        - 符号两边的数据类型必须可兼容,否则编译出错
    2) equals()
        - 只能比较引用类型,其作用与 "==" 相同,比较是否指向同一个对象
        - 当用 equals() 方法进行比较时,对类 File、String、Date 及封装类 (Wrapper Class) 来说是比较类型及内容二不考虑引用的是否是同一个对象,因为他们重写了 equals() 方法


23. 关键字 static
    - 用于修饰类的成员 (属性/方法/内部类)
    - 若访问权限允许的情况下,static 修饰的成员可以通过 类名. 的方法来访问,即在创建对象的情况下进行访问,也可以通过 对象. 的方式来访问
    - static 修饰的成员称为类成员,为类的多有的实例所共享
    - 在 static 方法内部只能访问类的 static 属性,不能访问类的非 static 属性;反之非 static 方法可以访问 static 成员
    - 因为不需要实例就可以访问 static 方法,因此 static 方法 内部不能有 this 和 super
    - 静态初始化: static 修饰代码块,当类被加载时执行,且只被执行一次 (作用: 作为对静态属性进行初始化)


24. 单态设计模式: 就是采取一定的方法保证在整个的软件系统中, 对某个类只能存在一个对象实例
    - 在类的外部不能通过 new 构造器的方式创建实例,因此要把构造器隐藏起来,即构造器私有化
        private Single(){}
    - 因为在类的外部不能创建类的实例,只能在类的内部创建
        Single instance = new Single();
    - 为了让类的外部直接使用该实例,使用 static 修饰
        static Single instance = new Single();
    - 不能在类的外部可以修改该属性,只能私有化该属性,同事提供公有的 get 方法使用
        private static Single instance = new Single();
        public static Single getInstance(){
          return instance;
        }


25. final 关键字: 可以修饰类,属性和方法
    - 必须在生命是初始化,或在非静态代码块中初始化,亦或是在构造器中初始化
    - final 修饰的属性为常量,属性值不能被修改
    - final 修饰的方法,不能被修改不能被重写
    - final 修饰的类,不能被拓展,不能被继承


26. abstract 关键字,用于修饰类和方法
    - 修饰的方法没有方法体,只有方法的声明 (抽象方法)
    - 修饰的类 (抽象类) 不能被实例化
    - 有抽象方法的类一定是抽象类,反之不然
    - 不能修饰 私有方法/构造方法/静态方法


27. 抽象类和一般类的区别 :
 1) 抽象类使用 abstract 修饰
 2) 抽象类不能被实例化
 3) 抽象类中可以有抽象方法,也可以没有抽象方法


28.  - 使用 interface 声明
     - 接口是抽象方法和常量的集合, 不能再有其他任何成分
     - 接口中的方法默认修饰为 public abstract
     - 接口中常量的默认修饰为 public static final
     - 实现接口使用 implements 关键字
     - 一个类可以实现多个接口, 多个接口之间使用逗号分隔
     - 接口之间可以继承
     - 若一个类既实现接口,又继承父类, 则 extends 放在 implements 前面


29. 在类的外部如何创建内部类对象:
     - 对于非静态内部类:必须先创建外部类对象, 然后在创建内部类对象
     -对于静态内部类: 内部类使用 static 来修饰, 所以创建该类的对象可以没有外部类对象


30. 在方法参数列表的后面使用 throws 关键字声明抛出异常, 异常在当前方法内部不处理,而抛给调用当前方法的方法


31.  - throws 可以声明抛出多个异常用逗号隔开,多个异常没有顺序
     - 可以声明抛出出现的异常类的父类
     - 重写方法不能够抛出比被重写方法更大的异常 (非运行时异常)


32. 自定义异常:
     - 通常情况下继承 RuntimeException
     - 作用 : 见名知意
     - 通常都需要使用 throws 关键字抛出