类变量(static)
类变量是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量。
1 public class C {
2 public static void main(String[] args){
3
4 Child ch1 = new Child(12,"小小");
5 ch1.joinGame();
6 Child ch2 = new Child(13,"小红");
7 ch2.joinGame();
8 //调用类变量
9 System.out.println("一共有" + Child.total+ "小朋友");
10 }
11 }
12
13 class Child{
14 public int age;
15 public String name;
16
17 //total是静态变量,因此他可以被任何类调用
18 public static int total = 0;
19
20 public Child(int age, String name)
21 {
22 this.age = age;
23 this.name = name;
24 }
25
26 public void joinGame()
27 {
28 total++;
29 System.out.println("有一个小朋友加进来!");
30 }
31 }
运行结果
静态区块
只要程序启动就会被执行一次,也仅执行一次
1 public class C {
2
3 static int i = 1;
4 static
5 {
6 System.out.println("静态区域块被执行一次");
7 //该静态区域块,只被执行一次,也不会因创建对象而触发
8 i++;
9 }
10 public C()
11 {
12 System.out.println("构造函数域块被执行一次");
13 i++;
14 }
15
16 public static void main(String[] args){
17
18 C t1 = new C();
19 System.out.println("输出第一个i的值为:" + C.i);
20 C t2 = new C();
21 System.out.println("输出第二个i的值为:" + C.i);
22 }
23 }
运行结果
类方法
类方法中不能访问非静态变量
1 public class C {
2 public static void main(String[] args){
3 Student stu1 = new Student(18,"小红",580);
4 Student stu2 = new Student(18,"小黑",620);
5 System.out.println("有" + Student.p_total + "个学生");
6 System.out.println("学费总收入:" + Student.get_total_fee());
7 }
8 }
9
10 //定义一个学生类
11 class Student{
12 public int age;
13 public String name;
14 public double fee; //学费
15 public static int p_total = 0;
16 public static double total_fee; //总学费
17
18 public Student(int age, String name, double fee)
19 {
20 p_total++;
21 this.age = age;
22 this.name = name;
23 this.total_fee += fee;
24 }
25
26 //静态方法
27 //Java中规则:类变量原则上用类方法去访问
28 public static double get_total_fee()
29 {
30 return total_fee;
31 }
32 }
运行结果
匿名对象
就是没有名字的对象,当对象仅进行一次调用的时候,就可以简化成匿名对象。
1 //举例
2 new Car().run();