[英]Performance comparison of charAt() method of String vs StringBuilder in Java
我知道StringBuilder在涉及需要某種變異的操作時比String更快。 但是,如果我只想訪問特定字符而不需要其他操作,那么兩者的charAt()
方法之間是否存在性能差異?
作為一個簡單的例子,如果我需要打印字符串的替代字符,從第一個字符開始,有沒有什么首選的方法來做到這一點,下面給出的兩個?
// 1
String dummyStr = "fhweyxnqwiynfgHINYUIYIOhuiw12341dfs";
for (int i = 0; i < dummyStr.length(); i += 2) {
System.out.print(dummyStr.charAt(i));
}
// 2
StringBuilder dummySb = new StringBuilder(dummyStr);
for (int i = 0; i < dummySb.length(); i += 2) {
System.out.print(dummySb.charAt(i));
}
此外,以這種方式(使用char[]
)這樣做有什么好處/缺點嗎?
// 3
char[] dummyArr = dummyStr.toCharArray();
for (int i = 0; i < dummyArr.length; i += 2) {
System.out.print(dummyArr[i]);
}
請注意:
對於這個問題,我只關心時間方面的性能,而不關心使用的額外內存。 此外, System.out.print()
只是用於本示例的占位符操作。
String
和StringBuilder
都由數組支持, charAt()
獲取指定索引處的值。
由於String
是不可變的,它必須在返回數組之前制作一個防御性副本。 所以它有一些額外的開銷。 但是 imo,這只會對於非常大的字符串或將許多字符串重復轉換為數組來說是一個問題。 這完全取決於您如何使用它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.