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 }
运行结果:

- 静态代码块里面的代码只在加载类的时候执行。
- 静态代码块常用于加载图片、文件等等项目资源。
浙公网安备 33010602011771号