Java數(shù)據(jù)類型超詳細(xì)示例講解
1. Java數(shù)據(jù)類型
前面說到,程序運(yùn)行時(shí)產(chǎn)生的臨時(shí)數(shù)據(jù)我們存儲(chǔ)在被稱為變量的內(nèi)存單元里,而變量的創(chuàng)建,就是在內(nèi)存中分配一塊內(nèi)存空間。
為什么要定義不同的數(shù)據(jù)類型呢?當(dāng)我們預(yù)先定義好數(shù)據(jù)類型后,內(nèi)存管理系統(tǒng)在給變量分配內(nèi)存空間時(shí),就可以根據(jù)變量的數(shù)據(jù)類型為變量分配合適的存儲(chǔ)空間,分配的空間只能用來儲(chǔ)存該類型數(shù)據(jù)。總的來說,給變量定義數(shù)據(jù)類型可以讓內(nèi)存空間得到充分的利用。
Java中數(shù)據(jù)類型一共分為兩大類,一類是基本數(shù)據(jù)類型,另一類叫做引用數(shù)據(jù)類型。其中基本數(shù)據(jù)類型一共 8 種。

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

