1. Integer
वर्ग
Integer
यह भी अच्छा है कि यह एक वर्ग है, जिसका अर्थ है कि इसमें क्षेत्र और विधियाँ हो सकती हैं। और, ज़ाहिर है, यह उनके पास है। उनमें से बहुत सारे - उनमें से दर्जनों। यहां हम सबसे बुनियादी पर विचार करेंगे।
वर्ग Integer
में दो फ़ील्ड होते हैं जिनमें प्रकार के अधिकतम और न्यूनतम संभव मान होते हैं int
:
मैदान | विवरण |
---|---|
|
int प्रकार का अधिकतम संभव मूल्य |
|
int प्रकार का न्यूनतम संभव मूल्य |
कभी-कभी आप int
किसी वेरिएबल को सबसे छोटा या सबसे बड़ा संभव मान निर्दिष्ट करना चाहते हैं। अपने कोड को समझने योग्य स्थिरांक के साथ अव्यवस्थित करने से बचने के लिए, आप इसे निम्नानुसार स्पष्ट रूप से लिख सकते हैं:
कोड | विवरण |
---|---|
|
|
कक्षा Integer
में कुछ रोचक विधियाँ भी हैं। वे यहाँ हैं:
तरीकों | विवरण |
---|---|
|
एक स्ट्रिंग लौटाता है जो संख्या का हेक्साडेसिमल प्रतिनिधित्व है |
|
एक स्ट्रिंग लौटाता है जो संख्या का द्विआधारी प्रतिनिधित्व है |
|
एक स्ट्रिंग लौटाता है जो संख्या का ऑक्टल प्रतिनिधित्व है |
|
पास को किसी वस्तु int में लपेटता हैInteger |
|
पास की गई स्ट्रिंग से प्राप्त संख्या लौटाता है |
आपने पहले स्थिर Integer.parseInt()
विधि का सामना किया था। आइए याद करें कि यह कैसे काम करता है:
int name = Integer.parseInt(string);
यदि एक स्ट्रिंग जिसमें संख्या (केवल अंक) parseInt()
विधि को पास की जाती है, तो यह स्ट्रिंग को पार्स करेगी और इसमें शामिल संख्या वापस कर देगी।
बाकी तरीके भी उपयोगी हैं। उदाहरण के लिए, उनमें से कुछ पास की गई संख्या को संख्या के बाइनरी, ऑक्टल या हेक्साडेसिमल प्रतिनिधित्व वाली स्ट्रिंग में परिवर्तित कर सकते हैं।
2. Double
वर्ग
सामान्य तौर पर, Double
वर्ग वर्ग के समान होता है Integer
, केवल यह double
एक के बजाय एक को लपेटता है int
। इसके क्षेत्र और विधियाँ भी हैं जो हमारे लिए रूचिकर होंगी। उनमें से कुछ पर विचार करें:
कक्षा Double
में छह रोचक क्षेत्र हैं:
मैदान | विवरण |
---|---|
|
नकारात्मक अनंत |
|
सकारात्मक अनंत |
|
न्यूनतम संभव घातांक (2 x ) |
|
अधिकतम संभव घातांक (2 x ) |
|
double प्रकार का न्यूनतम संभव मूल्य |
|
double प्रकार का अधिकतम संभव मूल्य |
अनंतता
यदि आप -1.0
से विभाजित करते हैं 0.0
, तो आपको नकारात्मक अनंतता मिलती है। यदि आप 1.0
से विभाजित करते हैं 0.0
, तो आपको सकारात्मक अनंतता मिलती है। न केवल आप a को double
शून्य से विभाजित कर सकते हैं, बल्कि आप इसका उपयोग इन परिचालनों के परिणाम को संग्रहीत करने के लिए भी कर सकते हैं।
ए के प्रतिपादकdouble
प्रतिपादक को समझना आसान है। आंतरिक रूप से, एक डबल में एक मंटिसा और एक एक्सपोनेंट होता है। लेकिन यहाँ घातांक का मान नहीं है , बल्कि . इस प्रकार, यदि घातांक में वृद्धि होती है , तो संख्या का कुल मान दोगुना हो जाएगा।10x
2x
1
MIN_EXPONENT == -1024
, जिसका अर्थ है , जो लगभग बराबर है2-1024
10-308
और हां, Double
कक्षा में दिलचस्प तरीके हैं:
तरीकों | विवरण |
---|---|
|
एक स्ट्रिंग लौटाता है जो संख्या का हेक्साडेसिमल प्रतिनिधित्व है |
|
जांचता है कि पारित संख्या अनंत है या नहीं। |
|
जाँचता है कि उत्तीर्ण संख्या है या नहींNaN |
|
double किसी Double वस्तु में पास को लपेटता है |
|
पास की गई स्ट्रिंग से प्राप्त संख्या लौटाता है |
दिलचस्प बात यह है कि एक ऐसी isInfinite()
विधि है जो true
पारित संख्या सकारात्मक या नकारात्मक अनंत होने पर वापस आती है।
विधि isNaN()
समान है - यह जांचता है कि पारित संख्या है या नहीं NaN
( नॉट-ए-नंबर , एक विशेष स्थिरांक जो एक अपरिभाषित मान इंगित करता है)।
3. Character
वर्ग
कक्षा Character
मुख्य रूप से इसकी बड़ी संख्या में स्थिर उपयोगिता विधियों के लिए दिलचस्प है जो आपको यह जांचने देती है कि वर्ण विभिन्न श्रेणियों से संबंधित हैं या नहीं।
उदाहरण
तरीकों | विवरण |
---|---|
|
जाँचता है कि कोई वर्ण वर्णानुक्रमिक वर्ण है या नहीं |
|
जाँचता है कि क्या वर्ण एक अक्षर है |
|
जाँचता है कि क्या वर्ण एक अंक है |
|
जाँचता है कि क्या वर्ण एक स्थान है, एक पंक्ति विराम है, या एक पृष्ठ विराम है (कोड: 12, 13, 14) |
|
जाँचता है कि क्या वर्ण रिक्त स्थान है: एक स्थान, टैब, आदि। |
|
जाँचता है कि क्या वर्ण लोअरकेस है |
|
जाँचता है कि क्या वर्ण अपरकेस है |
|
वर्ण को लोअरकेस में बदलता है |
|
वर्ण को अपरकेस में परिवर्तित करता है |
इन विधियों की एक विशेषता यह है कि वे सभी ज्ञात वर्णों के साथ काम करते हैं: अरबी अंकों को अंक आदि के रूप में वर्गीकृत किया जाता है।
4. Boolean
वर्ग
प्रकार Boolean
वस्तुतः प्रकार के समान ही है boolean
। मतभेद न्यूनतम हैं।
नीचे हम वर्ग का सरलीकृत संस्करण दिखाते हैं Boolean
:
कोड | विवरण |
---|---|
|
स्थिरांक: и TRUE वेरिएबल FALSE क्लास Boolean कन्स्ट्रक्टर विधि आंतरिक चर का मान लौटाती है यह स्थिर विधि और true को परिवर्तित करती है । TRUE false FALSE |
प्रकार Boolean
में दो स्थिरांक (दो फ़ील्ड) होते हैं:
कक्षा के स्थिरांक | बूलियन प्रकार के लिए समकक्ष | विवरण |
---|---|---|
|
|
सत्य |
|
|
असत्य |
आप उनके साथ उसी तरह काम कर सकते हैं जैसे आप boolean
टाइप के साथ काम करते हैं:
कोड | टिप्पणी |
---|---|
|
वर्ग Boolean ही एकमात्र ऐसा वर्ग है जिसे किसी शर्त के अंदर लिखा जा सकता है |
|
सभी तीन चर बराबर हैं true /TRUE |
|
दोनों का उपयोग करके स्थिरांक की तुलना की जा सकती है equals और == यह भी काम करेगा। |
ऑटोबॉक्सिंग यहां बहुत अच्छा काम करती है। इसका मतलब है कि आप इस प्रकार का उपयोग उसी तरह से कर सकते हैं जैसे boolean
प्रकार - देखने के लिए कोई नुकसान नहीं है।
कैसे लिखा है | यह काम किस प्रकार करता है |
---|---|
|
|
boolean
और यहाँ और प्रकारों की तुलना Boolean
:
boolean a = true;
Boolean b = true; // b will be equal to Boolean.TRUE
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // true (compared by reference, but they point to the same object)
यदि आपको वास्तव में एक स्वतंत्र Boolean
वस्तु की आवश्यकता है, तो आपको इसे स्पष्ट रूप से बनाना होगा:
boolean a = true;
Boolean b = new Boolean(true); // New Boolean object
Boolean c = true; // c will be equal to Boolean.TRUE
a == b; // true (compared by value)
a == c; // true (compared by value)
b == c; // false (compared by reference, and they point to different objects)
एक और उदाहरण, जहाँ हम Boolean
a के अंदर का उपयोग करेंगे if
:
कोड | टिप्पणी |
---|---|
|
यह संकलन और काम करेगा |
यह संकलित होगा, लेकिन यह काम नहीं करेगा!
कोड | टिप्पणी |
---|---|
|
त्रुटि । यह रेखा अपवाद फेंक देगी |
5. ऑटोबॉक्सिंग के दौरान कैशिंग मान
पूर्णांक आवरण प्रकार से संबंधित कुछ नुकसान हैं।
जैसा कि आप पहले से ही जानते हैं, यदि हम a int
और an की तुलना करते हैं Integer
, तो the को Integer
a में बदल दिया जाता है int
:
कैसे लिखा है | यह काम किस प्रकार करता है |
---|---|
|
|
यदि आप दो Integer
वस्तुओं की एक दूसरे से तुलना करते हैं, तो वे int
एस में परिवर्तित नहीं होते हैं:
कोड | कंसोल आउटपुट |
---|---|
|
|
a == c
और , लेकिन , क्योंकि जब हम तुलना करते हैं और हम संदर्भों की तुलना कर रहे होते हैं। जो अनिवार्य रूप से हम उम्मीद करेंगे।b == c
a != b
a
b
आश्चर्य
लेकिन अगर हम 500
के साथ प्रतिस्थापित करते हैं 100
, तो हमें एक पूरी तरह से अलग परिणाम मिलता है:
कोड | कंसोल आउटपुट |
---|---|
|
|
यहां मुद्दा यह है कि ऑटोबॉक्सिंग के दौरान हमेशा एक नई Integer
वस्तु वास्तव में नहीं बनाई जाती है । वस्तुओं को समावेशी -128
के माध्यम से मूल्यों के लिए कैश किया जाता है ।127
वर्ग Integer
में एक छिपी हुई सरणी है जो वस्तुओं को संग्रहीत करती है: Integer(-128)
, Integer(-127)
, ... Integer(126)
,Integer(127)
यदि आप लिखते हैं Integer x = 128
, तो ऑटोबॉक्सिंग प्रक्रिया एक नई वस्तु बनाती है, लेकिन यदि आप लिखते हैं Integer x = 127
, तो ऑटोबॉक्सिंग प्रक्रिया मौजूदा ऑब्जेक्ट को कैश (सरणी से) से पुनर्प्राप्त करती है।
यदि आप नहीं चाहते कि Integer
वस्तु कैश से आए, तो आपको इसे स्पष्ट रूप से लिखकर बनाना होगा:Integer x = new Integer(127);
सभी रैपर प्रकारों में ऐसा कैश होता है: Integer
, Long
, Byte
, Short
, Boolean
. प्रकार के लिए Boolean
, इसके TRUE
और FALSE
मान दोनों स्थिर हैं, इसलिए वे भी अनिवार्य रूप से कैश किए गए हैं।
GO TO FULL VERSION