使用静态方法/变量到底是什么时候?

时间:2014-04-23 05:12:54

标签: java methods static

我是Java的新手,我正在尝试理解静态变量和方法。有人能给我一个简要的解释,说明为什么我会在实例方法中使用静态方法,以及使用静态变量的理想情况是什么?我知道静态变量和方法是类的一部分,而不是所述类的一个实例,但是当我使用它时我很难理解。

谢谢!

3 个答案:

答案 0 :(得分:0)

这些是主要差异

1.静态变量在程序生命周期内只记忆1次 2.您可以调用静态变量或方法。不按类名创建该类的对象。
3.静态变量可以在静态和非静态上下文中调用。

主要是静态变量用于节省内存,因为每个对象都占用内存。

答案 1 :(得分:0)

静态成员与不是具体实例的类型相关。因此,实例方法和变量涉及实例的标识,例如实例方法可以改变对象的状态

在某种程度上,这是一个宗教问题。有些人喜欢在访问任何实例变量时在类中创建静态方法。其他人不喜欢这种方法。另一个常用的用法是创建工厂方法,能够在静态调用对象时创建对象的实例。

通常有utility classes包含静态方法来为客户端提供一些未绑定到任何类型上下文的功能。但通常这些utility classes get abused通过将它们用作各种方法的垃圾箱,程序员找不到合适的类。这可能是设计不佳的结果。

静态变量的一种流行用法是为类定义记录器实例(例如SLF4J),因为记录器是线程安全的,并且可以被所有实例和静态方法使用。一个优点是(参见comparison),只需要为包含类的所有实例创建一个实例。

答案 2 :(得分:0)

对于静态变量或方法,您可以认为在程序的整个生命周期中只有一个变量或方法的副本。

因此,如果存在应在所有进程或线程中共享其值的变量,则可以声明静态变量。例如,当您想要使用singleton pattern时,您将需要一个静态变量来指示是否已存在该类的实例。

对于静态方法,我会在类的状态不重要时使用它们。我认为最好的例子是java.lang.Math,它们都是静态方法,无论您之前调用过什么,都会将预期值返回给您。