java - 带或不带显式变量的多方法调用

标签 java

我认为这可能是过早优化问题或其他问题。

对于以下两个代码片段,

public void doSomething1(final int a) {
    final int b = a -1;
    doSomethingElse(b);
    doSomethingElse(b);
}

public void doSomething2(final int a) {
    doSomethingElse(a - 1);
    doSomethingElse(a - 1);
}

doSomething1 是否优于 doSomething2doSomething2 使用两个不同的 int 吗?

更新

也许我应该得到反对票。但是我有一个实际的代码,它像这样读取和写入可变长度位(不是字节)。

final int unsignedLength = length - 1;

return (((readBoolean() ? ~0 : 0) << (length - 1))
        | readUnsignedInt(length - 1));

我只是好奇用 unsignedLength 改变 (length - 1) 部分。

谢谢。

最佳答案

尝试在这个级别上进行优化通常是完全矫枉过正的,因为它对您的应用程序产生的影响非常小。 doSomething1 应该是更有效的一个,因为它不需要计算 a - 1 两次。然而,这种事情可能会被编译器优化。

不管你应该选择 doSomething1,因为它更容易维护,即使它有更多的代码,也只有一个地方在计算 a - 1。这样就不太可能出错。

关于java - 带或不带显式变量的多方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16454411/

相关文章:

java - 为什么在 Java 中从容器类而不是它的实例调用方法

java - 如何在spring sts中获取spring boot web项目的默认结构?

java - 使用 opencsv 读取远程 .csv 文件

java - IntelliJ 插件调用重命名重构

java - 在 CardLayout 中重绘字符串

java.lang.ClassCastException : java. lang.String 无法转换为 java.util.Vector

java - 如何从 URL 调用 JAX-WS 方法

java - 如何从 WEB-INF 加载 'mini' spring 上下文以初始化真实的应用程序上下文

java - Websphere + Tomcat : CertificateException

java - 重写 paintComponent 两次