static
一种java内置关键字,静态关键字,可以修饰成员变量、成员方法。
static + 成员变量
1.static + 成员变量
成员变量按照有无static修饰,可以分为
- 类变量:static + 变量,属于类,仅存一份,由类全部对象所共享。
- 实例变量(对象的变量):无static修饰,属于每个对象。
2.类变量图解
3.类变量的访问
类变量可以由 对象访问,也可以由 类进行访问。
对比:实例变量仅支持由 对象进行访问。
// 类变量的访问 //1.类 . 变量名称 Student.name = "szg"; System.out.println(Student.name); //2.对象 . 变量名称 Student s1 = new Student(); System.out.println(s1.name); // 实例变量的访问 //1.类 . 变量名称 error //Student.age = 16; // error //System.out.println(Student.age); // error //2.对象 . 变量名称 Student s2 = new Student(); System.out.println(s1.age);
4.类变量的内存原理
代码测试验证:
// 类变量被所有对象所共享,而实例变量每个对象都有一个,相互独立 s1.age = 10; s2.age = 20; s1.name = "wangwu"; s2.name = "lisi"; System.out.println(s1.age); System.out.println(s2.age); System.out.println(s1.name); System.out.println(s2.name);
输出结果:
5.类变量的应用
测试类:
// User 的个数 User u1 = new User(); User u2 = new User(); User u3 = new User(); User u4 = new User(); User u5 = new User(); User u6 = new User(); System.out.println(User.number);
User类:
package suziguang_d1_staticdemo; public class User { public static int number; public User() { number++; //User.number++; } }
输出结果:
EOF