Object类和异常
1. Object类是所有类的父类(超类, 基类,上帝类);
里面有两个常用的方法:
1> public String toString();// 默认输出对象的地址值的字符串表示形式
2> public boolean equals(Object obj);// 默认比较的是两个对象的地址值.
Object中第一个比较常见的方法
public String toString();// 默认输出对象的地址值的字符串表示形式
注意点:
一个对象在使用println进行输出的时候默认就是调用了Object中的toString方法,从而显示的是地址值
只不过JDK中很多的类都已经重写(覆盖)了Object中的toString所以显示的不是地址值.
这样的类目前: String, StringBuilder, ArrayList
如果自定义的类需要输出对象里面的内容, 那么也需要重写Object中的toString方法;
Object中第二个比较常见的方法
public boolean equals(Object obj);// 默认比较的是两个对象的地址值.(eclipse中自动生成equals方法, alt + shift + s 在按h)
注意点:
对于基本数据类型来讲, == 比较的是数值
对于引用数据类型来讲, == 比较的是地址值
对于引用数据类型来讲,直接比较两个对象的地址值,没有任何意义,所以JDK中的很多类已经覆盖了Object中的
equals方法,比如String类
我们自定义的类如果要想比较对象的内容是否相等, 也需要重写Object中的equals方法.
2. 异常:
在java中所有的错误或者是异常都可以使用一个类来表示: java.lang.Throwable;
里面有很常用的三个类来表示:
Error: 表示错误的信息,一旦出现程序立即停止
Exception: 表示异常(编译时的异常)的信息,一旦出现处理完程序正常运行.
RuntimeException: 表示运行时候的信息,是Exception的子类.
3.如何自定义一个异常呢?
JDK中提供的异常都是一些常用的类的信息, 不能把实际业务场景当中的异常全部都考虑进去,那么这个时候就需要自定异常
比如: 现实生活中,比如分数不能为负数, 比如: 处理年龄为负数的情况,需要自定义异常了.
如何自定义一个异常呢?
需要入伙.
编译时异常: 需要定义类继承自Exception
格式: public class 类名 extends Exception{...}
运行时异常: 需要定义类继承自RuntimeException
格式: public class 类名 extends RuntimeException{...}
4. 异常的解析流程:
1> 一旦程序出现异常,JVM自动创建异常类的对象(如果是自定义的异常需要手动创建)
2> 一旦检测到异常产生,JVM就会马上抛出异常,(如果是自定义的异常需要手动抛出)
3> 接下来需要处理抛出来的异常,有两种方式:
方式一: 使用关键字throws 抛
格式: public static void method() throws 异常类名{...}
方式二: 使用try_catch的方式处理(真处理)
格式:
try{
// 用来编写可能出现问题的代码
}catch(异常类名 对象名){
// 处理异常的一种方式,预案
}finally{
// 一般不管怎么样都会执行的,用来使用释放资源
}
注意点:
1> 在使用throws声明抛出异常的时候,如果异常之间存在继承关系,只需要写父类异常即可.
2> 如果有多个异常,不存在继承关系,可以使用逗号隔开.
如果自定创建一个异常类对象,该如何抛出,需要使用到关键字throw
throw: 主动将产生的对象进行抛出
格式: throw 异常对象;