a == b
はすべてJava完全互換の実装では常にtrue
ですか?文字列プールの最適化はJavaによって定義されていますか?
String a = "abc";
String b = "abc";
if (a == b)
System.out.println("True");
True
がジョブインタビューで印刷されるかどうか尋ねられました。私はa
とb
が同じを指すことができることを知っていましたが、この最適化が標準化されているのか、それとも特定の実装の動作であるのか分かりませんでした。
あなたの例では、はいです。 [文字列リテラル](http://stackoverflow.com/questions/3297867/difference-between-string-object-and-string-literal)を使用すると、[String interning](https:// en .wikipedia.org/wiki/String_interning)。簡単に起こりうる文字列オブジェクトを作成するとうまくいきません。そのため、このインタビューでは、このケースでは動作しますが、安全ではありません。なぜなら、コードをコピーして、仕事。 – Aziuth
インタビューでは、あなたが削除したというあなたのコメントを見ました。それについては、それで、あなたはjavaに関するあらゆる詳細を知らないのですか?そして、あなたは危険な推測の代わりに保存ソリューションに行く傾向がありますか?合理的に聞こえる。学習する能力は、いくつかの詳細よりもはるかに重要です。より良い答えは、「私はそうは思わないが、私はそれについてはわからない」のようなものを言うだろうが。面接官が賢い人であれば少なくとも。間違いが起こり、あなたが間違いに対する免除を受けていないことを認識することが重要です。結論として、それをあまりにも難しくしないでください。 – Aziuth