官术网_书友最值得收藏!

2.2 常量、變量與基本數據類型

Java語言程序設計中的數據有類型之分。每種數據類型的數據具有各自不同的存儲格式、取值范圍及運算方式。Java中的基本數據類型分為三大類:布爾型、字符型和數值型,其中數值型又包含整型和浮點型。我們在編寫程序時,應根據需要,選擇合適的數據類型來表示數據。

程序處理的數據可以是常量,也可以是變量。程序運行過程中,常量的值不可以發生變化,而變量的值可以被改變。不管常量還是變量,都有確定的數據類型,常量的數據類型取決于書寫形式,變量的類型則要在變量使用之前,通過變量聲明來指定。

2.2.1 基本數據類型

如表2-2所示,Java語言有8種基本數據類型,常常被劃分為整型、浮點型、字符型、布爾型四大類。每種數據類型在取值范圍、運算規則與表示精度方面有各自的特征。在編寫程序時,一般根據不同的需求選擇不同的數據類型。

表2-2 基本數據類型

1.整型

Java語言中的整型具體分為4種:字節型(byte)、短整型(short)、普通整型(int)、長整型(long),如表2-3所示。從byte,short,int到long,對應數據在內存中占用的存儲空間越來越大,表示數據的范圍也越來越大。

表2-3 整型數據占用空間與取值范圍

最常用的整型是int,但有些數據可能超出了int的表示能力,就需要借助long型來表示。例如,全球人口大約為74.5億,這個數值超出了int型所能表示的最大數值(231?1= 2147483647)。如果要表示比較小的數據,同時數據量大且希望控制存儲空間的總量,可以考慮使用short類型和byte類型。

2.浮點型

浮點型也就是實型,用于表示實數。Java中的浮點型有兩種,單精度浮點型(float)和雙精度浮點型(double)。計算機用一定長度的二進制串來表示實數,其精度和表示范圍必然也是有限的,也就是說,包括十進制數0.1在內的許多實數是無法用二進制形式準確表示的。

表2-4給出了double和float兩種類型的數據所占用的空間和取值范圍。double類型比float類型具有更高的精度和更大的取值范圍,同時占用更多的存儲空間。精度用有效數字位數來表示,對于double型數據,其十進制形式的左邊15位是準確的,后面則是不可靠的,對于float型數據,只有左邊6位是準確的,后面是不可靠的。

表2-4 浮點型數據占用空間和取值范圍

一般情況下,建議使用double類型來表示實數。如果在表示大量實數時,有控制存儲空間總量的需求,在精度和范圍允許的情況下,可以選擇使用float類型。

3.字符型

Java用字符型(char)來表示單個字母、數字字符、標點符號及其他特殊字符。計算機內部采用編碼的方式表示字符,Java語言使用編碼方案Unicode碼。每個字符型數據一般占用2字節,也就是16個二進制位。一個漢字通常也可以表示為一個字符型數據。包含多個字符的姓名、地址等數據稱為一個字符串,字符串的表示超出了Java基本數據類型的范疇,需要引入其他方式來表示。

4.布爾型

布爾型(boolean)又稱邏輯類型,用于表示“真”或“假”狀態的數據類型,對應兩種取值:true和false。在后續章節,我們將學習分支和循環語句,其中表示條件的表達式都是布爾型的數據。

2.2.2 常量

顧名思義,常量有一個具體而明確的值,在程序執行過程中,不可能發生變化。程序中的每個常量同樣有具體而確定的類型,這完全取決于常量的書寫形式。

先來看一下各種常量各自不同的書寫形式。

1.整型常量

整型常量有4種形式,分別是:十進制、八進制、十六進制、二進制。八進制整型常量以0開頭,十六進制整型常量以0x或者0X開頭,Java7版本新增了對二進制整型常量的支持,二進制整型常量以0b或者0B開頭。

(1)十進制整型常量

十進制整型常量由0~9的數字序列組成,自左向右的第一個數字不可以是0。可以用“+”或“?”表示正數或負數,“+”是可以省略的。

例如,76,?432,+5都是合法的十進制整型常量,而076則不是十進制整型常量,而是八進制整型常量。

(2)八進制整型常量

八進制整型常量由正、負號和0~7組成,第一個數字必須是0。例如,077、0132、?025是八進制整型常量,相當于十進制整型常量63、90和?21,而078是非法的常量,因為其中出現了八進制數的非法數字。

(3)十六進制整型常量

十六進制整型常量由正、負號和0~9、a~f或A~F組成,有前綴0x。例如,0x168、?0xf9是十六進制整型常量,相當于十進制整型常量360、?249。

(4)二進制整型常量

二進制整型常量由正、負號和0、1組成,有前綴0b(或0B)。例如,0b11110、?0b101是二進制整型常量,相當于十進制整型常量30、?5。

