String的介紹(乾貨)_==和equals區別

2:String的基本介紹(乾貨)

String類是final類,也即意味着String類不能被繼承,並且它的成員方法都默認爲final方法。 大家觀看源碼會發現String類其實是通過char數組來保存字符串的.String對象一旦被創建就是固定不變的了,對String對象的任何改變都不影響到原對象,相關的任何change操作都會生成新的對象

 

String a="q1";
String b="q2";
System.out.println(a+b);
//把二者拼接起來輸出結果爲q1q2。操作String我們可以使用StringBuffer和StringBuilder;

StringBuilder sb = new StringBuilder();
sb.append("q1");
sb.append("q2");
System.out.println(sb.toString());
//輸出結果同樣爲q1q2

String a="b";
String b="b";
System.out.println(a==b);
System.out.println(a.equals(b));
//輸出結果爲true true ==是比較二個對象是否一致 由於我們並沒有New對象 a和b都是常量池中對象所以結果是true equals是比較兩個值是否一樣 所以結果爲true
String a="b";
String b=new String("b");
System.out.println(a==b);
System.out.println(a.equals(b));
//輸出結果爲false true B是new出來的對象存放在堆中 兩個值的指針是指向兩個不同的對象 所以==結果爲false 和equals依然是true
String a= "abc";
String b = "a";
String c = "bc";
String d = b + c;
System.out.println(a == d);
//輸出 false,因爲b+c實際上是使用StringBuilder.append來完成,會生成不同的對象 所以結果依然是false。
String str = new String("abc");//每new一次就會創建一個新的對象。每個對象的地址都不一樣
String str = "abc";  //直接聲明變量str 然後查找棧中有沒有存放"abc",如果沒有,則將"abc"存放進棧,並令str指向”abc”,如果已經有”abc” 則直接令str指向“abc”(這裏創建了str)
String str1="abc";  //這裏的str1直接指向str的abc所以地址是一樣的(str1並沒有被創建!是直接指向之前創建的str )

String類中有多個方法能讓我們對其進行操作

subString 截取指定的字符串

trim 去除String中的空格

length 獲得String的長度

split 通過特點的格式把String 分割爲字符串數組

。。。。。。

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