If String is a class just like any other, how can it be initialized using double quotes?
ベストアンサー1
The designers of Java decided to retain primitive types in an object-oriented language, instead of making everything an object, so as to improve the performance of the language. Primitives are stored in the call stack, which require less storage spaces and are cheaper to manipulate. On the other hand, objects are stored in the program heap, which require complex memory management and more storage spaces.
For performance reason, Java's String is designed to be in between a primitive and a class.
For example
String s1 = "Hello"; // String literal
String s2 = "Hello"; // String literal
String s3 = s1; // same reference
String s4 = new String("Hello"); // String object
String s5 = new String("Hello"); // String object
Note: String literals are stored in a common pool. This facilitates the sharing of storage for strings with the same contents to conserve storage. String
objects allocated via the new
operator are stored in the heap
, and there is no sharing of storage for the same contents.