स्मृति की अवधि में भिन्नता यह है कि फॉर्म की अभिव्यक्ति: String s = "test"
अद्वितीय घटनाओं को साझा करने के लिए "आंतरिक" स्ट्रिंग का उपयोग करती है।
प्रपत्र के आह्वान: String s = "test"
String s = new String("test")
पहली कॉल मौजूदा निरंतर अभिव्यक्ति का उपयोग करता है, (यदि वहाँ एक है) दूसरी कॉल का इस्तेमाल कर रही बिना एक नया उदाहरण बनाता है की तुलना में कुशल है कोई मौजूदा उदाहरण
कोड हिस्सा नीचे इस दर्शाता है:
String test = new String("test");
String internTest = "test";
String nonInternTest = new String("test");
System.out.println(test == internTest); // prints false
System.out.println(test != nonInternTest); // prints true
System.out.println(test.equals(nonInternTest)); // prints true
भी ध्यान रखें कि JLS व्यवहार निर्दिष्ट करता है इस प्रकार हो:
प्रत्येक स्ट्रिंग शाब्दिक वर्ग स्ट्रिंग का एक उदाहरण (§4.3.3 लिए एक संदर्भ है)। स्ट्रिंग ऑब्जेक्ट्स का निरंतर मूल्य होता है। स्ट्रिंग अक्षर-या, अधिक आम तौर पर, स्ट्रिंग्स जो निरंतर अभिव्यक्तियों के मान हैं, "interned" हैं ताकि विधि String.intern का उपयोग करके अद्वितीय उदाहरण साझा कर सकें।
http://stackoverflow.com/questions/390703/what-is-the-purpose-of-the-expression- new-string-in-java –