我写了这段代码来比较String
和StringBuffer
。计数创建的字符串对象数
public static void main(String[] args) {
String inputText = "let us learn pig latin";
usingString(inputText);
usingStringBuffer(inputText);
}
public static void usingString(String input) {
String pigLatinText = new String();
input = input.trim();
String tokens[] = input.split(" ");
for (int i = 0; i < tokens.length; i++) {
String temp = tokens[i];
temp = temp.substring(1) + temp.charAt(0);
temp += "ay";
pigLatinText += temp+" ";
}
System.out.println("Using String :"+pigLatinText);
}
public static void usingStringBuffer(String input) {
String pigLatin = new String();
input = input.trim();
String tokens[] = input.split(" ");
for (int i = 0; i < tokens.length; i++) {
StringBuffer temp = new StringBuffer(tokens[i]);
temp.append(temp.charAt(0)).deleteCharAt(0);
temp.append("ay");
pigLatin += temp+" ";
}
System.out.println("Using String Buffer :"+pigLatin);
}
我知道String
+运营商内部使用StringBuilder
的append()
。它创建临时对象,因为它是不可变的。 我正在尝试以证明通过计算在使用String
时使用创建的对象的数量以及使用StringBuffer
时的对象数量。 使用静态变量来计算对象的数量不会帮助我,因为我无法修改String
类。我发现这个link。看起来很有希望。但我不知道如何修改Object.java
文件。 使用System.currentTimeInMillis()
前后并没有帮助,因为这个操作很小。 所以我的问题是
- 有没有什么办法来分析或比较这些类别的表现?
- 如何计算在程序中创建的String对象的数量?
Netbeans有一个'Profile'功能,可以让你看到创建了多少个String。 – DeadlyJesus 2015-02-05 14:11:39