1. 程式人生 > >Java 字串比較==與equals()區別

Java 字串比較==與equals()區別

==:它是比較兩個字串的地址是否相同

equals():它是比較兩個字串的內容是否相同,這只是針對於String類而言

示例程式碼如下:

		String com1 = new String("asd");
		String com2 = new String("asd");
		if(com1==com2){
			System.out.println("com1=====com2");
		}
		if(com1.equals(com2)){
			System.out.println("com1 equals com2");
		}
		
		String cmp1 = "asd";
		String cmp2 = "asd";
		if(cmp1==cmp2){
			System.out.println("cmp1=====cmp2");
		}
		if(cmp1.equals(cmp2)){
			System.out.println("cmp1 equals cmp2");
		}

輸出結果如下:
com1 equals com2
cmp1=====cmp2
cmp1 equals cmp2

new出來的都是分配新的記憶體空間,其地址不會相同

直接引用相同的字串,其地址也會相同。

-----------------------------------------------------------

當自定義的類相比較時,需要自己去實現equals()方法。而Object類的equals()方法預設是對地址進行比較的。

如:

		MyString com1 = new MyString("asd");
		MyString com2 = new MyString("asd");

		if(com1.equals(com2)){
			System.out.println("com1 equals com2");
		}else{
<pre name="code" class="java">                        System.out.println("com1 is not equals com2");
}