object类是所有类的父类,这里定义了equals方法。可以看到里边用的是==也就是比较的两个对象的内存地址。object1.equals(object2)为true,则表示equals1和equals2实际上是引用同一个对象。
public boolean equals(Object obj) {
return (this == obj);
}
所以八种基本数据类型直接用==比较即可
对应的包装类(八种基本数据类型不面向对象,为了使用方便和解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八种基本数据类型对应的类统称为包装类)
byte --------->Byte
short---------->Short
int-------------->Integer
long------------>Long
float------------>Float
double---------->Double
boolean-------->Boolean
char------------->Character
八种基本数据类型:
来个例子:Integer里重写的equals方法(代码解释)。
public static void main(String[] args) {
Integer a=new Integer(1);
Integer b=new Integer(1);
//==实际的意思是比较地址,new出来两个对象,开辟出来两块地址,地址肯定不同,所以是false
System.out.println(a==b);
//包装类里的equals方法:判断是否实例化
//public boolean equals(Object obj) {
// if (obj instanceof Integer) {
// 将包装类obj转为int类型,判断value是否等于1。前后的value都是1,所以true
// return value == ((Integer)obj).intValue();
// }
// return false;
// }
System.out.println(a.equals(b));
}
Character里的equals方法:
public boolean equals(Object obj) {
if (obj instanceof Character) {
return value == ((Character)obj).charValue();
}
return false;
}
Boolean里的equals方法。
public boolean equals(Object obj) {
if (obj instanceof Boolean) {
return value == ((Boolean)obj).booleanValue();
}
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;
}
包装类与基本数据类型的相互转换
public static void main(String[] args) {
//int转Integer
int a=1;
Integer b=a;
//Integer转int
int d=b.intValue();
//char转Character
char e='a';
Character f=e;
//Character转char
char j=f.charValue();
Boolean h=true;
h.booleanValue();
Double s=1.242;
s.compareTo(s);
}
仔细看都有一个对应的方法,方法名字就是
基本数据类型Value();