gpt4 book ai didi

java - 以非静态方式访问方法是否会影响/有益于性能?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:33:22 24 4
gpt4 key购买 nike

假设这里所有的方法调用都是静态的,像这样:

public class Util {
public static void method1() {
}
}

以静态方式访问:

Util.method1();
Util.method2();
Util.method3();

以非静态方式访问

Util util = new Util();
util.method1();
util.method2();
util.method3();

这两种方式在性能上有什么不同吗?我知道在这里做这件事的第一种方法是正确访问它。但是第二种方法只实例化 util 对象一次而不是三次。除了正确访问这些方法之外,我找不到任何指向任何东西的东西。据我所知,没有功能上的区别,而是逻辑上的区别。如果有人知道,请寻找任何一种方式的成本与 yield 。

最佳答案

Is there any performance difference for either way?

是的——第二个稍微慢一些,因为正在构建一个毫无意义的实例。

I know the first way of doing it here is accessing it properly. But the second way only instantiates the util object once as opposed to three times.

不,第二种方法创建一个 Util 实例,而第一种方法不创建任何实例。

第一种方法明显更好,因为它清楚地表明它是一个静态方法。考虑这段代码:

Thread t = new Thread(someRunnable);
t.start();
t.sleep(1000);

最后一次调用看起来像什么?它肯定会让新线程 hibernate ,对吧?不...它只是调用 Thread.sleep(),这只会让当前线程 hibernate 。

当您破坏静态方法调用以“通过”引用执行操作时,引用的值将被完全忽略——它甚至可以为空:

Util util = null;
util.method1(); // This will still work...

关于java - 以非静态方式访问方法是否会影响/有益于性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25537944/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com