1. 程式人生 > >IT兄弟連 Java語法教程 資料型別3

IT兄弟連 Java語法教程 資料型別3

字元型

在Java中,用於儲存字串的資料型別是char。然而,C/C++程式設計師要當心:Java中的char與C或C++中的char是不同的。在C/C++中,char的寬度是8位。而在Java中不是這樣的。相反,Java使用Unicode表示字元。Unicode定義了一個完全國際化的字符集,能夠表示全部人類語言中的所有字元。unicode是數十種字符集的統一體,比如拉丁字符集、希臘字符集、阿拉伯字符集、斯拉夫語字符集、希伯來語字符集、日文字符集、韓文字符集和中文字符集等。為此,Unicode需要16位寬度。因此,在Java中char是16位型別。char的範圍為0~65536。沒有負的char值。ASCII標準字符集的範圍仍然是0~127;而擴充套件的8位字符集ISO-Latin-1,其範圍是0~255。既然Java的設計初衷是允許程式設計師編寫在世界範圍內均可使用的程式,那麼使用Unicode表示字元是合理的。當然,對於英語、德語、西班牙語或法語這類語言,使用Unicode在一定程度上會降低效率,因為可以很容易地使用8位表示這類語言的字元。但這是為了在全球獲得可移植性而必須付出的代價。

下面是演示char變數用法的一個程式:

public class CharDemo{

    public static void main(String[] args){

         char c1 = 97;

         char c2 = 'a';

         System.out.println("c1: " + c1);

         System.out.println("c2: " + c2);

    }

}

編譯並執行這個程式,控制檯將顯示如圖1所示的資訊。

960a1922b7ea49d0946c1f174383746c.png

圖1 CharDemo執行結果

 

注意,c1被賦值為整數97,該數值是與字母'a'對應的ASCII(以及Unicode)值。前面提到過,ASCII字符集佔用Unicode字符集中前127個值。因此,在其它語言中對字元使用的所有“舊式技巧”,在Java中依然管用。

儘管char被設計成容納Unicode字元,但它可以用作整數型別,可以對char型別的變數執行算術運算。例如,可以將兩個字元相加到一起,或者增加字元變數的值。分析下面的程式:

public class CharDemo2{

    public static void main(String[] args){

         char c1 = 'b';

         System.out.println("c1: " + c1);

         char c2 = 'a' + 1;

         System.out.println("c2: " + c2);

    }

}

編譯並執行這個程式,控制檯將顯示如圖2所示的資訊。

在該程式中,首先將'b'賦值給c1並輸出,字元b在ASCII和Unicode字符集中的編碼都是98,接下來聲明瞭char變數c2,使用字元a加1初始化了c2變數,我們知道字元a在ASCII和Unicode字符集中的編碼是97,那麼97加1就是字元b在ASCII和Unicode中的字元編碼,所以最後輸出了字元b。

注意,在Java的正式規範中,char被當作整數型別,這意味著它和int、short、byte和long位於同一分類中。然而,因為char型別的主要用途是表示unicode字元,所以通常考慮將char放到單獨的分類中。

 

eb9c5b5f49b44bf984e3bb0357263ef8.png

圖2  CharDemo2執行結果

 

布林型

Java中有一種稱為boolean的基本資料型別,用於表示邏輯值。他只能是兩個可能的值之一:true或false。所有關係運算(例如a<b)都返回這種型別的值。對於if和for這類控制語句的條件表示式。也需要boolean型別。

下面的程式演示了boolean型別:

public class BooleanDemo{

    public static void main(String[] args){

         boolean b = false;

         System.out.println("b: " + b);

         b = true;

         System.out.println("b: " + b);

         if(b) System.out.println("這段程式碼被執行了");

         b = false;

         if(b) System.out.println("這段程式碼不會被執行");

         System.out.println("10>9麼? :" + (10 > 9));

    }

}

編譯並執行這個程式,控制檯將顯示如圖3所示的資訊。

關於這個程式有三個有趣的地方需要注意。首先可以看出,當通過println()方法輸出boolean值時,顯示的是true或false。其次,對於控制語句if來說,boolean變數的值本身是足夠的。不需要像下面這樣編寫if語句:

if(b == true) …

 

0d2224e5a93d45918cd9b896ba147a65.png

圖3  BooleanDemo執行結果

最後,關係運算符(例如<)的輸出的是boolean值。這就是為什麼表示式10>9顯示true的原因。此外,10>9周圍的圓括號是必須的,因為運算子+比>具有更