目录
二、boolean equals(Object obj) 方法
一、String toString()方法
1、使用toString()方法都是需要重写的;
例如:System.out.println(); //此方法就是调用了toString()方法,只不过调用的方法已经被重写过了
重写例子:
public class demo1{
int A;
//重写toString方法
public String toString() {
return "demo1{" + "A=" + A + '}';
}
}二、boolean equals(Object obj) 方法
1、equals在Object中的源代码:
public boolean equals(Object o) {
return(this==o);
}2、使用equals方法的目的是比较两个对象是否相等,而用“==”比较对象,只是比较两个对象的内存地址,不能比较值是否相等;所以使用equals方法时也需要重写
例如:
import java.util.Objects;
public class demo1 {
int a;
public boolean equals(Object o) {
if (this == o) return true; //如果两个对象的地址相等返回true
if (o == null || getClass() != o.getClass()) return false;//如果对象等于null或者不是同类型对象返回false
demo1 demo1 = (demo1) o;
return a == demo1.a;
}
}注意:重写equals方法时要重写的彻底,
3、“==”和equals的区别:
“==”用来比较基本数据类型,equals用来比较引用数据类型;
三、protected void finalize()方法
1、finalize()的源代码:
protected void finalize() throws Throwable{
}2、finalize方法只能jvm中垃圾回收器调用,不需要程序员手动调用;
这段代码相当于是一个时机,当垃圾回收器调用方法的时候可以运行一次方法中的代码,比如输出垃圾回收器启动的时间等等;
例如:
protected void finalize() throws Throwable{
System.out.println(this+"已经被回收");
} //当垃圾回收器调用方法的时候就会输出“****已经被回收”
3、java中垃圾回收器不是有垃圾就会回收,垃圾太少,或者时间没到,有可能启动,也有可能不启动;
例如:
public class demo {
public static void main(String[] args) {
p x=new p();
x=null; //垃圾太少大概率不会回收
}
}
class p{
protected void finalize() throws Throwable{
System.out.println(this+"已经被回收");
}
}
public class demo {
public static void main(String[] args) {
for(int i=0;i<100000000;i++){ //用循环制造更多的垃圾
p x=new p();
x=null;
}
//垃圾回收器就会被调用
}
}
class p{
protected void finalize() throws Throwable{
System.out.println(this+"已经被回收");
}
}
建议垃圾回收的代码
p x=new p();
x=null;
System.gc();//这段代码是建议垃圾回收
//垃圾回收器有大概率会执行,可能启动, 也可能不启动四、int hashCode()方法
1、源代码:
public native int hashCode()2、方法返回值是哈希码,哈希码就是对象的内存地址经过哈希算法,得到的一个值,
使用例子:
public class demo1 { public static void main(String[] args) { A a=new A(); int code=a.hashCode(); System.out.println(code);//输出1324119927 } } class A{ }
版权声明:本文为qq_39140680原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。