2017年計(jì)算機(jī)二級(jí)考試java章節(jié)輔導(dǎo):數(shù)據(jù)類型

字號(hào):


    § 2.1數(shù) 據(jù) 類 型
    數(shù)據(jù)類型指明了變量或表達(dá)式的狀態(tài)和行為 。Java的數(shù)據(jù)類型如下所示 :
    Java不支持C、C++中的指針類型、結(jié)構(gòu)體類型和共用體類型。本章我們主要介紹簡單類型 。
    § 2.2常 量 與 變 量
    1 、 常 量
    Java中 的常量值是用文字串表示的,它區(qū)分為不同的類型,如整型常量123,實(shí)型常量1.23,字符常量‘ a’,布爾常量true、false以及字符串常量"This is a constant string."。
    與C、 C++不同,Java中不能通過 #define命令把一個(gè)標(biāo)識(shí)符定義為常量 ,而是用關(guān)鍵字final來實(shí)現(xiàn),如final double PI=3.14159( 有關(guān)final的用法見 [6.2.3])。
    2 、 變 量
    變量是 Java程序中的基本存儲(chǔ)單元 ,它的定義包括變量名、變量類型和作用域幾個(gè)部分 。
    ① 變量名是一個(gè)合法的標(biāo)識(shí)符,它是字母、數(shù)字、下劃線或美元符"$"的序列,Java對(duì)變量名區(qū)分大小寫 ,變量名不能以數(shù)字開頭 ,而且不能為保留字 。合法的變量名如:myName、 value-1、 dollar$等。非法的變量名如:2mail、 room#、 class (保留字)等 ,變量名應(yīng)具有一定的含義,以增加程序的可讀性 。
    ② 變量類型可以為上面所說的任意一種數(shù)據(jù)類型 。
    ③ 變量的作用域指明可訪問該變量的一段代碼 。 聲 明一個(gè)變量的同時(shí)也就指明了變量的作用域 。 按作用域來分,變量可以有下面幾種:局部變量、 類變量、方法參數(shù)、例外處理參數(shù)。 局部變量在方法或方法的一塊代碼中聲明,它的作用域 為它所在的代碼塊(整個(gè)方法或方法中的某塊代碼 )。
    類變量在類中聲明,而不是在類的某個(gè)方法中聲明,它的作用域是整個(gè)類 。方法參數(shù)傳遞給方法,它的作用域就是這個(gè)方法 。例外處理參數(shù)傳遞給例外處理代碼,它的作用域就是例外處理部分 。
    在一個(gè)確定的域中,變量名應(yīng)該是的 。 通常一個(gè)域用大括號(hào) {}來劃定 。 有關(guān)類變量、參數(shù)傳遞以及例外處理將分別在[6.7.1]、[6.2 .4]和第八章中講述。
    ④ 變量的聲明格式為 :
    type identifier[=value][,identifier[=value]… ];
    例 如 : int a, b, c;
    double d1, d2=0.0;
    其中,多個(gè)變量間用逗號(hào)隔開,d2=0.0對(duì)實(shí)型變量d2賦初值 0.0, 只有局部變量和類變量是可以這樣賦初值的 ,而方法參數(shù)和例外處理參數(shù)的變量值是由調(diào)用者給出的 。
    § 2.3整 型 數(shù) 據(jù)
    1、整 型 常 量 :
    與C,C++相 同 ,Java的整常數(shù)有三種形式 :
    ① 十進(jìn)制整數(shù) ,如 123,-456,0
    ② 八進(jìn)制整數(shù) ,以 0開頭,如 0123表示十進(jìn)制數(shù) 83,-011表示十進(jìn)制數(shù) -9。
    ③ 十六進(jìn)制整數(shù),以 0x或 0X開頭 ,如 0x123表示十進(jìn)制數(shù)291,-0X12 表示十進(jìn)制數(shù)-18。
    整型常量在機(jī)器中 占 32位 ,具有int型的值 ,對(duì)于long型值,則要在數(shù)字后加L或 l,如 123L表示一個(gè)長整數(shù) ,它在機(jī)器中占 64位 。
    2、整型變量 :
    整型變量的類型有byte、short、int、long四種。下表列出各類型所在內(nèi)存的位數(shù)和其表示范圍。
    int類型是最常使用的一種整數(shù)類型。它所表示的數(shù)據(jù)范圍足夠大,而且適合于32位 、64位處理器。 但對(duì)于大型計(jì)算,常會(huì)遇到很大的整數(shù),超出int類型所表示的范圍,這時(shí)要使用long類型 。
    由于不同的機(jī)器對(duì)于多字節(jié)數(shù)據(jù)的存儲(chǔ)方式不同,可能是從低字節(jié)向高字節(jié)存儲(chǔ) ,也 可能是從高字節(jié)向低字節(jié)存儲(chǔ),這樣在分析網(wǎng)絡(luò)協(xié)議或文件格式時(shí) ,為了解決不同機(jī)器上的字節(jié)存儲(chǔ)順序問題,用 byte類型來表示數(shù)據(jù)是合適的。而通常情況下,由于其表示的數(shù)據(jù) 范圍很小 ,容易造成溢出,應(yīng)避免使用 。
    short類型則很少使用,它限制數(shù)據(jù)的存儲(chǔ)為先高字節(jié),后低字節(jié) ,這樣在某些機(jī)器中會(huì)出錯(cuò) 。
    3、整型變量的定義
    如 :
    byte b; //指定變量b為byte型
    short s; //指定變量s為short型
    int i; //指定變量i為int型
    long l; //指定變量l為long型
    § 2.4浮點(diǎn)型 (實(shí)型 )數(shù)據(jù)
    浮點(diǎn)數(shù)分為單精度和雙精度,Java中的單精度和雙精度分別為float和double。float占4個(gè)字節(jié),double占8個(gè)字節(jié)。
    1、實(shí)型常量
    與 C,C++相 同 ,Java的 實(shí) 常 數(shù) 有 兩 種 表 示 形 式 :
    ①十進(jìn)制數(shù)形式,由數(shù)字和小數(shù)點(diǎn)組成,且必須有小數(shù)點(diǎn),如 0.123, .123, 123.,123.0
    ② 科學(xué)計(jì)數(shù)法形式 。 如:123e3或123E3,其中e或E之前必須有數(shù)字,且e或E后面的指數(shù)必須 整 數(shù) 。
    實(shí)常數(shù)在機(jī)器中占64位,具有double型的值。 對(duì)于float型的值,則要在數(shù)字后加f或F,如12.3F,它在機(jī)器中占32位,且表示精度較低 。
    2 、 實(shí) 型 變 量
    實(shí)型變量的類型有float和 double兩種 ,下表列出這兩種類型所占內(nèi)存的位數(shù)和其表示范圍 。 數(shù)據(jù)類型 所占位數(shù) 數(shù)的范圍
    float 32 3.4e-038~3.4e+038
    double 64 1.7e-308~1.7e+308
    雙精度類型 double比單精度類型 float具有更高的精度和更大的表示范圍 ,常常使用 。
    3、實(shí)型變量定義
    float f; // 指定變量f為 float型
    double d; // 指定變量 d為 double型
    [注 ]與C、 C++不同 ,Java中沒有無符號(hào)型整數(shù),而且明確規(guī)定了整型和浮點(diǎn)型數(shù)據(jù)所占的內(nèi)存字節(jié) 數(shù) ,這樣就保證了安全性 、 魯棒性和平臺(tái)無關(guān)性 。
    § 2.5字 符 型 數(shù) 據(jù)
    1、字符常量
    字符常量是用單引號(hào)括起來的一個(gè)字符,如‘ a’, A’。另外,與C、C++相同,Java也 提 供 轉(zhuǎn) 義字符,以反斜杠(\)開頭,將其后的字符轉(zhuǎn)變?yōu)榱硗獾暮x,下表列出了Java中的 轉(zhuǎn) 義 字 符 。
    與C、C++不同,Java中的字符型數(shù)據(jù)是16位無符號(hào)型數(shù)據(jù),它表示Unicode集,而不僅僅是 ASCII集 ,例 如 \u0061表 示 ISO拉 丁 碼 的 ‘ a’ 。
    轉(zhuǎn)義字符 描述
    \ddd 1到3位8進(jìn)制數(shù)據(jù)所表示的字符(ddd)
    \uxxxx 1到4位16進(jìn)制數(shù)所表示的字符(xxxx)
    \' 單引號(hào)字符
    \\ 反斜杠字符
    \r 回車
    \n 換行
    \f 走紙換頁
    \t 橫向跳格
    \b 退格
    2、字符型變量
    字符型變量的類型為char,它在機(jī)器中占16位 ,其范圍為0~65 535。 字符型變量的定義如
    char c='a'; //指 定 變 量 c為 char型 ,且 賦 初 值 為 'a' 與C、 C++不同 ,Java中的字符型數(shù)據(jù)不能用作整數(shù) ,因 為 Java不提供無符號(hào)整數(shù)類型 。 但是同樣可以把它當(dāng)作整數(shù)數(shù)據(jù)來操作 。例 如 :
    int three=3;
    char one='1';
    char four=(char)(three+one);//four='4'
    上例中,在計(jì)算加法時(shí),字符型變量one被轉(zhuǎn)化為整數(shù),進(jìn)行相加,最后把結(jié)果又轉(zhuǎn)化為字符型 。
    3、字符串常量
    與C、C++相同 ,Java的字符串常量是用雙引號(hào)("")括起來的一串字符,如"This is a string.\n"。 但不同的是,Java中 的字符串常量是作為 String類的一個(gè)對(duì)象來處理的 ,而不是一個(gè)數(shù)據(jù) 。 有關(guān)類 String我們將在第七章講述 。
    § 2.6布爾型數(shù)據(jù)
    布爾型數(shù)據(jù)只有兩個(gè)值,true和 false,且它們不對(duì)應(yīng)于任何整數(shù)值,在流控制中常用到。
    布爾型變量的定義如:
    boolean b=true; //定義b為布爾型變量,且初值為 true
    § 2.7舉 例
    例 2.1.下例中用到了前面提到的數(shù)據(jù)類型 ,并通過屏幕顯示它們的值 。
    public class SimpleTypes{
    public static void main( String args[] ){
    byte b=0x55;
    short s=0x55ff;
    int i=1000000;
    long l=0xfffL;
    char c='c';
    float f=0.23F;
    double d=0.7E-3;
    boolean bool=true;
    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("bool = "+bool);
    }
    }
    編譯并運(yùn)行該程序,輸出結(jié)果為:
    C:\>java SimpleTypes
    b = 85
    s = 22015
    i = 1000000
    l = 4095
    c = c
    f = 0.23
    d = 0.0007
    bool = true
    § 2.8 各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算
    1、自動(dòng)類型轉(zhuǎn)換
    整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算 。 運(yùn)算中 ,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算。轉(zhuǎn)換從低級(jí)到高級(jí),轉(zhuǎn)換規(guī)則為 :
    ① (byte或 short) op int→ int
    ② (byte或 short或 int) op long→ long
    ③ (byte或 short或 int或 long) op float→ float
    ④ (byte或 short或 int或 long或 float) op double→ double
    ⑤ char op int→ int
    其中 ,箭頭左邊表示參與運(yùn)算的數(shù)據(jù)類型 ,op為運(yùn)算符 (如加、減、乘、除等),右邊表示轉(zhuǎn)換成的進(jìn)行運(yùn)算的數(shù)據(jù)類型 。
    例2.2
    public class Promotion{
    public static void main( String args[ ] ){
    byte b=10;
    char c='a';
    int i=90;
    long l=555L;
    float f=3.5f;
    double d=1.234;
    float f1=f*b;
    // float * byte -> float
    int i1=c+i;
    // char + int -> int
    long l1=l+i1;
    // long + int ->ling
    double d1=f1/i1-d;
    // float / int ->float, float - double -> double
    }
    }
    2、強(qiáng)制類型轉(zhuǎn)換
    高級(jí)數(shù)據(jù)要轉(zhuǎn)換成低級(jí)數(shù)據(jù),需用到強(qiáng)制類型轉(zhuǎn)換,如 :
    int i;
    byte b=(byte)i;
    //把 int型變量 i強(qiáng)制轉(zhuǎn)換為byte型這種使用可能會(huì)導(dǎo)致溢出或精度的下降,不要使用 。