Java 開発には、一見単純なトピックがありますが、インターネット上には、equals() と == 演算子の違いに関するトピックや質問がたくさんあります
今日の内容の紹介、所要時間は約 9 分です
写真
違いをよりよく理解するために、見てみましょう例:
String str1 = new String("Hello");String str2 = new String("Hello");System.out.println(str1.equals(str2)); // 输出 trueSystem.out.println(str1 == str2); // 输出 false
この例では、2 つの文字列の内容は同じですが、メモリ内のアドレスが異なります。したがって、.equals() メソッドを使用して内容を比較すると true が返されますが、「==」演算子を使用してアドレスを比較すると false
public boolean equals(Object obj) {return (this == obj);}
public boolean equals(Object anObject) { //如果是同一个对象(即两个引用指向内存中的同一块地址),则直接返回trueif (this == anObject) {return true;} //如果是String类型的实例if (anObject instanceof String) { //Object类型的对象强制转换为String类型String aString = (String)anObject;//如果当前字符串对象和传入的字符串对象的编码方式相同if (coder() == aString.coder()) { //如果当前字符串和传入的字符串都是Latin1编码,则调用StringLatin1类的equals方法进行比较;如果其中一个或两个字符串是UTF16编码,则调用StringUTF16类的equals方法进行比较return isLatin1() ? StringLatin1.equals(value, aString.value): StringUTF16.equals(value, aString.value);}}return false;}
@HotSpotIntrinsicCandidatepublic static boolean equals(byte[] value, byte[] other) {if (value.length == other.length) {int len = value.length >> 1;for (int i = 0; i <div></div>1.2. 例の説明<p></p>例 1:<div></div><pre class="brush:php;toolbar:false">public boolean equals(Object anObject) {// 如果是同一个对象(即两个引用指向内存中的同一块地址),则直接返回trueif (this == anObject) {return true;}// 如果是String类型的实例if (anObject instanceof String) {////Object类型的对象强制转换为String类型String anotherString = (String)anObject;int n = value.length;// 如果字符串长度相等if (n == anotherString.value.length) {char v1[] = value;char v2[] = anotherString.value;int i = 0;// 判断每个字符是否相等while (n-- != 0) {if (v1[i] != v2[i])return false;i++;}return true;}}return false;}
new String("hello").equals("hello")
#== 演算子で比較したオブジェクトのアドレスが等しいかどうか == 左側はヒープに作成されたオブジェクト、右側は文字列定数プール オブジェクト。内容は等しいが、アドレスが等しくないため、結果は false
new String("hello") == "hello";
出力結果は何ですか?
new から出力されるオブジェクトは完全に異なるメモリ アドレスである必要があるため、結果は false になります
new String("hello") == new String("hello");
"hello" == "h"+"ello"
に加えて。
new String("hello").intern() == "hello"ログイン後にコピー
以上がJavaにおけるequals()と==の違いと使用法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。