是否可以编写一个打印语句本身的Java printf语句?

pol*_*nts 5 java printf quine

是否有可能有一个Java printf语句,其输出是语句本身?

一些片段来说明:

// attempt #1
public class Main {
public static void main(String[] args) {

System.out.printf("something");

}
}
Run Code Online (Sandbox Code Playgroud)

这打印something.

因此,尝试#1的输出并不完全是printf尝试#1中的语句.我们可以尝试这样的事情:

// attempt #2
public class Main {
public static void main(String[] args) {

System.out.printf("System.out.printf(\"something\");");

}
}
Run Code Online (Sandbox Code Playgroud)

现在输出是 System.out.printf("something");

所以现在尝试#2的输出与输出#1中的语句匹配,但是我们回到了之前的问题,因为我们需要尝试#2的输出来匹配尝试#2中的语句.

那么可以写一个printf打印自己的单行语句吗?

pol*_*nts 6

它不漂亮,但这肯定是可能的:

public class Main {
public static void main(String[] args) {

System.out.printf("System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);",34,"System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);");

}
}
Run Code Online (Sandbox Code Playgroud)

输出(在ideone.com上运行)是:

System.out.printf("System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);",34,"System.out.printf(%c%s%1$c,34,%1$c%2$s%1$c);");
Run Code Online (Sandbox Code Playgroud)

此输出与printf语句匹配.

可能会有更短的解决方案.

也可以看看