gpt4 book ai didi

java - java中的字符串对象和引用

转载 作者:行者123 更新时间:2023-12-02 07:01:37 26 4
gpt4 key购买 nike

String str = "Hello"+"World";
String str1 = str + "hello";

创建了多少个对象以及创建了多少个引用?

最佳答案

字符串是一个不可变的对象。每当您操作字符串时,JVM 都会(至少)创建一个新字符串并为其分配新的(连接的)值。

由于您没有指定您只关心 String 对象和引用,因此我们需要讨论 StringBuffers。 StringBuffers(除了 StringBuilders)是一个试图解决字符串不可变性质的类。我们都知道,很多时候我们只需要将两个或多个字符串添加在一起即可。

想象一下这段代码:

String sentence = "the " + "quick " + "brown " + "fox ";

通常,当发生这种情况时,Java 编译器不会创建这些字符串,而是一次一个地将它们添加在一起,然后忘记所有中间字符串。所发生的情况是创建了一个 StringBuffer。然后,使用 StringBuffer.append(String) 添加所有单个字符串,最后返回一个字符串。

您可以肯定地说,创建了 3 个字符串引用,引用内联(和池化)字符串“Hello”、“World”和“hello”。每个引用引用不同的字符串。如果第三个词也是“Hello”(大写 h),情况就会改变。

关于java - java中的字符串对象和引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16601990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com