java - 是否为简单的getter初始化一个临时变量?

Joh*_* T. 2 java variables optimization performance

关于Java性能的一个非常不重​​要的问题,但它让我今天感到疑惑.

说我有简单的吸气剂:

public Object getSomething() {
     return this.member;
}
Run Code Online (Sandbox Code Playgroud)

现在,假设我需要在某些函数/算法中使用getSomething()两次(或更多)的结果.我的问题:调用getSomething()两次(或更多)或者声明一个临时的局部变量并从那时起使用这个变量有什么不同吗?

也就是说

public void algo() {
    Object o = getSomething();

    ... use o ...
}
Run Code Online (Sandbox Code Playgroud)

要么

public void algo() {
    ... call getSomething() multiple times ...
}
Run Code Online (Sandbox Code Playgroud)

我倾向于混合两种选择,没有特别的原因.我知道这没关系,但我只是想知道.

谢谢!

Ole*_*ksi 6

从技术上讲,不多次调用该方法会更快,但情况可能并非总是如此.JVM可能会优化方法调用以使其内联,您根本不会看到差异.无论如何,差异可以忽略不计.

但是,总是使用吸气剂可能更安全.如果州的价值在您的通话之间发生变化怎么办?如果要使用一致版本,则可以保存第一次调用的值.否则,您可能希望始终使用getter.

在任何情况下,您都不应该根据性能做出这个决定,因为它可以忽略不计.我会选择一个并坚持下去.我建议总是通过你的getter/setter.