Java數(shù)據(jù)類型的全面剖析
一、int
還記得 C 語言里的 int 嗎,C里面的 int 有著無符號(hào)與有符號(hào)之分
但是Java內(nèi)就沒有,且固定占4個(gè)字節(jié)大小,也就是32比特位
因?yàn)闆]有符號(hào)之分,所以第一位默認(rèn)是符號(hào)位
所以剩下的31位來存二進(jìn)制數(shù)據(jù)

一個(gè)int所能表示范圍就是 -2^31 -> 2^31-1
在java內(nèi),我們可以看到每個(gè)基本類型的范圍:
System.out.println(Integer.MAX_VALUE);//最大值 System.out.println(Integer.MIN_VALUE);//最小值

但是僅有21億怎么能滿足呢😎,我們需要用long來體現(xiàn)。
二、long
Java中 long 與 C語言 的區(qū)別在以下幾點(diǎn):
Java中 long 占 8字節(jié),C占 4字節(jié)
在Java中定義long類型時(shí),要在數(shù)字后加上L
long n = 10L;
小寫的L也行,但為了與1區(qū)別開來,更加醒目。
8個(gè)字節(jié)也就是64比特位,第一位符號(hào)位,范圍也就來到了驚人的-2^63 -> 2^63-1
同樣我們也可以來看看 long 的范圍:
System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE);

這個(gè)值我覺得可以滿足我們的使用了,但是小數(shù)問題呢?
三、double
來道易錯(cuò)題:
int m = 1; int n = 2; System.out.println(m / n);
此結(jié)果為0,因?yàn)槿f惡的 1.0 與 1 在編程的世界里是不一樣的。
那我這樣寫呢?
int m = 1.0; int n = 2.0; System.out.println(m / n);
這樣子系統(tǒng)會(huì)認(rèn)為1.0是8字節(jié)的double,不能存入僅有4字節(jié)的int內(nèi),于是直接報(bào)錯(cuò)。
正確寫法:
double m = 1.0; double n = 2.0; System.out.println(m / n);
讓我們再看個(gè)代碼:
double n = 1.2; System.out.println(n * n);

為什么在末尾會(huì)有個(gè)神奇的 '2' ?
因?yàn)?double 在內(nèi)存中的存儲(chǔ)方式遵從IEEE754標(biāo)準(zhǔn),與整數(shù)不同,存在誤差。
四、float
Java中的 float 的注意點(diǎn)主要有兩個(gè):
1. 在定義float類型變量時(shí),同 long 類型一樣,要在數(shù)字末尾加上 f 或 F, 與 double 來區(qū)分。
float n = 1.1f;
2. float 作為單精度浮點(diǎn)數(shù),只能保留小數(shù)點(diǎn)后六位的數(shù),精度較小。
五、char
在 Java 中,char 與 C的區(qū)別就很大:
1. 由于Java支持Unicode編碼,所以Java的char你甚至可以表示中文
char q = '哈'; System.out.println(q);

2. 因?yàn)槟鼙硎局形?,所以char類型占了2個(gè)字節(jié) (這也是最大的區(qū)別,要注意)
也就意味著 char 的范圍也擴(kuò)大了。
六、byte與short
這兩個(gè)都是表示整數(shù),僅是范圍不同而已。
byte 只占一個(gè)字節(jié),所以范圍僅有 -127 ~ 128
short 占兩個(gè)字節(jié),所以范圍擴(kuò)大為 -32768 -> 32767
雖然他們很小,但是省內(nèi)存??葱枨笫褂?,選自己合適的最好。
未完待續(xù)。。。
到此這篇關(guān)于Java數(shù)據(jù)類型的全面剖析的文章就介紹到這了,更多相關(guān)Java 數(shù)據(jù)類型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解Java中實(shí)現(xiàn)SHA1與MD5加密算法的基本方法
這篇文章主要介紹了詳解Java中實(shí)現(xiàn)SHA1與MD5加密算法的基本方法,安全哈希算法第一版和消息摘要算法第五版也是通常人們最常用的加密算法,需要的朋友可以參考下2016-04-04
如何使用java.security.SecureRandom安全生成隨機(jī)數(shù)和隨機(jī)字符串工具類
這篇文章主要給大家介紹了關(guān)于如何使用java.security.SecureRandom安全生成隨機(jī)數(shù)和隨機(jī)字符串工具類的相關(guān)資料,SecureRandom擴(kuò)展了Random類,并通過在java 8中添加的新方法得到了豐富,需要的朋友可以參考下2024-05-05
java開發(fā)Dubbo負(fù)載均衡與集群容錯(cuò)示例詳解
這篇文章主要為大家介紹了java開發(fā)Dubbo負(fù)載均衡與集群容錯(cuò)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2021-11-11
Spring?Data?JPA實(shí)現(xiàn)審計(jì)功能過程詳解
Spring?Data?JPA為跟蹤持久性層的變化提供了很好的支持。通過使用審核,我們可以存儲(chǔ)或記錄有關(guān)實(shí)體更改的信息,例如誰創(chuàng)建或更改了實(shí)體以及何時(shí)進(jìn)行更改2023-02-02
java web項(xiàng)目里ehcache.xml介紹
java web項(xiàng)目里ehcache.xml介紹,需要的朋友可以參考一下2013-03-03
Mybatis聯(lián)合查詢的實(shí)現(xiàn)方法
本文主要介紹了 Mybatis聯(lián)合查詢的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01

