1.Object类
类 Object 是类层次结构的根类 , 所有类都必须直接或者间接的继承Object
Object类中的两个重要方法:
第一个方法:
- boolean equals(Object obj) ;//比较两个对象是否"相等" , 在Object类中定义的equals方法比较是 两个对象的地址
- 在String类中 重写了Object父类中的equals方法,本来在Object类中比较的是两个对象的地址, 在String重写后变成比较两个字符串的内容
3.我们程序员 通常自定义一个类的时候,也会重写equals,比较的规则由我们来定
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if(getClass() != obj.getClass())
return false;
Dog other = (Dog) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
第二个方法:
- public String toString() ;//返回该对象的字符串表示。 Object类中默认的返回值:包名.类名@地址
- 实际开发中toString的使用 注意: 打印一个对象,底层 先 调用该对的toString方法,然后打印返回值 在实际开发中 我们经常会重写toString,返回对象中一些成员变量,用来快速打印对象信息
以后我们自己定义一个类,通常会重写toString,打印出对象的信息
@Override
public String toString() {
return "Pig [age=" + age + ", name=" + name + "]";
}
2.异常
异常: 是java代码编译或者运行过程中出现的问题
异常的继承体系: Throwable:可以抛出去的东西
1,Exception:异常(普通问题)
编译时异常:编译的时候 出现的问题
指的是Exception 以及 Exception子类(RuntimeException除外)
运行时异常:编译的时候 是没有问题的,运行的时候出现了问题
指的是 RuntimeException 以及 RuntimeException的子类
2,Error:错误(严重的问题)
比如:OutOfMemoryError:超出内存错误
如果程序出现了错误,只能改代码
处理异常的方式:
1.不处理:再次声明抛出
throw:动词,真正的抛出一个异常对象
throws:形容词,用来形容方法,表示某一个方法 可能抛出xx异常,要求调用者去处理它
格式:
public 返回值类型 方法名(参数)throws xxxException{
}
2.捕获处理
try{
可能出现异常的代码
}catch(Exception e){
//处理异常
}finally{
//写上必须要执行的代码
//释放资源的代码
}
常见异常:
1.RuntimeException
2.ClassCastException:类型转换异常 (向下转型的时候)
3.ArrayIndexOutOfBoundsException:数组下标越界
4.StringIndexOutOfBoundsException:字符串下标越界
5.NullPointerException:空指针异常