任何一个类默认继承Object。就算没有直接继承,最终也会间接继承。
什么是API?
应用程序编程接口。整个jdk的类库就是一个JavaSE的API。
每个API都会配置一套API帮助文档。
toString()方法
toString()方法的默认实现是:类名@对象的内存地址转换为十六进制的形式。
toString()方法的作用是通过调用这个方法可以将一个Java对象转换成字符串形式。
public class ToStringTest {
public static void main(String[] args) {
Mydate mydate = new Mydate(2021, 8, 9);
System.out.println(mydate.toString());//Mydate@776ec8df
System.out.println(mydate.toSting());//2021年8月9日
}
}
class Mydate {
int year;
int month;
int day;
public Mydate() {
}
public Mydate(int year, int month, int day) {
this.year = year;
this.month = month;
this.day = day;
}
//重写toString()方法
public String toSting() {
return this.year + "年" + this.month + "月" + this.day + "日";
}
}
equals()方法
通过equals()方法来判断两个对象是否相等。
public class EqualsTest {
public static void main(String[] args) {
//判断两个基本数据类型的数据是否相等直接使用"=="。
int a = 10;
int b = 100;
System.out.println(a == b);//false
Studet stu1 = new Studet(10);
Studet stu2 = new Studet(10);
//这里的”==“判断的是stu1和stu2保存的对象的内存地址是否相等
System.out.println(stu1 == stu2);//false
//equals()方法默认采用”==“判断两个Java对象是否相等
//System.out.println(stu1.equals(stu2));false
//重写equals()后调用
System.out.println(stu1.equals(stu2));//true
}
}
class Studet {
int no;
public Studet(int no) {
this.no = no;
}
//重写equals方法
public boolean equals(Object obj) {
int no1 = this.no;
if (obj instanceof Studet) {
Studet stu = (Studet) obj;
int no2 = stu.no;
if (no1 == no2) {
return true;
}
}
return false;
}
}
String类已经重写equals()方法,比较两个字符串不能用"=="。必须使用equals。equals是通用的。
public class Test02 {
public static void main(String[] args) {
String str1 = new String("hello");
String str2 = new String("hello");
System.out.println(str1 == str2);//false
System.out.println(str1.equals(str2));//true
}
}
String类已经重写了toString方法
String str = "张三";
System.out.println(str.toString());//张三
总结:
Java中基本数据类型比较是否相等,使用”==“。
Java中所有的引用数据类型统一使用equals方法来判断是否相等。
finalize()方法
finalize()方法只有一个方法体,里面没有代码,而且这个方法是protected修饰的。
这个方法不需要手动调用。JVM的垃圾回收器负责调用这个方法。
finalize()方法的执行时机:
当一个Java对象即将被垃圾回收器回收的时候,垃圾回收器负责调用finalize()方法。
hashCode()方法
获取对象哈希值的一个方法。