Java基礎(一)基本數據類型

8種基本數據類型(以下根據使用頻率):
a、int 整型 4字節 21億4千萬
b、double 雙精度浮點數 8字節
c、float 單精度浮點數 4字節
d、char 字符 2字節 65535
e、long 長整型 8字節
f、 byte 比特 1字節
g、boolean 布爾型 1字節
h、short 短整型 2字節 32767

整數類型
換算:8個能存儲0或1空間=1字節=1B,1024B=1KB,1024KB=1MB,1024MB=1GB
a、一個int定義的整數空間,佔用4個字節,每個字節8位二進制數,故int定義的整數空間是32位
b、由於在機器當中,沒有表示負數的方法,故將二進制數最高位作爲符號位,其餘的位用於表示數據。
c、而在機器碼中,0表示正數,1表示負數。由於int表示的整數空間爲32位,扣除第一位作爲符號位,實際上能表示的數據範圍是-2^31與+2^31
d、由於有一個正0:000000000000000000000000000000與一個負0:100000000000000000000000000000000,將負0定義爲-2147483648
e、因此int所能表示的數據範圍是-2^31~2^31-1,即-2147483648~+2147483647,(21億4千萬
f、從0到2147483647共2^31個數據,從-1到-2147483648也是2^31個數據。

g、例如,010111,表示一個正數,大小爲2^4+2^2+2^1+2^0=16+4+2+1=23
110101,表示一個負數,即藍色的部分是符號位,大小爲-(2^4+2^2+2^0)=-21
h、long定義的數據空間,佔用8個字節,每個字節8位二進制書,故long定義的整數空間是64位
long所能表示的數據範圍爲-2^63~+2^63-1,即-9223372036854775808~9223372036854775807。
i、short只能保持32767以內

整數直接量(默認定義的數據類型:int)
a、Java中任意一個整數,默認被定義爲int類型
b、int類型又有範圍,即不能超過21億4千萬
c、如果寫了一個整數直接量,超過了int類型,那麼就必須採用long類型,對整數直接量進行定義
定義方法是在整數直接量後加上小寫的L,比如100 0000 0000,之後,要加上小寫的L,即100 0000 0000l。
e、即long a=100 0000 0000l;編譯正確
而long a=100 0000 0000;編譯錯誤
f、直接量的概念:所謂的直接量實際上就是已經定義好的數據。比如:int直接量:30----double直接量:50.5

浮點數直接量(默認定義的數據類型:double)
a、java中任意一個小數,默認被定義爲double類型。
b、比如3.14是double類型。
c、在使用float對變量進行定義時,小數直接量無法直接賦值給float定義的變量,因爲系統默認的小數直接量是double類型
所以需要在小數直接量後面加上f,纔可以賦值給float定義的變量。
float f1=3.14;編譯錯誤
float f1=3.14f;編譯正確
d、double類型比float類型的精確更高,因爲double是64位,float是32位
即float只有單精度,但是double有雙精度。
擴展閱讀
爲什麼浮點數,計算機無法精確表示?因爲計算機的科學計數法是二進制數。浮點數遵循的是IEEE754 表示法。
對於二進制小數,小數點右邊能表達的值是 1/2, 1/4, 1/8, 1/16, 1/32, 1/64, 1/128 ... 1/(2^n)
現在問題來了, 計算機只能用這些個1/(2^n) 之和來表達十進制的小數。
我們來試一試如何表達十進制的 0.2 吧。
0.01 = 1/4 = 0.25 ,太大
0.001 =1/8 = 0.125 , 又太小
0.0011 = 1/8 + 1/16 = 0.1875 , 逼近0.2了
0.00111 = 1/8 + 1/16 + 1/32 = 0.21875 , 又大了
0.001101 = 1/8+ 1/16 + 1/64 = 0.203125 還是大
0.0011001 = 1/8 + 1/16 + 1/128 =0.1953125 這結果不錯
0.00110011 = 1/8+1/16+1/128+1/256 = 0.19921875
已經很逼近了, 就這樣吧。

關於char類型(字符類型),採用的是Unicode編碼
a、在使用char對變量進行定義時,由於char定義的是字符,所以不論賦值的數據是字母,還是小於65535的數據
或者是Unicode編碼,最後變量得到的實際上是Unicode編碼,而打印出來的變量實際上是Unicode編碼對應的字符。
b、在賦值過程中,如果賦值的是字符以及Unicode編碼,都需要加單引號,如 ‘a’ 或 '\u0041'
如果賦值的是數字,那麼可以不用加單引號。

擴展閱讀
爲什麼char採用的是Unicode編碼
a、計算機不認識字符,只認識數字,將數字與字符一一對應,每個字符在計算機僅有一個數字與之對應。
b、使用時,必須使用單引號包裹。而char類型的字符,在計算機中,僅有65535個字。
c、故對char進行賦值時,除了可以用單引號+字符,也可以用數值,但數值只能在0~65535之間,也可以用Unicode字符的16進製表示法。
d、常用的Unicode編碼:0~9的Unicode數值爲48~57;
A~Z的Unicode數值爲65~90;
a~z的Unicode數值爲97~120;
e、同一個字母大小寫字母之間的Unicode數值都相差32。比如A與a
f、char c1=‘A'; 等價於 char c1=65;等價於char c3='u0041';

小結:對java而言,任意一個整數比如64,都會被定義爲int類型。任意一個小數,比如12.3都會被定義爲double類型。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章