Я работаю над stati c и переменными экземпляра в Java, где я не мог понять вывод кода - PullRequest
0 голосов
/ 24 апреля 2020
package java_course;

public class staticVsInstance {

    static int x = 11; 
    private int y = 33; 

    public void method1(int x) {
        staticVsInstance t = new staticVsInstance();
        System.out.println("t.x "+t.x + " " +"t.y  "+ t.y + " " +"x "+ x + " "+"y " + y);
        this.x = 22;
        this.y = 44;
        System.out.println("t.x "+t.x + " " +"t.y  "+ t.y + " " +"x "+ x + " "+"y " + y);
    }

    public static void main(String args[]) {

        staticVsInstance obj1 = new staticVsInstance();

        System.out.println(obj1.y);
        obj1.method1(10);
        System.out.println(obj1.y);
    }
}

и вывод

33
t.x 11 t.y  33 x 10 y 33
t.x 22 t.y  33 x 10 y 44
44

Имеет ли значение this.y obj1.y или t.y в method1?

Почему не изменилось this.y любое влияние на t.y?

1 Ответ

0 голосов
/ 24 апреля 2020

y - глобальная переменная экземпляра. Когда вы звоните obj1.method1(10);, this в method1 означает obj1. Так что this.y относится к obj1.y в методе 1.

Почему это изменение не влияет на ty?

, поскольку this относится к obj1 поэтому вы изменяете переменную экземпляра obj1, а не t.

...