文字数:约1900字 阅读时间:30分钟
此文章为学习总结类型,文字很多且皆为基础知识
一. Object类
1) 概念 Object类是JDK自带的一个类,是所有类的父类;是最顶层的类,如果一个类没有直接继承其它父类,那么这个类的直接父类就是Object
(所有类都可以使用Object中的方法)
2) 理解
1. Object类是所有类的根类
2. Object类中的所有方法子类都可以用
3. 所有类在创建对象的时候,最终找的父类就是Object
3) equals方法:用于比较两个对象是否相同
1. Object类中的这个方法使用比较两个对象的地址是否相同的,就相当于使用 == 比较两个对象
2. 当比较不是对象的地址,而是对象的属性值的时候,就需要重写equals方法
3. 在复写Object中的equals方法时,一定要注意public boolean equals(Object obj)的参数是Object类型,在调用对象的属性时,一定要进行类型转换,在转换之前必须进行类型判断
4) toString方法:Object类中的这个方法返回的是对象的地址
1. toString() 方法返回该对象的字符串表示,在Object类中的默认实现是对象的类型(全路径类名)+@+内存地址值。
2. 要返回对象的属性值的的时候,就需要重写toString()方法
3. 直接使用输出语句输出对象名的时候,会自动调用这个对象的toString()方法
二. 异常
程序中出现的不正常的情况
1) Error是系统级别的严重的错误,错误无法处理,只能修改代码
2) 异常Exception:是程序中出现的一般的问题,稍微处理一下问题就解决了,通常说的异常指定的是Exception,其中异常可分为:
1. 编译时异常,编译时必须对编译异常进行处理,否则编译失败,如:日期格式化异常
2. RuntimeException是运行时异常,编译时无需处理,但程序运行的时候可能会报错,几种常见的运行异常见右边
①空指针异常: NullPointerException
(这种错误的引发一般是变量名书写不正确,或理论出错)
②算术异常: ArithmeticException
(例如:2/0)
③字符串索引越界异常:StringIndexOutOfBoundsException
(字符串使用静态赋值就可以避免这种异常)
④索引越界异常: IndexOutOfBoundsException
(例如:ArrayList list = new ArrayList() list.get(0)就会抛异常)
⑤数组索引越界异常: ArrayIndexOutOfBoundsException
(超出索引最大长度,例如int[] arr = new int[3] 调用arr[3]就会抛异常)
3) 错误(Error)与(Exception) 的区别
1. Error是系统级别的严重的错误,错误无法使用try...catch或throws处理,如果出现须修改代码.
2. Exception是普通的问题,可以使用try...catch或throws进行处理,处理后程序可继续运行
4) 处理异常的两种方式
1. 捕获异常
a. 概念:对可能出现的异常进行捕获然后进行处理
b. 格式:捕获处理,将异常获取,使用 try/catch 做分支处理try/catch(常用格式):
try{
需要检测的异常;
} catch(异常对象) {
异常处理代码,可以调用异常的方法通常我们只使用一个方法:printStackTrace 打印异常信息}
}
c. try/catch的多种组合方式
格式二 try…catch…finally:不管有没有捕获到异常,都会执行finally中的语句
try {
需要被检测的语句。
}catch(异常类 变量) { //参数。
异常的处理语句
}finally {
一定会被执行的语句。
}
格式三 try..catch..catch..catch:针对每个异常对象进行不一样的处理方式
try{
throw new Exception();//产生异常,直接捕获处理
}catch(XxxException e){
//处理方式
}catch(YyyException e){
//处理方式
}catch(ZzzException e){
//处理方式
}
注意:必须保证后面的catch不小于前面的catch的数据类型
格式四 try..finally:由于没有对异常进行catch处理,则系统会默认对异常对象进行抛出
try{
throw new Exception();
}finally {
//释放资源
}
5) 声明抛出异常
① 声明异常throws
1. 概念
a. 将问题标识出来,报告给调用者
b. 如果方法内通过throw抛出了一个异常而没有用try{...}catch(){...}处理那么必须声明异常
2. 格式
修饰符 返回值类型 方法名(参数) throws 异常类名 1,异常类名 2… { }
② 抛出异常 throw
1. 概念
a. 将获得的异常对象抛出给调用者解决
b. throw 用在方法内,用来抛出一个异常对象,将这个异常对象传递到调用者处,并结束当前方法的执行。
2. 格式
throw new 异常类名(参数);
3. 步骤
a. 创建异常对象(封装一些异常提示信息用,可以自己编写)
b. 抛出异常
③ throw与throws的区别
throw表示抛出异常的动作,throws表示声明抛出一个异常类型
throw后面跟的是异常对象,throws后面跟的是异常类型
throw写在方法内部,而throws写在方法后面
6) 注意
a. 处理异常的代码不一定会执行
b. 如果出现异常中断当前代码执行执行异常处理代码然后继续执行当前代码
c. 如果没有出现异常,则代码正常执行
7) 异常使用注意事项
1. 运行时异常(RuntimeException)被抛出可以不进行处理,出现异常时停止程序由使用者修改代码进行处理
2. 继承中,如果父类声明抛出了多个异常,那么子类可以抛出的异常范围一定小于等于父类
3. 继承中,父类方法没有声明抛出,子类覆盖方法也不能声明抛出,这时出现异常只能通过try/catch进行捕获处理
4. 在带有finally的组合中,如果在try中return了一个变量的值,再在finally中修改这个变量的值不会对返回的数据造成影响
(运行时异常(RuntimeException)是常用的try/catch抛出的新的异常所用的)
8) 出现异常时的简易示意图
三. 自定义异常
原因:JDK里面定义的异常类不符合当前需求
1) 自定义异常类的步骤
a. 定义一个类继承异常父类;
b. 在异常类中添加构造方法;
c. 在构造方法中调用父类的构造方法,逐层调用父类中的构造方法,一直到Throwable类;
2) 示例
a. 自己创建一个异常类;
Throwable类
|--Exception类,编译时异常类
|--IO异常类
|--FileNotFoundException类
...
|--运行时异常类RuntimeException
|--ArrayIndexOutOfBoundsException类
|--NullPointerException类
b. 关于Throwable类,是异常体系结构中最顶层的类
Throwable类有两个作用:
1.创建异常对象,向外抛出
2.打印异常信息