有俩种方式可用于对象间的比较,他们是” == “ 运算符与equals()方法。
”==“运算符用于比较俩个对象内存地址值是否相等,equals()方法用于比较俩个对象的内容是否一致。
例:
public class java_ex08 {
public static void main(String[] args){
String str1 = new String("java");
String str2 = new String("java");
if(str1 == str2){
System.out.println("str1 == str2 ");
}else{
System.out.println("str1 != str2 ");
}
}
}
结果:
str1 != str2
解析:
这是为什么呢?。这是因为new String("java")分别实例化了String类的俩个对象,
此时,这俩个对象指向不同的内存空间,所以他们的内存地址是不一样的。
这个时候程序是用”==“比较,比较的是内存地址值,所以输出str1 != str2
再来看下下面的例
public class java_ex08 {
public static void main(String[] args){
String str2 = new String("java");
String str3 = str2;
if(str2 == str3){
System.out.println("str2 == str3 ");
}else{
System.out.println("str1 != str2 ");
}
}
}
结果:
str2 == str3
解析:
str2的引用赋给了str3,这个时候就相当于str3也指向了str2的引用,此时,这俩个对象指向的是同一内存地址,所以比较结果是str2 == str3 。
下面比较下对象内容,使用equals()方法
例:
public class java_ex08 {
public static void main(String[] args){
String str1 = new String("java");
String str2 = new String("java");
if(str1.equals(str2)){
System.out.println("str1 equals str2 ");
}else{
System.out.println("str1 not equals str2 ");
}
}
}
结果:
str1 equals str2
例:
public class java_ex08 {
public static void main(String[] args){
String str2 = new String("java");
String str3 = str2;
if(str2.equals(str3)){
System.out.println("str2 equals str3 ");
}else{
System.out.println("str2 not equals str3 ");
}
}
结果:
str2 equals str3
解析:
所以比较对象内容时用equals。
调用equals()方法的是String类的对象,所以可以知道equals是String类中的方法。
在这里记住”==“是比较内存地址值得,”equals()“方法是比较内容的。