- 從零開始學(xué)Java Web開發(fā)
- 孫更新等編著
- 2344字
- 2018-12-27 13:05:57
2.2 數(shù)據(jù)類型
Java語言是強(qiáng)類型語言,在程序中每個(gè)變量都具有數(shù)據(jù)類型。Java提供2大類數(shù)據(jù)類型,一類是基本數(shù)據(jù)類型(Primitive Type),一類是引用數(shù)據(jù)類型(Reference Type)。其中,基本數(shù)據(jù)類型包括:整數(shù)類型、浮點(diǎn)類型、字符類型、布爾類型。引用數(shù)據(jù)類型包括:類、接口、數(shù)組。這些數(shù)據(jù)類型的具體關(guān)系如下所示。

2.2.1 基本數(shù)據(jù)類型
基本數(shù)據(jù)類型也稱為簡單數(shù)據(jù)類型,代表程序中的簡單的值,而不是復(fù)雜的對象。Java是完全面向?qū)ο蟮恼Z言,但其基本數(shù)據(jù)類型不是,它類似于其他非面向?qū)ο笳Z言中的簡單數(shù)據(jù)類型,引入基本數(shù)據(jù)類型主要是對于執(zhí)行效率的考慮。
在數(shù)學(xué)中可以將數(shù)值分為自然數(shù)、小數(shù)、有理數(shù)、無理數(shù)等類型。而在Java程序中,數(shù)值需要在內(nèi)存中分配一塊空間,用來存放它,程序中數(shù)值的改變其實(shí)就是存儲(chǔ)區(qū)域中存放內(nèi)容的改變。但是應(yīng)該為每個(gè)數(shù)值分配多大的空間呢?一個(gè)很大的數(shù)值分配一個(gè)很小的存儲(chǔ)空間將會(huì)溢出,而一個(gè)很小的數(shù)值分配一個(gè)很大的存儲(chǔ)空間,將會(huì)造成內(nèi)存空間的浪費(fèi)。因此,在程序中數(shù)值變化的范圍就通過數(shù)據(jù)類型來體現(xiàn),從而為不同的數(shù)據(jù)類型分配不同的存儲(chǔ)空間。
Java中定義了8個(gè)基本數(shù)據(jù)類型,這些類型可分為以下4組。
? 整數(shù)類型:字節(jié)型(byte)、短整型(short)、整型(int)、長整型(long)。
? 浮點(diǎn)數(shù)類型:浮點(diǎn)型(float)、雙精度型(double)。
? 字符類型:字符型(char)。
? 布爾類型:布爾型(boolean)。
說明
Java中類型的標(biāo)識(shí)都是小寫字母,其中整數(shù)和浮點(diǎn)數(shù)都是有符號(hào)數(shù)的。
1.整數(shù)類型
Java中定義了4個(gè)整數(shù)類型:字節(jié)型(byte)、短整型(short)、整型(int)、長整型(long),這些都是有符號(hào)的數(shù)。整數(shù)數(shù)據(jù)類型所占存儲(chǔ)空間和表示的范圍如表2.3所示。
表2.3 整數(shù)數(shù)據(jù)類型

下面列舉了各種整數(shù)類型的實(shí)例。
? 十進(jìn)制整數(shù):123、-456、0。
? 八進(jìn)制整數(shù):0123、-011(以數(shù)字0開頭,0123表示十進(jìn)制數(shù)83,-011表示十進(jìn)制數(shù)-9。)
? 十六進(jìn)制整數(shù):0x123(以0x或0X開頭,0x123表示十進(jìn)制數(shù)291。)
? long類型常值:123L(整型常值占32位,如果要定義一個(gè)long類型常值,則要在數(shù)字后加字母L(或者小寫形式l),如123L表示一個(gè)長整數(shù)占64位。)
2.浮點(diǎn)數(shù)類型
Java中定義了2個(gè)浮點(diǎn)類型:單精度浮點(diǎn)型(float)和雙精度浮點(diǎn)型(double),這些也都是有符號(hào)的數(shù),浮點(diǎn)數(shù)數(shù)據(jù)類型所占存儲(chǔ)空間和表示的范圍如表2.4所示。
表2.4 浮點(diǎn)數(shù)數(shù)據(jù)類型

