2012-03-08 28 views

回答

3

這是完全可能的,你可以用幾種方法做到這一點。

  • 使用Unicode轉義:

    String string = "\u0041\u0042\u0043"; 
    
  • 創建和使用的字節數組:

    String string = new String(new byte[] {(byte) 0x41, (byte) 0x42, (byte) 0x43}); 
    

,你必須牢記的是,該字符串不是一個一些東西的數組,它是一個單獨的對象。因此它應該被創建爲一個字符串文字,或者與其中一個構造函數一起創建。

+0

謝謝,這正是我一直在尋找的! – user1019710 2012-03-08 21:08:20

1

有沒有無符號類型的Java,所以你的數組必須包含定期char值。但是,數字文字默認爲int,因此您可能需要將值轉換爲char,如下所示:(char)0x41byte值也一樣(根據您的數字是ASCII還是Unicode BMP值,使用其中一個或另一個)。您也可以使用unicode轉義,如String str = "\u0041\u0042";。要獲取ASCII(或其他編碼)字符串的字節表示形式(相反的操作),請使用以下語法:String charArray = "abcd".getBytes("UTF-8");

另外,請注意字節和字符之間的區別。一個字符由Unicode標準定義,並且具有相同的含義。一個字節的含義取決於所使用的字符編碼,所以你不能只用字節來創建一個字符串。如果使用String(byte[])構造函數,則隱式使用平臺的默認編碼 - 在某些情況下,這可能有風險。另一方面,如果通過將十六進制數字轉換爲char來生成char值,則實際上是從ASCII手動轉換的。

2

問題不在於String,它與Java數組有關,特別是字節。

你可以做

String charArray = new String(new byte[] {(byte) 0x41, (byte) 0x42, 
    (byte) 0x43}); 

,或者甚至更好,你可以只寫字符串字面與ASCII轉義等。

"\u0041\u0042\u0043" 
相關問題