java中的equals方法
java中的equals常常用来对字符串相等进行判断。那么equals方法和==有什么区别呢?
先来看下代码:
package LaboratoryReport;
public class TestEquals {
public static void main(String[] args) {
// TODO Auto-generated method stub
String a="tt";
String b="tt";
System.out.println(a==b); //true
System.out.println(a.equals(b)); //true
String a1=new String("tt");
String a2=new String("tt");
System.out.println(a1==a2); //false
System.out.println(a1.equals(a2)); //true
String b1=new String("tt");
String b2="tt";
System.out.println(b1==b2); //false
System.out.println(b1.equals(b2)); //true
}
}
两个==判断:
new之后的string两个值相等的字符串是不相等的。因为new的对象指向堆区的tt。另一个指向堆区的另一个tt。
而没有new的string对象是相等的。因为他们都指向方法区常量池的tt。
而一个new的对象的一个没new的对象更不会相等。
equals判断:
string类的对equals方法进行重写。只要值相等,就会返回true;
扩展:有时候我们需要对类的equals方法重写。比如我们只根据学生类的学号判断是否是一个人,这时候就需要重写equals方
法。其实本来的equals是需要对存的地址进行判断的。只是java中的string,integer类等对equals进行了重写。这样只要数值相等
就会相等。