gpt4 book ai didi

java - 这是创建 12 个字符串对象吗?

转载 作者:行者123 更新时间:2023-12-02 00:14:13 25 4
gpt4 key购买 nike

我试图了解下面的代码是否为“stephan”这样的字符串创建 12 个对象

public String reverse(String str) {
if ((null == str) || (str.length() <= 1)) {
return str;
}
return reverse(str.substring(1)) + str.charAt(0);
}

这会递归地反转字符串。我明白它是如何运作的。但我在想在这种情况下,字符串的长度和通过连接创建的字符串对象的数量之间是否存在关系?

最佳答案

是的,它将创建大量的字符串对象。

每次递归调用“reverse()”都会创建 2:

  1. str.substring(1) 将创建一个新的 String 对象

  2. reverse() 调用将为它的返回值创建一个新字符串,但我们不会计算它,因为在分析递归调用时会计算它(例如,它将是来自项目符号的字符串)来自下一个 reverse() 调用的点 #3)。

  3. 自从 Java 字符串 are immutable ,通过“+”添加一个字符将创建一个第二个 String 对象。

因此,对于长度为 N 的字符串,它将创建 (N-1)*2 个对象(因为 1 字符字符串的反转不会创建新字符串); 因此,对于“stephan”的 7 个字符,它将创建 6*2=12 个字符串对象。

关于java - 这是创建 12 个字符串对象吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12169355/

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