प्रौद्योगिकी साझेदारी

जावा १२८ जालम्

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

किम् १२८ जालम्

प्रथमं कोडस्य एकं भागं पश्यामः

		int a0=127;
        int a1=127;
        Integer a2=127;
        Integer a3=127;
        System.out.println(a0==a1);  // 1、运行结果是true
        System.out.println(a0==a2);  // 2、运行结果是true
        System.out.println(a2==a3);  // 3、运行结果是true
        System.out.println(a2.equals(a0)); // 注意这里必须是包装类的a2才能使用equals,a0不能使用
                                           // 4、运行结果是true
        System.out.println(a2.equals(a3)); // 5、运行结果是true
        System.out.println("-----------------------------");

        int b0=200;
        int b1=200;
        Integer b2=200;
        Integer b3=200;
        System.out.println(b0==b1);	// 6、运行结果是true
        System.out.println(b0==b2);	// 7、运行结果是true
        System.out.println(b2==b3);// 8、运行结果是false
        System.out.println(b2.equals(b0)); // 9、运行结果是true
        System.out.println(b2.equals(b3)); // 10、运行结果是true
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • किं धावनस्य परिणामः मया अपेक्षितः?
    वस्तुतः ८ रनिंग् परिणामः तथाकथितः १२८ जालः अस्ति ।

  • जावा 128 जालम् इदं निर्दिशति यत् यदा मूलभूतप्रकारस्य दत्तांशस्य एन्कैप्सुलेशनवर्गेण रक्षितं मूल्यं 128 इत्यस्मात् अधिकं वा समानं वा भवति तदा प्रत्येकस्य वर्गस्य पता समानं न भवतिप्रकटितुं १२८ इति न आवश्यकम् ।

    सरलतया वक्तुं शक्यते यत् यदा 127 इत्यस्मात् न्यूनं वा समं वा भवति तथा च -128 इत्यस्मात् अधिकं वा समं वा भवति तदा स्वयमेव यत् मूल्यं बक्से भवति तत् मूल्यं भवति यत् एकस्मिन् एव पते विद्यते यदा 127 इत्यस्मात् अधिकं भवति तदा मूल्यं यत् अस्ति स्वयमेव बक्सीकृतं न समानम्। अर्थात् यावत् परिधिः [-१२८,१२७] नास्ति तावत् == इत्यस्य उपयोगेन मिथ्या भविष्यति । यदि समाः प्रयुज्यन्ते तर्हि परिणामः सत्यः भविष्यति । तथा च यद्यपि मूल्यं वर्तमानपरिधिमध्ये नास्ति तथापि यदि Integer इत्यस्य उपयोगः भवति तर्हि स्वयमेव अनबॉक्सः भविष्यति, अतः 128 trap समस्या न भविष्यति, अतः सप्तमः धावनः सत्यः अस्ति

१२८ जालं किमर्थं दृश्यते ?

स्रोतसङ्केतं पश्यन्तु
	/**解释精简一部分后
     * This method will always cache values in the range -128 to 127
     */
	public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

दृष्टान्तरूपेण दर्शयतु : १.
1. IntegerCache.low इत्यस्य मूल्यं -128 अस्ति तथा च IntegerCache.high इत्यस्य मूल्यं 127 अस्ति ।
2. Integer इत्यस्य valueOf मेथड् इत्यस्मिन् एकं cache array संगृह्यते, यत् cache इत्यस्य समकक्षं भवति, यत् -128 तः 127 closed interval पर्यन्तं भवति ।
3. यदा वयं यत् मूल्यं गृह्णामः तत् [-128, 127] मध्ये भवति तदा प्रत्यागतं मूल्यं IntegerCache.cache array मध्ये परिभाषितं मूल्यं भवति, तथा च नूतनं वस्तु निर्मातुं आवश्यकता नास्ति
4. यदा मूल्यं परिधिमध्ये नास्ति तदा नूतनं वस्तु == न्यायस्य सम्बोधनं भवति, यत् मिथ्या भवति तस्य मूल्यं यस्य न्यायः भवति, यत् सत्यम् अस्ति।

१२८ जालस्य सम्मुखे द्रष्टव्यानि वस्तूनि

  • यदि वस्तु नूतनेन निर्मितं भवति (यथा अधः दर्शितम्), तर्हि १२८ जालं न भविष्यति । (अस्मिन् स्वचालितं अनपैकिंग्, पैकेजिंग् च अन्तर्भवति, अहम् अत्र पश्चात् परिचयं लिखिष्यामि)
    कारणं नवजनितवस्तूनाम् स्मृतिसङ्केताः भिन्नाः, तुल्यवस्तूनां न समानाः ।
	Integer k1 = new Integer(100);
    Integer k2 = new Integer(100);
    System.out.println(k1==k2);  // 运行结果false
    System.out.println(k1.equals(k2)); // 运行结果true
  • 1
  • 2
  • 3
  • 4
  • मूल्यानां तुलनायां भवन्तः equals मेथड् इत्यस्य उपयोगं कर्तुं शक्नुवन्ति


सन्दर्भदस्तावेजः : १.
https://blog.csdn.net/niu_8865/लेख/विवरण/110791911
https://blog.csdn.net/DianLanHong/लेख/विवरण/119617352
https://blog.csdn.net/Yangyeon_/लेख/विवरण/135611919