是否有理由为String的长度创建变量而不是使用length()Java

时间:2016-08-22 20:53:21

标签: java string variables string-length

我在CodeBat上练习Java。当我看到其他人的解决方案时,他们会为字符串的长度创建一个变量。我只是想知道创建变量是否有任何好处。

例如我写道:

 for (int i = 1; i < str.length() - 1; i++) {
     if (str.charAt(i) == '*'  && str.charAt(i - 1) != str.charAt(i + 1)) {
         return false;
     }
 }

其他人会写:

 int len = str.length();
 for (int i = 1; i < len - 1; i++) {
     if (str.charAt(i) == '*'  && str.charAt(i - 1) != str.charAt(i + 1)) {
         return false;
     }
 }

4 个答案:

答案 0 :(得分:3)

除了个人偏好之外绝对没有区别:

  1. String在Java中是不可变的,因此长度永远不会改变。
  2. JIT编译器非常智能,可以将length()调用优化为简单的变量读取,因此不会有性能损失。

答案 1 :(得分:0)

这两种方法都是合适的,但在需要再次使用长度的情况下,第二种方法更为可取。

答案 2 :(得分:0)

不,没有。 java字符串的长度为O(1),因为java的字符串类将长度存储为字段。所以最后它只不过是读变量。因此,如果您使用.length()

,则不会出现性能问题

来自JDK 1.6的.length()代码是:

public int length() {
    return count;
}

即使删除对方法的调用确实可以被视为优化,JIT也可能会动态地执行它。

也许在您看到的解决方案中,人们正在编写代码,因为它们用于编码c。

答案 3 :(得分:0)

您的回答取决于您拨打String.length()功能的次数和次数。出于可读性目的。 如果您计划仅使用该值一次,则不需要创建用于存储值的变量。否则,如果您需要多次使用该值,则每次使用局部变量而不是调用String.length()会更有效。

最终,这可以追溯到个人偏好。