我的代码看起来像:
class Main {
public static void main(String args[]){
String[] s1 = {"This ", "is ", "a ","sentence ", "."};
String sentence = Arrays.toString(s1);
System.out.println(sentence.substring(4, sentence.length()-1));
}
private static <T> String arrayToString(T[] t){
StringBuilder sb = new StringBuilder();
for(T val: t){
sb.append(val.toString());
}
}
}
我尝试在一行中执行以上操作:
System.out.println(arrayToString(s1).substring(
4, arrayToString(s1).length()));
我的问题是我多次调用arrayToString()方法以避免存储对计算值的引用。
答案 0 :(得分:2)
arrayToString
两次,而另一个,它更具可读性,因为我们现在知道arrayToString
正在返回某种类似“句子”的对象。使用该变量可以添加更多有用的上下文,并使代码更具可读性。答案 1 :(得分:1)
通常,在使用Java进行编码时,您应该认识到在更频繁地执行代码时,您的代码是实时编译的。自计算
arrayToString(s1).substring(4, arrayToString(s1).length())
是可预测的,你可以预期,一旦即时编译器启动,就应该解决性能损失,因为它会为你自己的计算创建一个缓存。这当然是对任何代码进行优化的过于乐观的假设,但对于Java,通常最好坚持编写可读代码而不要过多担心性能,代码抽象和性能之间的差距部分地被桥接所消除。 Java虚拟机。
通常,您可以使用我只能推荐的JIT watch等工具来监控已编译代码的性能。有时很难确定性能瓶颈,但根据我的经验,像你这样的代码永远不会导致糟糕的用户体验,因为它只是处理一个需要几个时钟周期的简单字符串,这甚至不足以ping数据库。就在您阅读本文时,我的手机可能已完成数十亿次计算。
总而言之,人们对性能的担忧太多了。编写可维护且可读的代码应始终是您的主要目标。