JAVA基本類型
8種基本數(shù)據(jù)類型
想要更多面試題和學(xué)習(xí)資料的可以私聊聯(lián)系我,大家一起交流學(xué)習(xí)!

公司主營(yíng)業(yè)務(wù):成都網(wǎng)站設(shè)計(jì)、
做網(wǎng)站、移動(dòng)網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競(jìng)爭(zhēng)能力。
創(chuàng)新互聯(lián)建站是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對(duì)我們的高要求,感謝他們從不同領(lǐng)域給我們帶來(lái)的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會(huì)用頭腦與智慧不斷的給客戶帶來(lái)驚喜。
創(chuàng)新互聯(lián)建站推出
西湖免費(fèi)做網(wǎng)站回饋大家。
Java語(yǔ)言有8種基本數(shù)據(jù)類型, 分別用于存儲(chǔ)整數(shù)、浮點(diǎn)數(shù)、字符數(shù)據(jù)和布爾類型數(shù)據(jù)。需要注意的是: 現(xiàn)在所介紹的僅僅是基本數(shù)據(jù)類型,后續(xù)還會(huì)介紹很多非基本數(shù)據(jù)類型。基本數(shù)據(jù)類型如圖 – 1所示:

圖- 1
從圖- 1中可以看出, 基本數(shù)據(jù)類型主要分為4大類 (整數(shù)類型、浮點(diǎn)類型、char、boolean), 整數(shù)類型又分為了4小類(byte、short、int、long), 浮點(diǎn)類型也分了2小類(float、double),這些數(shù)據(jù)類型的區(qū)別是怎樣的?通過(guò)圖– 2展示了這8種數(shù)據(jù)類型的存儲(chǔ)空間及使用場(chǎng)景:

