我的代码:
class TestStringConcatenation{
public static void main(String args[]){
String s1="Sachin ";
String s2="Tendulkar";
String s3=s1.concat(s2);
String s4=s1.concat(s2);
System.out.println(s4==s3);
}
}
输出:
false
concat函数是否未将String对象保存在字符串常量池中?
concat函数是否未将String对象保存在字符串常量池中?
没有将其存储在intern池中,不。 (constant pool是另一回事。)只有字符串常量会自动插入。如果要插入其他任何字符串,则必须通过调用intern
显式地进行。
由于String
是一个不可变的类,所以对字符串对象执行的任何应该返回字符串的操作都将返回一个新对象。检查https://docs.oracle.com/javase/9/docs/api/java/lang/String.html以获取更多信息。如果要检查两个String对象中内容的相等性,则应根据需要使用equals
或equalsIgnoreCase
。注意,==
检查对象的引用是否相等;而不是对象的内容,即==
仅检查左侧和右侧的变量是否引用相同的对象或不同的对象。