Java Language
शाब्दिक
खोज…
परिचय
1
, 0.333F
, false
, 'X'
और "Hello world\n"
।
हेक्साडेसिमल, ऑक्टल और बाइनरी शाब्दिक
बेस -16 में एक hexadecimal
संख्या एक मान है। 16 अंक, 0-9
और अक्षर AF
(मामला मायने नहीं रखता) हैं। AF
10-16
प्रतिनिधित्व करते हैं।
एक octal
संख्या आधार -8 में एक मान है, और अंक 0-7
का उपयोग करता है।
एक binary
संख्या आधार -2 में एक मान है, और अंक 0
और 1
का उपयोग करता है।
इन सभी नंबरों का परिणाम समान मूल्य है, 110
:
int dec = 110; // no prefix --> decimal literal
int bin = 0b1101110; // '0b' prefix --> binary literal
int oct = 0156; // '0' prefix --> octal literal
int hex = 0x6E; // '0x' prefix --> hexadecimal literal
ध्यान दें कि बाइनरी शाब्दिक सिंटैक्स जावा 7 में पेश किया गया था।
ऑक्टिकल शाब्दिक शब्दार्थ त्रुटियों के लिए आसानी से एक जाल हो सकता है। यदि आप अपने दशमलव शाब्दिक में '0'
को परिभाषित करते हैं, तो आपको गलत मान मिलेगा:
int a = 0100; // Instead of 100, a == 64
पठनीयता में सुधार के लिए अंडरस्कोर का उपयोग करना
जावा 7 के बाद से एक या अधिक अंडरस्कोर (_) का उपयोग करना संभव हो गया है ताकि उनकी पठनीयता में सुधार के लिए एक आदिम संख्या में अंकों के समूहों को अलग किया जा सके।
उदाहरण के लिए, ये दो घोषणाएँ बराबर हैं:
int i1 = 123456;
int i2 = 123_456;
System.out.println(i1 == i2); // true
इसे नीचे दिखाए गए अनुसार सभी आदिम संख्या में लागू किया जा सकता है:
byte color = 1_2_3;
short yearsAnnoDomini= 2_016;
int socialSecurtyNumber = 999_99_9999;
long creditCardNumber = 1234_5678_9012_3456L;
float piFourDecimals = 3.14_15F;
double piTenDecimals = 3.14_15_92_65_35;
यह बाइनरी, ऑक्टल और हेक्साडेसिमल ठिकानों के लिए उपसर्गों का उपयोग करके भी काम करता है:
short binary= 0b0_1_0_1;
int octal = 07_7_7_7_7_7_7_7_0;
long hexBytes = 0xFF_EC_DE_5E;
अंडरस्कोर के बारे में कुछ नियम हैं जो निम्नलिखित स्थानों पर उनकी नियुक्ति को मना करते हैं:
- किसी संख्या की शुरुआत या अंत में (जैसे
_123
या123_
मान्य नहीं हैं) - फ़्लोटिंग पॉइंट शाब्दिक में दशमलव बिंदु के निकट (जैसे
1._23
या1_.23
मान्य नहीं हैं) - F या L प्रत्यय से पहले (जैसे
1.23_F
या9999999_L
मान्य नहीं हैं) - उन स्थानों पर जहां अंकों की एक स्ट्रिंग अपेक्षित है (उदाहरण
0_xFFFF
मान्य नहीं है)
शाब्दिक में अनुक्रम बच
स्ट्रिंग और चरित्र शाब्दिक एक एस्केप मैकेनिज्म प्रदान करते हैं जो व्यक्त वर्ण कोड की अनुमति देता है जो अन्यथा शाब्दिक रूप से अनुमति नहीं दी जाएगी। एक भागने के क्रम में एक बैकस्लैश वर्ण ( \
) होता है, जिसके बाद एक अयस्क अधिक अन्य वर्ण होता है। एक ही क्रम दोनों वर्णों में मान्य हैं।
एस्केप सीक्वेंस का पूरा सेट निम्नानुसार है:
निकास का क्रम | अर्थ |
---|---|
\\ | एक बैकस्लैश ( \ ) वर्ण को दर्शाता है |
\' | एकल-उद्धरण ( ' ) वर्ण को दर्शाता है |
\" | एक दोहरे उद्धरण ( " ) वर्ण को दर्शाता है |
\n | एक पंक्ति फ़ीड ( LF ) वर्ण को दर्शाता है |
\r | एक गाड़ी वापसी ( CR ) चरित्र को दर्शाता है |
\t | एक क्षैतिज टैब ( HT ) वर्ण को दर्शाता है |
\f | एक फार्म फ़ीड ( FF ) चरित्र को दर्शाता है |
\b | एक बैकस्पेस ( BS ) चरित्र को दर्शाता है |
\<octal> | 0 से 255 की सीमा में एक वर्ण कोड को दर्शाता है। |
ऊपर दिए गए <octal>
में एक, दो या तीन ऑक्टल अंक ('0' के माध्यम से '7') होते हैं जो 0 और 255 (दशमलव) के बीच की संख्या का प्रतिनिधित्व करते हैं।
ध्यान दें कि किसी अन्य वर्ण द्वारा पीछा किया जाने वाला बैकस्लैश एक अमान्य एस्केप अनुक्रम है। JLS द्वारा अमान्य एस्केप दृश्यों को संकलन त्रुटियों के रूप में माना जाता है।
संदर्भ:
यूनिकोड बच जाता है
ऊपर वर्णित स्ट्रिंग और कैरेक्टर एस्केप सीक्वेंस के अलावा, जावा में एक अधिक सामान्य यूनिकोड एस्केपिंग तंत्र है, जैसा कि जेएलएस 3.3 में परिभाषित किया गया है । यूनिकोड बच जाता है । एक यूनिकोड एस्केप में निम्नलिखित सिंटैक्स होता है:
'\' 'u' <hex-digit> <hex-digit> <hex-digit> <hex-digit>
जहाँ <hex-digit>
'0'
, '1'
, '2'
, '3'
, '4'
, '5'
, '6'
, '7'
, '8'
, '9'
, 'a'
, 'b'
, 'c'
, 'd'
, 'e'
, 'f'
, 'A'
, 'B'
, 'C'
, 'D'
, 'E'
, 'F'
।
एक यूनिकोड एस्केप को जावा कंपाइलर द्वारा एक चरित्र में मैप किया जाता है (कड़ाई से 16-बिट यूनिकोड कोड यूनिट बोलते हुए), और स्रोत कोड में कहीं भी उपयोग किया जा सकता है जहां मैप किया गया वर्ण मान्य है। यह आमतौर पर चरित्र और स्ट्रिंग शाब्दिक में उपयोग किया जाता है, जब आपको एक शाब्दिक में गैर-एएससीआईआई चरित्र का प्रतिनिधित्व करने की आवश्यकता होती है।
रेग्जेस में बचना
TBD
दशमलव पूर्णांक शाब्दिक
पूर्णांक शाब्दिक मूल्य प्रदान करते हैं जिनका उपयोग आपको byte
, short
, int
, long
या char
उदाहरणों के लिए किया जा सकता है। (यह उदाहरण सरल दशमलव रूपों पर केंद्रित है। अन्य उदाहरण बताते हैं कि अष्टकोणीय, हेक्साडेसिमल और बाइनरी में शाब्दिक कैसे हैं, और पठनीयता में सुधार के लिए अंडरस्कोर का उपयोग करें।)
साधारण पूर्णांक शाब्दिक
पूर्णांक शाब्दिक का सबसे सरल और सबसे सामान्य रूप एक दशमलव पूर्णांक शाब्दिक है। उदाहरण के लिए:
0 // The decimal number zero (type 'int')
1 // The decimal number one (type 'int')
42 // The decimal number forty two (type 'int')
आपको अग्रणी शून्य से सावधान रहने की आवश्यकता है। एक अग्रणी शून्य एक पूर्णांक शाब्दिक का कारण बनता है जिसकी व्याख्या अष्टक दशमलव के रूप में की जाती है।
077 // This literal actually means 7 x 8 + 7 ... or 63 decimal!
पूर्णांक शाब्दिक हैं। यदि आप कुछ -10
या +10
देखते हैं, तो ये वास्तव में एकात्मक -
और एकात्मक +
संचालकों का उपयोग करते हुए अभिव्यक्ति हैं।
इस फॉर्म के पूर्णांक शाब्दिक की सीमा में एक आंतरिक प्रकार का int
, और इसे शून्य से 2 31 या 2,147,483,648 की सीमा में गिरना चाहिए।
ध्यान दें कि 2 31 Integer.MAX_VALUE
से 1
अधिक है। के माध्यम से 0 से शाब्दिक 2147483647
कहीं भी इस्तेमाल किया जा सकता है, लेकिन इसका इस्तेमाल करने के लिए एक संकलन त्रुटि है 2147483648
के बिना एक पूर्ववर्ती एकल -
ऑपरेटर। (दूसरे शब्दों में, यह Integer.MIN_VALUE
के मूल्य को व्यक्त करने के लिए आरक्षित है।)
int max = 2147483647; // OK
int min = -2147483648; // OK
int tooBig = 2147483648; // ERROR
लंबे पूर्णांक शाब्दिक
एक L
प्रत्यय को जोड़कर long
प्रकार के साहित्य व्यक्त किए जाते हैं। उदाहरण के लिए:
0L // The decimal number zero (type 'long')
1L // The decimal number one (type 'long')
2147483648L // The value of Integer.MAX_VALUE + 1
long big = 2147483648; // ERROR
long big2 = 2147483648L; // OK
ध्यान दें कि बीच के अंतर को int
और long
शाब्दिक अन्य स्थानों में महत्वपूर्ण है। उदाहरण के लिए
int i = 2147483647;
long l = i + 1; // Produces a negative value because the operation is
// performed using 32 bit arithmetic, and the
// addition overflows
long l2 = i + 1L; // Produces the (intuitively) correct value.
संदर्भ: JLS 3.10.1 - पूर्णांक साहित्य
बूलियन शाब्दिक
बूलियन शाब्दिक जावा प्रोग्रामिंग भाषा में शाब्दिक रूप से सबसे सरल हैं। दो संभावित boolean
मान शाब्दिक प्रतिनिधित्व कर रहे हैं true
और false
। ये केस-संवेदी हैं। उदाहरण के लिए:
boolean flag = true; // using the 'true' literal
flag = false; // using the 'false' literal
स्ट्रिंग शाब्दिक
स्ट्रिंग स्रोत शाब्दिक जावा स्रोत कोड में स्ट्रिंग मानों का प्रतिनिधित्व करने के लिए सबसे सुविधाजनक तरीका प्रदान करते हैं। एक स्ट्रिंग शाब्दिक के होते हैं:
- एक प्रारंभिक डबल-उद्धरण (
"
) वर्ण। - शून्य या अधिक अन्य वर्ण जो न तो दोहरे-उद्धरण या रेखा-विराम वर्ण हैं। (बैकस्लैश (
\
) वर्ण बाद के वर्णों के अर्थ को बदल देता है; शाब्दिक में एस्केप अनुक्रम देखें।) - एक बंद दोहरे भाव चरित्र।
उदाहरण के लिए:
"Hello world" // A literal denoting an 11 character String
"" // A literal denoting an empty (zero length) String
"\"" // A literal denoting a String consisting of one
// double quote character
"1\t2\t3\n" // Another literal with escape sequences
ध्यान दें कि एक एकल स्ट्रिंग शाब्दिक कई स्रोत कोड लाइनों को नहीं फैला सकता है। यह एक शाब्दिक समापन डबल-उद्धरण से पहले होने वाली लाइन-ब्रेक (या स्रोत फ़ाइल के अंत) के लिए एक संकलन त्रुटि है। उदाहरण के लिए:
"Jello world // Compilation error (at the end of the line!)
लंबे तार
यदि आपको एक स्ट्रिंग की आवश्यकता है जो एक पंक्ति में फिट होने के लिए बहुत लंबा है, तो इसे व्यक्त करने का पारंपरिक तरीका इसे कई शाब्दिक रूप से विभाजित करना और टुकड़ों में शामिल होने के लिए संघचालक ऑपरेटर ( +
) का उपयोग करना है। उदाहरण के लिए
String typingPractice = "The quick brown fox " +
"jumped over " +
"the lazy dog"
स्ट्रिंग शाब्दिक और +
से ऊपर की तरह एक अभिव्यक्ति एक निरंतर अभिव्यक्ति होने की आवश्यकताओं को संतुष्ट करती है। इसका मतलब है कि संकलक द्वारा अभिव्यक्ति का मूल्यांकन किया जाएगा और एकल String
ऑब्जेक्ट द्वारा रनटाइम पर प्रतिनिधित्व किया जाएगा।
स्ट्रिंग लिटरल्स का इंटर्निंग
जब स्ट्रिंग फाइल शाब्दिक रूप से JVM द्वारा लोड की जाती है, तो संबंधित String
ऑब्जेक्ट्स को रनटाइम सिस्टम द्वारा नजरबंद किया जाता है। इसका मतलब यह है कि कई वर्गों में उपयोग किए जाने वाले एक स्ट्रिंग शाब्दिक से अधिक जगह नहीं होती है यदि यह एक वर्ग में उपयोग किया जाता था।
इंटर्निंग और स्ट्रिंग पूल के बारे में अधिक जानकारी के लिए स्ट्रिंग्स पूल और स्ट्रैप विषय में ढेर भंडारण उदाहरण देखें।
अशक्त शाब्दिक
अशक्त शाब्दिक (के रूप में लिखा null
) एक और अशक्त तरह का एकमात्र मूल्य का प्रतिनिधित्व करता। यहाँ कुछ उदाहरण हैं
MyClass object = null;
MyClass[] objects = new MyClass[]{new MyClass(), null, new MyClass()};
myMethod(null);
if (objects != null) {
// Do something
}
अशक्त प्रकार बल्कि असामान्य है। इसका कोई नाम नहीं है, इसलिए आप इसे जावा स्रोत कोड में व्यक्त नहीं कर सकते। (और इसका कोई रनटाइम प्रतिनिधित्व भी नहीं है।)
अशक्त प्रकार के एकमात्र उद्देश्य के प्रकार के हो रहा है null
। यह सभी संदर्भ प्रकारों के साथ संगत असाइनमेंट है, और इसे किसी भी प्रकार के संदर्भ में डाला जा सकता है। (बाद के मामले में, कलाकार रनटाइम प्रकार की जांच नहीं करता है।)
अंत में, null
पास ऐसी संपत्ति है जो null instanceof <SomeReferenceType>
false
मूल्यांकन करेगी, चाहे वह किसी भी प्रकार की हो।
फ्लोटिंग-पॉइंट शाब्दिक
फ़्लोटिंग पॉइंट शाब्दिक वे मान प्रदान करते हैं जिनका उपयोग किया जा सकता है जहाँ आपको float
या double
उदाहरण की आवश्यकता होती है। तीन प्रकार के फ्लोटिंग पॉइंट शाब्दिक हैं।
- सरल दशमलव रूपों
- स्केल किए गए दशमलव रूप
- हेक्साडेसिमल रूप
(जेएलएस सिंटैक्स नियम दो दशमलव रूपों को एक ही रूप में जोड़ते हैं। हम स्पष्टीकरण की आसानी के लिए उन्हें अलग से मानते हैं।)
float
और double
शाब्दिक के लिए विशिष्ट शाब्दिक प्रकार हैं, प्रत्यय का उपयोग करके व्यक्त किया गया है। विभिन्न रूपों में विभिन्न चीजों को व्यक्त करने के लिए अक्षरों का उपयोग किया जाता है। ये पत्र मामले असंवेदनशील हैं।
सरल दशमलव रूपों
फ्लोटिंग पॉइंट शाब्दिक का सबसे सरल रूप एक या अधिक दशमलव अंक और एक दशमलव बिंदु ( .
) और एक वैकल्पिक प्रत्यय ( f
, F
, d
या D
) के होते हैं। वैकल्पिक प्रत्यय आपको यह निर्दिष्ट करने की अनुमति देता है कि शाब्दिक एक float
( f
या F
) या double
( d
या D
) मूल्य है। डिफ़ॉल्ट (जब कोई प्रत्यय निर्दिष्ट नहीं है) double
।
उदाहरण के लिए
0.0 // this denotes zero
.0 // this also denotes zero
0. // this also denotes zero
3.14159 // this denotes Pi, accurate to (approximately!) 5 decimal places.
1.0F // a `float` literal
1.0D // a `double` literal. (`double` is the default if no suffix is given)
वास्तव में, एक प्रत्यय के बाद दशमलव अंक भी एक अस्थायी बिंदु शाब्दिक है।
1F // means the same thing as 1.0F
दशमलव शाब्दिक का अर्थ IEEE फ़्लोटिंग पॉइंट नंबर है जो दशमलव फ़्लोटिंग फ़ार्म फॉर्म द्वारा निरूपित अनंत परिशुद्धता गणितीय रियल संख्या के सबसे करीब है। यह वैचारिक मूल्य IEEE बाइनरी फ्लोटिंग पॉइंट प्रतिनिधित्व में गोल से निकटतम निकटतम में परिवर्तित होता है। (दशमलव रूपांतरण के सटीक शब्दार्थ Double.valueOf(String)
और Float.valueOf(String)
लिए javadocs में निर्दिष्ट हैं, यह ध्यान में रखते हुए कि संख्या सिंटैक्स में अंतर हैं।)
स्केल किए गए दशमलव रूप
स्केल किए गए दशमलव रूपों में एक E
या e
द्वारा शुरू किए गए एक घातांक भाग के साथ सरल दशमलव शामिल हैं, और एक हस्ताक्षरित पूर्णांक के बाद। घातांक भाग दस की शक्ति से दशमलव रूप को गुणा करने के लिए एक छोटा हाथ है, जैसा कि नीचे दिए गए उदाहरणों में दिखाया गया है। float
और double
लीटर को अलग करने के लिए एक वैकल्पिक प्रत्यय भी है। यहाँ कुछ उदाहरण हैं:
1.0E1 // this means 1.0 x 10^1 ... or 10.0 (double)
1E-1D // this means 1.0 x 10^(-1) ... or 0.1 (double)
1.0e10f // this means 1.0 x 10^(10) ... or 10000000000.0 (float)
एक शाब्दिक का आकार प्रतिनिधित्व ( float
या double
) द्वारा सीमित है। यदि स्केल फैक्टर बहुत अधिक या बहुत छोटा है, तो यह एक संकलित त्रुटि है।
हेक्साडेसिमल रूप
जावा 6 से शुरू होकर, हेक्साडेसिमल में फ्लोटिंग पॉइंट शाब्दिक व्यक्त करना संभव है। हेक्साडेसिमल रूप में निम्न अंतर के साथ सरल और स्केल दशमलव रूपों का एक अनुरूप सिंटैक्स है:
- प्रत्येक हेक्साडेसिमल फ्लोटिंग पॉइंट शाब्दिक एक शून्य (
0
) और फिर एकx
याX
साथ शुरू होता है। - संख्या (लेकिन प्रतिपादक हिस्सा!) के अंक भी हेक्साडेसिमल अंक में शामिल हैं
a
के माध्यम सेf
और उनके बड़े समकक्ष। - प्रतिपादक अनिवार्य है , और एक
e
याE
बजाय पत्रp
(याP
) द्वारा पेश किया जाता है। घातांक एक स्केलिंग कारक का प्रतिनिधित्व करता है जो 10 की शक्ति के बजाय 2 की शक्ति है।
यहाँ कुछ उदाहरण हैं:
0x0.0p0f // this is zero expressed in hexadecimal form (`float`)
0xff.0p19 // this is 255.0 x 2^19 (`double`)
सलाह: चूंकि हेक्साडेसिमल फ्लोटिंग-पॉइंट फॉर्म अधिकांश जावा प्रोग्रामर के लिए अपरिचित हैं, इसलिए उन्हें संयम से उपयोग करने की सलाह दी जाती है।
अंडरस्कोर
जावा 7 से शुरू होकर, फ्लोटिंग पॉइंट शाब्दिक के तीनों रूपों में अंक तार के भीतर अंडरस्कोर की अनुमति है। यह "घातांक" भागों पर भी लागू होता है। पठनीयता में सुधार के लिए अंडरस्कोर का उपयोग करना देखें।
विशेष स्थितियां
यह एक संकलन त्रुटि है यदि एक फ़्लोटिंग पॉइंट शाब्दिक एक संख्या को दर्शाता है जो चयनित प्रतिनिधित्व में प्रतिनिधित्व करने के लिए बहुत बड़ा या बहुत छोटा है; यानी अगर संख्या + INF या -INF को ओवरफ्लो करेगी, या 0.0 से कम होगी। हालाँकि, यह एक गैर-शून्य हरकृत संख्या का प्रतिनिधित्व करने के लिए शाब्दिक के लिए कानूनी है।
फ्लोटिंग पॉइंट शाब्दिक सिंटैक्स IEEE 754 विशेष मान जैसे कि INF और NaN मान के लिए शाब्दिक प्रतिनिधित्व प्रदान नहीं करता है। यदि आपको उन्हें स्रोत कोड में व्यक्त करने की आवश्यकता है, तो अनुशंसित तरीका java.lang.Float
और java.lang.Double
द्वारा परिभाषित स्थिरांक का उपयोग करना है; जैसे Float.NaN
, Float.NEGATIVE_INFINITY
और Float.POSITIVE_INFINITY
।
चरित्र शाब्दिक
चरित्र के स्रोत जावा स्रोत कोड में char
मूल्यों को व्यक्त करने का सबसे सुविधाजनक तरीका प्रदान करते हैं। एक चरित्र शाब्दिक के होते हैं:
- एक उद्घाटन एकल-उद्धरण (
'
) चरित्र। - एक चरित्र का प्रतिनिधित्व। यह प्रतिनिधित्व एकल-उद्धरण या लाइन-ब्रेक चरित्र नहीं हो सकता है, लेकिन यह बैकस्लैश (
\
) वर्ण द्वारा प्रस्तुत किया गया एक एस्केप अनुक्रम हो सकता है; शाब्दिक में एस्केप अनुक्रम देखें। - एक समापन एकल-उद्धरण (
'
) चरित्र।
उदाहरण के लिए:
char a = 'a';
char doubleQuote = '"';
char singleQuote = '\'';
एक चरित्र शाब्दिक में एक लाइन-ब्रेक एक संकलन त्रुटि है:
char newline = '
// Compilation error in previous line
char newLine = '\n'; // Correct