詳解 Java 的八大基本類型,寫得非常好

程序員bug 發佈 2019-12-19T09:06:41+00:00

原文:https://dev.

原文:https://dev.to/renegadecoder94/the-8-primitive-types-in-java-10cl

作者:Jeremy Grifski,譯者:彎月,責編:郭芮

出品:CSDN(ID:CSDNnews)


自從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中反轉字符串」(https://therenegadecoder.com/code/reverse-a-string-in-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

(https://gist.github.com/jrg94/820d3f0f482dd19f0170964346381df0)中的計算。


float基本類型


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


float someNumber = 11.4f;

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中做任何事情都會涉及到布爾類型。儘管如此,我們通常不會明確地聲明布爾類型。相反,許多代碼邏輯中的比較操作的結果都是布爾類型。)


關鍵字: