アサルトステートメントで結果が返されないのはなぜですか? 最初のassert文は失敗するはずですが、Eclipseに何も表示されていないと思います。Javaアサーションエラーでエラーが発生しない
私はこのプログラムを実行するためにEclipseを使用しています。
package java.first;
public class test {
public static void main(String[] args) throws Exception {
String s = "test1";
assert (s == "test");
s = "test";
assert (s == "test");
}
}
から「借りた」回答:この他のオブジェクトの同じ参照に、このオブジェクトのポイントへの参照を?これは2人の人がメモリの同じ塊に割り当てられているかどうかです。それはあなたのアプリケーション(シングルトン)全体の中でそのようなオブジェクトが1つしか存在しない場合にのみ真です。 つまり、オブジェクトのインスタンスは、それ自身に対して '=='のみです。 同じ値を保持する別のインスタンスと比較しているので、上記のように 'equals'メソッドを使用する必要があります。 – VallaDanger
'(s ==" test ")と言ったときに、実際に' test'という値を持つStringの新しいインスタンスを作成しているので、その新しいインスタンスが '=='から 's'になっているかどうかを尋ねることは絶対に真ではありません'String.intern()'メソッドを使用しない限り、同じ値を持つすべての文字列が同じメモリを共有することはありません。 実際にオブジェクトの平等について知る必要があります。効果的なJava(第2版、第3章、アイテム8)にチャンスを与えることをお勧めします。 – VallaDanger