有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

不带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);}
}

有人能解释一下这是怎么回事吗?谢谢


共 (1) 个答案

  1. # 1 楼答案

    第5行和第6行是instance initializer。在实例化类时调用它。因为这是一个带有一个名为f的常量的枚举,所以它将被实例化一次,并执行实例初始值设定项块

    请注意znull,但是out是类System的静态成员,所以您可以调用z.out.printf()printf语句将字符串s作为一个格式字符串,带有两个参数34s本身

    34是双引号"的ASCII码。它以格式字符串的形式为%c%1$c填写。格式字符串中的%s被格式字符串s本身替换