相关疑难解决方法(0)

哪个循环有更好的性能?为什么?

String s = "";
for(i=0;i<....){
    s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)

要么

for(i=0;i<..){
    String s = some Assignment;
}
Run Code Online (Sandbox Code Playgroud)

我不需要再次在循环外使用's'了.第一个选项可能更好,因为每次都不会初始化新的String.然而,第二个将导致变量的范围限于循环本身.

编辑:回应Milhous的回答.将String分配给循环中的常量是没有意义的吗?不,这里'一些分配'意味着从迭代的列表中获得的变化值.

此外,问题不是因为我担心内存管理.只是想知道哪个更好.

java string performance garbage-collection

50
推荐指数
4
解决办法
8134
查看次数

PMD:DD/DU异常

我正在使用Eclipse PMD Plug-in (4.0.0.v20130510-1000)并且获得了很多违规行为:

Found 'DD'-anomaly for variable 'freq' (lines '187'-'189').
Found 'DU'-anomaly for variable 'freq' (lines '189'-'333').

这个 SO答案中,它说这些异常与分配从未读过的值有关.但是我在这种情况下得到了违规行为:

// here I get a DD anomaly
double freq = 0;
try {
  // here I get a DU anomaly
  freq = Double.parseDouble(getFrequencyTextField().getText());
} catch (final NumberFormatException e) {
  Log.e(e.getMessage());
}
if (freq < 10E6) doSomething();
Run Code Online (Sandbox Code Playgroud)

如果我删除初始化并freq = 0;catch块中添加一行,则DD异常消失,但我在两个分配上都得到DU异常.

现在我的问题是:我该如何应对?什么是PMD的首选解决方案?这个规则究竟试图阻止什么(即为什么这是不好的做法)?

java pmd

19
推荐指数
1
解决办法
3万
查看次数

标签 统计

java ×2

garbage-collection ×1

performance ×1

pmd ×1

string ×1