为什么以下java代码给出了答案:
不等于
相等。
代码:
String a=new String("abc");
String b=new String("abc");
String c="abc";
String d="abc";
if(a==b){
System.out.println("equal");
}else{
System.out.println("not equal");
}
if(c==d){
System.out.println("equal");
}else{
System.out.println("not equal");
}
我很困惑这两个陈述的方式是什么
String a=new String("abc");
String c="abc";
有何不同?
简单来说,两个作业之间的区别是什么?
任何帮助将不胜感激
感谢
答案 0 :(得分:3)
当您使用字符串文字直接初始化字符串变量时,Java将intern the Java literal string,以便两个字符串变量引用相同的实际字符串对象。
使用new
运算符时,即使新字符串的内容与字符串文字相同,也会获得不同的对象。
正如已经多次指出的那样,==
运算符会比较对象引用以查看它们是否指向同一个对象,并且不会比较字符串内容。
答案 1 :(得分:2)
不要使用==
来比较字符串;使用equals()
方法。
if(a.equals(b)) {
System.out.println("equal");
}else{
System.out.println("not equal");
}
答案 2 :(得分:1)
分配字符串文字将使用字符串池(因此是相等的引用),new
字符串将始终创建一个新实例,从而产生不同的对象。