为什么使用concat函数创建的2个字符串,并且相同的字符串具有不同的对象引用?

问题描述 投票:-2回答:1

我的代码:

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对象保存在字符串常量池中?

java string concat
1个回答
4
投票

concat函数是否未将String对象保存在字符串常量池中?

没有将其存储在intern池中,不。 (constant pool是另一回事。)只有字符串常量会自动插入。如果要插入其他任何字符串,则必须通过调用intern显式地进行。


-1
投票

由于String是一个不可变的类,所以对字符串对象执行的任何应该返回字符串的操作都将返回一个新对象。检查https://docs.oracle.com/javase/9/docs/api/java/lang/String.html以获取更多信息。如果要检查两个String对象中内容的相等性,则应根据需要使用equalsequalsIgnoreCase。注意,==检查对象的引用是否相等;而不是对象的内容,即==仅检查左侧和右侧的变量是否引用相同的对象或不同的对象。

© www.soinside.com 2019 - 2024. All rights reserved.