Java學習心得(1)--判斷字符串是否相等

static void checkString(String A,String B)
	{
		boolean result1=A.equals(B);
		System.out.println(A+".equal("+B+") 結果爲:"+result1);
		boolean result2=(A==B);
		System.out.println(A+"=="+B+" 結果爲:"+result2);
	}

	public static void main(String args[])
	{
		
		checkString("ABC","ABC");
		checkString(new String("ABC"),"ABC");
		checkString(new String("ABC").intern(),"ABC");
	}





結果爲:

ABC.equal(ABC) 結果爲:true
ABC==ABC 結果爲:true
ABC.equal(ABC) 結果爲:true
ABC==ABC 結果爲:false
ABC.equal(ABC) 結果爲:true
ABC==ABC 結果爲:true


equals比較的是2個對象的值;而“==”是比較2個對象的引用(內存地址);

程序在運行的時候會創建一個字符串緩衝池,當使用 B = "ABC" 這樣的表達是創建字符串的時候,程序首先會在這個String緩衝池中尋找相同值的對象,

checkString("ABC","ABC");
中,String A ="ABC"先被放到了池中,所以在B被創建的時候,程序找到了具有相同值的 A,將 B 引用 A 所引用的對象"ABC";

第二個

checkString(new String("ABC"),"ABC");

中,使用了 new 操作符,創建一個新的"ABC" Sting對象被創建在內存中。A、B的值相同,但是位置不同,一個在緩衝池中,一個開闢了新的內存地址。

第三個

checkString(new String("ABC").intern(),"ABC");

intern()將開闢新地址的對象又遣返到緩衝池。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章