不带main()的java Quine程序
我遇到了这个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);}
}
有人能解释一下这是怎么回事吗?谢谢
你可以在下面搜索框中键入要查询的问题!
我遇到了这个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);}
}
有人能解释一下这是怎么回事吗?谢谢
# 1 楼答案
第5行和第6行是instance initializer。在实例化类时调用它。因为这是一个带有一个名为
f
的常量的枚举,所以它将被实例化一次,并执行实例初始值设定项块请注意
z
是null
,但是out
是类System
的静态成员,所以您可以调用z.out.printf()
。printf
语句将字符串s
作为一个格式字符串,带有两个参数34
和s
本身34
是双引号"
的ASCII码。它以格式字符串的形式为%c
和%1$c
填写。格式字符串中的%s
被格式字符串s
本身替换