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

Java 9 में कॉम्पैक्ट स्ट्रिंग्स क्या हैं?

कॉम्पैक्ट स्ट्रिंग्स अवलोकन

Java 9 से, JVM कॉम्पैक्ट स्ट्रिंग्स नामक एक नई सुविधा का उपयोग करके स्ट्रिंग्स को अनुकूलित करता है। char[] ऐरे के बजाय, एक स्ट्रिंग को byte[] ऐरे के रूप में दर्शाया जा सकता है। हम UTF-16 या Latin-1 का उपयोग करके प्रति कैरेक्टर एक या दो बाइट्स उत्पन्न कर सकते हैं। यदि JVM पहचानता है कि स्ट्रिंग में केवल ISO-8859-1/Latin-1 कैरेक्टर्स हैं, तो स्ट्रिंग आंतरिक रूप से प्रति कैरेक्टर एक बाइट का उपयोग करती है।

स्ट्रिंग प्रतिनिधित्व तुलना

// Java 8 में
public class String {
    private final char[] value; // स्ट्रिंग में कैरेक्टर्स स्टोर करता है
    // ---------
}

// Java 9 में
public class String {
    private final byte[] value; // स्ट्रिंग में कैरेक्टर्स स्टोर करता है
    private final byte coder; // एक फ्लैग जो दर्शाता है कि इस स्ट्रिंग के लिए प्रति कैरेक्टर 1 बाइट या 2 बाइट्स उपयोग करना है
    // ---------
}

मुख्य बिंदु

  • यह सुविधा डिफ़ॉल्ट रूप से सक्षम है और -XX:-CompactStrings का उपयोग करके बंद की जा सकती है।
  • यह char[] कार्यान्वयन पर वापस नहीं जाता और सभी स्ट्रिंग्स को UTF-16 के रूप में स्टोर करता है।
  • मेमोरी उपयोग को कम करता है, विशेष रूप से उन एप्लिकेशंस के लिए जो मुख्य रूप से Latin-1 कैरेक्टर्स का उपयोग करते हैं।

कॉम्पैक्ट स्ट्रिंग्स Java 9 में स्ट्रिंग स्टोरेज के लिए एक महत्वपूर्ण मेमोरी ऑप्टिमाइज़ेशन है।

  1. Java में StringIndexOutOfBoundsException क्या है? Java में StringIndexOutOfBoundsException क्या है?

    स्ट्रिंग्स का उपयोग Java में वर्णों के अनुक्रम को संग्रहीत करने के लिए किया जाता है, उन्हें ऑब्जेक्ट्स के रूप में माना जाता है। java.lang पैकेज का String क्लास एक स्ट्रिंग का प्रतिनिधित्व करता है। आप स्ट्रिंग को या तो new कीवर्ड का उपयोग करके (किसी अन्य ऑब्जेक्ट की तरह) बना सकते हैं, या लिटरल को मान

  1. - Java में क्लास/स्टैटिक मेथड्स क्या हैं?

    क्लास/स्टैटिक मेथड्स वे मेथड्स हैं जिन्हें क्लास पर ही कॉल किया जाता है, किसी विशेष ऑब्जेक्ट इंस्टेंस पर नहीं। स्टैटिक मॉडिफायर यह सुनिश्चित करता है कि इम्प्लीमेंटेशन सभी क्लास इंस्टेंस में समान है। क्लास/स्टैटिक मेथड्स को इंस्टेंटिएशन के बिना कॉल किया जाता है, जिसका अर्थ है कि स्टैटिक मेथड्स केवल क

  1. - Java में String तुलना में महारत: Equals, equalsIgnoreCase, और '==' से बचना

    स्ट्रिंग्स की समानता के लिए तुलना करने के लिए, आपको String ऑब्जेक्ट के equals या equalsIgnoreCase मेथड्स का उपयोग करना चाहिए। हम यह भी देखेंगे कि हमें स्ट्रिंग्स की तुलना के लिए == ऑपरेटर का उपयोग क्यों नहीं करना चाहिए। equals() मेथड के साथ स्ट्रिंग्स की तुलना यदि हमें Java में दो स्ट्रिंग्स की तुलन