C語言中文網 目錄

Java數據類型

Java 是一種類型安全語言,編譯器存儲在變量中的數值具有適當的數據類型。學習任何一種編程語言都要了解其數據類型,本文將詳細介紹 Java 中的數據類型。

數據類型的分類

Java 語言的數據類型分為兩種:基本數據類型和引用數據類型。

(1) 基本數據類型包括 boolean(布爾型)、float(單精度浮點型)、char(字符型)、byte(字節型)、short(短整型)、int(整型)、long(長整型)和 double (雙精度浮點型)共 8 種,詳見表 1 所示。

表1 Java的基本數據類型
類型名稱 關鍵字 占用內存 取值范圍
字節型 byte 1 字節 -128~127
短整型 short 2 字節 -32768~32767
整型 int 4 字節 -2147483648~2147483647
長整型 long 8 字節 -9223372036854775808L~9223372036854775807L
單精度浮點型 float 4 字節 +/-3.4E+38F(6~7 個有效位)
雙精度浮點型 double 8 字節 +/-1.8E+308 (15 個有效位)
字符型 char 2 字節 ISO 單一字符集
布爾型 boolean 1 字節 true 或 false

所有的基本數據類型的大小(所占用的字節數)都已明確規定,在各種不同的平臺上保持不變,這一特性有助于提高 Java 程序的可移植性。

(2) 引用數據類型建立在基本數據類型的基礎上,包括數組、類和接口。引用數據類型是由用戶自定義,用來限制其他數據的類型。另外,Java 語言中不支持 C++ 中的指針類型、結構類型、聯合類型和枚舉類型。

Java 數據類型的結構如圖 1 所示。

圖1 Java數據類型結構圖

Java 是一種強制類型的語言,所有的變量都必須先明確定義其數據類型,然后才能使用。Java 中所有的變量、表達式和值都必須有自己的類型,沒有“無類型”變量這樣的概念。

基本數據類型又可分為 4 大類,即整數類型(包括 byte、short,int 和 long)、浮點類型(包括 float 和 double)、布爾類型和字符類型(char),下面分別介紹這 4 大類數據類型。

整數類型

Java 定義了 4 種整數類型變量:字節型(byte)、短整型(short)、整型(int)和長整型(long)。這些都是有符號的值,正數或負數。

字節型(byte)

byte 類型是最小的整數類型。當用戶從網絡或文件中處理數據流時,或者處理可能與 Java 的其他內置類型不直接兼容的未加工的二進制數據時,該類型非常有用。

短整型(short)

short 類型限制數據的存儲為先高字節,后低字節,這樣在某些機器中會出錯,因此該類型很少被使用。

整型(int)

int 類型是最常使用的一種整數類型。

長整型(long)

對于大型程序常會遇到很大的整數,當超出 int 類型所表示的范圍時就要使用 long 類型。

例 1

創建一個 Java 程序,在 main() 方法中聲明各種整型的變量并賦予初值,最后將變量相加并輸出結果,代碼如下:
public static void main(String[] args)
{ 
    byte a=20;    //聲明一個byte類型的變量并賦予初始值為20
    short b=10;    //聲明一個short類型的變量并賦予初始值為10 
    int c=30;    //聲明一個int類型的變量并賦予初始值為30
    long d=40;    //聲明一個long類型的變量并賦予初始值為40
    long sum=a+b+c+d;
    System.out.println("20+10+30+40="+sum);
}

保存該段代碼并運行,輸出的最終結果如下:
20+10+30+40=100

在該示例中,首先依次定義了 byte 類型、short 類型、int 類型和 long 類型的 4 個變量,并賦予了初始值,然后定義了一個 long 類型、名稱為 sum 的變量。sum 變量的值為前 4 個變量之和,最后輸出 sum 變量的值,即相加之后的結果。

提示:因為 byte 類型、short 類型、int 類型和 long 類型都是整數類型,故可以使用“+”相加,而非字符串之間的連接。

浮點類型

浮點類型是帶有小數部分的數據類型,也叫實型浮點型數據包括單精度浮點型(float)和雙精度浮點型(double),代表有小數精度要求的數字。

單精度浮點型(float)和雙精度浮點型(double)之間的區別主要是所占用的內存大小不同,float 類型占用 4 字節的內存空間,double 類型占用 8 字節的內存空間。雙精度類型 double 比單精度類型 float 具有更高的精度和更大的表示范圍。

Java 默認的浮點型為 double,例如,11.11 和 1.2345 都是 double 型數值。如果要說明一個 float 類型數值,就需要在其后追加字母 f 或 F,如 11.11f 和 1.2345F 都是 float 類型的常數。

例如,可以使用如下方式聲明 float 類型的變量并賦予初值。
float price=12.2f;    //定義float類型并賦予初值

