java中两个字符串比较应该如何理解(equals和==的真值如何确定)
==比较地址,equals是比较值
name1.equals(name2) 返回 true,因为它们的内容相同。
name1.equals(name3.trim()) 返回 false ,因为 name3 中有空格
name1 == name2 返回 false,因为它们是两个不同的对象
name1 == name3返回false,因为它们是两个不同的对象
name3 == name4 返回 true,因为它们都是指向字符串常量池中的同一个对象
equals是比较字符串的内容。
==是比较两个对象的地址。
两个内容一样,创建方式不同的字符串,可能结果是:equals为ture,==为false。
比如以下代码:
String s1 = new String("abc");
String s2 = "abc";
String s3 = "a" + "b" + "c"; //编译器会优化为"abc"
System.out.println(s1==s2); //false
System.out.println(s2==s3); //true,常量池中的"abc"
System.out.println(s1.equals(s2) && s1.equals(s3)); //true
在Java中,字符串比较有两种方式:equals和==。
equals是字符串类的方法,用于比较两个字符串的内容是否相同。例如:
String str1 = "hello";
String str2 = "hello";
if(str1.equals(str2)){
System.out.println("str1和str2的内容相同");
}
==是Java中的运算符,用于比较两个字符串是否是同一个对象。例如:
String str1 = "hello";
String str2 = "hello";
if(str1 == str2){
System.out.println("str1和str2是同一个对象");
}
需要注意的是,如果使用new关键字创建字符串对象,则无论是equals还是==都会比较其在内存中的地址。
例如:
String str1 = new String("hello");
String str2 = new String("hello");
if(str1.equals(str2)){
System.out.println("str1和str2的内容相同");
}
if(str1 == str2){
System.out.println("str1和str2是同一个对象");
}
上述代码中,虽然str1和str2的内容相同,但是它们不是同一个对象,因此第二个判断语句不成立。
综上所述,equals比较的是两个字符串的内容,==比较的是两个字符串是否是同一个对象。