我想知道以下哪项是最有效的?
int x = 1, y = 2;
System.out.print(x+y)
...或
int x = 1, y = 2, z = 3;
System.out.print(z);
我猜它是第一个,但不确定 - 谢谢。
答案 0 :(得分:5)
真正的答案是:在这样的水平上谈论效率根本不会产生任何感觉。
请记住,Java程序的整体性能和效率取决于许多因素 - 例如JIT何时/如何启动以便将字节代码转换为机器代码。
担心这些微妙之处并不能帮助你创造一个有意义的,可维护的,良好的OO"设计。哎呀;在你的情况下,根据上下文,甚至可能是编译器常量折叠并将你的整个事物变成 println(3)(因为它真的很直接抛弃那些变量);所以在这两种情况下,编译器都可以创建完全相同的字节码。
不要误解我的意思:要求/学习/理解编译器,JVM和JIT的作用是公平的。但是:不要以为你可以轻松地将事物归类为"比B"更有效。
答案 1 :(得分:1)
如果你的确意味着你已经提供了类似的所有文字值,那么根本不存在差异,至少在你的代码是JIT编译之后不存在。在任何一种情况下,您都将在运行时完成零计算。 JIT编译器将计算结果并将其硬编码到其所有使用站点中。涉及的优化技术是常量传播和常量折叠。
答案 2 :(得分:-4)
这将是第二个选项,因为您不需要任何内存进行计算。您只需打印一个数字,而不是将它们添加到一起而不是打印。
这是一个简单的例子,因此在这个级别上表现并不明显。
良好做法是将任务适当地分配给不同的职能。