也可以使用如下的任意一種方式聲明 double 類型的變量并賦予初值。
double price=12.254d;    //定義double類型的變量并賦予初值
double price=12.254;    //定義double類型的變量并賦予初值

注意:一個值要能被真正看作 float,它必須以 f(或 F)后緩結束;否則,會被當作 double 值。對 double 值來說,d(或 D)后緩是可選的。

例 2

假設從 A 地到 B 地路程為 2348.4 米,那么往返 A 和 B 兩地需要走多少米?

由于路徑數據為浮點類型,在這里定義一個類型為 double 的變量來存儲單程距離,并定義一個 int 類型的變量來存儲次數。另外,因為計算得到的值為 float 類型,所以可以定義一個 float 類型的變量來存儲總距離。

代碼如下:
public static void main(String[] args)
{ 
    double lutu=2348.4;    //定義double類型的變量,用于存儲單程距離
    int num=2;    //定義int類型的變量,用于存儲次數
    float total=(float)(lutu*2);    //定義float類型的變量,用于存儲總距離
    System.out.println("往返 AB 兩地共需要行駛:"+total+" 米");
}

保存文件并運行,輸出的結果如下:
往返 AB 兩地共需要行駛:4696.8 米

該示例中首先定義了一個類型為 double、名稱為 lutu 的變量用于存儲單程距離,然后定義了一個類型為 int、名稱為 num 的變量用于存儲經過的次數,最后定義了一個類型為 float、名稱為 total 的變量用于存儲總距離。

其實一個 double 類型的數據與一個 int 類型的數據相乘后得到的結果類型為 double,但是由于單程距離乘以次數為一個單精度浮點型(float 類型)的數,因此可以將總距離轉換為 float 類型的數據。

布爾類型

布爾類型(boolean)用于對兩個數值通過邏輯運算,判斷結果是“真”還是“假”。Java 中用保留字 true 和 false 來代表邏輯運算中的“真”和“假”。因此,一個 boolean 類型的變量或表達式只能是取 true 和 false 這兩個值中的一個。

在 Java 語言中,布爾類型的值不能轉換成任何數據類型,true 常量不等于 1,而 false 常量也不等于 0。這兩個值只能賦給聲明為 boolean 類型的變量,或者用于布爾運算表達式中。

例如,可以使用以下語句聲明 boolean 類型的變量。
boolean isable;    //聲明boolean類型的變量 isable
boolean b=false;    //聲明boolean類型的變量a,并賦予初值為false

字符類型

Java 語言中的字符類型(char)使用兩個字節的 Unicode 編碼表示,它支持世界上所有語言,可以使用單引號字符或者整數對 char 型賦值。

一般計算機語言使用 ASCII 編碼,用一個字節表示一個字符。ASCII 碼是 Unicode 碼的一個子集,用 Unicode 表示 ASCII 碼時,其高字節為 0,它是其前 255 個字符。

Unicode 字符通常用十六進制表示。例如“\u0000”~“\u00ff”表示 ASCII 碼集。“\u”表示轉義字符,它用來表示其后 4 個十六進制數字是 Unicode 碼。

字符型變量的類型為 char,用來表示單個的字符,例如:
char letter='D';
char numChar='5';

第一條語句將字符 D 賦給字符型變量 letter;第二條語句將數字字符 5 賦給字符型變量 numChar。

例 3

下面代碼在 main() 方法中定義兩個字符類型的變量,并使之相對應的 ASCII(Unicode)值相加,最后將相加后的結果輸出。
public static void main(String[] args)
{
    char a='A';    //向char類型的a變量賦值為A,所對應的ASCII值為65
    char b='B';    //向char類型的b變量賦值為B,所對應的ASCII值為66
    System.out.println("A 的 ASCII 值與 B 的 ASCII 值相加結果為:"+(a+b));
}

保存該段代碼并運行,輸出結果如下所示。
A 的 ASCII 值與 B 的 ASCII 值相加結果為:131

在該程序中,a 變量首先被賦值為“A”,字母 A 在 ASCII(和 Unicode)中對應的值為 65。接著又定義了一個類型為 char 的變量 b,賦值為“B”,字母 B 在 ASCII(和 Unicode)中所對應的值為 66。因此相加后得出的結果為 131。

提示:字符通常用 16 進制表示,范圍從“\uOOOO”~“\uFFFF”,即從 0~65535。\uOOOO 和 \uFFFF 中的 u 告訴編譯器是用兩個字節(16 位)字符信息表示一個 Unicode 字符。

精美而實用的網站,提供C語言C++STLLinuxShellJavaGo語言等教程,以及socketGCCviSwing設計模式JSP等專題。

Copyright ?2011-2018 biancheng.net, 陜ICP備15000209號

底部Logo