前言
在開始工做至今,學習各類各樣的技術之中發現本身的不少Java的基礎知識都忘了⊙﹏⊙b汗。。。 並且越是學習越是發現Java基礎的重要性,因此準備單獨抽一下時間進行Java基礎的從新學習。在從新學習的時候,對這些又有了不一樣的感悟,因而準備將這些都記載下來,並整理成博客,但願可以幫助那些須要的人。java
基本數據類型介紹
基本數據類型主要有這幾個: byte、short、int、long、float、double、char、boolean 能夠分爲三類:數組
- 數值類型:byte、short、int、long、float、double
- 字符類型:char
- 布爾型:boolean
byte
- byte是8位的數據類型,佔用1個字節(8bit),默認值是0,它的取值範圍是**(-2^7) ~ (2^7-1)**,也就是 -128 ~ 127之間,因此最大存儲數據量是255;
- byte通常在大型數組中使用,來代替整數,由於byte變量佔用的空間只有int的1/4。
- byte使用示例: byte a = 10,byte=-10。在使用byte數據類型的時候須要注意取值範圍!!!
short
- short是16位的數據類型,佔用2個字節,默認值是0,它的取值範圍是**(-2^15) ~(2^15-1)**,也就是 -32768 ~ 32767之間,因此最大數據存儲量是65536;
- short雖然是int型變量所佔空間的1/2,可是在實際中卻不多用到。在大型數組中也能夠節省空間。
- short使用示例:short a=100,short b=-200;
int
- int是32位的數據類型,佔用4個字節,默認值是0,它的取值範圍是**(-2^31) ~(2^31-1),也就是 -2147483648 ~ 2147483647之間,因此最大數據存儲量是2^32-1**;
- int是數據類型是整型,是咱們在項目中用到最多的數據類型之一;
- int 使用示例:int a=1000,int b=-2000;
long
- long是64位的數據類型,佔用8個字節,默認值是0L,它的取值範圍是**(-2^63) ~(2^63-1),也就是 -9223372036854775808 ~ 9223372036854775808之間,因此最大數據存儲量是2^64**;
- long是數據類型是長整型,是咱們在項目中用到最多的數據類型之一。在使用long類型的數據時最好在數值末尾帶上大寫的L!
- long 使用示例:long a=1000L,long b=-2000L;
float
- float是32位的數據類型,佔用4個字節,默認值是0,它的取值範圍是3.4e-45 ~ 1.4e38 之間;
- float是數據類型是單精度,在直接賦值時必須在數字後加上f或F。
- float使用示例:float a=10.25f, float b=-20.35F;
double
- double是64位的數據類型,佔用8個字節,默認值是0,它的取值範圍是4.9e-324 ~ 1.8e308 之間;
- double是數據類型是雙精度,在直接賦值的時候最好加上D或d。
- double使用示例:double a=10.123d, double b= -10.25644D;
boolean
- boolean是布爾類型,佔用1個字節,只有兩個值,false和true,默認值是 false。
- boolean只能用一種標誌來記錄 true或false,通常和 if 結合使用。
- boolean使用示例: boolean a=true,boolean b=false;
char
- char是字符類型,佔用2個字節,默認值爲空,取值範圍 爲 0~65535,也就是 \u0000 ~ \uffff。
- char數據類型能夠儲存任何字符。
- char 使用示例: char a=1,char b='A';
數值類型的級別從低到高分別爲: byte,char,short(這三個平級)——>int——>float——>long——>double 其中由低級別轉到高級別,是屬於自動類型轉換,這點是由系統自動轉換的。學習
例如將int類型的數據轉爲float類型的數據。 示例:測試
int i=10; float j=i; System.out.println("i:"+i+",j:"+j);
結果:大數據
i:10,j:10.0
若是由高級別轉爲低級別,則須要強制轉換,也就是強制類型轉換。 例如將int類型的數據轉換爲byte類型的數據。 示例:spa
int i=127; int j=128; byte bye=(byte)i; byte bye2=(byte)j; System.out.println("i:"+i+",bye:"+bye); System.out.println("j:"+j+",bye2:"+bye2);
結果:3d
i:127,bye:127 j:128,bye2:-128
說明:由於 byte 類型是 8 位,最大值爲127,因此當 int 強制轉換爲 byte 類型時,值 128 時候就會致使溢出。因此在進行強制類型轉換的時候,要注意取值範圍!code
在強制轉換的時候須要注意數據的精確度,不然可能會出現數據精確丟失。 例如 double類型的數據轉換爲float類型數據。 示例:get
double d=10.1111115; float f=(float) d; System.out.println("f:"+f+",d:"+d);
結果:博客
f:10.111112,d:10.1111115
瞭解了數據類型的級別以後,若是用不一樣的數據類型進行計算,那麼最終的數據類型又是哪種呢? 這裏咱們用這幾種來測試: 1.byte 類型的數據 加 short 類型的數據; 2.short 類型的數據 加 int 類型的數據; 3.int 類型的數據 加 long 類型的數據;
這裏咱們使用這個方法來獲取最終的數據類型
public static String getType(Object o){ return o.getClass().toString(); }
代碼:
short a=1; byte b=2; int c = 3; long d = 4; System.out.println(getType(a)); System.out.println(getType(b)); System.out.println(getType(c)); System.out.println(getType(d)); System.out.println(getType(a+b)); System.out.println(getType(a+c)); System.out.println(getType(c+d));
結果:
class java.lang.Short class java.lang.Byte class java.lang.Integer class java.lang.Long class java.lang.Integer class java.lang.Integer class java.lang.Long
看到結果是否是有點吃驚呢?那麼是爲何呢? 這裏的不一樣的數值類型數據進行相加的時候,會自動轉換爲級別最高的那一個。 那麼short 類型的數據加 byte 類型的數據爲何是int類型呢? 由於在java的世界裏,若是比int類型小的類型作運算,java在編譯的時候就會將它們統一強轉成int類型。 若是上述很差理解的,那麼這裏咱們來作個實驗測試下,經過結果來進行驗證。 示例:
short a=1,b=2; byte c=3,d=4; System.out.println(getType(a+b)); System.out.println(getType(c+d));
結果:
class java.lang.Integer class java.lang.Integer
那麼這裏能夠得出結論,在數值類型中,若級別小於int,進行計算的時候,最終的數據類型會自動轉換爲int,若是高於int,最終數據結果會取其中最高的一個!