私は次の概念について読んでいinterned strings
ます:
String s1 = "Hi";
String s2 = "Hi";
String s3 = new String("Hi");
System.out.println(s1 == s2); // true
System.out.println(s1 == s3); // false
System.out.println(s1.equals(s3)); //true
new
String は Java のオブジェクトですが、プログラミングでは文字列が遍在しているため、コンパイラでは、演算子を使用する必要はなく、String 参照変数に代入するためにリテラルを使用できます。割り当てにリテラルを使用すると、interned string
. 同じリテラルを持つすべてのインターンされた文字列は、メモリ内の同じスペースを指すため、同等の演算子が許可されます。
equals()
Java では文字列がオブジェクト (他の言語のように配列ではない) であり、オブジェクトの内容は equals を使用して比較する必要があるため、このメソッドを使用して 2 つの文字列参照変数を比較する方が適切ではないでしょうか。()、==
オブジェクトに関する演算子は、それらがメモリ内の同じ場所を指していることだけを教えてくれるので?
==
それとも、インターンされた文字列の概念自体が、同じリテラルを共有している場合にのみ、1 つの文字列が別の文字列と等価 ( ) になることを明確にしているため、より適切ではないでしょうか?
それがより適切である場合、人々は一般的にそのequals()
方法を関係なく使用しますか、それともやり過ぎと見なされますか?