java中的字符串表现不同

如果是字符串文字:-


String s = "happ"


s = s.concat("y")  //line1


芜湖不芜
浏览 133回答 2
2回答

斯蒂芬大帝

在你的第一个例子中:  String s = "happ";   s = s.concat("y");当这些语句被执行1 时,字符串池中已经创建了String对象来表示(分别)文字和文字。 "happ""y"第二条语句的执行创建了一个String表示字符串的新对象"happy"。此对象不在字符串池中。我想特别澄清这个疑问,当对来自池和堆的字符串进行操作时,字符串将 concat 方法的结果存储在何处。它是在堆2 中创建的,而不是在字符串池中。具体来说。StringAPI 中在字符串池中创建对象的唯一方法是String.intern(). (这包括构造函数。)1 - 请注意我在这里仔细选择的词。如果是第一次执行语句,则字符串池中对象的创建可能是在语句执行过程中发生的。或者它可能以前发生过。确切的时间是特定于实现的。但是,JLS 保证对于相同的文字不会发生多次。2 - 请注意,对于现代 HotSpot JVM,字符串池位于常规堆中。它不是一个单独的空间。字符串池实际上只是一个(JVM 私有的)数据结构。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java