我遇到了这个little quine program,它没有使用main方法:
enum f {
f;
System z;
String s="enum f{f;System z;String s=%c%s%1$c;{z.out.printf(s,34,s);z.exit(0);}}";
{z.out.printf(s,34,s);
z.exit(0);}
}有人能解释一下这是怎么工作的吗?谢谢。
发布于 2012-02-03 06:32:11
第5行和第6行是instance initializer。它在类被实例化时调用。由于这是一个具有一个名为f的常量的枚举,因此它将被实例化一次,并执行实例初始值设定项块。
请注意,z是null,但out是System类的静态成员,因此无论如何都可以调用z.out.printf()。printf语句将字符串s作为带有两个参数的格式字符串,即34和s本身。
34是双引号"的ASCII码。它是为格式字符串中的%c和%1$c填写的。格式字符串s本身替换了格式字符串中的%s。
https://stackoverflow.com/questions/9120908
复制相似问题