黑馬程式員—java基礎——————String類

來源:互聯網
上載者:User

String:

  1:public final class String extends Object 

      String s1 = "abc";                          //s1是一個類類型變數, "abc"是一個對象。       //字串最大特點:一旦被初始化就不可以被改變。

      String s2 = new String("abc");     //s2是兩個對象,s2和“abc”這是s1和s2的區別所在。

      String s3 = "abc";                         

      System.out.println(s1==s2);       //兩個對象                                                                                                           false

      System.out.println(s1.equals(s2));     //String類複寫了Object類中equals方法,該方法用於判斷字串地址是否相同。    true 

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

  2:String類是對字串事物的描述。該類定義了專門用於操作字串的方法。常見的操作方法如下:

      擷取: 

          字串中的包含的字元數,也就是字串的長度。》》》》》》》》》》》》》int length():擷取長度。

          根據位置擷取位置上某個字元。》》》》》》》》》》》》》》》》》》》》》char charAt(int index):

          根據字元擷取該字元在字串中位置。》》》》》》》》》》》》》》》》》》

              int indexOf(int ch):返回的是ch在字串中第一次出現的位置。

              int indexOf(int ch, int fromIndex) :從fromIndex指定位置開始,擷取ch在字串中出現的位置。

              int indexOf(String str):返回的是str在字串中第一次出現的位置。

              int indexOf(String str, int fromIndex) :從fromIndex指定位置開始,擷取str在字串中出現的位置。

              int lastIndexOf(int ch) :

      判斷:

          字串中是否包含某一個子串。》》》》》》》》》》》》》》》》》》》》boolean contains(str):

              特殊之處:indexOf(str):可以索引str第一次出現位置,如果返回-1.表示該str不在字串中存在。所以,也可以用於對指定判斷是否包含。

              if(str.indexOf("aa")!=-1)而且該方法即可以判斷,也可以擷取出現的位置。

          字元中是否有內容。》》》》》》》》》》》》》》》》》》》》》》》》》boolean isEmpty(): 原理就是判斷長度是否為0.

          字串是否是以指定內容開頭。》》》》》》》》》》》》》》》》》》》》》》》》boolean startsWith(str);

          字串是否是以指定內容結尾。》》》》》》》》》》》》》》》》》》》》》》》》boolean endsWith(str);

          判斷字串內容是否相同。複寫了Object類中的equals方法。》》》》》》》》》》》boolean equals(str);

          判斷內容是否相同,並忽略大小寫。》》》》》》》》》》》》》》》》》》》》》》》boolean equalsIgnoreCase();

      轉換:

          將字元數組轉成字串。》》》》》》》》》》》》》》》》》》》》》》》》》

              建構函式:String(char[])

                     String(char[],offset,count):將字元數組中的一部分轉成字串。

              靜態方法:static String copyValueOf(char[]);     

                   static String copyValueOf(char[] data, int offset, int count)

                   static String valueOf(char[]):

          將字串轉成字元數組。》》》》》》》》》》》》》》》》》》》》》》》》》》》char[] toCharArray():

          將位元組數組轉成字串。》》》》》》》》》》》》》》》》》》》》》》》》》》》String(byte[])

          將位元組數組中的一部分轉成字串。》》》》》》》》》》》》》》》》》》》》》》String(byte[],offset,count):

          將字串轉成位元組數組。》》》》》》》》》》》》》》》》》》》》》》》》》》》byte[]  getBytes():

          將基礎資料型別 (Elementary Data Type)轉成字串。》》》》》》》》》》》》》》》》》》》》》》》》》

                   static String valueOf(int)

                   static String valueOf(double)

                   特殊:字串和位元組數組在轉換過程中,是可以指定編碼錶的。

     替換:

          String replace(oldchar,newchar);

     切割:

          String[] split(regex);

     子串。擷取字串中的一部分。

          String substring(begin);                                                 String substring(begin,end);

     轉換,去除空格,比較。

          將字串轉成大寫或則小寫。》》》》》》》》》》》》》 String toUpperCase();                               String toLowerCase(); 

          將字串兩端的多個空格去除:》》》》》》》》》》》》 String trim();

          對兩個字串進行自然順序的比較。》》》》》》》》》》int compareTo(string);

去空格:

 public static String myTrim(String str)  {   

      int start = 0,end = str.length()-1;//長度減一正好是最後一個字元的角標

       while(start<=end && str.charAt(start)==' ')    

          start++;

       while(start<=end && str.charAt(end)==' ')    

          end--;

       return str.substring(start,end+1);  //這個方法是提取包含頭不包含尾的,所以end要加1

}

字串反轉:

