目錄
一、int
二、long
三、double
四、float
五、char
六、byte與short
一、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
雖然他們很小,但是省記憶體,看需求使用,選自己合適的最好,
未完待續,,,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308739.html
標籤:java
上一篇:二叉樹相關面試題【資料結構】
下一篇:兩步幫你搞定多執行緒之最后一步
