Java中的成员变量可以是静态的(static)或非静态的(non-static),它们之间存在以下主要区别:
下面是一个简单的示例,展示了静态和非静态成员变量的区别:
public class Student {
// 静态变量
public static int totalStudents = 0;
// 非静态变量
public String name;
public Student(String name) {
this.name = name;
totalStudents++; // 每次创建一个新对象,totalStudents都会增加
}
public static void main(String[] args) {
Student s1 = new Student("Alice");
Student s2 = new Student("Bob");
Student s3 = new Student("Charlie");
// 访问静态变量
System.out.println("Total students: " + Student.totalStudents); // 输出:Total students: 3
// 访问非静态变量
System.out.println("Name of s1: " + s1.name); // 输出:Name of s1: Alice
System.out.println("Name of s2: " + s2.name); // 输出:Name of s2: Bob
}
}
在这个示例中,totalStudents
是一个静态变量,它在所有Student
对象之间共享,并且随着对象的创建而增加。而name
是一个非静态变量,每个Student
对象都有自己的name
副本。