Search code examples
javastaticthisinstance-variables

I am working on static and instance variables in Java, where I couldn't understand the output of the code


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);
    }
}

and the output is

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

Does this.y refer to obj1.y or t.y in method1?

Why hasn't changing this.y any affect on t.y?


Solution

  • y is a global instance variable. When you call obj1.method1(10);, this in method1 refers to obj1. So this.y refer to obj1.y in method1.

    Why hasn't changing this.y any affect on t.y?

    because this refers to obj1 so you are changing instance variable of obj1 not t.