freeCodeCamp/guide/chinese/java/static/index.md

2.9 KiB
Raw Blame History

title localeTitle
Static 静态的

静态的

将变量或方法声明为静态时,它属于类,而不是特定实例。这意味着只有一个静态成员实例存在,即使您创建了该类的多个对象,或者您没有创建任何实例。它将由所有对象共享。

static关键字可以与变量方法代码块和嵌套类一起使用。

静态变量

例:

public class Counter { 
  public static int COUNT = 0; 
  Counter() { 
    COUNT++; 
  } 
 } 

COUNT变量将由该类的所有对象共享。当我们在main中创建Counter类的对象时访问静态变量。

public class MyClass { 
  public static void main(String[] args) { 
    Counter c1 = new Counter(); 
    Counter c2 = new Counter(); 
    System.out.println(Counter.COUNT); 
  } 
 } 
 // Outputs "2" 

outout是2因为COUNT变量是静态的并且每次创建Counter类的新对象时都会增加1。您还可以使用该类的任何对象访问静态变量例如c1.COUNT

静态方法

静态方法属于类而不是实例。因此,可以在不创建类实例的情况下调用它。它用于改变类的静态内容。静态方法有一些限制:

  1. 静态方法不能使用类的非静态成员(变量或函数)。
  2. 静态方法不能使用thissuper关键字。

例:

public class Counter { 
  public static int COUNT = 0; 
  Counter() { 
    COUNT++; 
  } 
 
  public static void increment(){ 
    COUNT++; 
  } 
 } 

也可以从类的实例调用静态方法。

public class MyClass { 
  public static void main(String[] args) { 
    Counter.increment(); 
    Counter.increment(); 
    System.out.println(Counter.COUNT); 
  } 
 } 
 // Outputs "2" 

输出为2因为它通过静态方法increament()递增。与静态变量类似,也可以使用实例变量访问静态方法。

静态块

静态代码块用于初始化静态变量。声明静态变量后立即执行这些块。

例:

public class Saturn { 
  public static final int MOON_COUNT; 
 
  static { 
    MOON_COUNT = 62; 
  } 
 } 
public class Main { 
  public static void main(String[] args) { 
    System.out.println(Saturn.MOON_COUNT); 
  } 
 } 
 // Outputs "62" 

输出为62因为变量MOON_COUNT在静态块中分配了该值。

静态嵌套类

一个类可以有静态嵌套类,可以使用外部类名访问它。

例:

public class Outer { 
 
  public Outer() { 
  } 
 
  public static class Inner { 
    public Inner() { 
    } 
  } 
 } 

在上面的示例中, Inner类可以作为类Outer的静态成员直接访问。

public class Main { 
  public static void main(String[] args) { 
    Outer.Inner inner = new Outer.Inner(); 
  } 
 } 

Builder中常用的静态嵌套类的一个用例java。