Java數(shù)據(jù)類型超詳細(xì)示例講解
1. Java數(shù)據(jù)類型
前面說到,程序運(yùn)行時產(chǎn)生的臨時數(shù)據(jù)我們存儲在被稱為變量的內(nèi)存單元里,而變量的創(chuàng)建,就是在內(nèi)存中分配一塊內(nèi)存空間。
為什么要定義不同的數(shù)據(jù)類型呢?當(dāng)我們預(yù)先定義好數(shù)據(jù)類型后,內(nèi)存管理系統(tǒng)在給變量分配內(nèi)存空間時,就可以根據(jù)變量的數(shù)據(jù)類型為變量分配合適的存儲空間,分配的空間只能用來儲存該類型數(shù)據(jù)。總的來說,給變量定義數(shù)據(jù)類型可以讓內(nèi)存空間得到充分的利用。
Java中數(shù)據(jù)類型一共分為兩大類,一類是基本數(shù)據(jù)類型,另一類叫做引用數(shù)據(jù)類型。其中基本數(shù)據(jù)類型一共 8 種。
2. 基本數(shù)據(jù)類型
在基本數(shù)據(jù)類型中,每一個類型都定義了占用存儲空間的字節(jié)數(shù),我們可以根據(jù)現(xiàn)實(shí)中的意義,數(shù)據(jù)所占用內(nèi)存的大小等選擇合適的數(shù)據(jù)類型,達(dá)到充分利用內(nèi)存空間的目的。
Java中定義了 8 個基本數(shù)據(jù)類型,分別是:
- byte 字節(jié)型
- short 短整型
- int 整型
- long 長整形
- float 單精度浮點(diǎn)型
- double 雙精度浮點(diǎn)型
- boolean 布爾型
- char 字符型
其中前四種是數(shù)值型變量,現(xiàn)在對這 8 中數(shù)據(jù)類型做一個詳解:
byte:
- byte 數(shù)據(jù)類型是8位、有符號的,以二進(jìn)制補(bǔ)碼表示的整數(shù);
- 最小值是 -128(-2^7);
- 最大值是 127(2^7-1);
- 默認(rèn)值是 0;
short:
- short 數(shù)據(jù)類型是 16 位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù)
- 最小值是 -32768(-2^15);
- 最大值是 32767(2^15 - 1);
- 默認(rèn)值是 0;
int:
- int 數(shù)據(jù)類型是32位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
- 最小值是 -2,147,483,648(-2^31);
- 最大值是 2,147,483,647(2^31 - 1);
- 默認(rèn)值是 0 ;
long:
- long 數(shù)據(jù)類型是 64 位、有符號的以二進(jìn)制補(bǔ)碼表示的整數(shù);
- 最小值是 -9,223,372,036,854,775,808(-2^63);
- 最大值是 9,223,372,036,854,775,807(2^63 -1);
- 默認(rèn)值是 0L;
float:
- float 數(shù)據(jù)類型是單精度、32位、符合IEEE 754標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
- float 在儲存大型浮點(diǎn)數(shù)組的時候可節(jié)省內(nèi)存空間;
- 默認(rèn)值是 0.0f;
- 浮點(diǎn)數(shù)不能用來表示精確的值,如貨幣;
double:
- double 數(shù)據(jù)類型是雙精度、64 位、符合 IEEE 754 標(biāo)準(zhǔn)的浮點(diǎn)數(shù);
- 浮點(diǎn)數(shù)的默認(rèn)類型為 double 類型;
- double類型同樣不能表示精確的值,如貨幣;
- 默認(rèn)值是 0.0d;
boolean:
- boolean數(shù)據(jù)類型表示一位的信息;
- 只有兩個取值:true 和 false;
- 這種類型只作為一種標(biāo)志來記錄 true/false 情況;
- 默認(rèn)值是 false;
char:
- char 類型是一個單一的 16 位 Unicode 字符;
- 最小值是
\u0000
(十進(jìn)制等效值為 0); - 最大值是
\uffff
(即為 65535); - char 數(shù)據(jù)類型可以儲存任何字符;
在學(xué)習(xí)基本數(shù)據(jù)類型時,不需要刻意的記背,在后面的練習(xí)中,由于數(shù)據(jù)類型的概念會一直用到,所以會慢慢熟練的掌握,現(xiàn)在要學(xué)習(xí)的就是了解每個數(shù)據(jù)類型,以及表示的數(shù)據(jù)范圍,思考不同數(shù)據(jù)類型的應(yīng)用場景。
數(shù)據(jù)類型的最大最小值以常量的形式定義在對應(yīng)的包裝類中,例如整形 int
的包裝類:java.lang.Integer
。
public class Test { public static void main(String[] args) { System.out.println("整型 占用的二進(jìn)制位:"+ Integer.SIZE); System.out.println("最大值:"+Integer.MAX_VALUE); System.out.println("最小值:"+Integer.MIN_VALUE); } }
運(yùn)行結(jié)果:
整型 占用的二進(jìn)制位:32
最大值:2147483647
最小值:-2147483648
每個基本數(shù)據(jù)類型都預(yù)先定義了一個默認(rèn)值,上面的介紹中已經(jīng)給出。
3. 引用數(shù)據(jù)類型
引用數(shù)據(jù)類型的變量非常類似與C/C++中的指針,引用類型指向一個對象,這時指向?qū)ο蟮倪@個變量就是引用變量。引用類型的變量的默認(rèn)值都是 NULL。
Java是一門面向?qū)ο蟮木幊陶Z言,后面我們要用到的類,接口,數(shù)組
都是引用數(shù)據(jù)類型。
Student stu = new Student();
如上,在創(chuàng)建一個 Student
對象的時候,就是定義了一個名為 stu
的對象變量指向這個 Student 的對象。
4. 類型轉(zhuǎn)換
4.1 自動類型轉(zhuǎn)換
整型、實(shí)型、字符型數(shù)據(jù)可以混合運(yùn)算。運(yùn)算中,不同類型的數(shù)據(jù)先轉(zhuǎn)化為同一類型,然后進(jìn)行運(yùn)算。
轉(zhuǎn)換時,必須滿足轉(zhuǎn)換前的數(shù)據(jù)類型的位數(shù)要低于轉(zhuǎn)換后的數(shù)據(jù)類型(byte —> short —> char—> int —> long—> float —> double
),例如: short 數(shù)據(jù)類型的位數(shù)為16位,就可以自動轉(zhuǎn)換位數(shù)為32的 int 類型。如下:
public class Test{ public static void main(String[] args){ char c1='a';//定義一個char類型 int i1 = c1;//char自動類型轉(zhuǎn)換為int System.out.println("char自動類型轉(zhuǎn)換為int后的值等于"+i1); } }
運(yùn)行結(jié)果:
char 自動類型轉(zhuǎn)換為 int 后的值等于97
4.2 強(qiáng)制類型轉(zhuǎn)換
當(dāng)我們要進(jìn)行從高級轉(zhuǎn)換到低級時,就要進(jìn)行強(qiáng)制類型轉(zhuǎn)換。轉(zhuǎn)換的條件是轉(zhuǎn)換的數(shù)據(jù)類型必須是兼容的。如下:
public class Test{ public static void main(String[] args){ int i = 123; byte b = (byte)i;//強(qiáng)制類型轉(zhuǎn)換為byte System.out.println("int強(qiáng)制類型轉(zhuǎn)換為byte后的值等于"+b); } }
運(yùn)行結(jié)果:
int強(qiáng)制類型轉(zhuǎn)換為byte后的值等于123
數(shù)據(jù)類型轉(zhuǎn)換應(yīng)該注意這些問題:
- 不能對 boolean 類型進(jìn)行類型轉(zhuǎn)換。
- 不能把對象類型轉(zhuǎn)換成不相關(guān)類的對象。
- 在把容量大的類型轉(zhuǎn)換為容量小的類型時必須使用強(qiáng)制類型轉(zhuǎn)換。
- 轉(zhuǎn)換過程中可能導(dǎo)致溢出或損失精度。
到此這篇關(guān)于Java數(shù)據(jù)類型超詳細(xì)示例講解的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于java.math.BigDecimal比較大小問題
這篇文章主要介紹了關(guān)于java.math.BigDecimal比較大小問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07Java創(chuàng)建型設(shè)計模式之工廠方法模式深入詳解
工廠方法模式(FACTORY METHOD)是一種常用的類創(chuàng)建型設(shè)計模式,此模式的核心精神是封裝類中變化的部分,提取其中個性化善變的部分為獨(dú)立類,通過依賴注入以達(dá)到解耦、復(fù)用和方便后期維護(hù)拓展的目的。它的核心結(jié)構(gòu)有四個角色,分別是抽象工廠、具體工廠、抽象產(chǎn)品、具體產(chǎn)品2022-09-09spring boot 使用Aop通知打印控制器請求報文和返回報文問題
這篇文章主要介紹了spring-boot 使用Aop通知打印控制器請求報文和返回報文,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2018-04-04