我有以下 java 方法,是为 android 应用程序编写的。
private String removeWifiFudge(String message, String removedFudge)
{
int find1 = 255; //FF
int find2 = 0; //00
int find3 = 204; //CC
int find4 = 36; //24
char[] charMessage = message.toCharArray();
boolean find1True = false;
for (char eachCharacter : charMessage)
{
if (find1True)
{
if ((int) eachCharacter == find2)
{
removedFudge = removedFudge + String.valueOf((char)find1);
}
else
{
if ((int) eachCharacter == find3)
{
removedFudge = removedFudge + String.valueOf((char)find4);
}
else
{
removedFudge = removedFudge + String.valueOf((char)find1);
removedFudge = removedFudge + String.valueOf(eachCharacter);
}
}
find1True = false;
}
else
{
if ((int) eachCharacter == find1)
{
find1True = true;
}
else
{
removedFudge = removedFudge + String.valueOf(eachCharacter);
}
}
}
return removedFudge;
}
简而言之,它接受一个字符串,消息,并逐个字符地搜索 0xFF00 和 0xFFCC 的实例。找到这些实例后,它分别用 0xFF 和 0x24 替换它们,并将其放入新字符串 removedFudge 中。
此方法占用了大量的 CPU 时间,并且在使用 Eclipse、DDMS 中嵌入的 Java 分析器时,它告诉我该方法花费了 53% 的时间:
java/lang/StringBuilder. (Ljava/lang/String;)V
这似乎是说它占用了初始化字符串的时间,但是当我将已初始化的字符串传递给它以放入新消息时,我看不到初始化字符串来自哪里。
有 DDMS 方面的专家吗?
最佳答案
字符串连接会导致在运行时使用 StringBuilder,因此它会出现在您的分析器中。
关于java - DDMS java 分析器显示 : java/lang/StringBuilder. <init> - 它在我的代码中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12004029/