java中的数据类型,可分为两类:
1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean
他们之间的比较,应用双等号(==),比较的是他们的值。
基本数据类型比较(string 除外), == 和 Equals 两者都是比较值;
2.复合数据类型(类)
当他们用(==)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。
java中Integer中的equals方法,可以看到,他是转化为int再进行判断和比较的
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
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;
}
3.重写equals方法
public class Person {
public String name;
public int age;
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//@Override
// public boolean equals(Object obj) {
//
// return false;
//
// }
}
//该方法仅仅判断的是对象地址是否相同,对于两个new出的对象,其默认返回false
public boolean equals(Object obj) {
return (this == obj);
}