Java連載72-String類詳解、多個構造方法

1、String類java

1.String類是不能夠變類,也就是說String對象聲明後node

2.java.lang.String;是字符串類型git

(1)字符串一旦建立不可再改變,「abc」字符串對象一旦建立,不可在改變成「abcd」。github

(2)提高字符串的訪問效率:在程序中使用了「緩存」技術,因此在java中全部使用「雙引號」括起來的字符串,都會在「字符串常量池「中建立一份,字符串常量池在方法區中存儲。緩存

(3)在程序執行過程當中,若是程序用到某個字符串,例如:」abc「,那麼程序會在字符串常量池中去搜索該字符串,若是沒有找到這個字符串則在字符串常量池中新建一個」abc「字符串,若是找到就直接拿過來用。(字符串常量池是一個緩存區,爲了提升訪問字符串的效率)。微信

(4)使用Sting的時候​,應該注意的問題:儘可能不要作字符串頻繁的拼接操做,由於字符串一旦建立就不能夠改變了,只要頻繁的拼接,就會在字符串常量池中​建立大量的字符串對象,給垃圾回收帶來問題。函數

 

package com.bjpowernode.java_learning;

​

public class D72_1_StringClassAnlysis {

  public static void main(String[] args) {

    //建立一個「abc」字符串對象,該對象的內存地址,讓s1變量保存。

    //s1是一個引用,s1指向「abc」對象

    String s ="abc";

    //可讓s1從新指向嗎?s1是局部變量,s1前面是沒有final,因此s1是能夠從新指向的。

    //可是"def"字符串自己是不能夠變的。

    String s1 = "雄安";

    String s2 = "雄安";

    System.out.println(s1==s2);

    System.out.println(s1.equals(s2));

    //比較兩個字符串的值,不能用雙等號,要使用函數.equals,雙等號比較的是內存地址

    //若是字符串是new出來的,那麼內存地址就確定不相等了,這個了例子也證實了

    //直接使用字符串的話,那麼就是存儲在了方法區的字符串常量池

    String s3 = new String("雄安");

    String s4 = new String("雄安");

    System.out.println(s3==s4);

    System.out.println(s3.equals(s4));

   

    System.out.println(s1==s3);

    System.out.println(s1.equals(s3));

   

   

    //題解:如下程序建立了三個對象,兩個在堆內存,一個在方法區內存

    String s5 = new String("abc");

    String s6 = new String("abc");

   

    String[] ins = {"sport","music","food","sleep"};

    //要求將上面的興趣愛好拼接成一個字符串

    String temp = null;

    for(int i=0;i<ins.length;i++) {

      if(i==ins.length-1) {

        temp += ins[i];

      }else {

        temp += ins[i]+",";

      }

    }

    System.out.println(temp);

    //不推薦這樣作由於作了大量拼接,方法區建立了不少字符串

   

  }

}

2、字符串經常使用構造方法學習

 

package com.bjpowernode.java_learning;

​

public class D72_2_StringCommonMethod {

  public static void main(String[] args) {

    //經常使用的構造方法

    String s1 = "abc";

    String s2 = new String("abc");

    byte[] bytes = {97,98,99,100};

    String s3 = new String(bytes);

    System.out.println(s3);//從輸出結果能夠看出,String已經重寫了Object中的toString

   

    String s4 = new String(bytes,0,2);//第二個參數是開始位置,第三個參數是長度

    System.out.println(s4);

   

    char[] c1 = {'我','是','中','國','人'};

    String s5 = new String(c1);

    System.out.println(s5);

   

    String s6 = new String (c1,2,2);

    System.out.println(s6);

   

  }

}

​

3、源碼:                                           大數據

D72_1_StringClassAnlysis.javaui

D72_2_StringCommonMethod.java

https://github.com/ruigege66/Java/blob/master/D72_1_StringClassAnlysis.java

https://github.com/ruigege66/Java/blob/master/D72_2_StringCommonMethod.java

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關注微信公衆號:傅里葉變換,我的公衆號,僅用於學習交流,後臺回覆」禮包「,獲取大數據學習資料

 

相關文章
相關標籤/搜索