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ù)??偟膩碚f,給變量定義數(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言,后面我們要用到的類,接口,數(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)文章
解決Springboot @WebFilter攔截器未生效問題
這篇文章主要介紹了解決Springboot @WebFilter攔截器未生效問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-10-10
Calcite使用SQL實(shí)現(xiàn)查詢csv/json文件內(nèi)容
calcite可以支持文件系統(tǒng)的數(shù)據(jù)源適配, 其實(shí)官方已經(jīng)提供了相應(yīng)的能力, 其支持csv和json的查詢適配,下面我們就來看看Calcite如何使用SQL實(shí)現(xiàn)查詢csv/json文件內(nèi)容吧2025-01-01
Java創(chuàng)建多線程異步執(zhí)行實(shí)現(xiàn)代碼解析
這篇文章主要介紹了Java創(chuàng)建多線程異步執(zhí)行實(shí)現(xiàn)代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07
FactoryBean?BeanFactory方法使用示例詳解講解
這篇文章主要為大家介紹了FactoryBean?BeanFactory方法使用示例詳解講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡的解決方案
Spring?Cloud?Alibaba?致力于提供微服務(wù)開發(fā)的一站式解決方案,此項(xiàng)目包含開發(fā)分布式應(yīng)用微服務(wù)的必需組件,這篇文章主要介紹了Alibaba?SpringCloud集成Nacos、openFeign實(shí)現(xiàn)負(fù)載均衡,需要的朋友可以參考下2024-05-05
Java中的Callable實(shí)現(xiàn)多線程詳解
這篇文章主要介紹了Java中的Callable實(shí)現(xiàn)多線程詳解,接口Callable中有一個(gè)call方法,其返回值類型為V,這是一個(gè)泛型,值得關(guān)注的是這個(gè)call方法有返回值,這意味著線程執(zhí)行完畢后可以將處理結(jié)果返回,需要的朋友可以參考下2023-08-08

