我遇到了这个little quine program,没有使用主要方法编写:
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);}
}
有人可以解释一下这是如何工作的?感谢。
答案 0 :(得分:9)
第5行和第6行是instance initializer。在实例化类时调用它。由于这是一个带有一个名为f
的常量的枚举,因此它将被实例化一次并执行实例初始化程序块。
请注意,z
为null
,但out
是类System
的静态成员,因此您无论如何都可以调用z.out.printf()
。 printf
语句将字符串s
作为带有两个参数的格式字符串34
和s
本身。
34
是双引号"
的ASCII代码。填写格式字符串中的%c
和%1$c
。格式字符串中的%s
将替换为格式字符串s
本身。