Java基礎——String

來源:互聯網
上載者:User

標籤:編譯   不可   包含   boolean   基礎   https   idt   解釋   經驗   

前言

  從去年八月末開始工作一年了,有了大半年的java開發經驗,自認為比在大學時候編碼能力強了很多,但是基礎方面叫不準的地方感覺越來越多了 (;′д`)ゞ

所以,我準備把這些問題以及工作中遇到的問題總結,記錄下來,造福自己和大家~ヾ(o?ω?)?   當然,如果大家發現我哪裡寫的有錯誤,歡迎在下方評論指出來。

那我們開始吧!

 

String

  1.String是一個final類,不能被繼承

  2.String底層維護是一個數組,靜態創造一個字串時,此字串存在於String池,當下一個String對象也是靜態建立的時候,先去String池裡找是否有和新對象一樣的,

如果有,指向新對象,否則建立新對象。

  下面內容引用 81134952 以解釋第二條

  (1)

1 String str1 = "abc"; 2 System.out.println(str1 == "abc"); 

  步驟:

  1)棧中開闢一塊空間存放引用str1

  2)String池中開闢一塊空間,存放String常量"abc"

  3)引用str1指向池中String常量"abc"

  4)str1所指代地址即常量"abc"所在地址,輸出為true

  (2)

1 String str2 = new String("abc"); 2 System.out.println(str2 == "abc"); 

  步驟:

  1)棧中開闢一塊空間存放引用str2

  2)堆中開闢一塊空間存放一個建立的String對象"abc" 

  3)引用str2指向堆中的建立的String對象"abc" 

  4)str2所指代地址即常量"abc"所在地址,而常量"abc"地址在池中,輸出為false 

  (3)

1 String str3 = new String("abc"); 2 System.out.println(str3 == str2); 

  步驟:

  1)棧中開闢一塊空間存放引用str3

  2)堆中開闢一塊新空間存放另外一個(不同於str2所指)建立的String對象

  3)引用str3指向另外建立的那個String對象 

  4)str3和str2指向堆中不同的String對象,地址也不相同,輸出為false 

  (4)

1 String str4 = "a" + "b"; 2 System.out.println(str4 == "ab"); 

  步驟:

  1)棧中開闢一塊空間存放引用str3

  2)根據編譯器合并已知量的最佳化功能,池中開闢一塊空間,存放合并後的String常量"ab" 

  3)引用str4指向池中常量"ab"

  4)str4所指即池中常量"ab",輸出為true 

  (5)

1 final String s = "a"; 2 String str5 = s + "b"; 3 System.out.println(str5 == "ab"); 

  同(4)

  (6)

1 String s1 = "a"; 2 String s2 = "b"; 3 String str6 = s1 + s2; 4 System.out.println(str6 == "ab"); 

  步驟:

  1)棧中開闢一塊空間存放引用s1,s1指向池中String常量"a"

  2)棧中開闢一塊空間存放引用s2,s2指向池中String常量"b"

  3)棧中開闢一塊空間存放引用str5

  4)s1 + s2通過StringBuilder的最後一步toString()方法還原一個新的String對象"ab",因此堆中開闢一塊空間存放此對象

  5)  引用str6指向堆中(s1 + s2)所還原的新String對象

  6)  str6指向的對象在堆中,而常量"ab"在池中,輸出為false 

  (7)

1 String str7 = "abc".substring(0, 2); 

  步驟:

  1)棧中開闢一塊空間存放str7

  2)substring()方法還原一個新的String對象"ab"(不同於str6所指),堆中開闢一塊空間存放此對象

  3)引用str7指向堆中的新String對象

     (8)

1  String str8 = "abc".toUpperCase(); 

  步驟:

  1)棧中開闢一塊空間存放str8

  2)toUpperCase()方法還原一個新的String對象"ABC",池中並未開闢新的空間存放String常量"ABC" 

  3)引用str8指向堆中的新String對象

  

  呼,這部分終於結束了,我們繼續(? ??_??)? 

  3.幾個常用方法:

 1 //1.charAt()方法:根據下標返回對應字元 2 char c = str.charAt(2); 3 System.out.println(c); 4  5 //2.substring()方法:截取字串 6 1<=string<4  (左邊包含右邊不包含) 7 String s = "abcde"; 8 String s1= s.substring(1,4); 9 System.out.println(s1);10 11 //3.toUpperCase():變大寫 toLowerCase():變小寫12 String s = "aBc";13 System.out.println(s.toUpperCase());14 System.out.println(s.toLowerCase());15 16 //4.trim():去除字串兩邊空格17 String s1 = "   abcde             ";18 String s2 = s1.trim();19 System.out.println(s2.length);20 System.out.println(s1.length);21 System.out.println(s1.charAt(0));22 23 //5.indexOf():搜尋指定字串,如果能找到返回起始下標,24 //找不到返回-1 , 不可以隔著查  如搜尋bd  會返回-125 String s = "abcde";26 int a = s.indexOf("bc");27 System.out.println(a);28          29 //6.startsWith():判斷是否以某字串開頭30 //endsWith():判斷是否以某字串結尾31 String s = "abcde";32 boolean a = s.startsWith("ab");33 boolean b = s.endsWith("de");34 System.out.println(a);35 System.out.println(b);36 37 //7.字串有兩種建立方法38 //字面值賦值:字串使用頻率 太高,java對String做了最佳化   39 //建議這樣:40 Sting s1 = "abc";41 //不建議new關鍵字建立:42 String s2 = new String("abc");43          44 //8.判斷字串相等的方法45 boolean boo = s1.equals(s2);46 System.out.println(boo);47          48 //9. = , == , equald的區別:         49 //   =  :賦值50 //   == :比較對象是否相同51 //   equals :比較兩個對象內容是否相同 

 

  4.String ,StringBuffer 以及 StringBuilder區別:
   1)String長度不可以改變
   2)StringBuffer和StringBuilder長度可以改變
   3)StringBuffer安全執行緒,執行效率低
   4)StringBuilder線程不安全,執行效率高

 

  好了! 以上就是目前我在String方面概念模糊的地方了!希望能夠幫到大家!
  我們下期再見!

 

Java基礎——String

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.