Javaおよび詳細に等しいとの違い==

違い

== ;参照データ型の、==等価比較対象アドレス基本データ型については、「= =」データ値が等しいかどうかの比較です。ブール結果の型は、同じことが、真falseに異なっています。
等しい:Stringクラスは、2つの文字列の内容が同じである比較する方法に等しくオーバーライドしながら、比較アドレスにオブジェクトクラス、同じです。

コード分​​析ショー

==コードセクション

public class Test {

	public static void main(String[] args) {
	
	    double a = 10.0;
	    int b = 10;
	    System.out.println(a==b);
	    
	    String str1 = "Jim";
	    String str2 = "Tim";
	    System.out.println(str1==str2);
	}

}

コードの結果:
trueに
falseに
trueを、ファーストクラスの比較において、bの値と同じ値、出力、
第2カテゴリーの比較において、STR1 STR2含量は定数プールに格納され、その内容が異なっているので、そうスタック異なるアドレスによる比較して異なるアドレスに格納し、出力はfalse。

コード部等号

public class Test {
	String name;
		
	public static void main(String[] args) {
	
	    String name1="Tim";
	    String name2="Tim";
	    System.out.println(name1.equals(name2));
	    
	    Test test = new Test();
	    test.name ="Tim";
	    System.out.println("1+"+name1.equals(test));
	    System.out.println("2+"+name1.equals(test.name));
	    
	    String name3=new String ("Tom");
	    System.out.println(name1.equals(name3));
	}

}

コードの結果:
trueに
。1 +偽の
真の+ 2
falseに
ファーストクラスの比較、同じコンテンツNAME1のNAME2で、従って同じデータが定数プール、対応するアドレスと同じアドレス空間に格納されます。真の出力。
第二のカテゴリーでは、ヘルプをよりよく書き換えられる等しい方法文字列、メイン関数法外の名前の定義を理解し、それが「ジム」とメソッド名を呼び出すようにテストオブジェクトを定義します。あなたが見ることができるように、2つのアドレス間の差が、しかしので、検査対象とNAME1異なる、さまざまなコンテンツ出力1 +偽が、「ジム」に割り当てられ、そのメソッド呼び出しの名前のアドレス:としては、両者を比較することによって理解することができます文字列の内容は、同一の出力2 +真です。
決意の出力が偽であるので、第三のカテゴリーでは、それは、NAME1のNAME3アドレスの両方と異なる結果に起因わかるように、コンテンツは、異なっています。

決意の上述の方法の場合には、それが書き換えられる可能性がある文字列抽出操作は、原則として、最後のグループが決定される実施例を分析するために決定されるに等しいです。

	  public boolean equals(Object anObject) {//anObject储存上转型对象地址
	        if (this == anObject) {//比较地址是否相等,地址相等则储存数据相同,输出true
	            return true;
	        }
	        if (anObject instanceof String) {//判断anObject变量所指向的地址是否为String类型
	            String anotherString = (String)anObject;//多态的体现,将上转型对象转化为下转型对象;
	            int n = value.length;//给n赋值value的长度(value为name1的数组)
	            if (n == anotherString.value.length) {//判断value与anotherString.value(name2的数组)的长度是否相等
	                char v1[] = value;//name1的数组
	                char v2[] = anotherString.value;//name3的数组
	                int i = 0;//逐位判断name1和name3的字符是否相等
	                while (n-- != 0) {
	                    if (v1[i] != v2[i])//不同即输出false,结束判断
	                        return false;
	                    i++;
	                }
	                return true;
	            }
	        }
	        return false;
	    }*/

文は同じ、同じであれば、出力真、エンド決意の二つの文字列のアドレスか否かを判断する場合、ブロックは二つの部分、最初から成り、第二に入ると異なる場合ステートメントは2つのオブジェクトが、String型を指すかどうかを判定した場合文字列、出力はfalseを指しなし。String型の点場合は、次のように進む:anotherObjectで動作する文字列サブクラスの使用.LENGTH()メソッドは、遷移ニーズに必要とは、二つの、我々が同じでない場合、次に出力するかどうかを文字列比較の同じ長さを達成すること偽は、同じ場合には、2つの文字列がアレイの形に変換され、文字配列V1に割り当てられていた[]、V2 []、入力するループはビットによって決定される異なる文字がある場合、対応する文字が、同一であり、出力偽、それは別の文字でない場合、文字は、真、それぞれ等しくなる決意の端部を出力します。

公開された19元の記事 ウォンの賞賛0 ビュー459

おすすめ

転載: blog.csdn.net/zzu957/article/details/104863577
おすすめ