圖- 2
在如上這8種數(shù)據(jù)類型中,最常用的有5種,分別為int、long、double、char、boolean。其余的數(shù)據(jù)類型幾乎不用,要求對(duì)這5種基本數(shù)據(jù)類型重點(diǎn)掌握,其余的數(shù)據(jù)類型,有興趣了解就可以了。
- int類型
2.1. int類型
int是最常用的整數(shù)類型,一個(gè)int類型的變量占用4個(gè)字節(jié),即32位的內(nèi)存空間。Int的大表示范圍為:-231~231-1,即-2147483648 ~2147483647,大約正負(fù)21個(gè)億多些。
2.2. 整數(shù)直接量是int類型
所謂整數(shù)直接量(literal)就是直接寫出的整數(shù),例如:下面的語(yǔ)句中,100就是直接量。
int a = 100;
關(guān)于整數(shù)直接量,需要注意如下要點(diǎn):
整數(shù)的直接量的類型默認(rèn)為int類型,如果直接寫出的整數(shù)超過(guò)了int的表達(dá)范圍,將會(huì)出現(xiàn)編譯錯(cuò)誤,下面的語(yǔ)句,就是因?yàn)槌隽苏麛?shù)的范圍而導(dǎo)致的編譯錯(cuò)誤。
int d = 10000000000; // 編譯錯(cuò)誤10000000000這個(gè)數(shù)值寫出來(lái)就是錯(cuò)誤的,因?yàn)镴ava認(rèn)為所有直接寫出的整數(shù)都是int類型,而這個(gè)數(shù)值超過(guò)了int的表達(dá)范圍。
除了通常的十進(jìn)制數(shù)字形式,整數(shù)直接量也可以寫成16進(jìn)制的形式(以0X或0x開頭)或8進(jìn)制的形式(以0開頭),請(qǐng)看如下直接量三種表現(xiàn)形式:
int a = 100000; // 10進(jìn)制
int b = 0x186a0; // 16進(jìn)制
int c = 0303240; // 8進(jìn)制
2.3. 整型數(shù)據(jù)除法運(yùn)算中的取整
若對(duì)兩個(gè)整數(shù)相除,會(huì)舍棄小數(shù)的部分(注意:不是四舍五入),結(jié)果也是整數(shù)。示例代碼如下所示:
int c = 5/3;
System.out.println(c); // c的值為1,取整
int total = 87;
int error = 23;
int percent = error / total 100;
System.out.println(percent+"%"); //結(jié)果為0%,23除以87整數(shù)部分為0,乘以100,為0
percent = 100 error / total;
System.out.println(percent + "%"); // 結(jié)果為26%,230除以87整數(shù)部分為26
2.4. 運(yùn)算時(shí)要防止溢出的發(fā)生
當(dāng)兩個(gè)整數(shù)進(jìn)行運(yùn)算時(shí), 其結(jié)果可能會(huì)超過(guò)整數(shù)的范圍而發(fā)生溢出,正數(shù)過(guò)大而產(chǎn)生的溢出,結(jié)果為負(fù)數(shù);負(fù)數(shù)過(guò)大而產(chǎn)生的溢出,結(jié)果為正數(shù)。示例代碼如下所示:
int a = 2147483647; //int類型整數(shù)的上限
int b = -2147483648; //int類型整數(shù)的下限
a = a + 1;
b = b - 1;
System.out.println("a=" + a); //輸出結(jié)果: a=-2147483648 溢出,結(jié)果錯(cuò)誤。
System.out.println("b=" + b); //輸出結(jié)果: b=2147483647溢出,結(jié)果錯(cuò)誤。 - long類型
3.1. long類型
在表示整數(shù)時(shí),如果int類型的范圍不夠,可以使用long類型,一個(gè)long型的變量占用8個(gè)字節(jié)(即64位),大表示范圍為:-263 ~ 263-1,即 -9223372036854775808 ~ 9223372036854775807。
如果要表示long直接量,需要以 L 或 l 結(jié)尾。示例代碼如下:
long a = 10000000000; //會(huì)有編譯錯(cuò)誤,因?yàn)?0000000000編譯器認(rèn)為是int類型,而這個(gè)值,已經(jīng)超出了int的范圍
long b = 10000000000l; //正確
3.2. 使用long類型進(jìn)行較大整數(shù)的運(yùn)算
對(duì)于較大的整數(shù)運(yùn)算(超過(guò)int的表達(dá)范圍),可以使用long型。示例代碼如下:
long distance1 = 10000 365 24 60 60 299792458l;
//必須有一個(gè)long型數(shù)據(jù)參與的運(yùn)算結(jié)果才是long型
System.out.println("distance1="+distance1);//distance1=547836957965889536 結(jié)果正確
long distance2 = 10000 365 24 60 60 299792458;
System.out.println("distance2="+ distance2); //distance2=-1973211136 溢出,=號(hào)后面的數(shù)據(jù)默認(rèn)為int類型,超出了范圍,發(fā)生溢出。
3.3. 通過(guò)時(shí)間毫秒數(shù)來(lái)存儲(chǔ)日期和時(shí)間
JDK提供 System.currentTimeMillis() 方法,返回1970年1月1日零點(diǎn)到此時(shí)此刻所經(jīng)歷的毫秒數(shù),數(shù)據(jù)太大,故其數(shù)據(jù)類型為long。示例代碼如下:
long time = System.currentTimeMillis();
System.out.println(time); //輸出的結(jié)果為: 1383835712828
通過(guò)上面的代碼可以看出,輸出的結(jié)果已經(jīng)超出int類型的大值,因此,JDK設(shè)計(jì)的返回類型為long型,該方法常常被用于計(jì)時(shí)操作。 - double類型
4.1. 使用double進(jìn)行浮點(diǎn)數(shù)的運(yùn)算
前面所學(xué)習(xí)的int、long都是用于存儲(chǔ)整數(shù)的,小數(shù)即為浮點(diǎn)數(shù),包括: float(單精度)和double(雙精度),double類型的精度值是float類型的兩倍,因此而得名雙精精,在實(shí)際的應(yīng)用開發(fā)中,float應(yīng)用極少,大多數(shù)場(chǎng)合使用double表示浮點(diǎn)數(shù)。示例代碼如下:
double pi = 3.14;
double r = 8;
double s = pi r r;
System.out.println("s=" + s); // 輸出的結(jié)果為:s=200.96
4.2. 浮點(diǎn)數(shù)直接量是double類型
浮點(diǎn)數(shù)的直接量有兩種寫法:1)通常寫法,如:3.14、314、0.1、.5。 2)科學(xué)計(jì)數(shù)法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方。
默認(rèn)的浮點(diǎn)直接量為double型,如果需要表示float類型的直接量,需要加“f”或“F”后綴。例如:
float f1 = 3.14 //編譯錯(cuò)誤,應(yīng)該寫成3.14f
4.3. double運(yùn)算時(shí)會(huì)出現(xiàn)舍入誤差
2進(jìn)制系統(tǒng)中無(wú)法精確的表示1/10,就好像十進(jìn)制系統(tǒng)中無(wú)法精確的表示1/3一樣,
所以,2進(jìn)制表示10進(jìn)制會(huì)有一些舍入誤差,對(duì)于一些要求精確運(yùn)算的場(chǎng)合會(huì)導(dǎo)致代碼的缺陷。示例代碼如下所示:
double money = 3.0;
double price = 2.9;
System.out.println(money - price); //輸出的結(jié)果是: 0.10000000000000009
如果需要精確的運(yùn)算可以考慮放棄使用double或float而采用BigDecimal 類來(lái)實(shí)現(xiàn)。關(guān)于這一點(diǎn),將在后續(xù)的章節(jié)中介紹。 - char類型
5.1. char類型
字符類型char事實(shí)上是一個(gè)16位無(wú)符號(hào)整數(shù)(都是正數(shù)),這個(gè)值是對(duì)應(yīng)字符的編碼,Java字符類型采用Unicode字符集編碼(通用碼、統(tǒng)一碼、萬(wàn)國(guó)碼),而Unicode是世界通用的定長(zhǎng)字符集,所有的字符都是16位來(lái)表示。例如:字符a實(shí)際的值為97,字符A實(shí)際的值為65,字符0實(shí)際的值為48。
字符直接量可以采用諸如:‘中’的形式,也可以采用16進(jìn)制的表示形式,例如: ‘\u4e2d’,代碼如下所示:
char c1 = ‘中’; //c1中存的是”中”的編碼
char c2 = '\u4e2d'; //‘4e2d’為‘中’所對(duì)應(yīng)的16位Unicode編碼的16進(jìn)制表示形式
System.out.println(c1);
System.out.println(c2);
如上代碼的輸出結(jié)果:c1的值為中,c2值也為中,但c1和c2內(nèi)部存儲(chǔ)的其實(shí)是”中”這個(gè)字符所對(duì)應(yīng)的Unicode碼,即:一個(gè)無(wú)符號(hào)的整數(shù)。
5.2. 對(duì)char型變量賦值
在對(duì)char型變量賦值時(shí),可以采用如下三種方式:
方式一:
字符直接量:形如‘A’,變量中實(shí)際存儲(chǔ)的是該字符的Unicode編碼(無(wú)符號(hào)整數(shù)值),一個(gè)char型變量只能存儲(chǔ)一個(gè)字符。示例如下:
char c1 = 'A';
方式二:
整型直接量:范圍在0~65535之間的整數(shù),變量中實(shí)際存儲(chǔ)的即該整數(shù)值,但表示的是該整數(shù)值所對(duì)應(yīng)的Unicode字符。示例如下:
char c2 = 65;
Unicode形式:形如‘\u0041’,Unicode字符的16進(jìn)制形式。示例如下:
char c3 = '\u0041';
5.3. 使用轉(zhuǎn)義字符
字符直接量需要包含在一對(duì)’’單引號(hào)之中,那如果想表示單引號(hào)’的字符時(shí),需要怎么表示?想表示回車、換行符時(shí),怎么表示?
因?yàn)閱我?hào)為特殊意義的字符, 那么,對(duì)于不方便輸出的字符可以采用轉(zhuǎn)義字符來(lái)表示,示例代碼如下:
char c = '\';
System.out.println(c); //輸出的結(jié)果為:\
常用轉(zhuǎn)義字符如下圖 – 2所示:

