存储字符串文字的长度是否会在性能方面产生影响?

时间:2016-07-18 14:01:08

标签: java string performance garbage-collection

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();
}

2 个答案:

答案 0 :(得分:3)

字符串文字保存在字符串池中。因此,在上述两种情况下,都不会重新创建字符串,它将从池中获取。因此,性能没有差异。

答案 1 :(得分:2)

我认为这不会有任何区别。

这是length (Here's the JavaDoc)String方法的实现方式:

  public int length()
  {
    return this.value.length;
  }

基本上,它会返回包含字符串字符的数组value(定义为private final char[] value;)的长度。而length本身就是数组的属性。