Java中类只要当需要使用的时候才加载。
首先,我们来看看你去掉new Sandwich()之后,你的程序已经和Sanwich的实例没有关系了,只是执行静态的main方法就可以了。和Sanwich实例没有关系,那为什么要初始化Sanwich的成员变量Lettuce啊?所以你去掉new Sandwich之后不会执行Lettuce l = new Lettuce();的,不过你要是改成这样看看,肯定会执行的。
static Lettuce l = new Lettuce();
在加载类Sandwich的时候就会初始化静态域Lettuce l了。
第二点?应该会明白了吧。因为要先完成Sandwich父类的构造,然后再初始化本身的成员变量,最后再完成Sandwich实例的构造啊!