Consider this code:
public class Main {
static String s = "-";
public static void main (String [] args){
go();
System.out.println(s);
Main m = new Main();
}
{go();}
static {go();}
static void go(){s+="s";}
}
Its output is:
-ss
the instance init block is never called, why?
It is called – AFTER you’ve printed
s. Instance initializers are called when instances are created.