下面列舉了各種浮點(diǎn)數(shù)類型的實(shí)例。
? 十進(jìn)制數(shù)形式:0.123、.123、123.、123.0(由數(shù)字和小數(shù)點(diǎn)組成,必須有小數(shù)點(diǎn)。)
? 科學(xué)計(jì)數(shù)法形式:123e3、123E3(e或E之前必須有數(shù)字,且e或E后面必須有整數(shù),表示10的冪次。)
? float類型常值:12.3F(浮點(diǎn)常數(shù)在機(jī)器中占64位,對于float型的常值,則要在數(shù)字后加f或F,如12.3F表示一個(gè)單精度浮點(diǎn)常數(shù)占32位,表示精度較低。)
3.字符類型
Java定義了存儲(chǔ)字符的數(shù)據(jù)類型char,該類型長度是16位,其表示范圍是0~65536。字符類型的值是用單引號(hào)括起來的單個(gè)字符,例如‘b’、‘B’,此外Java還提供轉(zhuǎn)義字符,轉(zhuǎn)義字符以反斜杠“\”開頭,將其后的特殊字符轉(zhuǎn)變?yōu)楸硎镜南鄳?yīng)字符,Java中常用的轉(zhuǎn)義字符如表2.5所示。
表2.5 Java中常用轉(zhuǎn)義字符

4.布爾類型
布爾類型是Java中定義的表示邏輯真假值的基本類型,用來作為關(guān)系運(yùn)算或邏輯運(yùn)算的返回類型。它的值只能是true或false這兩個(gè)關(guān)鍵字中的一個(gè)。該類型的長度只有1位,在計(jì)算機(jī)中用0和1來表示。
2.2.2 引用數(shù)據(jù)類型
引用數(shù)據(jù)類型也稱為復(fù)雜數(shù)據(jù)類型,表示“類”類型,“類”的詳細(xì)概念將在本書第3章中詳細(xì)介紹,引用數(shù)據(jù)類型既可以是Java中本身提供的系統(tǒng)類,也可以是用戶自定義的任何類。引用數(shù)據(jù)類型的變量用來引用類的實(shí)例對象。
說明
引用數(shù)據(jù)類型的首字母一般都是大寫的,這與基本數(shù)據(jù)類型是有區(qū)別的。
在Java中最常用的引用數(shù)據(jù)類型是String類型,它是表示字符串?dāng)?shù)據(jù)的類型,該類型的值是用雙引號(hào)括起來的,聲明String類型變量的示例如下:
String userName=”Tom”; //定義了名為userName的字符串變量,賦初值“Tom” String name=””; //定義了名為name的字符串變量,賦初值“”,即空字符串
Java中的8個(gè)基本數(shù)據(jù)類型也有相對應(yīng)的引用數(shù)據(jù)類型,它們是基本數(shù)據(jù)類型的封裝類,在具體編碼時(shí)要特別注意區(qū)分,這些封裝類除了包含相關(guān)數(shù)據(jù)信息外,還包含了對相關(guān)數(shù)據(jù)的操作方法,基本數(shù)據(jù)類型與封裝類的對應(yīng)信息如表2.6所示。
表2.6 基本數(shù)據(jù)類型與封裝類