public static String reverseString(String s,int start,int end)  {   

    //字串變數組。   

    char[] chs = s.toCharArray();

    //反轉數組。   

    reverse(chs,start,end);

    //將數組變成字串。   

    return new String(chs);  

}  

public static String reverseString(String s)  {   

    return reverseString(s,0,s.length());     

}

private static void reverse(char[] arr,int x,int y)  {   

    for(int start=x,end=y-1;        start<end ;         start++,end--)   {    

        swap(arr,start,end);   

    }  

}  

private static void swap(char[] arr,int x,int y)  {   

    char temp = arr[x];   

    arr[x] = arr[y];   

    arr[y] = temp;  

}

擷取一個字串在另一個字串中出現的次數。

 public static int getSubCount_1(String str,String key)  {   

    int count = 0;   int index = 0;

    while((index=str.indexOf(key))!=-1)   {    //只要沒有找到那個key就迴圈去找

        sop("str="+str);    

        str = str.substring(index+key.length());     //找到了key第一次出現的位置,再加上KEY的長度就可以從第一次出現的位置後去找key的位置,找到了就++

        count++;    

    }   

    return count;  

}

或者下面

public static int getSubCount_2(String str,String key)  {   

    int count = 0,index = 0;

    while((index= str.indexOf(key,index))!=-1)   {    

        sop("index="+index);    

        index = index + key.length();

        count++;   

    }   

    return count;  

}

擷取兩個字串中最大相同子串:    將短的那個子串按照長度遞減的方式擷取到。     將每擷取到的子串去長串中判斷是否包含,如果包含,已經找到!。

public static String getMaxSubString(String s1,String s2)  {

    String max = "",min = "";

    max = (s1.length()>s2.length())?s1: s2;

    min = (max==s1)?s2: s1;   

    //  sop("max="+max+"...min="+min);   

    for(int x=0; x<min.length(); x++)   {    

        for(int y=0,z=min.length()-x; z!=min.length()+1; y++,z++)    {     

            String temp = min.substring(y,z);          

            sop(temp);     

            if(max.contains(temp))       //if(s1.indexOf(temp)!=-1)      

                return temp;    

        }   

     }   

     return "";  

}

StringBuffer:是字串緩衝區,是一個容器。

          特點:長度是可變化的;可以位元組操作多個資料類型;最終會通過toString方法變成字串。  

          功能:

              儲存:

                  StringBuffer append():將指定資料作為參數添加到已有資料結尾處。

                  StringBuffer insert(index,資料):可以將資料插入到指定index位置。

              刪除:

                  StringBuffer delete(start,end):刪除緩衝區中的資料,包含start,不包含end。

                  StringBuffer deleteCharAt(index):刪除指定位置的字元。

              擷取。

                  char charAt(int index)

                  int indexOf(String str)

                  int lastIndexOf(String str)

                  int length()

                  String substring(int start, int end)

              修改:

                  StringBuffer replace(start,end,string);

                  void setCharAt(int index, char ch) ;

              反轉: StringBuffer reverse();

              將緩衝區中指定資料存放區到指定字元數組中: void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

JDK1.5 版本之後出現了StringBuilder:StringBuffer是線程同步。 StringBuilder是線程不同步。建議使用StringBuilder

基礎資料型別 (Elementary Data Type)對象封裝類

     基礎資料型別 (Elementary Data Type)對象封裝類的最常見作用,就是用於基礎資料型別 (Elementary Data Type)和字串類型之間做轉換。

            1:基礎資料型別 (Elementary Data Type)轉成字串。

              基礎資料型別 (Elementary Data Type).toString(基礎資料型別 (Elementary Data Type)值);               Integer.toString(34);

              2:字串轉成基礎資料型別 (Elementary Data Type)。

              xxx a = Xxx.parseXxx(String);       double b = Double.parseDouble("12.23"); //必須傳入數字格式的字串。                   

                      Integer i = new Integer("123");           int num = i.intValue();

            3:十進位轉成其他進位:     toBinaryString();       toHexString();       toOctalString();

            4:其他進位轉成十進位:     parseInt(string,radix);

    對象封裝類新特性:       

        Integer x = new Integer(4);

        Integer x = 4;//自動裝箱。等同於new Integer(4)

        x = x         /*相當於 x.intValue() */         + 2;       //x+2:x 進行自動拆箱。變成成了int類型。和2進行加法運算。再將和進行裝箱賦給x。但是新特性有

            一個弱點,就是Integer x = null;這樣是不行的,因為它的指向為空白的話x.intValue()就會拋null 指標異常,所以在進行裝箱和拆箱的時候要先判

            斷是否null,

 

          

    
          

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.