黑馬程序員_

--------------------ASP.Net+Android+IOS開發.Net培訓、期待與您交流! --------------------


1. String類

        1.概述

         String是一個特殊的類,一旦被初始化,那麼就不能被改變,String類是一個被final修飾的類。

       2.String的初始化

          String s1=”abc”;這個表示的是一個對象,但是不是在內存中創建的,而是在內存的緩衝區(常量池)中創建了一個“abc”對象,只有通過new關鍵字創建的,纔在堆中申請了內存空間,並且在棧中有聲明的變量名稱。

    當有Strings1=”abc”,String s2=”abc”;都執行的話,當執行了s1後,會在內存的緩衝區(常量池)中創建了”abc”字符串對象,然後在執行s2的時候,那麼先去內存緩衝區查找,要是存在了,那麼就直接指向此對象,直接使用,所以,這兩句話也就純創建了一個”abc”字符串。

    String str=new String(“xyz”);這是創建了兩個對象,一個是先在內存中通過new創建了一個對象,然後在內存緩衝區中又創建了一個字符串“xyz”,然後在內存中的指向了內存緩衝區(常量池)中的對象。

 

   在常量池中只有一個相等的字符串,但是在內存中可以有多個相等的字符串。



       3.一道面試題

           String str=new String(“xyz”);此語句產生幾個對象,

           如果常量池中已經有“xyz”字符串的話,那麼就產生一個對象,要是常量池中沒有”xyz”,那麼就產生兩個對象,一個是咋內存中,一個是在常量池中(內存緩衝區)

    

2. 字符串比較

           有兩種比較方法:==和equals。

      ==:比較的是內存地址,equals比較的內容

 

    

  public class Text {
  public static void main(String[] args) {
    String s1 = "abc";
    String s2 = "abc";
    String str1 = new String("abc");
    String str2 = new String("abc");
    System.out.println(s1 == s2);// true 地址相等
    System.out.println(s1.equals(s2));// true 內容相同
    System.out.println(str1 == str2);// false 地址不相等
    System.out.println(str1.equals(str2));// true 內容相同
    System.out.println(s1 == str2);// false 地址不相等
    System.out.println(s1.equals(str2));// true 內容相同
  }
}
 

3. 獲取

     下面舉了一些常用的方法,這些方法還有很多重載的,小想查看全面的,請查看API文檔 java.lang.String包,裏面方法很全

  

public class getString {
  public static void main(String[] args) {
    String str = "abcdasdfgh";
    // 獲取長度
    System.out.println(str.length());
    // 通過位置獲取字符
    System.out.println(str.charAt(3));
 
    // 通過字符獲取位置
    System.out.println(str.indexOf('d'));// 從首位置開始查找,第一個字符d
    System.out.println(str.indexOf('d', 5));// 從位置5開始查找,遇到的第一個字符d
    // 獲取子字符串的位置
    System.out.println(str.indexOf("asd"));// 獲取字符串asd在str中的位置
  }
 
}
結果:
10
d
3
6
4


 

4. 判斷

下面舉了一些常用的判斷方法,還有很多重載和其他的方法都不一一舉例了,有疑問參考API文檔

 

public class judgeString {
  public static void main(String[] agrs) {
    String str = "zhangsan.java";
    // 判斷字符串是否爲空
    System.out.println(str.isEmpty());// false
    // 判斷字符串是否包含某內容
    System.out.println(str.contains("."));// true
    // 判斷字符串是否是以指定前綴開始
    System.out.println(str.startsWith("zhang"));// true
    // 判斷字符串是否是以指定後綴結束
    System.out.println(str.endsWith(".java"));// true
  }
}
 


5. 轉換

      1.將字符數組轉換成字符串

    構造函數:String(char [] values); String(char []values,start,end);將一部分字符數組轉換成字符串

        Static String copyValuesof(char [] );

      2.將字符串轉換成字符數組

     toChatArray();

      3.將字節數組轉換成字符換

             String(byte [] ); String(byte []values,start,end);

      4.將字符串轉換成字節數組

    getBytes();

      5.將基本數據類型轉換成字符串

     valuesOf(int  a);

 

public class ZhuanString {
  public static void main(String[] args) {
    String str="abcdef";
        char [] cs={'h','e','l','l','o'};
        //將字符串轉換成字符數組
         char [] newcs=str.toCharArray();
        //將字符數組轉換成字符串
         System.out.println(new String(cs));
         //將字符串轉換成字節數組
         byte [] bs=str.getBytes();
         //將字節數組轉換成字符串
         System.out.println(new String(bs));
         //將基本數據類型轉換成字符串
         System.out.println(String.valueOf(4));
  }
 
}


 

 

6. 分割,替換,截取

   

    

 public class Text {
  public static void main(String[] args) {
    String str="zhangsan,lisi,wangwu";
    //分割
    String [] ss=str.split(",");
    for(String t:ss)
      System.out.print(t+" ");
    //替換
    String s=str.replace('w', 'y');
    String s1=str.replace("zhangsan", "sa");
    //截取
    String s3=str.substring(4);
    String s4=str.substring(2,8);
   
    System.out.println("\ns="+s);
    System.out.println("s1="+s1);
    System.out.println("s3="+s3);
    System.out.println("s4="+s4);
  }
}
 
結果:
 
zhangsanlisi wangwu
s=zhangsan,lisi,yangyu
s1=sa,lisi,wangwu
s3=gsan,lisi,wangwu
s4=angsan

 

7.去除空格,大小寫轉換,比較

    

 public class Text {
  public static void main(String[] args) {
    String str="  abc ";
    //取出兩邊空格
    String  s1=str.trim();
    //大小寫轉換
    String s2=s1.toUpperCase();//轉換成大寫
    String s3=s2.toLowerCase();//轉換成小寫
    //比較
     
    System.out.println("s1="+s1);
    System.out.println("s2="+s2);
    System.out.println("s3="+s3);
      System.out.println(s2+"和"+s3+"比較大小="+s2.compareTo(s3));
      //比較的時候是根據字符的ASCII進行的比較
      //小於0表示s2小於s2 
      //等於0  表示s2和s3相等  
      //大於0  表示s2比s3大  
  }
}
結果:
s1=abc
s2=ABC
s3=abc
ABC和abc比較大小=-32
 


--------------------ASP.Net+Android+IOS開發.Net培訓、期待與您交流! --------------------
發佈了46 篇原創文章 · 獲贊 3 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章