在java面试中,和equals的相互比较是经常被问到的一个关于java基础的问题,今天通过查阅各方资料,终于弄清楚了这两个比较的区别
先来一番理论的介绍:
对于""来说:
当比较的是基本类型的变量时,比较的是值是否相等;
当比较的是引用类型的变量时,比较的是变量的内存地址
对于"equals"来说:
比较的是内容是否相等
下面来举例说明:
**public class TestEquals {
public static void main(String[] args) {
//string是作为基本类型使用的
String A="aa";
String B="aa";
System.out.println(A==B);
//邪恶的分割线-----------------------------------------
//比较的是对象的内存地址
String str1 =new String("aa");
String str2 =new String("aa");
System.out.println(str1==str2);
//邪恶的分割线-----------------------------------------
//两个对象的内存地址均指向s,所以是true
String s =new String("aa");
str1 =s;
str2 =s;
System.out.println(str1==str2);
//邪恶的分割线-----------------------------------------
//比较的是内容,为true
String str3 =new String("aa");
String str4 =new String("aa");
System.out.println(str3.equals(str4));
}
}**
打印结果为:
true
false
true
true