声明和实例化局部变量还是全局变量



当我在本地创建并实例化一个变量时,每次调用该方法时都会创建并实例化它。这意味着,如果我调用该方法100次,变量将被创建和实例化100次。但它也确保了只有在需要时才创建和实例化变量。

public class ClassA {
public int generateRandom(int range) {
Random rand = new Random(); // creating and instantiating variable locally
return rand.nextInt(range);
}
}

我还可以全局创建变量,这样它只会被创建和实例化一次。全局变量也可以在不同的方法之间共享。但它会占用内存,直到类在范围内。

class ClassA {
Random rand = new Random(); // creating and instantiating variable globally
public int generateRandom(int range) {
return rand.nextInt(range);
}
}

创建和实例化是一个耗时的过程,但我们也必须考虑内存。然后是代码可读性、适应性和可维护性的概念。我的代码中可以有成千上万的变量
我想知道有哪些最佳实践,以及更喜欢哪一个:内存管理还是时间管理。

创建一个变量取决于您打算如何处理这个变量,以及您希望它在应用程序的生命周期中如何表现和生活。

方法中实例化的属性只会在方法执行期间存在,其范围和生命周期与方法绑定,一旦方法执行完成,属性就会被销毁,其背后的内存也会释放。如果你的属性只用于这一个特定的方法,那么好的方法是在该方法中实例化它。

现在,创建一个变量作为Class属性是不同的,您可以在类和该属性之间创建一个强依赖关系,并且它为您的类提供了一个";State";,这意味着,如果您考虑有一个ClassA实例,那么里面的rand属性将有一个特定的状态绑定到它,每次修改rand时都会对其进行修改。这一次,rand的生命周期与ClassA绑定。这里rand不是一个全局变量,它是一个类变量。

如果你想要一种带有全局变量的方法,可以考虑使用static字段,或者通过Spring等框架使用依赖注入,它允许你拥有所谓的";豆子";它是在所有应用程序中共享的变量的单个实例。

最新更新