淺談Java中基本數據類型

對於Java來說,數據類型分爲兩類:基本數據類型和引用數據類型。今天我要說得就是Java中的基本數據類型。

分類

對於基本數據類型的分類,我所知道的大概有兩種分法。

  1. 基本數據類型分爲三類:數值類型、字符類型和布爾類型。
  2. 基本數據類型分爲兩類:數值類型和布爾類型。

兩種分類的區別在於,第二種分類法將字符類型也看成了數值類型。理由在於,所有字符類型在內存中都是使用該字符對應的Unicode編碼表示,也就是從0-65535的整數表示。更爲關鍵的是,字符類型也可以進行算術運算。從這一點上看,將字符類型歸爲數值類型也有一定的道理。

當然,我更傾向於第一種觀點。不過,不管哪種分類,最後都會將基本數據類型再次分爲8種,也就是我們認知中的:byte、short、int、long、float、double、char、boolean。

介紹

  • 整數類型

對於整數類型而言,分爲四種,分別爲:byte、short、int和long

對於這四種數據類型而言,區別在於所佔字節位數不同,其中byte佔8位,short佔16位,int佔32位,long佔64位。也正因爲所佔位數的不同,也導致各自所能表示位數的差異。所佔位數越大,所能表示的數值範圍也就越大。

在Java中,如果不顯式指定整數的數據類型,則默認被當做int類型進行處理。

對於整數來說,存在四種進制的表示方式:二進制、八進制、十進制和十六進制。我們日常認知中的整數是十進制的。但是在計算機中通常用二進制表示,但是爲了便於展示,有時候會將二進制轉換爲八進制或十六進制來進行展示。

在Java中隨便給定一個數字,該數字是用十進制進行表示。如果整數以0b或0B開頭,表示該整數用二進制進行表示,如:0B1101。如果整數以0開頭,表示該整數用八進制進行表示,如:0123。如果整數以0x或0X表示,表示該整數用十六進制進行表示,如:0X12a8。

自JDK1.7之後,允許在整數值間添加下劃線,如:123_456_789。

  • 字符類型

對於字符類型來說,其通常被單引號進行包裹。在Java中,使用Unicode字符集來表示字符。

字符類型的值大概有三種表示方式:單引號包裹的單個字符,如:'a'、轉移字符表示的特殊字符如'\n'以及用Unicode表示法如'\u4e00'。

  • 浮點類型

對於浮點類型而言,分爲兩種:float和double。其中,float爲單精度浮點數,而double表示雙精度浮點數。需要說明一點的是,在Java中,浮點數有固定的長度和表數範圍,其使用的是二進制科學計數法表示,因此浮點數的值是一個近似值而非精確值。

float和double區別在於所佔位數的不同,其中float佔32位,double佔64位。也正由於所佔位數的差異,從而導致了所能表示位數的差異。

在Java中,如果不顯式指定一個浮點數的類型,則默認爲double類型。需要說明一點的是,java爲浮點類型提供了三個特殊的浮點值:正無窮大、負無窮大和非數,用來表示溢出或出錯。

任何一個正浮點數除以0會得正無窮大,任何一個負浮點數除以0會得到負無窮大,0.0除以0會得到非數。當然,任何一個浮點數對0進行取餘也會得到一個非數。

需要說明的是,所有的正無窮大都相等,如:3.0 / 0和 5.6 / 0的結果相等。所有的負無窮大都相等,如:-1.2 / 0和 -9.8 / 0的結果相當。所有的非數都不相等,如:1.0 / 0和 1.0 / 0的結果不相等。

浮點數有兩種表示方式:十進制表示法如12.0和科學計數法1.2E1。

  • 布爾類型

對於布爾類型而言,僅有boolean一種,其值也僅僅只有兩個:true和false。布爾類型常作爲循環、分支等結構的判斷條件。

默認值

對於基本數據類型而言,聲明爲成員變量或數組的時候,如果未顯式指定相關的值,則系統會進行默認賦值。

對於四種整數類型而言,系統默認賦值爲:0

對於兩種浮點數類型而言,系統默認賦值爲0.0

對於字符類型而言,系統默認賦值爲:‘’

對於布爾類型而言,系統默認賦值爲:false。

包裝類型

在Java中,針對這八種基本數據類型,提供了對應的包裝類型。對應關係如下:

byte: java.lang.Byte

short:java.lang.Short

int:java.lang.Integer

long: java.lang.Long

float:java.lang.Float

double:java.lang.Double

char:java.lang.Character

boolean:java.lang.Boolean.

包裝類型與基本類型區別如下:

  1. 包裝類型屬於引用類型,當聲明爲成員變量或數組時候,如果是基本數據類型,則根據類型的不同賦不同的值。但如果是引用數據類型,則賦值爲null。
  2. 包裝類型中定義了一些常用的方法,而基本數據類型則沒有。

當然,在大多數情況下,基本數據類型和其包裝類型可以互通有無,這是因爲自Java1.5之後提供了自動拆裝箱功能。所謂自動拆裝箱就是Java會幫你進行基本數據類型與其包裝類型的轉換。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章