Was ist der Unterschied zwischen statischen Variablen und Instanzvariablen?

In Java sind statische Variablen und Instanzvariablen zwei verschiedene Variablentypen und weisen die folgenden Unterschiede auf:

  1. Eine statische Variable gehört zur Klasse, nicht zu einer Instanz der Klasse. Instanzvariablen gehören zu Instanzen von Klassen.

  2. Es gibt nur eine Kopie einer statischen Variablen und diese ist immer dieselbe, egal wie oft die Klasse instanziiert wird. Instanzvariablen Jede Instanz hat ihre eigene Kopie.

  3. Auf statische Variablen kann ohne Instanziierung direkt von der Klasse aus zugegriffen werden. Nach der Instanziierung des Objekts muss auf Instanzvariablen zugegriffen werden.

  Schauen wir uns als Nächstes ein einfaches Java-Codebeispiel an, um den Unterschied zwischen statischen Variablen und Instanzvariablen zu demonstrieren:

public class Example {
    static int staticVariable = 10; // 静态变量
    int instanceVariable = 20; // 实例变量

    public static void main(String[] args) {
        Example obj1 = new Example();
        Example obj2 = new Example();

        // 静态变量可以通过类名直接访问
        System.out.println("静态变量staticVariable值为:" + Example.staticVariable);

        // 实例变量必须通过实例对象访问
        System.out.println("obj1的实例变量instanceVariable值为:" + obj1.instanceVariable);
        System.out.println("obj2的实例变量instanceVariable值为:" + obj2.instanceVariable);

        // 修改静态变量的值
        Example.staticVariable = 30;

        // 打印修改后的静态变量值
        System.out.println("静态变量staticVariable值为:" + Example.staticVariable);
        System.out.println("obj1的静态变量staticVariable值为:" + obj1.staticVariable);
        System.out.println("obj2的静态变量staticVariable值为:" + obj2.staticVariable);

        // 修改实例变量的值
        obj1.instanceVariable = 40;

        // 打印修改后的实例变量值
        System.out.println("obj1的实例变量instanceVariable值为:" + obj1.instanceVariable);
        System.out.println("obj2的实例变量instanceVariable值为:" + obj2.instanceVariable);
    }
}

  Die Ausgabe ist wie folgt:

静态变量staticVariable值为:10
obj1的实例变量instanceVariable值为:20
obj2的实例变量instanceVariable值为:20
静态变量staticVariable值为:30
obj1的静态变量staticVariable值为:30
obj2的静态变量staticVariable值为:30
obj1的实例变量instanceVariable值为:40
obj2的实例变量instanceVariable值为:20

  Wie Sie sehen, gibt es nur eine Kopie der statischen Variablen, auf die direkt über den Klassennamen zugegriffen werden kann. Instanzvariablen Jede Instanz verfügt über eine eigene Kopie und muss über das Instanzobjekt aufgerufen werden. Beim Ändern einer statischen Variablen sind alle Instanzen betroffen. Wenn Sie eine Instanzvariable ändern, ist nur diese Instanz betroffen.

Supongo que te gusta

Origin blog.csdn.net/Blue92120/article/details/130683705
Recomendado
Clasificación