A new class instance is explicitly created when evaluation of a class instance creation expression (�15.9) causes a class to be instantiated. A new class instance may be implicitly created in the following situations:
Loading of a class or interface that contains a String literal (�3.10.5) may create a new String object to represent that literal. (This might not occur if the same String has previously been interned (�3.10.5).) Execution of an operation that causes boxing conversion (�5.1.7). Boxing conversion may create a new object of a wrapper class associated with one of the primitive types. Execution of a string concatenation operator (�15.18.1) that is not part of a constant expression sometimes creates a new String object to represent the result. String concatenation operators may also create temporary wrapper objects for a value of a primitive type.