static修饰成员变量
static
成员变量按照有无static修饰,分为两种:
- 类变量:有static修饰,属于类,在计算机中只有一份,会被类和类的全部对象共享
- 类变量的访问方式:
方式一:类名.类变量
Student.name = "枫";
方式二:对象.类变量
Student student = new Student();
student.name = "昱";
- 实例变量(对象的变量):无static修饰,属于每个对象的,每个对象都有一份,只能用对象访问
- 实例变量的访问方式:
方式一:对象.实例变量
student.age = 18;
有无static修饰的成员变量完整例子
package com.zzfeng.d1_staticdemo;
public class Test {
public static void main(String[] args) {
Student.name = "枫";
Student student = new Student();
student.name = "昱";
Student student1 = new Student();
student1.name = "彭";
System.out.println(student.name);
System.out.println(student1.name);
student.age = 18;
student1.age = 19;
System.out.println(student.age);
System.out.println(student1.age);
}
}
package com.zzfeng.d1_staticdemo;
public class Student {
static String name;
int age;
}
static修饰成员变量的应用场景
- 在开发中,如果某个数据只需要一份,且希望能够被共享(访问、修改),则该数据可以定义成类变量来实现
- 案例:
- 系统启动后,要求用户类可以记住自己创建了多少个用户对象
- 代码:
测试类
package com.zzfeng.d1_staticdemo;
public class UserTest {
public static void main(String[] args) {
User user = new User();
User user1 = new User();
User user2 = new User();
User user3 = new User();
System.out.println(User.number);
}
}
类变量:
package com.zzfeng.d1_staticdemo;
public class User {
public static int number;
public User() {
number++;
}
}
访问自己类中的类变量,可省略类名?
- 自己的类中可以省略类名,但在某个类中访问其它类中的类变量,必须带类名访问