Java基礎(chǔ)-Java基本數(shù)據(jù)類型
1 前言
變量就是申請內(nèi)存來存儲值。也就是說,當(dāng)創(chuàng)建變量的時候,需要在內(nèi)存中申請空間。
內(nèi)存管理系統(tǒng)根據(jù)變量的類型為變量分配存儲空間,分配的空間只能用來儲存該類型數(shù)據(jù)。
因此,通過定義不同類型的變量,可以在內(nèi)存中儲存整數(shù)、小數(shù)或者字符。
Java支持八種基本數(shù)據(jù)類型,包括一種布爾類型、一種字符類型、一種數(shù)值型,包括四種整數(shù)類型和兩種浮點數(shù)類型。
2 布爾類型
boolean
數(shù)據(jù)類型表示一位的信息;- 只有兩個取值:
true
和false
; - 這種類型只作為一種標(biāo)志來記錄
true/false
情況; - 默認值是 false;
- 例子:
boolean b = true2
3 字符類型
- char 類型是一個單一的 16 位 Unicode 字符;
- 最小值是 \u0000(十進制等效值為 0);
- 最大值是 \uffff(即為 65535);
- char 數(shù)據(jù)類型可以儲存任何字符;
- 例子:
? char c = 'A';
4 值類型
4.1 byte
- byte 數(shù)據(jù)類型是8位、有符號的,以二進制補碼表示的整數(shù);
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默認值是 0;
- byte 類型用在大型數(shù)組中節(jié)約空間,主要代替整數(shù),因為 byte 變量占用的空間只有 int 類型的四分之一;
- 例子:
? byte b = 100;
4.2 short
- short 數(shù)據(jù)類型是 16 位、有符號的以二進制補碼表示的整數(shù)
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- Short 數(shù)據(jù)類型也可以像 byte 那樣節(jié)省空間。一個short變量是int型變量所占空間的二分之一;
- 默認值是 0;
- 例子:
? short short s = -10000;
4.3 int
int
數(shù)據(jù)類型是32位、有符號的以二進制補碼表示的整數(shù);- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 一般地整型變量默認為 int 類型;
- 默認值是 0 ;
- 例子:
? int a = 100000;
4.4 long
long
數(shù)據(jù)類型是 64 位、有符號的以二進制補碼表示的整數(shù);- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 這種類型主要使用在需要比較大整數(shù)的系統(tǒng)上;
- 默認值是 0L;
- 例子:
?long l = 100000L;
"L"理論上不分大小寫,但是若寫成"l"容易與數(shù)字"1"混淆,不容易分辯。所以最好大寫。
4.5 float
float
數(shù)據(jù)類型是單精度、32位、符合IEEE 754標(biāo)準(zhǔn)的浮點數(shù);float
在儲存大型浮點數(shù)組的時候可節(jié)省內(nèi)存空間;- 默認值是 0.0f;
- 浮點數(shù)不能用來表示精確的值,如貨幣;
- 例子:
? float f1 = 234.5f;
4.6 double
double
數(shù)據(jù)類型是雙精度、64 位、符合 IEEE 754 標(biāo)準(zhǔn)的浮點數(shù);- 浮點數(shù)的默認類型為 double 類型;
- double類型同樣不能表示精確的值,如貨幣;
- 默認值是 0.0d;
- 例子:
? double d5 = 12.9867;?
5 碼農(nóng)來洞見
5.1 類型轉(zhuǎn)換
Java允許整數(shù)和浮點數(shù)之間互相轉(zhuǎn)換。并且,由于每個字符都對應(yīng)Unicode編碼中的一個數(shù)字,所以char
與整數(shù)和浮點數(shù)之間也可以相互轉(zhuǎn)換。事實上,在Java中,boolean類型是唯一一種不能跟其他基本類型相互轉(zhuǎn)換的基本類型。
自動類型轉(zhuǎn)換:
也叫隱式類型轉(zhuǎn)換,其實就是小范圍的數(shù)據(jù)類型向大范圍的數(shù)據(jù)類型轉(zhuǎn)換(byte ->short(char)->int->long->float->double)
。
強制類型轉(zhuǎn)換:
也叫顯式類型轉(zhuǎn)換,是從存儲范圍大的類型到存儲范圍小的類型(double→float→long→int→short(char)→byte)
。強制類型轉(zhuǎn)換所帶來的結(jié)果是可能會丟失精度,如果此數(shù)值尚在范圍較小的類型數(shù)值范圍內(nèi),對于整型變量精度不變,但如果超出范圍較小的類型數(shù)值范圍內(nèi),很可能出現(xiàn)一些意外情況。
int i = 223; byte b = (byte) i;
上面的例子中輸出值是-23.
為什么結(jié)果是-23?需要從最根本的二進制存儲考慮。
233的二進制表示為:24位0 + 11101001,byte型只有8位,于是從高位開始舍棄,截斷后剩下:11101001,由于二進制最高位1表示負數(shù),0表示正數(shù),其相應(yīng)的負數(shù)為-23。
數(shù)據(jù)類型自動提升:
數(shù)值類型在內(nèi)存中直接存儲其本身的值,對于不同的數(shù)值類型,內(nèi)存中會分配相應(yīng)的大小去存儲。如:byte類型的變量占用8位,int類型變量占用32位等。相應(yīng)的,不同的數(shù)值類型會有與其存儲空間相匹配的取值范圍。
在Java中,整數(shù)類型(byte/short/int/long)
中,對于未聲明數(shù)據(jù)類型的整型,其默認類型為int型。在浮點類型(float/double
)中,對于未聲明數(shù)據(jù)類型的浮點型,默認為double型。
5.2 存儲空間
注意事項1:
如果需要一個占位符來存儲數(shù)字1000000,那么需要一個int型數(shù),long可以用于存儲更大的數(shù)字,讀者可能問,既然long可以包含比byte和int型數(shù)更大的數(shù)字,為什么不總是使用long呢?這是因為long需要64位,相比byte
或int,這會占用更多的內(nèi)存空間。因此,為了節(jié)省空間,需要選擇合適的基本類型。
注意事項2:
將一個int型的1000賦給一個byte型的變量a,提示出錯,但是最后一句:將一個int型的3賦給一個byte型的變量c,居然編譯正確,這是為什么呢?
byte b1 = 1000; byte b2 = 3;
原因在于:jvm
在編譯過程中,對于默認為int類型的數(shù)值時,當(dāng)賦給一個比int型數(shù)值范圍小的數(shù)值類型變量,會進行判斷,如果此int型數(shù)值超過數(shù)值類型,那么會直接編譯出錯。但是如果此int型數(shù)值尚在數(shù)值類型范圍內(nèi),jvm會自動進行一次隱式類型轉(zhuǎn)換。
到此這篇關(guān)于Java基礎(chǔ)-Java基本數(shù)據(jù)類型的文章就介紹到這了,更多相關(guān)Java基本數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring 應(yīng)用中集成 Apache Shiro的方法
這篇文章主要介紹了Spring 應(yīng)用中集成 Apache Shiro的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-05-05Java?數(shù)據(jù)結(jié)構(gòu)深入理解ArrayList與順序表
ArrayList?類是一個可以動態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素。ArrayList?繼承了?AbstractList?,并實現(xiàn)了?List?接口,順序表是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關(guān)系由它們的存儲順序自然表示2022-04-04Spring Boot ActiveMQ如何設(shè)置訪問密碼
這篇文章主要介紹了Spring Boot ActiveMQ如何設(shè)置訪問密碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-07-07SpringBoot與Spring中數(shù)據(jù)緩存Cache超詳細講解
我們知道內(nèi)存讀取速度遠大于硬盤讀取速度,當(dāng)需要重復(fù)獲取相同數(shù)據(jù)時,一次一次的請求數(shù)據(jù)庫或者遠程服務(wù),導(dǎo)致在數(shù)據(jù)庫查詢或者遠程方法調(diào)用上小號大量的時間,最終導(dǎo)致程序性能降低,這就是數(shù)據(jù)緩存要解決的問題,學(xué)過計算機組成原理或者操作系統(tǒng)的同學(xué)們應(yīng)該比較熟悉2022-10-10