我在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;
}
}
答案 0 :(得分:3)
除了个人偏好之外绝对没有区别:
String
在Java中是不可变的,因此长度永远不会改变。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()
会更有效。
最终,这可以追溯到个人偏好。