String在編譯時和運行時的不同

廢話不多說,上代碼:

package test.pxd.pongo;

public class TestMap {
	
	public String get(String a,String b){
		return a + b;
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		TestMap map = new TestMap();
		System.out.println(map.get("1", "1") == map.get("1", "1"));//1 false
		System.out.println("1" + "1" == "1" + "1");//2 true
	}

}

第一行打印處:a+b 的結果在運行時的時候才能確認,此時將會得到2個不同的String對象,因此返回false;

第二行打印處:1+1的結果在編譯時已經確認下來了(是“11”),運行時就相當於“11”==“11”,直接當做常量處理了,所以返回true;



發佈了29 篇原創文章 · 獲贊 16 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章