==”与equals的区别(以String类型为例):
“==”作为关系运算符,它存在两种情况,第一:当运算符两边的表达式是通过类型new对象new出来的,它是在比较两边对象的地址。此时,“==”判断值是否相等就会变的不准确。第二:当运算符两边的表达式不是通过类型new对象new出来的,它一般存在于字符串常量池中,此时使用“==”比较的是两个对象的值。
.equals是引用类型的一个方法,他不理会两个对象的内存地址,只是简单的比较两个对象的值是否相同。
// 代码实例
// "=="关系运算符
String str1 = new String("hello_world");
String str2 = "hello_world";
String str3 = "hello_world";
System.out.println(str1==str2);// false
System.out.println(str2==str3);// true
// .equals方法
String str4 = new String("hello_world");
String str5 = "hello_world";
String str6 = "hello_world";
System.out.println(str4.equals(str5));// true
System.out.println(str5.equals(str6));// true