I know this has been discussed and I thought I understood it but then I got this one wrong. This code compiles fine and outputs 0. While if the line 1 is changed to read private int i = j it gives forward refferencing error. My question is at point does the initialization take place, and why does it give some output for the method call ?