"equals"和"=="的區別

String str1 = "android";
String str2 = "android";              // T
String str3 = new String("android");  // F
String str4 = "and" + "riod";         // T
String str5 = "and";                  // F
str5 = str5 + "riod";
android


關鍵在於。。。你要理解s1=new String("we are students");
 s2="We are students";
這兩個是不同的。。。。new是用新建一個對象的方法。。。。然後一種是放在常量池中的。。。你一下次再用這種方法去建立的時候。。。就會去常量池裏面找,因此
s2="We are students";
       s3="We are students";

這兩個是相同的。。。指向常量池中的"We are students";。。。

而s1=new String("we are students");
       =new String(s1);
這兩個是不一樣的對象。。。。。儘管他們的內容是同樣的。。。
就像有兩我的。。。他們的名字是相同的。。。。可是並非同樣的人。。。。

  

堆棧:首先咱們要明確堆和棧的概念,在系統內存中將局部變量存放在棧中,將new出來的對象以及一些方法(類的代碼信息,static變量以及常量池)放在堆中。spa

如今就說一下==和equals的比較的實質:==比較的是變量的地址而equals比較的是變量的內容,那麼根據上面所說的能夠獲得==比較的是變量存儲在棧中的內容,equals比較的是變量存儲在堆中的內容code

相關文章
相關標籤/搜索