gpt4 book ai didi

java - 字符串方法 -​​ 数组还是不数组?

转载 作者:行者123 更新时间:2023-11-30 08:02:46 25 4
gpt4 key购买 nike

当要对String进行计算时,将它们转换为char数组然后对其进行处理是否更好?那么所有 String 问题实际上都是数组问题?

例如,就性能而言,什么是更好的方法?有什么优点/缺点?

public static String repeatEnd1(String str, int n) {
StringBuilder sb = new StringBuilder();
if (n <= str.length()) {
String lastChars = str.substring(str.length() - n);
for (int i = 0; i < n; i++) {
sb.append(lastChars);
}
}
return sb.toString();
}

public static String repeatEnd2(String str, int n) {
if (n > str.length()) {
return str;
}
char[] chars = str.toCharArray();
char[] lastN = Arrays.copyOfRange(chars, chars.length - n, chars.length);
char[] nLastN = new char[n * n];
int i = 0, j = 0;
while (i < nLastN.length) {
if (j > n - 1) {
j = 0;
}
nLastN[i++] = lastN[j++];
}
return String.valueOf(nLastN);
}

最佳答案

subString() 在内部创建一个新的 String,它使用 Arrays.copyOf() (再次使用 System.arrayCopy() 来复制数组。

话虽这么说,JIT 提供了自己的内在arrayCopy() 实现,因此您的Arrays.copyOf 可能会被替换。

从概念上讲,第二个选项应该比第一个选项更快,因为它只处理原始类型(数组可以包含在此类别下,尽管它们不完全是原始类型)。

如果您正在使用同步,那么使用字符串会更好,因为 JIT 会删除字符串上不需要的同步,因为它们是不可变的。

关于java - 字符串方法 -​​ 数组还是不数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31640360/

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