天天看點

笑談字元串與字元、位元組數組的關系 | 帶你學《Java面向對象程式設計》之三十一

上一篇:Java世界入口:主方法分析 | 帶你學《Java面向對象程式設計》之三十

【本節目标】

通過閱讀本節内容,你将學習到String字元串與字元、位元組數組之間轉換的方法,并對字元串的相關操作有進一步的掌握。

字元串與字元數組

在JDK1.9以前,所有的String都利用字元數組實作了包裝的處理,是以在String類中是提供有相應的轉換處理方法的,這些方法包含有構造方法與普通方法兩類。

No. 方法名稱 類型 描述
01 public String(char[] value) 構造 将傳入的全部字元數組變為字元串
02 public String(char[] value,int offset, int count) 将部分字元數組變為字元串
03 public char charAt(int index) 普通 擷取指定索引位置的字元
04 public char[] toCharArray() 将字元串中的資料以字元數組的形式傳回

範例:觀察charAt()方法

public class StringDemo{
   public static void main(String args[]) {
       String str = “www.mldn.cn” ;
       char c = str.charAt(5) ;
       System.out.println(c) ;
   }     //輸出l     
}           

利用charAt()是可以擷取某一個指定索引位置的字元,但是程式之中的索引下标都是從0開始。

在程式語言之中,最早一直強調的就是字元串應該使用字元數組進行描述,是以這一操作在String類的方法中也是有所展現的。

範例:實作字元串與字元數組的轉換

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       char [] result = str.toCharArray() ;   //将字元串變為字元數組
       for (int x = 0 ; x < result.length ; x ++) {
          result[x] -= 32 ;     // 編碼減少32
}
//将處理後的字元數組交給String變為字元串
     String newStr = new String (result) ;
     System.out.println(newStr) ;         //HELLOWORLD
     System.out.println(new String(result , 0, 5)) ;     //HELLO
   }         
}           

現在假設說要求做一個驗證功能,判斷某一個字元串中的資料是否全部由數字所組成。那麼這個時候可以采用如下的思路:

  • 如果要想判斷字元串中的每一位最好的做法是将字元串變為字元數組;
  • 可以判斷每一個字元是否在數字的範圍之内(’0’~’9’);
  • 如果有一位不是數字則表示驗證失敗。

範例:實作字元串的資料檢查

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       System.out.println(isNumber(str) ? “由數字所組成” : “不是由數字所組成”) ;          //執行結果:不是由數字所組成
       System.out.println(isNumber(“123”) ? “由數字所組成” : “不是由數字所組成”) ;         //執行結果:是由數字所組成
   } 
    //該方法主要是判斷字元串是否由數字所組成 
   public static Boolean isNumber(String str) {
       char [] result = str.toCharArray() ;    //将字元串變為字元數組
       for (int x = 0 ; x < result.length ; x ++) {   //依次判斷
          if (result[x] < ‘0’ || result[x] > ‘9’) {
            return false ;         //後面不再判斷
          }
       }
       return true ;
   }      
}           

在實際開發之中進行中文的時候往往使用char類型,因為其可以包含中文資料。

字元串與位元組數組

字元串與位元組數組之間也可以實作轉換的處理操作,但是需要提醒一下,當進行了字元串與位元組轉換時,其主要目的是為了進行二進制的資料傳輸,或者是進行編碼轉換。

public String(byte[] bytes) 将全部的位元組數組變為字元串
public String(byte[] bytes, int offset,int length) 将部分位元組數組變為字元串
public byte[] getBytes() 将字元串轉為位元組數組
public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 編碼轉換

範例:觀察位元組與字元串的轉換

public class StringDemo{
   public static void main(String args[]) {
       String str = “helloworld” ;
       byte data[] = str.getBytes() ;   //将字元串變為位元組數組
       for (int x = 0 ; x < data.length ; x ++) {
          data[x] -= 32 ;
       }
       System.out.println(new String(data)) ;       //執行結果:HELLOWORLD
       System.out.println(new String(data , 0 ,5)) ;   //執行結果:HELLO
   }      
}           

位元組本身是有長度限制的,一個位元組最多可以儲存的範圍是:-128~127之間。

想學習更多的Java的課程嗎?從小白到大神,從入門到精通,更多精彩不容錯過!免費為您提供更多的學習資源。

本内容視訊來源于

阿裡雲大學 下一篇:教你成為字元串連連看高手 | 帶你學《Java面向對象程式設計》之三十二 更多Java面向對象程式設計文章檢視此處