說明
基本數(shù)據(jù)類型的封裝類不具備基本數(shù)據(jù)類型的運(yùn)算法則,例如,兩個(gè)int型的變量可以進(jìn)行加法運(yùn)算,而兩個(gè)Integer類的對象卻不可以直接進(jìn)行加法運(yùn)算。
2.2.3 數(shù)據(jù)類型間的轉(zhuǎn)換
Java語言中數(shù)據(jù)類型的轉(zhuǎn)換分為自動(dòng)類型轉(zhuǎn)換和強(qiáng)制類型轉(zhuǎn)換兩種,下面主要討論基本數(shù)據(jù)類型的數(shù)據(jù)轉(zhuǎn)換。
1.自動(dòng)類型轉(zhuǎn)換
Java中要實(shí)現(xiàn)自動(dòng)類型轉(zhuǎn)換,必須滿足以下2個(gè)條件。
? 實(shí)現(xiàn)轉(zhuǎn)換的兩種類型是兼容的。
? 目的類型的范圍比源類型大。
例如,int與byte類型都是整數(shù)類型,int的范圍比byte范圍大,因此將byte類型的變量轉(zhuǎn)換為int類型將進(jìn)行自動(dòng)類型轉(zhuǎn)換,自動(dòng)類型轉(zhuǎn)換是不需要任何顯式的聲明的。
byte類型自動(dòng)轉(zhuǎn)int類型的示例代碼如下:
byte b=36; int i=b; //自動(dòng)類型轉(zhuǎn)化不要任何聲明
自動(dòng)類型轉(zhuǎn)換除了可以在整數(shù)類型之間、浮點(diǎn)數(shù)類型之間進(jìn)行之外,將整數(shù)類型向浮點(diǎn)數(shù)類型轉(zhuǎn)換也是可以的,只要被轉(zhuǎn)換的整數(shù)類型數(shù)據(jù)包含在相關(guān)浮點(diǎn)數(shù)范圍之內(nèi)即可。除了數(shù)值類型之間的轉(zhuǎn)換之外,字符類型char也可向int和long類型做自動(dòng)類型轉(zhuǎn)換,但是數(shù)據(jù)表示的意義不再是一個(gè)字符而是對應(yīng)字符的Unicode編碼,例如,下面代碼表示將字符“b”轉(zhuǎn)化成int類型,轉(zhuǎn)換后其值變?yōu)椤?8”。
char c=’b’; int i=c; //自動(dòng)類型轉(zhuǎn)化不要任何聲明 System.out.print(i); //輸出值為98
2.強(qiáng)制類型轉(zhuǎn)換
自動(dòng)類型轉(zhuǎn)換適合于兼容類型之間從小范圍數(shù)據(jù)類型轉(zhuǎn)換成大范圍數(shù)據(jù)類型,而在編程過程中,經(jīng)常要把兼容類型的大范圍數(shù)據(jù)類型轉(zhuǎn)換成小范圍的,例如,把short類型數(shù)據(jù)轉(zhuǎn)換為byte類,這樣將可能造成數(shù)據(jù)丟失,因此必須采用強(qiáng)制類型轉(zhuǎn)換來實(shí)現(xiàn)。強(qiáng)制類型轉(zhuǎn)換語法格式為:
(類型名)變量名
例如,下面代碼實(shí)現(xiàn)了從short類型強(qiáng)制轉(zhuǎn)換為int類型的功能。
short s=25; byte b=(byte)s; //強(qiáng)制類型轉(zhuǎn)化聲明short類型轉(zhuǎn)化為byte類型 System.out.print(b); //輸出值為25
- R Machine Learning By Example
- 數(shù)據(jù)庫原理與應(yīng)用技術(shù)學(xué)習(xí)指導(dǎo)
- 機(jī)器學(xué)習(xí)與大數(shù)據(jù)技術(shù)
- Google App Inventor
- PyTorch深度學(xué)習(xí)實(shí)戰(zhàn)
- 計(jì)算機(jī)圖形圖像處理:Photoshop CS3
- 大學(xué)計(jì)算機(jī)應(yīng)用基礎(chǔ)
- Pig Design Patterns
- Photoshop CS3圖層、通道、蒙版深度剖析寶典
- Word 2007,Excel 2007辦公應(yīng)用融會(huì)貫通
- 嵌入式Linux系統(tǒng)實(shí)用開發(fā)
- Creating ELearning Games with Unity
- 納米集成電路制造工藝(第2版)
- 西門子S7-1200/1500 PLC從入門到精通
- PostgreSQL High Performance Cookbook