I know there are lot of questions on Singleton pattern. But here what I would like to know about the output which might also cover how \"static\" works in Java.
You should rather declare it as final
private static final Singleton currentSingleton = new Singleton();
Answer to your both questions From JLS#8.3.2. Initialization of Fields
If the declarator is for a class variable (that is, a static field), then the variable initializer is evaluated and the assignment performed exactly once, when the class is initialized (§12.4.2).