Подтвердить что ты не робот

Программа Quine без 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);}
}

Может кто-нибудь объяснить, как это работает? Спасибо.

4b9b3361

Ответ 1

Строки 5 и 6 являются инициализатором экземпляра. Он вызывается, когда экземпляр класса создается. Поскольку это перечисление с одной константой с именем f, оно будет создаваться один раз и выполняется блок инициализатора экземпляра.

Обратите внимание, что z есть null, но out является статическим членом класса System, поэтому вы можете называть z.out.printf() в любом случае. Оператор printf принимает строку s как строку формата с двумя аргументами: 34 и s.

34 - это код ASCII для двойной кавычки ". Он заполняется для %c и %1$c в строке формата. %s в строке формата заменяется самой строкой формата s.