この声明のために
String a="MAM"+"BCD"+"EFG"+"GFE";
いくつのオブジェクトが作成されますか? (私はそれが4または5または7で作成されたのか混乱しています)
この声明のために
String a="MAM"+"BCD"+"EFG"+"GFE";
いくつのオブジェクトが作成されますか? (私はそれが4または5または7で作成されたのか混乱しています)
ほとんどのスマート コンパイラは、連結された文字列定数をコンパイル時に連結できることに気付きます。コンパイラがその最適化を行うことを選択した場合、答えは 1 です。
それ以外の場合は、各リテラル文字列に加えて、連結ごとに 1 つの文字列があります。+
最適化を行わない場合、4 つの文字列と 3 つのesがあるため、答えは 7 です。
Java について話している場合、答えは、JLS で指定されているコンパイル時のものです。
そうでない場合、質問は提起されたとおりに回答できません。
オブジェクトは 1 つだけ作成されます。この場合、「文字列リテラル」を連結するためにプラス記号が使用されているためです。:)