1. 程式人生 > >String 直接賦值和new 物件的

String 直接賦值和new 物件的

用一個簡單的例子表述Stirng直接賦值和new物件的區別 String a = new String(“a”); String b = new String(“a”); //此處是比較的是物件引用的地址 System.out.println(“比較記憶體地址是否相等”); System.out.println(a==b);(此處結果為false) //此處比較的是字串的值 System.out.println(“比較值是否相等”); System.out.println(a.equals(b));(此處結果為true) 說明: new出來的是物件,是要在堆中開闢記憶體,有相應的地址的 但是這裡面還有需要注意的地方。那就是在定義a的時候,用new關鍵字在堆記憶體開闢一個記憶體區域,但是同時 如果常量池裡面沒有 “a”,那麼它也會往常量池存放“a”。也就是說new的時候,實際是再記憶體中開闢兩個地方存放“a”,一個在堆記憶體上,一個在常量池。 //直接賦值的是存在常量池中的 String e = “a”; String f = “a”; System.out.println(“比較值是否相等”); System.out.println(e.equals(f));(此處結果為true) 直接進行賦值時,==和equals方法其實是一樣的效果。 參考連結:

https://blog.csdn.net/weililansehudiefei/article/details/71224029