new String("…")

Javajava.lang.Stringオブジェクトは不変なのでこの(コピー)コンストラクタは不要であり,不必要なStringオブジェクトが生成されるため,以下のような表記は好ましくないと『Effective Java』(ASIN:4894714361)の項目4,13で説明があります.

String s = new String("…");

1.1に,privateなコンストラクタ(引数:int,int,char[])を発見しました.二重引用符で囲まれた0個以上の文字から構成される文字列リテラルに対して,このコンストラクタが呼び出されていることを確認しました(JVMがこっそり利用しているのでしょうか?).
1.2以降では,パッケージprivateなコンストラクタに変更されています.文字列リテラルに対して,このコンストラクタが呼び出されていることを確認できていません(別のコードが存在するのでしょうか?).
2004/04/12