一文詳解 Java 的八大基本型別!

專注的阿熊發表於2019-11-05

自從Java釋出以來,基本資料型別就是Java語言中重要的一部分,本文就來詳細介紹下每種基本型別的具體使用方法和限制。

以下為譯文:

幾年前,我開始編寫了一系列有關Java入門的文章,我覺得有必要將其中一些非常細節的內容單獨拿出來寫成文章。這樣,那些入門內容就更容易理解了。首先,我來介紹一下有關Java 8中的基本型別。

如題所述,Java語言本身有8種基本型別。在下面幾節中,就讓我們一起來看看這8種基本型別。我將針對每種基本型別,介紹具體的使用方法和限制。

一、int基本型別

首先,Java的整數是32位有符號(即包括正值和負值)整數,由int關鍵字表示:

int someNumber = 10;

當然,像所有基本型別一樣,整型有自己的限制。由於它只有32位,所以其取值範圍為-2147483648到2147483647。這數字很大嘛!當然,我們可以在DrJava的互動皮膚中用下述技巧來確認:

Integer.MAX_VALUE 
// Prints 2,147,483,647

Integer.MIN_VALUE // Prints -2,147,483,648

自然地,對於簡單的計算而言,int是最常用的整數型別。如果你需要更大的數字範圍,請參照下面的long。

二、double基本型別

與int不同,Java的雙精度型別是64位浮點數,由double關鍵字表示:

double someNumber = 110.55;

需要提醒的是,浮點數實際上就是實數。換句話說,雙精度浮點數中包含小數點。

由於雙精度型別是64位,它能表示的數字要比整型多很多。同樣,我們可以利用互動皮膚來確認雙精度型別的範圍:

Double.MAX_VALUE 
// Prints 1.7976931348623157E308

Double.MIN_VALUE // Prints 4.9E-324

需要注意的是,負的指數表示的是非常小的數字,而不是非常大的負數。所以這裡的取值範圍跟整數不是完全一樣。

一般而言,double是在Java中使用浮點數的預設選擇。另一個選擇是float。

三、char基本型別

我們已經看到,Java的字元型別表示16位字元,由char關鍵字表示:

char someCharacter = 'f';

Java中所有的字元都用單引號表示。同時,雙引號用來表示字串。我們稍後會討論字串。

與往常一樣,我們可以透過下面的程式碼找出字元的範圍:

Character.MAX_VALUE 
// Prints '???'

Character.MIN_VALUE // Prints ''

為了讓這個範圍有意義,我們可以將結果轉換成整數(稍後會更多地介紹):

(
int) Character.MAX_VALUE 
// Prints 65535

( int) Character.MIN_VALUE // Prints 0

可見,char型別是Java中唯一的無符號型別。換句話說,字元的取值範圍為0到65535,每個值對映到特定的字元。如果需要建立該範圍之外的字元,可以將一對字元組合起來。參見“在Java中反轉字串”()這篇文章中的例子。

四、byte基本型別

當我們討論二進位制時,我們討論的實際上是位元的概念。而8個位元組成一個位元組,位元組是Java支援的基本型別之一。本質上,byte型別只不過是取值範圍為-128到127的8位整數。可以猜到,位元組由byte關鍵字表示:

byte someByte = 20;

同樣,可以利用下面的程式碼片段來確認byte型別的取值範圍:

Byte.MAX_VALUE 
// Prints 127

Byte.MIN_VALUE // Prints -128

根據我的經驗,byte型別在讀取和處理原始資料時非常有用。但是一般而言,我們不會使用它,因為取值範圍太小了。

五、short基本型別

short是另一種整數型別,但它佔用的空間要比int型別更小。實際上,它的佔用空間正好是int型別的一半,為16位,由short關鍵字表示:

short someNumber = 11;

short型別的取值範圍也只有整數的一半,我們可以用下述程式碼確認:

Short.MAX_VALUE 
// Prints 32767

Short.MIN_VALUE // Prints -32768

在實際應用中,short只有65546個可能的值。在記憶體空間和磁碟空間受限的情況下,我們會使用byte和short。但在其他情況下,在定義整數時預設使用int更為安全。

六、long基本型別

與short相反的是long基本型別,即長整數。該型別用來表示比int型別還要大的非常大的數。long型別是64位有符號整數,其取值範圍超過了10的18次方。

通常,長整數用long關鍵字表示:

long someBigNumber = 1013401346173L;

下面的程式碼可以檢視64位值究竟有多大:

Long.MAX_VALUE 
// Prints 9,223,372,036,854,775,807

Long.MIN_VALUE // Prints -9,223,372,036,854,775,808

也許,long可以用來計算光在一定時間內走過的距離。光在一秒內大約傳播30萬千米。如果編寫一個程式來跟蹤光走過的距離,那麼7秒後int型別就超出範圍類,而long型別能夠計算大約975年。不相信嗎?可以看看這個gist()中的計算。

七、float基本型別

雖然我們通常使用64位浮點數型別double,但Java還支援另一種浮點數型別,叫做float。但與int類似,Java預設情況下使用double表示浮點數。不管怎樣,我們可以用float來表示32位浮點數型別:

float someNumber = 11.4f;function(){   //外匯跟單

float型別的範圍如下:

Float.MAX_VALUE 
// Prints 3.4028235E38

Float.MIN_VALUE // Prints 1.4E-45

可見,32位浮點數的範圍和精度都要小得多。如果不需要double的精度,同時節省一半的空間,那麼可以選擇float型別。

八、boolean基本型別

最後我們來討論一下boolean型別。定義布林型別可以使用boolean關鍵字:

boolean isBool = true;

布林型別有些特殊,不像其他基本型別那樣,它們表示的不是數字值。 實際上,之前使用的MAX_VALUE和MIN_VALUE技巧在這裡不能使用。 相反,它表示的是true或false,即真和假。

在此,我不打算詳細介紹布林型別,因為在Java中做任何事情都會涉及到布林型別。 儘管如此,我們通常不會明確地宣告布林型別。 相反,許多程式碼邏輯中的比較操作的結果都是布林型別。


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

相關文章