任何一個整數都可以用4種形式來表示。例如,15、017、0xF、0B1111的形式不同,但數值是相等的。程序的整型常量通常采用十進制形式,在某些場合下(例如,涉及二進制位操作時),用八進制、十六進制或二進制形式,更加直觀。

我們知道,整型可分為byte、short、int和long。要判斷一個整型常量具體屬于哪一種,首先根據其后的字母后綴判斷,后綴l和L表示long型常量,如?32l、2L。

如果整型常量后沒有出現這樣的后綴,其類型就取決于常量數值的大小,如0、127是byte型,128、32767是short型,32768、2147483647是int型。但2147483648是一個非法的整型常量,超出了int型的表示范圍,需要表示為2147483647L。

2.浮點型常量

浮點型常量有兩種形式,一種是十進制小數形式,另一種是指數形式。

(1)十進制小數形式

十進制小數形式由數字和小數點組成,例如,+10.625、?6.2、0.0、0.666、5467.5都是合法的浮點型常量,?2.、0.0、5.也是合法的浮點型常量。

(2)指數形式

指數形式類似于科學記數法,通常被用來以緊湊的方式表示非常大和非常小的值。它由正、負號、數字和字母e(或E)組成,e是指數的標志,在e的前面要有數據,e之后的指數只能是整數。例如,1625.0可以寫成1.625E3,0.00731可以寫成7.31E?3。而0.2E2.3和E?5是非法的表示形式。

指數形式適用于絕對值非常小或非常大的浮點數值。

浮點型常量默認情況下是double類型,也可以在數字后附加d或D來表示double類型。如果要表示float類型常量,可以在數字后附加F或f。例如,3.14159、3.14159d和3.14159D是double型常量,3.14159f和3.14159F是float型常量。

3.字符型常量

字符型常量是由單引號括起的單個字符,例如,'a','6','M','&','中'。每個字符型常量都使用Unicode編碼,占2字節的內存。字符常量只能是一個字符,如'XY'是非法的。字符常量區分大小寫字母,如'F'和'f'是兩個不同的字符常量。這里的單引號僅起字符常量邊界符的作用,并不是字符常量的一部分。需要注意的是,單引號和雙引號在此是不可混用的,單引號表示一個字符,而雙引號表示包含單個字符的字符串。

有些字符,如換行、退格等,它們無字符表示,需要采用特殊的形式——轉義字符來表示。轉義字符由反斜杠跟上一個字符或數字組成,它把反斜杠后面的字符或數字轉換成別的意義。例如,'\n'表示換行,'\b'表示向后移一個空格。表2-5列出了常見的轉義字符。

表2-5 轉義字符

4.布爾型常量

布爾型常量只有兩個值:true和false。

2.2.3 變量

變量在程序中用于存放數據。每個變量需要一個名字,屬于一個確定的數據類型,占據一定的存儲空間,用來存放數據,這個數據也就是變量的值。在程序運行過程中,變量的值可以改變。

1.變量的聲明

在使用變量之前,必須先聲明其類型。變量聲明的作用是為變量指定一個名字和數據類型。在Java程序中,變量聲明的基本形式是:

例如:

數據類型可以是byte、short、int、char、float、double、boolean等8種基本數據類型。變量名表可以只有一個變量名,也可以包含多個變量名。如果是多個變量名,不同變量名之間用逗號分隔。變量名應該符合標識符的命名規范。

變量聲明表面上只是確定了變量的名稱和變量的數據類型。實際上還明確了變量所需要的存儲空間、變量的取值范圍及變量所能參與的運算。例如,前面定義的weight占4字節,可以存放一個整數(最小?2147483648,最大2147483647),可以參與包括加、減、乘、除在內的整數運算。

一旦定義之后,變量的類型是不能改變的。也就是說,一個變量名被定義之后,在同一個程序塊內,不可以重新定義該變量名。

2.變量的初始化

在聲明變量時,可以對變量進行初始化,也就是給變量設置一個初始值。

例如:

Java語言規定,如果變量從來未被賦值,則不可以執行獲取變量值的操作,否則屬于語法錯誤。也就是說,除對該變量賦值以外,其他操作都是非法操作。

若有上述變量聲明及初始化,那么:

(1)語句“x=a+y”有語法錯誤,因為a未被初始化。

(2)語句“a=x+y”是合法的,實現的功能是把x和y之和賦值給a。

主站蜘蛛池模板: 林周县| 固阳县| 翁源县| 丰顺县| 昆明市| 阿瓦提县| 新源县| 阿尔山市| 钟祥市| 黄石市| 水城县| 沐川县| 达孜县| 柞水县| 社旗县| 汪清县| 柘荣县| 陆河县| 南宫市| 日喀则市| 宜州市| 通辽市| 芒康县| 锡林郭勒盟| 尚志市| 凌源市| 工布江达县| 全椒县| 津南区| 安新县| 龙州县| 宁德市| 鄯善县| 惠东县| 石嘴山市| 若尔盖县| 高阳县| 阳春市| 济南市| 绥德县| 米泉市|