Java基礎(一):字符、字符串


字符

  Java用char類型來表示字母、數字、標點符號以及其他特殊字符。Java基於Unicode4.0來表示每一個字符,Unicode的設計目標是容納世界上所有主要語言中的字符。

  Java使用16位即2個字節來表示字符,這意味着Java可以表示216,即65536個字符,看起來很多,但是還不能支持整個Unicode標准中的所有字符。如果超過這個范圍,Java允許使用int類型來表示字符,int類型字長4個字節32位,可以表示232位的字符。

  Java中表示字符的最簡單的方式如下,使用單引號嵌入字符:

char capitalA = 'A';

  字符從本質上講是數字。每一個字符映射到一個范圍在0到65 535的正整數,每一個字符在Unicode標准中都有對應的數字值,稱為Unicode值。我們可以用如下方法來查看字符的Unicode碼:

char word = 'A';
int p = 65;
System.out.println("a在unicode表中的順序位置是:" + (int) word);
System.out.println("unicode表中的第65位是:" + (char) p);

  並不是所有的字符都可以通過鍵盤輸入到計算機。您可以用Unicode轉義符(\u或者\U,后面跟着四位的十六進制數字)來表示Unicode字符:

char word = '\U0041'

特殊字符
  Java定義了一些用來格式化輸出的特殊字符。Java使用轉義符來表示這些特殊字符,該轉義符由一個反斜線(\)和一個隨后的助記符組成:

回車            '\r'
換行 '\n'
Tab '\t'
換頁 '\f'
退格 '\b'

  由於一對單引號和反斜線對於字符表示有特殊的意義,所以您必須用轉義符來表示它們。

單引號        '\'
換碼符 '\\'
雙引號 '\'''

  注意:雙引號不需要轉義。
字符串

  字符串對象表示固定長度的字符序列,String類可能是Java程序中使用的最頻繁的類了。

  來看兩種創建字符串的方式:

String a = "abc";
String b = new String("abc");

  實際運用中,我們要避免第二種方式,第二種方式創建了兩個String對象。首先,Java虛擬機創建了String對象“abc”。然后,java虛擬機創建一個新的String對象,並把字符串“abc”傳入構造函數。這是一次完全沒有必要的構造,既影響了性能,也提高了代碼閱讀難度。

  由於字符串是字符序列,所以可以嵌入特殊字符。

String s = "\t\n";

字符連接

  您可以將一個字符串和另一個字符串連接起來,從而生成第三個字符串。

String abcd = "ab".concat("cd")

  在Java中,字符串連接是一個非常常用的操作。您可以用加號(+)作為字符串連接的捷徑。

String abcd = "ab" + "cd";

  在實際編碼中,我們也基本都是這么做的。

  +符號既可以操作數值的加減,也可以用於連接字符串,這叫做操作符的重載。
字符串的不可改變性
  在JavaAPI文檔中我們可以看到String類的定義:

public final class String extends Object implements Serializable, Comparable<String>, CharSequence

  String類是一個final類,這代表一個String對象是不可改變的,String類的方法中我們也找不到任何能夠改變字符串的值和長度的方法。這就是字符串的不可改變性。

  當我們進行連接字符串操作的時候,Java虛擬機沒有改變其中任何一個字符串,而是創建了一個新的String對象,把連接后的結果賦予了它。Sun將String設計成不可改變的,這是為了讓String的行為最優化。因為String在多數應用中都被大量使用,所以它的優化是非常關鍵的。

StringBuilder

  類java.lang.StringBuilder提供了動態創建字符串的能力。使用方法上與StringBuffer是一樣的,不同之處在於,StringBuilder不是線程安全的,但是更搞笑,StringBuffer是現成安全的。
系統屬性

  在程序中,我們經常直接在字符串中寫入特殊字符,比如換行符"\n",這樣做不僅冗余,而且難以移植,不同平台的換行符也不同。

  類java.lang.System中可以找到這個問題的解決方案,該類包含了方法getProperty,此方法以一個系統屬性的鍵值作為參數,並返回與該鍵值相關聯的系統屬性。Java虛擬機在啟動的時候,就設置好了若干系統屬性。多數屬性返回與虛擬機以及當前執行環境相關的信息。API文檔中針對getProperties方法,給出了可用的屬性列表。例如換行符的屬性是line.separator。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM