「”1″ == “1”」がtrueで「new String(“1”) == new String(“1”)」がfalseになる理由は何ですか。

文字列リテラルは定数プールで共有されますが、newキーワードは常に新しいメモリ領域を確保するためです。