java直接字符串比字符串变量快?
final String string1 = "somestring1";
for (int i = 0; i < 30; i++) {
final String string2 = "somestring2";
if (string2.equals(string1)) { // Using variable
// do stuff
}
}
for (int i = 0; i < 30; i++) {
final String string2 = "somestring2";
if (string2.equals("somestring1")) { // Not using variable
// do stuff
}
}
他们中哪一个会更快
1)第一个将其保存为变量,并使用该变量,直到循环完成
2)第二个将每次生成一个新字符串,不是吗
这只是一个例子,在我的例子中,毫秒将非常重要
提前谢谢
# 1 楼答案
这两者都将是100%等效的。没有区别,甚至毫秒都没有
# 2 楼答案
最简单的方法是尝试看看会发生什么:
numOfTrials=10000
输出
JVM内部有一种缓存机制,如果已经有一个匹配的字符串对象,JVM将不会创建新的字符串对象,而是使用现有的字符串对象。有很多方法可以强制jvm创建新字符串,比如关键字“new”。如果你想更深入,你可能需要找到一篇文章并阅读它
numOfTrials=100万
输出:
numOfTrials=1亿
输出:
# 3 楼答案
第一个版本(如下所列)将执行得更快,因为它只创建一次字符串