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
副本。