java里用==比较string和用equals方法比较string

时间:2021-09-29 16:05:28


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