gpt4 book ai didi

java - 在 Java 中使用静态变量的优点

转载 作者:搜寻专家 更新时间:2023-11-01 04:00:20 25 4
gpt4 key购买 nike

假设我有两个这样的类:

class A{  
private static Random random = new Random();

public A(){
// Do something.
}

public Integer methodGetsCalledQuiteOften(){
return random.nextInt();
}
}

class B{
private Random random;

public A(){
random = new Random();
// Do something.
}

public Integer methodGetsCalledQuiteOften(){
return random.nextInt();
}
}

在它们都被多次实例化并且这两个类的实例方法 methodGetsCalledQuiteOften 被调用很多的情况下,是否有任何真正的优势/劣势(时间,内存)在类 A 中使用保存 Random() 的静态变量,而不是像在类中那样在每个实例中创建一个新的 Random() 对象乙?

该应用程序是多线程的并且具有更高级别的随机性,因此我认为我将使用静态 SecureRandom。如果在分析后这将是一个真正的速度因素,我可能会选择其他东西。

最佳答案

真正的优势/劣势取决于真正的代码。换句话说,这取决于创建 B 的频率与调用该方法的频率等的比较。您应该分析您的应用程序并查看它是否产生了合理的差异。

A 会比 B 表现更好吗?当然。但是您是否会注意到取决于您的使用情况。 A 使用的内存会比 B 少吗?当然可以,但您是否关心取决于您保留了多少 A/B 实例。

真正唯一的其他考虑因素是确定性。由于您没有为 Random 实例指定种子,我认为您不关心是否可以从 Random 中重现数字序列。但值得注意的是......如果你有一个共享的 Random,那么与 B 中每个实例一个实例相比,为 A 的某个实例保证特定的确定性数字序列要困难得多。

关于java - 在 Java 中使用静态变量的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3816952/

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