String:
代码如下:
public static void main(String[] args) {
String str1="abc";
String str2="abc";
String str3=new String("abc");
String str4=new String("abc");
System.out.println(str1==str2);
System.out.println(str3==str4);
System.out.println(str1==str3);
}
运行结果:
true
false
false
String是一个特殊的类,既可以用=赋值也可以用new赋值;
==比较引用类型时,比较的是虚地址。
当使用=赋值时,相同内容的字符串本质是同一个对象,虚地址相同。
而new赋值时,每次创建一个新的对象,返回一个新的地址。
equals:
public static void main(String[] args) {
String str1="abc";
String str2="abc";
String str3=new String("abc");
String str4=new String("abc");
System.out.println(str1.equals(str2));
System.out.println(str3.equals(str4));
System.out.println(str1.equals(str3));
}
}
运行结果:
true
true
true
equals()方法是在Object类定义比较的,java API中的类都是默认有该方法,默认情况下比较的是两个对象的虚地址。但是很多类对其进行了覆盖。String类就将equals方法进行了覆盖,修改为比较两个字符串的序列,只要字符序列相同的字符串,就返回true。