I learned字符串文字并不总是被垃圾收集,所以我想知道这两个代码示例在性能方面是否具有可比性?
length()只返回String的内部字符数组的大小,因此只要不新创建String,就不需要计算。
// example 1
private static final int BAR_LENGTH = "bar".length();
public int foo() {
return BAR_LENGTH;
}
// example 2
public int foo() {
return "bar".length();
}
答案 0 :(得分:3)
字符串文字保存在字符串池中。因此,在上述两种情况下,都不会重新创建字符串,它将从池中获取。因此,性能没有差异。
答案 1 :(得分:2)
我认为这不会有任何区别。
这是length
(Here's the JavaDoc)类String
方法的实现方式:
public int length()
{
return this.value.length;
}
基本上,它会返回包含字符串字符的数组value
(定义为private final char[] value;
)的长度。而length
本身就是数组的属性。