Static
在Java中,static
关键字用于修饰变量、方法,以使其成为静态成员。静态变量属于类不属于对象。
static
关键字修饰变量的一些特点:
共享数据:
所有的实例共享同一个静态变量。如果你更改了静态变量的值,它将影响所有使用该变量的实例。
生命周期:
静态变量的生命周期是整个应用程序的生命周期。它随着类的加载而加载,优先对象先 存在。
初始化:
静态变量只会被初始化一次,即类首次加载到JVM时。如果声明但没有初始化,变量将被赋予默认值(对于引用类型是null
,对于数值类型是0
或false
)。
访问:
你可以通过类名直接访问静态变量,而无需创建类的实例。例如,如果有一个名为MyClass
的类,你可以通过MyClass.myStaticVar
来访问其静态变量。 当然也可以创建对象来调用,但是不推荐,因为类不属于对象而属于类。
为什么要用静态变量:
Java中创建静态变量的目的是为了在多个对象之间共享一个变量。静态变量属于类本身,而不是类的实例。因此,所有实例都共享同一个静态变量。当一个实例修改静态变量时,其他实例也会看到这个变化。静态变量通常用于实现那些与类相关而与对象无关的状态或配置。例如,一个计数器类可能会使用静态变量来跟踪创建的实例数量,或者一个工具类可能会使用静态变量来存储配置信息。
static
关键字修饰方法有以下特点:
为什么要有静态方法:
Java中创建静态方法的目的是为了提供一种方便的方式来执行与类相关而与对象无关的任务。静态方法属于类本身,而不是类的实例。因此,您可以在没有创建类的对象的情况下调用静态方法。这使得静态方法非常适合执行那些不需要对象状态的操作,例如工具类中的方法或设置和获取静态字段的值。
静态方法有什么优点:
-
方便调用:静态方法可以在没有创建对象的情况下直接通过类名调用,这使得代码更加简洁和方便。
-
节省内存:由于静态方法是共享的,因此在内存中只需要存储一份代码,这有助于减少内存占用。
-
便于测试:静态方法通常与类相关,而不是与特定的对象实例相关。因此,它们更容易进行单元测试和调试。
-
无需创建对象:在某些情况下,您可能不需要创建类的对象就可以执行某些操作。在这种情况下,使用静态方法可以避免不必要的对象创建和销毁开销。
static的注意事项:
-
静态方法只能访问静态变量和静态方法,所以工具类的所有方法只能用static来修饰,一方面main方法本来就是static,可以直接通过类名来调用方法。另一方面工具类不创建对象,只能通过static使其永恒。
-
非静态方法可以通过创建对象或者直接通过类来访问静态变量或者静态方法,也可以通过创建对象访问非静态的成员变量和非静态的成员方法。
-
非静态方法中会有隐藏的this关键字,而静态方法中没有this关键字。