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!

推薦閱讀: