官术网_书友最值得收藏!

2.3 基本類型

2.3.1 整型數(shù)據(jù)

整型數(shù)據(jù)是最普通的數(shù)據(jù)類型,可表示日常生活中的整數(shù)。

1.整型常量

Java的整型常數(shù)有三種表示形式:十進制、十六進制和八進制。

十進制整數(shù)以10 為基數(shù),用0~9 這10 個數(shù)字和正、負(fù)號組成,如123,-456,0等。十進制整數(shù)的第一位數(shù)字不能為0。

十六進制整數(shù)以16為基數(shù),用0~9的10個數(shù)字、字母A~F(小寫也可,代表10~15這些整數(shù))和正、負(fù)號組成。十六進制整數(shù)必須以0X或0x作為開頭,如0x123,-0xabc等。

八進制整數(shù)以8為基數(shù),用0~7的8個數(shù)字和正、負(fù)號組成。八進制整數(shù)必須用0開始,如0567,-0123等。

每一個整型常數(shù)默認(rèn)存儲為int類型,該類型數(shù)據(jù)占用存儲空間的數(shù)量和數(shù)據(jù)的取值范圍見表2.3。若要使用更大的數(shù),可用long類型整數(shù)。若希望把一個整數(shù)強制存為一個長整型數(shù),可以在數(shù)字后面加字母l或L。

2.整型變量

整型變量按所占存儲空間大小的不同有四種不同的類型,均為有符號數(shù)。表2.3 列出各整型數(shù)據(jù)所用的類型符及其所占存儲空間的字節(jié)數(shù)和數(shù)據(jù)的取值范圍。

表2.3 整型數(shù)據(jù)類型

(1)byte類型

byte字節(jié)類型適用于表示網(wǎng)絡(luò)和文件的字節(jié)流,用于分析網(wǎng)絡(luò)協(xié)議或文件格式等。本類型變量用byte定義,例如:

              byte b;           //定義byte型變量b
              byte c = 0x55;  //定義byte型變量c,并賦初值十六進制數(shù)55

(2)short類型

short短整型是Java語言中不常用的一種類型。短整型變量用short定義,例如:

              short s;              //定義short型變量s
              short t = 03377;     //定義short型變量t,并賦初值八進制數(shù)3377

(3)int類型

int整數(shù)類型由于數(shù)值范圍大,而且在任何時候,帶有byte,short和int類型量的一個整型表達式在計算前都會提升為int類型,所以使用較為廣泛。int類型變量的定義例子如下:

              int i;                 //定義int型變量i
              int j = 0x3344aabb; //定義int型變量j,并賦十六進制數(shù)3344aabb初值

(4)long類型

long長整型是一種可以表示比int類型取值范圍更大的數(shù)據(jù)類型,它足以表示宇宙中的所有原子。例如,當(dāng)使用毫秒來表示一年時,int數(shù)據(jù)已經(jīng)溢出(超出了int數(shù)據(jù)的值范圍),所以需要long類型。long類型變量的定義例子如下:

              long l;                              //定義long型變量l
              long n = 0x33445566aa7788bbl;   //定義long型變量n,并賦初值,用l作為后綴

2.3.2 實型(浮點型)數(shù)據(jù)

在Java中,實型數(shù)據(jù)常用十進制形式,通常將實型數(shù)據(jù)應(yīng)用于精確到小數(shù)的計算中。

1.實型常量

Java的實型常量有標(biāo)準(zhǔn)和科學(xué)記數(shù)法兩種表示形式。

(1)標(biāo)準(zhǔn)形式,由數(shù)字和小數(shù)點組成,且必須有小數(shù)點,如0.123,4.56,789.0等。

(2)科學(xué)記數(shù)法形式,數(shù)字中帶e或E,如123e1或4.56E3,其中e或E前后必須有數(shù)字,且e或E后面的數(shù)字(表示以10為底的乘冪部分)必須為整數(shù)。

實型數(shù)據(jù)按所占內(nèi)存的大小不同有兩種類型,分別為4 字節(jié)的單精度型和8 字節(jié)的雙精度型。實型常量后面可帶后綴F,f或D,d,分別表示單精度實數(shù)或雙精度實數(shù),例如:

              1.2f,3.4d,0.56e-7f,89e10d

無后綴的實型常量默認(rèn)存儲為雙精度型。若帶有后綴,則按后綴決定類型。

實數(shù)在機器中的存儲格式以ⅠEEE754格式存在。

單精度實數(shù)有效位數(shù)為二進制23 位、十進制7 位精度,多余位四舍五入。雙精度實數(shù)有效位數(shù)為二進制52位、十進制15位精度,多余位四舍五入。

2.實型變量

實型變量的類型說明符、所占字節(jié)數(shù)和取值范圍見表2.4。

表2.4 實型數(shù)據(jù)類型

(1)float類型

float型的實型數(shù)據(jù)占用存儲空間較少,具有較快的運算速度,但在數(shù)值很大或很小時數(shù)據(jù)精度會受到影響。

(2)double類型

double型的實型數(shù)據(jù)所表示的實數(shù)精度比float更高,值范圍比float更大,所有的數(shù)值計算方法如sin、cos、sqrt(開方)的計算結(jié)果均為double型。

定義實型變量的例子如下:

              float f;
              float g = 3.45f;
              double d;
              double mypi = 3.1415926535897932384;

注意:float類型的數(shù)據(jù)必須帶類型后綴字母f或F。由于Java加強了類型檢查,所以初始化一個實數(shù)時必須分清它是什么類型的。如語句:

              float g = 3.45;

在編譯時將產(chǎn)生一個錯誤,其中實數(shù)應(yīng)該寫為3.45f。

2.3.3 字符型數(shù)據(jù)

字符型char數(shù)據(jù)是由一對單引號括起來的單個字符。Java使用Unicode格式的16位字符集,而不僅僅為ASCⅠⅠ字符集,因此char類型的范圍從0到65535。Unicode字符集能夠容納一個很大的字符集合,包括拉丁語、希臘語、阿拉伯語、希伯來語、漢語、日語、韓語等語言,因此使用16位是非常必要的。

在Java語言中,以反斜杠(\)開頭的多個字符表示一個轉(zhuǎn)義字符,轉(zhuǎn)義字符一般用于表示某些非圖形(非可視)字符。表2.5 中列出了Java中的轉(zhuǎn)義字符。例如,'\u0061'表示ⅠSO拉丁碼的'a'。

字符變量用char說明,用來存放單個字符。示例如下:

              char c1 = 'c';
              char c2 = '\u0020';
              char ch1 = 88;       // 正確,字符'X'的代碼
              char ch2 = 'ab';     //錯誤,只能存儲1個字符
              char ch3 = "a";      //錯誤,不能用字符串初始化字符

表2.5 轉(zhuǎn)義字符表

2.3.4 布爾型數(shù)據(jù)

布爾類型或稱邏輯類型是一種簡單的兩值數(shù)據(jù)類型,布爾數(shù)據(jù)只有兩個值:true和false,且都是保留字,表示“真”和“假”這兩種狀態(tài)。關(guān)系運算和邏輯運算的結(jié)果是布爾值。

布爾型變量用boolean定義,例如:

              boolean mouseOn = true;
              boolean done = false;

布爾型是一個獨立的類型,它不像C語言中的布爾型代表0 和1 兩個整數(shù),由于這個原因,Java中的布爾類型不能轉(zhuǎn)換成數(shù)字。

2.3.5 字符串?dāng)?shù)據(jù)

1.字符串常量

字符串常量是用雙引號括起來的零個或多個字符(包括轉(zhuǎn)義字符)。例如:

              ""                       \\ 空串
              "我們贏了!\n"          \\ 一個包含轉(zhuǎn)義字符的字符串

一個長字符串可以用“+”號分成幾個短字符串。例如:

              "中國 北京 "+
                  "2008 奧運!"      \\ 一個字符串

在Java語言中,每個字符串常量被作為字符串類String的對象來處理。

2.字符串變量

在Java語言中,字符串變量是對象,是復(fù)合類型。有兩種字符串變量類型:String類和StringBuffer類。String類是常量類,初始化后不能改變;StringBuffer類是字符串緩沖區(qū),可以修改。例如:

              String str1 = new String("This is a string.");
              String str2 = "This is a string.";
              StringBuffer str3 = new StringBuffer();
              StringBuffer str4 = new StringBuffer("This is a string.");

關(guān)于字符串的詳細(xì)介紹見本書第6章。

2.3.6 默認(rèn)初始值

在Java程序中,使用變量的目的是為了存放數(shù)據(jù)(值)。根據(jù)變量聲明的位置不同,分為局部變量和成員變量,在方法中聲明的變量或方法的參數(shù)稱為局部變量,在方法外聲明的變量為成員變量。對局部變量必須先賦值后使用。對成員變量,若沒有賦值,則成員變量有默認(rèn)初值。對于數(shù)值數(shù)據(jù),默認(rèn)數(shù)值為相應(yīng)類型的零;字符的默認(rèn)初值為'\u0000';布爾初值為false;Object類型初值為null。成員變量的介紹見第5章。

【例2.1】基本類型變量的賦值并應(yīng)用。

              public class BasicType{
                public static void main(String args[]){
                  byte b = 077;
                  short s = 0x88;
                  int i = 88888;
                  long l = 888888888888l;
                  char c = '8';
                  float f = 0.88f;
                  double d = 8.88e-88;
                  boolean bool = false;
                  String str = "我們贏了!";
                  StringBuffer sb = new StringBuffer("中國 北京 2008 奧運!");
                  System.out.println("b = "+b);
                  System.out.println("s = "+s);
                  System.out.println("i = "+i);
                  System.out.println("l = "+l);
                  System.out.println("c = "+c);
                  System.out.println("f = "+f);
                  System.out.println("d = "+d);
                  System.out.println("boolean = "+bool);
                  System.out.println("str = "+str);
                  System.out.println("sb = "+sb);
                }
              }

程序運行結(jié)果如下:

              b = 63
              s = 136
              i = 88888
              l = 888888888888
              c = 8
              f = 0.88
              d = 8.88E-88
              boolean = false
              str = 我們贏了!
              sb = 中國 北京 2008 奧運!

因為程序中的所有變量均在main方法中聲明,它們都是局部變量,因此需要先賦值后使用。否則,將得到“可能尚未初始化變量”的出錯提示。

主站蜘蛛池模板: 娄底市| 赣州市| 麟游县| 云南省| 宁都县| 新丰县| 阿图什市| 水富县| 沭阳县| 乐至县| 和硕县| 淮北市| 义马市| 司法| 福鼎市| 桦川县| 大邑县| 昌都县| 报价| 宜春市| 会东县| 错那县| 连平县| 孟州市| 莎车县| 维西| 长治县| 怀来县| 河津市| 顺义区| 甘德县| 灵璧县| 大丰市| 扎兰屯市| 牡丹江市| 慈利县| 射阳县| 丁青县| 寿光市| 沽源县| 巩义市|