jdk类库的根类:object类
任何一个类默认继承object,没有直接继承也会有间接继承。
API:应用程序编程接口,整个JDK的类库就是一个javase的API。每个API都会配置一套API帮助文档。sun公司提前写好的类库就是API。
1.object类有哪些常用方法
protected Object clone() //负责对象克隆的
int hashCode() //获取对象哈希值的一个方法
boolean equals(Object obj)//判断两个对象是否相等
String toString() //将对象转换为字符串形式
protected void finalize() //垃圾回收器负责调用的方法
2.toString方法
以后所有类的toString方法都是要重写的
重写规则:越简单明了越好
sout(引用);这里会自动调用"引用"的toString()方法
3.equals方法
所有类的equal方法也要重写,因为ob中的equals方法比较的是内存地址,比较内容的话需要重写
基本数据类型用==
对象与对象用equals
string类是sun编写的,有与string类有关的equals方法已经重写过了
以后判断两个字符串是否相等,最好不要用==,用字符串对象的equals方法
equals方法要重写彻底,每个类都要
实例:
import java.util.Objects;
public class Test05 {
public static void main(String[] args) {
User user = new User("zhangsan",new Address("beijing","daxingqu","1111"));
User user1 = new User("zhangsan",new Address("beijing","daxingqu","1111"));
System.out.println(user.equals(user1));
}
}
class User{
//用户名与用户住址
String name;
Address addr;
public User(String name, Address addr) {
this.name = name;
this.addr = addr;
}
//重写equals方法,规则:当一个用户名和家庭住址相同时,视为同一个用户
//这个equals判断的是user与user是否相同,内容
/*
public boolean equals(Object object){
if(object == null || !(object instanceof User)) return false;
if (this == object) return true;
if ()
}
*/
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name) &&
Objects.equals(addr, user.addr);
}
}
class Address{
String city;
String street;
String zipcode;
//构造函数
public Address() {
}
public Address(String city, String street, String zipcode) {
this.city = city;
this.street = street;
this.zipcode = zipcode;
}
//重写equals方法
//因为也用了Address类来创建对象,所以这个类也要重写
//equals要重写彻底
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Address address = (Address) o;
return Objects.equals(city, address.city) &&
Objects.equals(street, address.street) &&
Objects.equals(zipcode, address.zipcode);
}
}