Skip to content

静态变量、方法

Java 中被 static 修饰的成员称为静态成员或类成员。 它属于整个类所有,而不是某个对象所有,即被类的所有对象所共享。静态成员可使用类名直接访问,也可使用对象名进行访问。当然,鉴于它作用的特殊性更推荐用类名访问。

使用 static 可修饰变量、方法和代码块


与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。

  1. 静态方法中可直接调用同类中的静态成员,但不能直接调用非静态成员
java
public class HelloWorld {
  String name = "imooc";          // 非静态变量name
  static String hobby = "imooc";  // 静态变量hobby

  // 在静态方法调用非静态变量
  public static void print() {
    System.out.println(name);     // 不能直接调用 非静态变量
    System.out.println(hobby);    // 可以直接调用 静态变量
  }
}

如果希望在静态方法中调用非静态变量,可通过创建类的对象,然后通过对象来访问非静态变量。

java
public class HelloWorld {
  String name = "imooc";          // 非静态变量name
  static String hobby = "imooc";  // 静态变量hobby

  public static void print() {
    // 创建类的对象
    HelloWorld hello = new HelloWorld();
    // 通过对象来实现静态方法中调用非静态变量
    System.out.println(Hello.name);
    System.out.println(hobby);
  }
}
  1. 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
java
public class HelloWorld {
  String name = "imooc";          // 非静态变量name
  static String hobby = "imooc";  // 静态变量hobby

  // 在普通成员方法中,则可以直接访问同类的非静态变量和静态变量
  public void show() {
    System.out.println(name);
    System.out.println(hobby);
  }
}
  1. 静态方法中不能直接调用非静态方法,需要通过对象来访问非静态方法
java
public class HelloWorld {
  String name = "imooc";          // 非静态变量name
  static String hobby = "imooc";  // 静态变量hobby

  public static void main(String[] args) {
    // 普通成员方法必须通过对象来调用
    HelloWorld hello = new HelloWorld();
    hello.show();

    // 可以直接调用静态方法
    print();
  }

  // 普通成员方法
  public void show() {
    System.out.println("Hello");
  }

  // 静态方法
  public static void print() {
    System.out.println(hobby)
  }
}

共 20 个模块,1301 篇 Markdown 文档。