==
对于基本类型和引用类型 == 的作用效果是不同的
基本类型:比较的是值是否相同;
引用类型:比较的是引用是否相同;
equals比较值是否相同,对于String类型会进行转换。
例子:
package test.java;
public class compony {
static String name;
int age;
public compony(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
// Object c1=new compony("wang");
// Object c2=new compony("wang");
String t="wang";
String t1="wang";
String t2=new String("wang");
System.out.println(t==t2);
System.out.println(t==t1);
System.out.println(t.equals(t2));
}
}
false
true
true
来从String类型的 equals函数入手看一下:
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;
}