91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

Java成員變量靜態與非靜態區別

小樊
84
2024-10-12 04:20:52
欄目: 編程語言

Java中的成員變量可以是靜態的(static)或非靜態的(non-static),它們之間存在以下主要區別:

  1. 存儲位置:靜態變量存儲在方法區,而非靜態變量存儲在堆內存中。
  2. 共享性:靜態變量被類的所有實例共享,而非靜態變量只能被當前實例訪問。
  3. 生命周期:靜態變量隨著類的加載而加載,隨著類的卸載而銷毀;非靜態變量則隨著對象的創建而創建,隨著對象的銷毀而銷毀。
  4. 默認值:靜態變量和非靜態變量的默認值相同,都是數據類型的默認值(例如,int類型的默認值為0)。
  5. 訪問方式:靜態變量可以通過類名直接訪問,也可以通過對象訪問;非靜態變量只能通過對象訪問。

下面是一個簡單的示例,展示了靜態和非靜態成員變量的區別:

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

0
伊金霍洛旗| 栖霞市| 宿州市| 扎赉特旗| 揭东县| 玉门市| 牙克石市| 黄山市| 德保县| 双牌县| 邓州市| 从江县| 浑源县| 邻水| 云林县| 遂川县| 新巴尔虎右旗| 德令哈市| 襄汾县| 双峰县| 辉县市| 斗六市| 图木舒克市| 九台市| 泰顺县| 杭锦后旗| 永城市| 寻乌县| 榆社县| 龙江县| 克山县| 吐鲁番市| 白水县| 南华县| 黄石市| 集贤县| 伊吾县| 临清市| 集安市| 达州市| 平乡县|