目录
问题引入
有一群小孩在玩游戏 不时有新的小孩加入
请问:现在共要多少人在玩游戏?
以传统的方法如何解决问题
定义成员变量(int count)
思路分析
1.在main()中定义一个成员变量count
2.当一个小孩加入游戏后count++,最后输出count就记录有多少个小孩加入了游戏
代码实现
main(){
int count = 0;
Child child = new Child(“Tom”);
child.join();
count++;
Child child = new Child(“Jack”);
child.join();
count++;
Child child = new Child(“Mary”);
child.join();
count++;
System.out.println("小孩总数:" + count);
}
Class Child{
private String name;
public Child(String name){
this. child = name;
}
Public void join(){
System.out.println(name + "加入了游戏...");
}
}
问题分析(存在哪些问题)
1.count是独立于对象的,与Child是没有任何关联的。
2.以后我们访问count会非常麻烦,没有使用到面向对象编程。
3.引入类变量(静态变量)。
思路改进
设计一个int count表示总人数,我们在创建一个小孩时,就把count++并且count是所有对象共享的就完美了~
代码优化
main(){
//int count = 0;
Child child1 = new Child(“Tom”);
child.join();
//count++;
Child.count++;
Child child2 = new Child(“Jack”);
child.join();
//count++;
Child.count++;
Child child3 = new Child(“Mary”);
child.join();
//count++;
Child.count++;
//System.out.printlin("小孩总数:" + count);
System.out.printlin("小孩总数:" + Child.count);
}
Class Child{
private String name;
//定义一个类变量count
public static int count = 0;
public Child(String name){
this. child = name;
}
Public void join(){
System.out.printlin(name + "加入了游戏...");
}
}
类变量
什么是类变量
类变量也叫静态变量/静态属性,是该类的所有对象共享的变量,任何一个该类对象访问它时,取到的都是相同的值,同样任何一个该类的对象去修改他时,修改的也是同一个变量。
如何定义类变量
定义语法:
访问修饰符 static 数据类型 变量名;【推荐】
static 访问修饰符 数据类型 变量名;
如何访问类变量
类名.类变量名【推荐】
对象名.类变量名
【静态变量的访问修饰符的访问权限和范围 和 普通变量是一样的】
类变量的内存布局
类变量的使用注意事项和细节讨论
1.什么时候需要用类变量
当我们需要让某个类的所有对象都共享一个变量时,就可以考虑使用类变量(静态变量);
比如:定义学生类,统计所有学生共交多少钱。Student (name, fee)
2.类变量(静态变量)与普通变量区别
类变量是该类的所有对象共享的,而普通成员变量是每个对象独享的。
3.加上static称为类变量或静态变量,否则称为普通变量/实例变量/非静态变量
4.类变量可以通过类名.类变量名或者对象名.类变量名来访问。
*【前提是满足访问修饰符的访问权限和范围】
5.普通成员变量不能通过类名.类变量名方式访问。
6.类变量是在类加载时就初始化了,也就是说,即使你没有创建对象,只要类加载了,就可以使用类变量了。
7.类变量的生命周期是随类的加载开始,随着类消亡而销毁。