Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Java

JShell में Java 9: रैपर ऑब्जेक्ट्स बनाना - Integer, Double, आदि

Java में प्रत्येक प्रिमिटिव प्रकार के लिए एक संगत रैपर क्लास होती है। ये रैपर क्लासेस अपरिवर्तनीय होती हैं और प्रिमिटिव मानों को ऑब्जेक्ट्स के रूप में उपयोग करने, टाइप जानकारी एक्सेस करने, और ऑटो-बॉक्सिंग/अनबॉक्सिंग को सक्षम करने की अनुमति देती हैं।

प्रिमिटिव-रैपर मैपिंग

प्रिमिटिवरैपर क्लासआकारनिरंतर
byteByte8 बिटBYTE, MIN_VALUE, MAX_VALUE
shortShort16 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE
intInteger32 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE
longLong64 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE
floatFloat32 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE, NaN
doubleDouble64 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE, NaN
charCharacter16 बिटSIZE, BYTES, MIN_VALUE, MAX_VALUE
booleanBoolean~1 बिटTRUE, FALSE

रैपर ऑब्जेक्ट्स बनाने के तरीके

1. valueOf() फैक्टर मेथड (अनुशंसित)

कैशिंग का उपयोग करता है (-128 से 127 तक Integer के लिए), मौजूदा ऑब्जेक्ट्स का पुनः उपयोग करता है।

jshell> Integer i1 = Integer.valueOf(100)
i1 ==> 100

jshell> Integer i2 = Integer.valueOf(100)
i2 ==> 100

jshell> i1 == i2  // समान कैश्ड ऑब्जेक्ट!
$3 ==> true

jshell> // कैश रेंज के बाहर: नए ऑब्जेक्ट्स
jshell> Integer i3 = Integer.valueOf(1000)
i3 ==> 1000

jshell> Integer i4 = Integer.valueOf(1000)
i4 ==> 1000

jshell> i3 == i4  // अलग ऑब्जेक्ट्स
$6 ==> false

2. कंस्ट्रक्टर (डिप्रिकेटेड Java 9+)

jshell> Integer i1 = new Integer(10)
i1 ==> 10

jshell> Integer i2 = new Integer(10)
i2 ==> 10

jshell> i1 == i2  // हमेशा नए ऑब्जेक्ट्स
$3 ==> false

// चेतावनी: Java 9 से डिप्रिकेटेड
|  Warning: Integer(int) in Integer has been deprecated

3. ऑटो-बॉक्सिंग (प्रिमिटिव → रैपर)

jshell> Integer i = 10  // ऑटो-बॉक्सिंग: Integer.valueOf(10)
i ==> 10

jshell> Double d = 3.14
d ==> 3.14

jshell> Boolean flag = true
flag ==> true

4. अनबॉक्सिंग (रैपर → प्रिमिटिव)

jshell> Integer i = Integer.valueOf(42)
i ==> 42

jshell> int primitive = i  // अनबॉक्सिंग: i.intValue()
primitive ==> 42

jshell> // अभिव्यक्तियों में स्वचालित
jshell> int sum = i + 10
sum ==> 52

JShell सत्र: Integer स्थिरांक और यूटिलिटीज

jshell> Integer.MAX_VALUE
$5 ==> 2147483647

jshell> Integer.MIN_VALUE
$6 ==> -2147483648

jshell> Integer.SIZE
$7 ==> 32

jshell> Integer.BYTES
$8 ==> 4

jshell> Integer.BYTES * 8 == Integer.SIZE
$9 ==> true

jshell> // उपयोगी मेथड्स
jshell> Integer.toBinaryString(42)
$10 ==> "101010"

jshell> Integer.toHexString(255)
$11 ==> "ff"

jshell> Integer.parseInt("101010", 2)
$12 ==> 42

jshell> Integer.parseInt("ff", 16)
$13 ==> 255

jshell> Integer.compare(10, 20)
$14 ==> -1

jshell> Integer.sum(10, 20)
$15 ==> 30

कैशिंग व्यवहार विवरण

jshell> // Integer कैश: -128 से 127 (डिफ़ॉल्ट)
jshell> Integer cached1 = Integer.valueOf(127)
cached1 ==> 127

jshell> Integer cached2 = Integer.valueOf(127)
cached2 ==> 127

jshell> cached1 == cached2
$3 ==> true

jshell> Integer notCached1 = Integer.valueOf(128)
notCached1 ==> 128

jshell> Integer notCached2 = Integer.valueOf(128)
notCached2 ==> 128

jshell> notCached1 == notCached2
$6 ==> false

