鍍金池/ 教程/ Java/ Java char數(shù)據(jù)類型
Java int數(shù)據(jù)類型
Java字符串開(kāi)關(guān)(switch用法)
Java byte數(shù)據(jù)類型
Java字符串轉(zhuǎn)換
Java long數(shù)據(jù)類型
Java下劃線數(shù)字面量
Java可變長(zhǎng)度數(shù)組
Java字符串算法
Java double數(shù)據(jù)類型
Java字符串搜索
Java boolean數(shù)據(jù)類型
Java原始數(shù)據(jù)類型
Java布爾包裝類
Java char數(shù)據(jù)類型
Java字符串比較
Java StringBuilder和StringBuffer用法
Java數(shù)據(jù)類型教程
Java數(shù)組復(fù)制
Java字符串編輯(修剪字符串)
Java字符數(shù)據(jù)類型
Java數(shù)組類型
Java數(shù)組參數(shù)
Java無(wú)符號(hào)數(shù)據(jù)類型
Java數(shù)組元素
Java字符串字符
Java字符串創(chuàng)建和長(zhǎng)度
Java數(shù)值類型包裝器
Java自動(dòng)裝箱和拆箱
Java數(shù)據(jù)類型簡(jiǎn)介
Java short數(shù)據(jù)類型
Java字符串類型
Java float數(shù)據(jù)類型
Java多維數(shù)組
Java數(shù)據(jù)類型包裝器

Java char數(shù)據(jù)類型

char數(shù)據(jù)類型是16位無(wú)符號(hào)Java基元數(shù)據(jù)類型。 它表示Unicode字符。請(qǐng)注意,char是無(wú)符號(hào)數(shù)據(jù)類型。 因此,char變量不能為負(fù)值。字符數(shù)據(jù)類型的范圍為065535,這與Unicode集的范圍相同。

字符字面量

字符字面量表示char數(shù)據(jù)類型的值。 Java中的字符字面量可以用以下格式表示:

  • 字符需要用單引號(hào)括起來(lái)
  • 作為字符轉(zhuǎn)義序列
  • 作為Unicode轉(zhuǎn)義序列
  • 作為八進(jìn)制轉(zhuǎn)義序列

字符可以通過(guò)用單引號(hào)括起來(lái)表示。以下代碼段使用此形式為char變量賦值:

char   c1  = 'A'; 
char   c2  = 'L'; 
char   c3  = '5'; 
char   c4  = '/';

用雙引號(hào)括起來(lái)的字符序列是一個(gè)String字面量。不能將字符串文字分配給char變量,即使String文字只有一個(gè)字符。

字符轉(zhuǎn)義序列

字符字面量可以表示為字符轉(zhuǎn)義序列。字符轉(zhuǎn)義序列以反斜杠開(kāi)頭,后面緊跟一個(gè)字符,并且都用單引號(hào)括起來(lái)。

有八個(gè)預(yù)定義的字符轉(zhuǎn)義序列,如下表所列。

字符轉(zhuǎn)義序列 描述
‘\n’ 換行
‘\r’ 回車
‘\f’ 換頁(yè)
‘\b’ 退格
‘\t’ 制表
‘\‘ 反斜杠
‘\”‘ 雙引號(hào)
‘\’’ 單引號(hào)

Java中只有八個(gè)字符轉(zhuǎn)義序列。不能定義自己的字符轉(zhuǎn)義序列。

char   c1  = '\n'; // Assigns a linefeed to c1 
char   c2  = '\"'; // Assigns double quote to c2
char   c3  = '\a'; // A compile-time error. Invalid character escape sequence

Unicode

字符文字可以表示為“\uxxxx”形式的Unicode轉(zhuǎn)義序列。這里,\u表示Unicode轉(zhuǎn)義序列的開(kāi)始,xxxx正好表示四個(gè)十六進(jìn)制數(shù)字。

xxxx表示的值是字符的Unicode值。字符“A”的Unicode值為65。十進(jìn)制值65可以用十六進(jìn)制表示為41。

因此,字符’A‘可以用Unicode轉(zhuǎn)義序列表示為’\u0041‘。以下代碼將相同的字符“A”分配給char變量c1c2

char c1  = 'A';
char c2  = '\u0041'; // Same as  c2  = 'A'

字符文字可以表示為形式為’\nnn‘的八進(jìn)制轉(zhuǎn)義序列。這里,n是八進(jìn)制數(shù)(0-7)。 八進(jìn)制轉(zhuǎn)義序列的范圍是’\000‘到’\377‘。
八進(jìn)制數(shù)377與十進(jìn)制數(shù)255相同。因此,使用八進(jìn)制轉(zhuǎn)義序列,可以表示Unicode代碼范圍從0255個(gè)十進(jìn)制整數(shù)的字符。

Unicode字符集(代碼范圍065535)可以表示為Unicode轉(zhuǎn)義序列(‘\uxxxx‘)。如果int文本在0-65535范圍內(nèi),可以為int變量賦值。

當(dāng)為字符變量分配一個(gè)int字面量時(shí),char變量表示其Unicode代碼等于該字符串表示的值的字符。字符’a‘的Unicode代碼是97。十進(jìn)制值97被表示為141八進(jìn)制和61十六進(jìn)制。
下面的代碼顯示了如何使用int字面值97來(lái)表示Unicode字符’a‘。

char   c1  = 97;  // Same as  
c1  = 'a'; 
c1  = '\141'; 
c1  = '\u0061';

示例-1

這里是一個(gè)程序用來(lái)演示char變量:

public class Main {
  public static void main(String args[]) {
    char ch1, ch2;
    ch1 = 88; // code for X
    ch2 = 'Y';
    System.out.print("ch1 and ch2: ");
    System.out.println(ch1 + " " + ch2);
  }
}

ch1被分配值88,它是對(duì)應(yīng)于字母XASCIIUnicode值。ASCII字符集占據(jù)Unicode字符集中的前127個(gè)值。

上面的代碼生成以下結(jié)果。

ch1 and ch2: X Y

實(shí)例-2

char用來(lái)保存Unicode字符,但它也可以用來(lái)保存整數(shù)類型,可以在其上執(zhí)行算術(shù)運(yùn)算。例如,可以將兩個(gè)字符添加在一起,或者增加一個(gè)字符變量的值。

在程序中,ch1首先給定值X。 接下來(lái),ch1遞增。這導(dǎo)致ch1包含Y值,ASCII(和Unicode)序列中的下一個(gè)字符。

public class Main {
  public static void main(String args[]) {
    char ch1;

    ch1 = 'X';
    System.out.println("ch1 contains " + ch1);

    ch1++; // increment ch1
    System.out.println("ch1 is now " + ch1);
  }
}

上面的代碼生成以下結(jié)果。

ch1 contains X
ch1 is now Y