String Creation in Java: Unveiling the Absence of 'new'
While Java typically employs the 'new' keyword to instantiate objects, strings exhibit a curious deviation from this norm. Unlike other objects, strings can be created without invoking 'new'. This raises questions: why does this exception exist? Is it still possible to utilize 'new' in string creation?
Understanding the Interning Mechanism
In addition to previous explanations, it is crucial to recognize the interning mechanism employed for string literals ("abcd" but not new String("abcd") in Java). This mechanism ensures that each instance of "abcd" references a single String instance, preventing the creation of new instances upon repeated references. As a result:
String a = "abcd"; String b = "abcd"; a == b; //True
Comparison with Non-Interned Strings
In contrast, when creating strings using 'new', the resulting objects are distinct instances:
String a = new String("abcd"); String b = new String("abcd"); a == b; // False
Performance Considerations
Interning string literals has profound performance implications. Strings often appear multiple times in code, and interning eliminates the need to instantiate them repeatedly. This optimization becomes particularly beneficial in scenarios such as:
for (int i = 0; i < 10; i++) { System.out.println("Next iteration"); }
Without interning, the string "Next iteration" would require 10 instantiations, while interning ensures a single instantiation.
The above is the detailed content of Why Can Strings be Created Without 'new' in Java?. For more information, please follow other related articles on the PHP Chinese website!