jshell> // कैश आकार JVM विकल्प के माध्यम से कॉन्फ़िगर करने योग्य:
# -XX:AutoBoxCacheMax=2000

अन्य रैपर्स के साथ JShell प्रयोग

jshell> Double d = Double.valueOf("3.14159")
d ==> 3.14159

jshell> Double.isNaN(0.0 / 0.0)
$2 ==> true

jshell> Double.POSITIVE_INFINITY
$3 ==> Infinity

jshell> Boolean b = Boolean.valueOf("true")
b ==> true

jshell> Boolean.parseBoolean("false")
$5 ==> false

jshell> Character c = Character.valueOf('A')
c ==> 'A'

jshell> Character.isDigit('5')
$7 ==> true

jshell> Character.isLetter('A')
$8 ==> true

jshell> Long l = Long.valueOf(10000000000L)
l ==> 10000000000

jshell> Long.MAX_VALUE
$10 ==> 9223372036854775807

पहचान बनाम समानता

jshell> Integer a = 1000
a ==> 1000

jshell> Integer b = 1000
b ==> 1000

jshell> a == b        // पहचान: false (कैश रेंज के बाहर)
$3 ==> false

jshell> a.equals(b)   // समानता: true
$4 ==> true

jshell> // सर्वोत्तम अभ्यास: तुलना के लिए हमेशा .equals() उपयोग करें
jshell> Objects.equals(a, b)  // नल-सुरक्षित
$5 ==> true

प्रदर्शन नोट्स

  • valueOf() प्राथमिकता दें - कैशिंग लाभ
  • new Wrapper() से बचें - डिप्रिकेटेड, हमेशा नया ऑब्जेक्ट बनाता है
  • ऑटो-बॉक्सिंग सावधानी: लूप में अनावश्यक ऑब्जेक्ट निर्माण
  • प्रिमिटिव्स का उपयोग करें प्रदर्शन-महत्वपूर्ण कोड में (नो ऑब्जेक्ट ओवरहेड)
  • कलेक्शन्स के लिए रैपर्स आवश्यक: List नहीं List

सारांश

  • प्रत्येक प्रिमिटिव के लिए एक अपरिवर्तनीय रैपर क्लास होती है
  • valueOf() कैशिंग के साथ ऑब्जेक्ट्स बनाता है (Integer के लिए -128 से 127)
  • new Wrapper() डिप्रिकेटेड है (Java 9+)
  • ऑटो-बॉक्सिंग/अनबॉक्सिंग प्रिमिटिव↔रैपर रूपांतरण को स्वचालित करता है
  • पहचान (==) के लिए नहीं, समानता (.equals()) के लिए उपयोग करें
  • निरंतर: MIN_VALUE, MAX_VALUE, SIZE, BYTES
  1. - जावा 9 में मॉड्यूल कैसे बनाएं?

    मॉड्यूल कोड और डेटा का एक पैकेज है। मॉड्यूल का कोड कई पैकेज में व्यवस्थित होता है और प्रत्येक पैकेज में जावा क्लासेस और इंटरफेस होते हैं। मॉड्यूल का डेटा में रिसोर्स फाइलें और अन्य स्टेटिक जानकारी शामिल होती है। मॉड्यूल की एक महत्वपूर्ण विशेषता यह है कि इसमें इसकी आर्टिफैक्ट के रूट डायरेक्टरी में mo

  1. - जावा 9 में JShell में क्लास और ऑब्जेक्ट कैसे बनाएं?

    JShell जावा 9 में जारी किया गया एक नया जावा शेल टूल है। यह पहला आधिकारिक REPL (रीड-इवैल्यूएट-प्रिंट-लूप) एप्लिकेशन है। यह टूल सरल जावा प्रोग्राम और लॉजिक जैसे स्टेटमेंट्स, लूप्स, एक्सप्रेशन आदि को एक्जीक्यूट और इवैल्यूएट करने में मदद करता है। जावा REPL कमांड प्रॉम्प्ट में एक सरल प्रोग्रामिंग वातावरण

  1. - Java में अस्थायी फाइलें बनाएं: एक व्यावहारिक गाइड

    कभी-कभी हमें कुछ जानकारी स्टोर करने और बाद में उन्हें हटाने के लिए ऑन-द-फ्लाई अस्थायी फाइलें बनाने की आवश्यकता होती है। Java में, हम अस्थायी फाइलें बनाने के लिए Files.createTempFile() मेथड्स का उपयोग कर सकते हैं। अस्थायी फाइलें बनाएं निम्नलिखित उदाहरण अस्थायी फ़ाइल बनाने के लिए Files.createTempFi