圖- 2 - boolean類型
6.1. 使用boolean變量進(jìn)行關(guān)系運(yùn)算
boolean類型適用于關(guān)系、邏輯運(yùn)算, 表示某個(gè)條件是否成立, 只允許取值true或false,true表示條件成立, 而false表示條件不成立。
boolean型變量經(jīng)常用于存儲(chǔ)關(guān)系運(yùn)算的結(jié)果,所謂關(guān)系運(yùn)算就是比較兩個(gè)變量的大小相等等關(guān)系(此知識(shí)點(diǎn),后續(xù)詳細(xì)介紹)。boolean示例代碼如下所示:
int age = 18;
boolean isChild = age<16;
System.out.println(isChild); // isChild的值為false
boolean running = true;
boolean closed = false; - 基本類型間轉(zhuǎn)換
7.1. 類型間轉(zhuǎn)換
不同的基本類型直接可以相互轉(zhuǎn)化,主要有兩種方式:
自動(dòng)類型轉(zhuǎn)化(隱式類型轉(zhuǎn)換):從小類型到大類型可以自動(dòng)完成。類型的大小關(guān)系如下圖 - 3所示:

圖- 3
強(qiáng)制轉(zhuǎn)化:從大類型到小類型需要強(qiáng)制轉(zhuǎn)換符,語(yǔ)法如下:
(需要轉(zhuǎn)換成的類型)變量
因?yàn)榇箢愋偷木戎荡笥谛☆愋停≈捣秶笥谛☆愋停裕?dāng)使用強(qiáng)制轉(zhuǎn)化時(shí),有可能會(huì)造成精度的損失或者溢出,所以,在使用強(qiáng)制轉(zhuǎn)化時(shí)要求顯式的告訴編譯器,正在進(jìn)行強(qiáng)制轉(zhuǎn)換。
7.2. 強(qiáng)制轉(zhuǎn)換時(shí)的精度喪失和溢出
基本類型轉(zhuǎn)化如下示例所示,注意強(qiáng)制轉(zhuǎn)換時(shí)可能會(huì)造成的精度喪失和溢出。
int a = 100;
int b = 200;
long c = a + b; //自動(dòng)將int轉(zhuǎn)化為long
long l1 = 1024l;
int i = (int) l1; //需要加強(qiáng)制轉(zhuǎn)化符由于1024在int的范圍內(nèi),所以沒有產(chǎn)生溢出
long l = 1024L 1024 1024 4;
int j = (int) l; //會(huì)產(chǎn)生溢出
System.out.println(j); // 結(jié)果為:0
double pi = 3.1415926535897932384;
float f = (float) pi; //會(huì)造成精度的損失,因?yàn)閱尉鹊木_度小于double
System.out.println(f); //結(jié)果為:3.1415927
7.3. 數(shù)值運(yùn)算時(shí)的自動(dòng)轉(zhuǎn)換
如果在一個(gè)表達(dá)式中出現(xiàn)了多種數(shù)據(jù)類型,則運(yùn)算結(jié)果會(huì)自動(dòng)的向較大的類型進(jìn)行轉(zhuǎn)化,
示例如下:
//由于有l(wèi)ong型的直接量參與,整個(gè)表達(dá)式的結(jié)果為long
long distance = 10000 365 24 60 60 299792458l;
//由于有double型的直接量599.0參與,整個(gè)表達(dá)式的結(jié)果為 double
double change = 800 - 599.0;
//結(jié)果為0.0,右邊都是int型數(shù)據(jù)運(yùn)算結(jié)果也為int類型,結(jié)果為0,再賦值給double
將0轉(zhuǎn)化為 0.0
double persent1 = 80 / 100;
//結(jié)果為0.8,右邊表達(dá)式有double型直接量參與, 運(yùn)算結(jié)果為double型
double persent2 = 80.0 / 100;
7.4. byte、char、short轉(zhuǎn)換為int
在前面所介紹的8種數(shù)據(jù)類型中,byte、char、short、int、long都表示整數(shù)類型,而整型的直接量為int,在實(shí)際使用中,為了方便使用,遵循了如下的規(guī)則:
int直接量可以直接賦值給byte、char和short,只要不超過(guò)其表示范圍。示例如下:
byte b = 97;
short s = 97;
char c = 97;
byte、char、short三種類型參與運(yùn)算時(shí),先一律轉(zhuǎn)換成int類型再進(jìn)行運(yùn)算。示例如下:
byte b = 97;
int num = b + b; //num的值為194
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱:JAVA的8種基本數(shù)據(jù)類型-創(chuàng)新互聯(lián)
轉(zhuǎn)載來(lái)于:http://chinadenli.net/article36/digosg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站設(shè)計(jì)、服務(wù)器托管、企業(yè)網(wǎng)站制作、品牌網(wǎng)站制作、搜索引擎優(yōu)化、網(wǎng)站設(shè)計(jì)公司
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)