Java基础 8.13
1.引出类变量和类方法
传统方法解决以下问题
package com.logic.static_;public class ChildGame {public static void main(String[] args) {int count = 0;Child child1 = new Child("白骨精");child1.join();count++;Child child2 = new Child("狐狸精");child2.join();count++;Child child3 = new Child("蜘蛛精神");child3.join();count++;System.out.println("共有" + count + "个小孩加入了游戏...");}
}class Child {private String name;public Child(String name) {this.name = name;}public void join() {System.out.println(name + "加入了游戏...");}
}
问题分析
- count是个单独的变量,独立于对象
- 以后访问count都很麻烦,没有使用到OOP
- 因此引出类变量/静态变量
2.类变量快速入门
package com.logic.static_;public class ChildGame {public static void main(String[] args) {int count = 0;Child child1 = new Child("白骨精");child1.join();//count++;child1.count++;Child child2 = new Child("狐狸精");child2.join();//count++;child2.count++;Child child3 = new Child("蜘蛛精神");child3.join();//count++;child3.count++;//类变量可以通过类名来直接访问System.out.println("共有" + Child.count + "个小孩加入了游戏...");}
}class Child {//定义一个变量count 是一个类变量(静态变量) static静态//该变量的最大特点就是会被Child类所有的对象实例共享public static int count = 0;private String name;public Child(String name) {this.name = name;}public void join() {System.out.println(name + "加入了游戏...");}
}
3.类变量的内存布局
- 不管static变量在哪里,static变量是同一个类所有对象共享
- static类变量,在类加载的时候就生成
4.类变量定义访问
什么是类变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类的对象去访问它时,取到的都是相同的值,同样任何一个该类的对象去修改它时,修改的也是同一个变量
如何定义类变量
定义语法
访问修饰符 static 数据类型 变量名(推荐)
static 访问修饰符 数据类型 变量名
如何访问类变量
类名.类变量名(推荐)
或对象名.类变量名(静态变量的访问修饰符的访问权限和范围和普通属性是一样的)