我需要一个建议(在java和.net中)以获取以下代码。
public void method(bool value)
{
String someString;
//some code
if (value)
{
//some code
...
someString = "one" + value;
}
else
{
//some code
...
someString = "two" + value;
}
}
哪一个是可取的,为什么?像上面的代码或像
这样的代码someString = "onetrue";
someString = "twofalse";
答案 0 :(得分:1)
在JDK编译和优化之后,method
将如下所示:
public static String method(boolean value) {
String someString;
if (value) {
StringBuilder sb = new StringBuilder();
sb.append("one");
sb.append(value);
someString = sb.toString();
} else {
StringBuilder sb = new StringBuilder();
sb.append("two");
sb.append(value);
someString = sb.toString();
}
return someString;
}
如果非常频繁地调用此代码,则与第二个版本相比,它可能会对性能产生影响。在每种情况下,都会构造一个新的StringBuilder,并在其上调用三个方法。在调用append
之前,应将boolean转换为对象。在第二个版本中,我们只返回常量。一切都取决于调用此代码的频率。
答案 1 :(得分:0)
两者都没有任何区别,纯粹的风格。
因为你有// some other code
我只是坚持第一个。如果你在每个分支中只有一行,那么两者都可以。
答案 2 :(得分:0)
在较高的水平,它们都是相同的,但如果你低头看下面的水平,我会建议使用这个方法:
someString = "onetrue";
someString = "twofalse";
这是因为当你执行“one”+值时,该值实际上是一个bool,并且将调用bool对象的toString()
方法来添加到字符串中。基本上只是添加另一个步骤,而不是只指定要添加到字符串的内容。