【发布时间】:2012-10-05 13:26:39
【问题描述】:
场景是我需要访问一个值至少两次。 IE。我正在使用记录器来跟踪应用程序中发生的事情。我想记录对象的名称,该函数正在运行,然后用相同的名称做一些事情(即检查它是否包含一些字符串或将其放入数组中)。
将名称存储在变量中:
foo(Bar bar){
String name = bar.getName();
logger.info("I am working with "+name);
this.doSomethingWith(name);
}
或者调用 getName() 两次:
foo(Bar bar){
logger.info("I am working with "+bar.getName());
this.doSomethingWith(bar.getName());
}
我明白,在第一个场景中,我将创建一个新字符串,为其分配一个值,然后检索该值两次。这样我使用了更多的内存资源,对吗?
在第二种情况下,我访问对象栏两次,然后访问它的名称两次。我想这不是 DRY 方法。但另一方面,我并没有在记忆中重复自己,对吗?
哪种方法更好?
【问题讨论】:
-
在第一种方法中,您不是创建一个新字符串。所以这两种方法应该以相同的内存消耗结束。
-
可能值得用反编译器检查生成的字节码,看看你的问题是否真的是一个问题;
javac可能会识别此用例并以一种或另一种方式对其进行优化,无论您以哪种方式使用 Java 编写它。
标签: java variables memory resources