0
点赞
收藏
分享

微信扫一扫

static

static 关键字

Java 中 static 关键字主要用于内存管理。Java 中 static 关键字可用于修饰 变量、方法、代码块、嵌套类。static 关键字修饰的对象属于类,而不是类的实例。
static 可以是:

  1. 变量(类变量或静态变量)
  2. 方法(类方法或静态方法)
  3. 代码块(静态代码块)
  4. 嵌套类(静态内部类)

类变量 - 静态变量

用 static 修饰的变量称为静态变量(类变量)。
静态变量的优点:

  • 静态变量使程序存储器更高效(节省内存)
    注:
    静态变量属于类,不属于类的实例,所有类的实例共享静态变量,所以不会在每个类的实例创建多个副本,这就是节省内存的原因。因为静态变量是类的实例共享的,这也是它的缺点,有可能造成线程不安全的。

静态方法 - 类方法

用 static 修饰的方法称为静态方法(类方法)。

  • 静态方法属于类,不属于类的实例。
  • 静态方法可以用类直接调用,无需创建类的实例,当然也可以用类的实例调用。
  • 静态方法可以访问静态变量、静态方法,但不能直接访问非静态变量和非静态方法。
    静态方法限制:
  • 静态方法不能直接使用非静态变量或调用非静态方法。
  • this 和 super 两个关键字不能在静态上下文中使用。
    为什么 Java main 方法是静态的 ?
    @TODO

静态代码块

Java 中静态代码块主要有两个作用:

  • 用于初始化静态变量
  • 在类加载是在 main 方法之前执行

注:
静态代码快在main方法和构造方法之前初始化。

静态内部类

静态内部类是指使用 static 修饰的内部类。例如:

public class OuterClass {
	static class InnerClass {
		// ...
	}
}
  • 创建静态内部类的实例时,不需要创建外部类的实例。
  • 静态内部类中可以定义静态成员和实例成员。
  • 静态内部类可以直接访问外部类的静态成员,若要访问外部类的实例成员,则需要通过外部类的实例访问。
  • 其它类可以创建静态内部类,但需要加上外部类名作为前缀,且静态内部类受外部类的权限修饰符(public, protected, private, default) 的限制。
举报

相关推荐

0 条评论