Java中的equals和==的区别以及几个常用的object中的方法简单的调试方法

一、equals

1、equals:是Object类中的方法,只能判断引用类型

2、默认判断的是地址是否相等(判断两个参数是否是同一个对象),子类中往往重写该方法,用于判断内容(值)是否相等

 

 

 

二、==

1、既可以判断基本类型,又可以判断引用类型。

2、如果判断基本类型,判断的是值是否相等。

3、如果判断的引用类型,判断的是地址是否相等,即判定是不是同一个对象

 

 

在Object.java类中equals的方法为:

public boolean equals(Object obj) {
return (this == obj);
}

***
object是所有类的父类,所以在使用equals判断时,最先调用的就是上面的这个方法,由于该方法
的内涵还是使用的“==”,直接判断对象地址是否相等,所以对于子类判断两个对象是否相等需要重写
该equals方法
例如string类中:

public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}


***

 三、hashCode方法

1)提高具有哈希结构的容器的效率!
2)两个引用,如果指向的是同一个对象,则哈希值肯定是一样的!

3)两个引用,如果指向的是不同对象,则哈希值是不一样的
4)哈希值主要根据地址号来的!,不能完全将哈希值等价于地址。
5)案例演示[HashCode .java]: obj.hashCode()[测试: A obj1 = new A); A obj2 = new A);A
obj3 = obj1]
6)后面在集合,中hashCode如果需要的话,也会重写

 四、toString方法:

1、默认返回:全类名+@+哈希值的十六进制。

public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}

2、重写toString方法,打印对象或拼接对象时,都会自动调用该对象的toString形式.

案例演示: Monster [name, job, sal]案例:ToString .java

3、当直接输出一个对象时,toString方法会被默认的调用(如果在类中,toString方法被重写了,只要输出该对象,那么toString会被直接调用)

五、finalize方法:

1.当对象被回收时,系统自动调用该对象的finalize方法。子类可以重写该方法,

做一些释放资源的操作
2.什么时候被回收:当某个对象没有任何引用时,则jvm就认为这个对象是一个垃
圾对象,就会使用垃圾回收机制来销毁该对象,在销毁该对象前,会先调用finalize方法。
3.垃圾回收机制的调用,是由系统来决定(有自己的GC算法),也可以通过System.gc)主动触发(运行垃圾回收器)垃圾
回收机制

 六、调试

1、F8:跳过,直接一行一行的执行代码

2、F7:跳入,可进行查看源代码;(小技巧:将光标放在某个变量上,可以看到最新的数据。)

3、shift+F8:跳出方法

4、F9:resume,执行到下一个断点。

 

posted @ 2021-07-02 12:06  代码红了一大片  阅读(406)  评论(0编辑  收藏  举报