整數型別(轉)

ba發表於2007-08-15
整數型別(轉)[@more@]Java 定義了4個整數型別:位元組型(byte),短整型(short),整型(int),長整型(long )。這些都是有符號的值,正數或是負數。Java 不支援僅僅是正的無符號的整數。許多其他計算機語言,包括C/C++ ,支援有符號或無符號的整數。然而,Java 的設計者感到無符號整數是不必要的。具體地說,他們感到無符號(unsigned )概念主要被用來指定高位(high-order bit )狀態,它定義了當int 表示一個數字時的符號。你將在第4章中看到,Java 對高位含義的管理是不同的,它透過增加一個專門的“無符號右移”運算子來管理高位。這樣,就不需要無符號整數了。

整數型別的長度(width )不應該被理解為它佔用的儲存空間,而應該是該類變數和表示式的行為(behavior )。只要你對型別進行了說明,Java 的執行環境對該類的大小是沒有限制的。事實上,為了提高效能,至少位元組型和短整型的儲存是32位(而非8位和16位),因為這是現在大多數計算機使用的字的大小。

這些整數型別的長度和變化範圍如表3-1 所示:

表3-1 整數的各種型別及特性

名稱 長度 數的範圍
長整型 64 –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
整型 32 –2,147,483,648 ~ 2,147,483,647
短整型 16 –32,768 ~ 32,767
位元組型 8 –128~127

讓我們分別討論整數的每種型別。

3.3.1 位元組型(byte)
最小的整數型別是位元組型。它是有符號的8位型別,數的範圍是-128~127。當你從網路或檔案處理資料流的時候,位元組型別的變數特別有用。當你處理可能與Java 的其他內建型別不直接相容的未加工的二進位制的資料時,它們也是有用的。
透過“byte ”這個關鍵字的使用來定義位元組變數。例如,下面定義了2個變數,稱為b 和c:byte b,c;

3.3.2 短整型(short)
short是有符號的16位型別,數的範圍是 –32,768~32,767 。因為它被定義為高位元組優先(稱為big-endian 格式),它可能是Java 中使用得最少的型別。這種型別主要適用於16位計算機,然而這種計算機現在已經很少見了。

下面是宣告Short變數的一些例子:

short s;
short t;

注意:“Endianness ”描述像short,int ,和 long 這些多位元組資料型別是如何被儲存在儲存器中的。如果用2 個位元組代表short ,那麼哪個位元組在前,是高位元組位(最重要的位元組)還是低位元組位(最不重要的位元組)?說一臺機器是big-endian,那意味著這個機器中最重要的位元組在前,最不重要的位元組在後。例如 SPARC 和PowerPC 的機器是 big-endian ,而Intel x86 系列是 little-endian 。

3.3.3 整型(int)
最常用的整數型別是int 。它是有符號的32位型別,數的範圍是-2,147,483,648~2,147,483,647 。int 型別的變數通常被用來控制迴圈及作陣列的下標。任何時候你的整數表示式包含byte,short,int 及字面量數字,在進行計算以前,所有表示式的型別被提升(promoted )到整型。

整型是最通用並且有效的型別,當你想要計數用作或陣列下標或進行整數計算時,你應該使用整型。似乎使用位元組型和短整型可以節約空間,但是不能保證 Java 不會內部把那些型別提升到整型。記住,型別決定行為,而不是大小(惟一的例外是陣列,位元組型的資料保證每個陣列元素只佔用一個位元組,短整型使用 2 個位元組,整型將使用4個。)

3.3.4 長整型(long)
long 是有符號的64位型別,它對於那些整型不足以儲存所要求的數值時是有用的。長整型數的範圍是相當大的。這使得大的、整個數字都被需要時,它是非常有用的。例如,下面的程式是計算光在一個指定的天數旅行的英里數。

// Compute distance light travels using long variables.
class Light {

public static void main(String args[]) {
int lightspeed;
long days;
long seconds;
long distance;

// approximate speed of light in miles per second
透過“byte ”這個關鍵字的使用來定義位元組變數。例如,下面定義了2個變數,稱為b 和c:byte b,c;

3.3.2 短整型(short)
short是有符號的16位型別,數的範圍是 –32,768~32,767 。因為它被定義為高位元組優先(稱為big-endian 格式),它可能是Java 中使用得最少的型別。這種型別主要適用於16位計算機,然而這種計算機現在已經很少見了。

下面是宣告Short變數的一些例子:

short s;
short t;

注意:“Endianness ”描述像short,int ,和 long 這些多位元組資料型別是如何被儲存在儲存器中的。如果用2 個位元組代表short ,那麼哪個位元組在前,是高位元組位(最重要的位元組)還是低位元組位(最不重要的位元組)?說一臺機器是big-endian,那意味著這個機器中最重要的位元組在前,最不重要的位元組在後。例如 SPARC 和PowerPC 的機器是 big-endian ,而Intel x86 系列是 little-endian 。

3.3.3 整型(int)
最常用的整數型別是int 。它是有符號的32位型別,數的範圍是-2,147,483,648~2,147,483,647 。int 型別的變數通常被用來控制迴圈及作陣列的下標。任何時候你的整數表示式包含byte,short,int 及字面量數字,在進行計算以前,所有表示式的型別被提升(promoted )到整型。

整型是最通用並且有效的型別,當你想要計數用作或陣列下標或進行整數計算時,你應該使用整型。似乎使用位元組型和短整型可以節約空間,但是不能保證 Java 不會內部把那些型別提升到整型。記住,型別決定行為,而不是大小(惟一的例外是陣列,位元組型的資料保證每個陣列元素只佔用一個位元組,短整型使用 2 個位元組,整型將使用4個。)

3.3.4 長整型(long)
long 是有符號的64位型別,它對於那些整型不足以儲存所要求的數值時是有用的。長整型數的範圍是相當大的。這使得大的、整個數字都被需要時,它是非常有用的。例如,下面的程式是計算光在一個指定的天數旅行的英里數。

// Compute distance light travels using long variables.
class Light {

public static void main(String args[]) {
int lightspeed;
long days;
long seconds;
long distance;

// approximate speed of light in miles per second
lightspeed = 186000;

days = 1000; // specify number of days here

seconds = days * 24 * 60 * 60; // convert to seconds

distance = lightspeed * seconds; // compute distance

System.out.print("In " + days);
System.out.print(" days light will travel about ");
System.out.println(distance + " miles.");

}
}

這個程式執行的結果如下:

In 1000 days light will travel about 16070400000000 miles.

很清楚,計算結果超出了整型數的表達範圍。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-958164/,如需轉載,請註明出處,否則將追究法律責任。

相關文章