आप एक चरित्र शाब्दिक, जिसे एकल कोट द्वारा सीमांकित किया जाता है सौंपा है, बाहर प्रिंट जैसे 'a'
(, एक स्ट्रिंग शाब्दिक, जो दोहरे उद्धरण चिह्नों द्वारा सीमांकित किया जाता है से अलग रूप में जैसे "a"
) int
चर के लिए। जावा 16-बिट हस्ताक्षरित char
से 32-बिट हस्ताक्षरित int
पर एक स्वचालित चौड़ाई कास्ट करता है।
हालांकि, जब एक वर्ण शाब्दिक बैकस्लैश 1-3 अंकों के बाद होता है, तो यह octal (base/radix 8) चरित्र का प्रतिनिधित्व करता है। इस प्रकार:
\15
= 1 × 8 + 5 = 13 (एक गाड़ी वापसी, एक ही '\r'
के रूप में)
\25
= 2 × 8 + 5 = 21 (एक NAK चार - नकारात्मक पावती)
\100
= 1 × 64 + 0 × 8 + 0 = 64 (@ प्रतीक, एक ही '@'
के रूप में)
चरित्र शाब्दिक अधिक जानकारी के लिए और दृश्यों से बचने, देखें JLS वर्गों:
का हवाला देते हुए BNF 3.10.6 से:
OctalEscape:
\ OctalDigit
\ OctalDigit OctalDigit
\ ZeroToThree OctalDigit OctalDigit
OctalDigit: one of
0 1 2 3 4 5 6 7
ZeroToThree: one of
0 1 2 3
ऐसा लगता है कि यह संख्या को ऑक्टल के रूप में व्याख्या कर रहा है। – Nikhil
'int a = '\ 15'' पहले ऑक्टल नंबर" 15 "(दशमलव 13, एक char के रूप में, यह ascii" कैरिज रिटर्न ") के आधार पर' char' बनाता है), जिसे आप फिर 'int' पूर्णांक में पुनः प्राप्त करते हैं । यह कानूनी है क्योंकि वर्ण 16 बिट पूर्णांक हैं, इसलिए यह एक सुरक्षित अपस्टास्ट है और जावा द्वारा कास्टिंग के बारे में कोई नोटिस जारी नहीं किया जाता है। अन्य उत्तरों पहले से ही पूरे ऑक्टल/दशमलव चीज को कवर करते हैं। –
संभव डुप्लिकेट [जावा में वैध वर्ण अक्षर '\ 117' क्यों है?] (Http://stackoverflow.com/questions/14950593/why-is-117-a-valid-character-literal-in-java) – gparyani