Java的对象Java数据类型的比较简单类型的比较引用类型比较
Java的对象
如果没有”对象“,那就new一个。这个说的就是Java对象的创建。Java语言是一种面向对象的语言。都是以类为模板,对象作为数据处理。对象有属性和行为。行为在java中用方法来描述。
Java数据类型的比较
怎么来比较两个对象呢。哪怕是同一个类,它创建出来的两个对象都可能不是同一个对象。当然,单例模式创建的对象就只有一个对象,也就是无论怎么创建都是同一个对象展示出来的。
简单类型的比较
如果是简单数据类型,我们用”==“来比较。如果两个类型的值相等即返回true,否则返回false。
引用类型比较
引用类型也就是我们说的对象的比较。
-
”==“比较
对象比较可以用”==“,也可以用”equals“。
用”==“来比较引用类型时。如果两个变量指向同一个对象时才返回ture。也就是两个变量指向同一个地址时,返回true。 -
”equals()“比较
equals()方法来自于Object类。而所有的类都继承于Object。在Java的API中很多类都重写了equals();
我们经常用到的equals()是String的。然后就看看String的相关源码吧。下面是我对String的equals()的理解:
public boolean equals(Object anObject) {
// 先判断两个对象是不是同一个,如果是返回true
if (this == anObject) {
return true;
}
/*当两个对象不是同一个时, 判断传入的对象是不是String,
*如果不是,那就返回true
*
*/
if (anObject instanceof String) {
//如果传入的对象是String。先强制转换成String
String anotherString = (String) anObject;
//获取该字符串的长度
int n = length();
//判断传入字符串长度和该字符串的长度是否相等
if (n == anotherString.length()) {
//如果相等,就每个字符字符的判断,一旦有一个字符不同就返回false
int i = 0;
while (n-- != 0) {
if (charAt(i) != anotherString.charAt(i))
return false;
i++;
}
return true;
}
}
return false;
}
在Integer中的equals()则是直接对数值做了”==“的比较:
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}