Java數據類型的全面剖析
一、int
還記得 C 語言裡的 int 嗎,C裡面的 int 有著無符號與有符號之分
但是Java內就沒有,且固定占4個字節大小,也就是32比特位
因為沒有符號之分,所以第一位默認是符號位
所以剩下的31位來存二進制數據
一個int所能表示范圍就是 -2^31 -> 2^31-1
在java內,我們可以看到每個基本類型的范圍:
System.out.println(Integer.MAX_VALUE);//最大值 System.out.println(Integer.MIN_VALUE);//最小值
但是僅有21億怎麼能滿足呢😎,我們需要用long來體現。
二、long
Java中 long 與 C語言 的區別在以下幾點:
Java中 long 占 8字節,C占 4字節
在Java中定義long類型時,要在數字後加上L
long n = 10L;
小寫的L也行,但為瞭與1區別開來,更加醒目。
8個字節也就是64比特位,第一位符號位,范圍也就來到瞭驚人的-2^63 -> 2^63-1
同樣我們也可以來看看 long 的范圍:
System.out.println(Long.MAX_VALUE); System.out.println(Long.MIN_VALUE);
這個值我覺得可以滿足我們的使用瞭,但是小數問題呢?
三、double
來道易錯題:
int m = 1; int n = 2; System.out.println(m / n);
此結果為0,因為萬惡的 1.0 與 1 在編程的世界裡是不一樣的。
那我這樣寫呢?
int m = 1.0; int n = 2.0; System.out.println(m / n);
這樣子系統會認為1.0是8字節的double,不能存入僅有4字節的int內,於是直接報錯。
正確寫法:
double m = 1.0; double n = 2.0; System.out.println(m / n);
讓我們再看個代碼:
double n = 1.2; System.out.println(n * n);
為什麼在末尾會有個神奇的 ‘2’ ?
因為 double 在內存中的存儲方式遵從IEEE754標準,與整數不同,存在誤差。
四、float
Java中的 float 的註意點主要有兩個:
1. 在定義float類型變量時,同 long 類型一樣,要在數字末尾加上 f 或 F, 與 double 來區分。
float n = 1.1f;
2. float 作為單精度浮點數,隻能保留小數點後六位的數,精度較小。
五、char
在 Java 中,char 與 C的區別就很大:
1. 由於Java支持Unicode編碼,所以Java的char你甚至可以表示中文
char q = '哈'; System.out.println(q);
2. 因為能表示中文,所以char類型占瞭2個字節 (這也是最大的區別,要註意)
也就意味著 char 的范圍也擴大瞭。
六、byte與short
這兩個都是表示整數,僅是范圍不同而已。
byte 隻占一個字節,所以范圍僅有 -127 ~ 128
short 占兩個字節,所以范圍擴大為 -32768 -> 32767
雖然他們很小,但是省內存。看需求使用,選自己合適的最好。
未完待續。。。
到此這篇關於Java數據類型的全面剖析的文章就介紹到這瞭,更多相關Java 數據類型內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!