String 類的理解

【前面的話】java

      最痛苦的工做就是大部分系統外包,因此比較少寫代碼,在這七個月中只寫了兩個月左右的代碼,而後天天都在作一些比較雜的事情,但願有機會能夠寫一寫代碼,提升技術。面試

      前段時間作了一下開發,還有兩個月立刻也要過年了,時間相對就比較多了,因此又回過頭來看看書,鞏固一下基礎知識,作一些筆記,看看本身的思惟,主要目的是爲了本身積累,因此都是很基礎、很基礎的知識,請自行選擇。若是看到這裏要走了,祝新年快樂,也不枉進來一趟。工具

    ​   若是你們在學習Java過程當中遇到什麼問題,或者缺少相關的Java學習資料,可查看右側公告欄獲取,有問題隨問隨答,還有我這段時間整理的一些Java學習手冊,面試題,開發工具,PDF文檔書籍教程,須要的話均可以避免費分享給你們。學習

【知識彙總】開發工具

  •  String類的定義:String在java中是一個比較特殊的類,由於其本身能夠作一種數據類型直接定義變量,以下:優化

  1. String str = "hello";spa

  2. String str = new String ("hello");3d

  • String兩種不一樣定義地理解:對象

  1. String str = "hello"; //能夠把str理解爲一個char*,str指向數據段中的字符串"hello"。blog

  2. String str = new String ("hello");//是new了一個對象,堆空間分配了一塊內存,把對象放在裏面,str 指向這個對象

  • 上面二者的區別:

  1. String str 1= "hello";

  2. String str 2= "hello";

     //當定義str2的時候,系統會先檢測數據段裏是否已經有了「hello」,若是有了那麼str2直接指向這個「hello」,這是系統的優化。也就是說不會單獨再在數據段中存儲「hello」,str1和str2指向的是同一個數據段,也就是str1和str2表明的數據段地址也是同樣的。

     //改正哈,下面1樓指出了這裏有誤哈:能夠參見1樓。

  1. String str 3= new String ("hello");

  2. String str 4= new String ("hello");

     //str4是從新new的一個對象,是在堆空間又單獨存儲的,也就是說str3和str4的地址是不同的,可是存儲內容是同樣的。讀者能夠運行一下下面的代碼:

        代碼:

運行結果:

  • 對於String類對象是不可變字符的理解:

  1. String str1="hello";

  2. str1=str1.substring(0, 3)+」 p!」;

      //首先substring(0, 3)表示提取字符串第一個到第三個的字母。

      //對於不可變的理解就是說,存儲「hello」的地方永遠存儲的是「hello」,除非系統自動收回,是永遠不會變的。對於str1提取子串,只是讓str1再次指向「hello」的引用,對於這個引用再進行改變,而原來存儲「hello」的地方是不變的。讀者能夠運行一下下面的代碼:

    代碼:

運行結果:

//由於第2行代碼是讓str1和str2指向了同一個地址段,後面改變了str1的指向,而str2指向的東西是沒有改變的。

java代碼】

【運行結果】

【後面的話】

     將看到的、學到的東西寫出來的感受仍是很是好的,一方面能夠鍛鍊本身的思惟能力,另外一方面能夠更加好的理解所學。

     這幾天看到了幾句話分享一下:

  1. 你養蘭花不是今天用來生氣的。

  2. 昨日黃土隴頭送白骨,今宵紅燈賬底臥鴛鴦。

     

完結撒花!!!

相關文章
相關標籤/搜索