Java中的静态类变量(Static Class Variables),也称作类变量或静态变量,它们由关键字 static 修饰,并且在类的所有实例之间共享相同的值。这意味着无论创建多少个类的实例,静态变量都只会有一个副本,所有的实例都会访问同一份数据。静态类变量的特点包括:在实际编程中,静态类变量常用于存储那些与类本身相关联、而不是与类的任何特定实例关联的状态信息,或者用于全局唯一、不随实例状态改变的数据。例如,类级别的计数器、配置参数等。
首先创建一个类Student:
public class Student {
private String name;
private int age;
private static ArrayList<Integer> numbers = new ArrayList<>();
public Student() {
}
public Student(String name, int age, ArrayList<Integer> numbers) {
this.name = name;
this.age = age;
this.numbers = numbers;
}
/**
* 获取
* @return name
*/
public String getName() {
return name;
}
/**
* 设置
* @param name
*/
public void setName(String name) {
this.name = name;
}
/**
* 获取
* @return age
*/
public int getAge() {
return age;
}
/**
* 设置
* @param age
*/
public void setAge(int age) {
this.age = age;
}
/**
* 获取
* @return numbers
*/
public ArrayList<Integer> getNumbers() {
return numbers;
}
/**
* 设置
* @param numbers
*/
public void setNumbers(ArrayList<Integer> numbers) {
this.numbers = numbers;
}
public String toString() {
return "Student{name = " + name + ", age = " + age + ", numbers = " + numbers + "}";
}
}
然后再创建一个测试类Test,并在测试类中创建两个学生对象,并且使用两个学生对象分别向numbers集合中添加数据:
public static void main(String[] args) {
Student student1 = new Student();
ArrayList<Integer> numbers1 = student1.getNumbers();
numbers1.add(1);
numbers1.add(2);
numbers1.add(3);
System.out.println(numbers1);
System.out.println("---------------------------------------------");
Student student2 = new Student();
ArrayList<Integer> numbers2 = student2.getNumbers();
numbers2.add(4);
numbers2.add(5);
numbers2.add(6);
System.out.println(numbers2);
}
观察输出结果:
numbers使用Static之前(实例之间的变量数据不共享):
numbers使用Static之后(实例之间的该变量数据共享):