校内课上对某些知识点涉及过浅,预计用几天时间对一些薄弱java知识进行复习巩固。以下主要列出本次复习过程中新学到的以及之前学过淡忘的知识点

多态

在编译期,只能调用父类中声明的方法,但在运行期,实际执行的是子类重写父类的方法。
总结:编译看左边,运行看右边

例:Person e = new Student();
e.getinfo();
编译时e为person类,而方法的调用是在运行时确定的-----动态绑定
重载时为静态绑定
有了对象的多态性之后,内存中实际上是加在了子类特有的属性和方法的,但是由于变量声明为符类,导致编译时只能调用父类中声明的属性和方法,子类方法属性不能调用

有关向下转型理解加深

image.png
if(p2 instanceof Man)

对象的多态性只适用于方法,不适用于属性(例子:P2.id=1001)

Object类

  1. 所有类的父类
  2. 类中的finalize()方法和java的垃圾自动回收机制相关。

JUint单元检测

  1. 包含单元检测的类必须是public且提供无参构造方法
  2. 进行单元检测的方法必须是public且无返回值,无形参
  3. 进行单元测试方法上方需注明@Test并导入相应包(org.junit.Test)
  4. 声明好单元测试方法后,左键双击方法名,右键run as - JUnit Test

单例模式

饿汉模式:先创建静态对象,线程安全
懒汉模式:用时在创建静态对象

接口

  1. 接口相当于一种规范
    jdk7及之前版本接口内定义全局静态常量和抽象方法
    jdk8以后接口内新增静态方法(可包含方法体)和默认方法
  2. 接口中定义的静态方法只能通过接口调用
    通过实现类的对象可以调用接口中的默认方法

包装类

  1. java作为一个面向对象的语言,常量无法发挥类的优势,涉及相依包装类拓展功能。
  2. jdk5.0之后加入自动装箱(代替new方法)、自动拆箱(代替xxxValue方法)
    3.** 基本数据类型转换成String:**
    1>num+""
    2>String.valueof
    String转换为基本数据类型:
    parseXxx

异常处理

若为避免异常使用过多的if-else语句,会是代码显的过于冗长,臃肿。故java引入异常处理机制。一旦出现异常,相当于抛出一个异常对象。
U0B8F_~1Y~QV51EI6ZR.png

  1. Error是程序中无法处理的错误,表示运行应用程序中出现了严重的错误。此类错误一般表示代码运行时JVM出现问题。
  2. 主要讨论Exception,其分为编译时异常(受检异常)和运行时异常(unchecked).

异常注意点二.jpg
4. 两种异常处理方法(try-catch-finally/throws)选择问题
image.png
5. 自定义异常类,通过throw抛出
如何自建异常类:image.png

public class MyException extends RuntimeException{
	static final long serialVersionUID = -7034897193246939L;
	public MyException(){

	}
	public MyException(String msg){
	super(msg);
	}
}
  1. throw和throws的区别:
    throw: 表示抛出一个异常类的对象,生成一个异常类的过程,声明在方法体内
    throws: 是异常处理的一种方式,声明在方法的声明处。

Q.E.D.