java - 对于任何给定的输入,代码是否在内存中占用恒定的空间?

标签 java string memory

public static String switchString(String word, int i, int j) {
    StringBuilder newString = new StringBuilder();
    newString.append(word.substring(j, word.length()));
    newString.append(word.substring(i + 1, j));
    newString.append(word.substring(0, i + 1));
    return newString.toString();
}

对于给定的输入String和索引ij,代码应该执行如下操作:if word = “abcdef”i = 1j = 3。输出应该是:“defcab”。

假设该单词不是 null 并且 ij 没有越界,则代码可以正常工作。我想知道,对于任何给定长度的字符串,该程序是否通过这种方法在内存中占用恒定的空间。

最佳答案

在 Java 中,String 是不可变的。调用 substring 会生成一个新的 String

如果您的字符串单词的长度为n,则最终会生成总长度为n的子字符串。

无论StringBuilder的大小是恒定的。每个String 中存储的任何元数据也是不变的。改变的是字符串的长度。

因此,不,这种方法不使用常量空间,而是使用 n 空间。

关于java - 对于任何给定的输入,代码是否在内存中占用恒定的空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40075606/

相关文章:

java - 在没有硬编码参数的情况下调用构造函数(耦合)

java - 获取字符串的哈希值作为字符串

java - 可以将二维字符串数组转换为二维字符数组吗?

javascript - 搜索(正则表达式),获取匹配字符串的最后一个字符的位置

android - 清除 picasso 的缓存

c++ - `resize`减少 vector 容量会有风险吗?

c++ - 用 new 分配大块内存

java - 如何将 XSL 函数与 Xalan 一起使用?

java - 错误: Failed to resolve ExpandableLayout

python - 基本的字符串和变量python