title: A tricky question of simple Java: variable scope
body: <p>I am not new to java and C#. I thought I understand the concept of variable scope until recently I was asked this question in an interview:</p>
  
  <pre><code>public class Q{ //starting y scope
  
      static int x = 11;
      private int y = 33; // Just added a “private” modifier to make it clearer.
  
      public static void main(String args[]){
          Q q = new Q();
          q.call(5);
      }
  
      public void call(int x){
          Q q = new Q();
  
          this.x = 22;
          y = 44;
  
          System.out.println("Output: " + Q.x);
          System.out.println("Output: " + q.x);
          System.out.println("Output: " + q.y);
      }
  
  } //ending y scope
  </code></pre>
  
  <p></p>
  
  <p>Define the output of this program.</p>
  
  <p>I answered the question during the interview that the output would be a runtime exception. To my understanding, y is declared private, and the instance method call() is trying to access the instance private variable y of another instance of class Q. How could that happen at all!? However answering this question wrongly didn't affect my interview too much because this is the kind of "tricky basic" question. But, answering wrongly means my years' Java experience needs rehab, that's terrible!</p>
  
  <p>Could someone help me on this matter? I would be so much appreciated!</p>