Java:static静态

static可用于修饰类的成员,如成员变量、方法、内部类、成员代码块等等。

静态成员变量

 1 public class Test {
 2     public static void main(String[] args) {
 3         Room room1 = new Room();
 4         Toilet toilet1 = room1.toilet; // 这是1号房的独立厕所
 5 
 6         Room room2 = new Room();
 7         Toilet toilet2 = room2.toilet; // 这是2号房的独立厕所
 8 
 9         Toilet toilet = Room.publicToilet; // 这是公共厕所
10     }
11 }
12 
13 /**
14  * 房类
15  */
16 class Room {
17     Toilet toilet; // 独立厕所(非静态成员变量)
18     static Toilet publicToilet; // 公共厕所(静态成员变量)
19 }
20 
21 /**
22  * 厕所类
23  */
24 class Toilet {
25 
26 }
  • 每个房间里面都自带一个独立厕所。
  • 不管新建多少个房间,都只共享同一个公共厕所。

 

静态方法

静态方法和静态成员变量具有相同的静态特性,此处省略。

关于在方法内调用其它成员:

 1/**
 8  * 房类
 9  */
10 class Room {
11     Toilet toilet; // 独立厕所(非静态成员变量)
12     static Toilet publicToilet; // 公共厕所(静态成员变量)
13 
14     // 非静态方法可直接调用非静态成员
15     Toilet getToilet1() {
16         return toilet;
17     }
18 
19     // 非静态方法可直接调用静态成员
20     Toilet getToilet2() {
21         return publicToilet;
22     }
23 
24     // 静态方法不可直接调用非静态成员
25     static Toilet getToilet3() {
26         return toilet; // 编译错误
27     }
28 
29     // 静态方法可直接调用静态成员
30     static Toilet getToilet4() {
31         return publicToilet;
32     }
33 }
34 
35 /**
36  * 厕所类
37  */
38 class Toilet {
39 
40 }

 

静态方法常用于设计工具类。

 

静态内部类

静态内部类和静态成员变量具有相同的静态特性,此处省略。

 

静态代码块

 1 public class Test {
 2     public static void main(String[] args) {
 3         Student student1 = new Student();
 4         Student student2 = new Student();
 5         Student student3 = new Student();
 6     }
 7 }
 8 
 9 class Student {
10     Student() {
11         System.out.println("新建了一个学生对象");
12     }
13 
14     static {
15         System.out.println("加载了学生类");
16     }
17 }

运行结果:

  • 静态代码块里面的代码只在加载类的时候执行。
  • 静态代码块常用于加载图片、文件等等项目资源。
posted @ 2021-07-06 20:31  RexChou  阅读(96)  评论(0)    收藏  举报