2012-02-02 13 views
12

मैं इस little quine program भर में आया था, मुख्य विधि बिना लिखा:Quine कार्यक्रम मुख्य()

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

दिलचस्प है, लेकिन आप इसे कैसे चलाने देते हैं? संपादित करें: फ़ाइल को 'f.java' नाम दिया जाना है, इसलिए आप इसे' javac f.java' – mtsz

+1

हां से संकलित करें। आप इसे 'javac f.java' के साथ संकलित करते हैं और इसे' जावा एफ 'के साथ चलाते हैं। यह jdk6 के साथ काम करता है, लेकिन 7 के साथ नहीं। –

+0

आपके द्वारा पोस्ट किए गए विवरण को पढ़ने के बाद, मुझे यह चल रहा है, फिर भी धन्यवाद :) – mtsz

उत्तर

9

लाइन्स 5 और 6 instance initializer हैं। इसे तब कहा जाता है जब कक्षा को तत्काल किया जाता है। चूंकि यह एक निरंतर नामक f नामक एक enum है, इसे एक बार तत्काल चालू किया जा रहा है और उदाहरण प्रारंभकर्ता ब्लॉक निष्पादित किया गया है।

ध्यान दें कि znull है, लेकिन out, वर्ग System की एक स्थिर सदस्य है ताकि आप z.out.printf() वैसे भी कॉल कर सकते हैं। printf कथन स्ट्रिंग s को स्ट्रिंग स्ट्रिंग के रूप में दो तर्क, 34 और s के साथ लेता है।

34 डबल कोट " के लिए ASCII कोड है। यह प्रारूप स्ट्रिंग में %c और %1$c के लिए भर गया है। स्वरूप स्ट्रिंग में %s को प्रारूप स्ट्रिंग s द्वारा प्रतिस्थापित किया गया है।

संबंधित मुद्दे