Java中的數據類型

  Java中的數據類型分爲基本數據類型引用數據類型。java

基本數據類型:java中的基本數據類型與C/C++中的無太大差異,因爲Java虛擬機的緣由,Java中的基本數據類型所佔存儲空間的大小是肯定的不會隨着機器硬件架構的變化而變化,使得Java編寫的程序移植性比C/C++更高。Java中的基本數據類型分爲8種4類。架構

 默認值:整型常量默認爲int型,浮點型常量默認爲double型。spa

類型轉換:code

  自動轉換:當不一樣基本類型進行運算時,所佔內存空間小的類型會自動轉換爲所佔內存大的類型轉換。可是boolean型除外,它不能和其它類型進行計算。blog

byte a = 10;
short b = 100;
int c = 1000;
float f = 1.0f;
double d = 1.12; c = c+a; //a會自動轉換爲int型再與c進行計算。 c = c+b; //b會自動轉換爲int型再與c進行計算。
d = d+f; //f會自動轉換爲double再與d進行計算。
d = c+d; //c會自動轉換爲double型再與d進行計算。

  強制轉換:當你想把所佔內存空間大的類型轉換成小的類型時,就要進行強制轉換了。語法是:(要轉換成的類型)變量名或常量;可是這可能會形成數據丟失,好比把浮點型轉換成整型,那麼小數部分就會丟棄。內存

1 int a;
2 double d = 1.45;
3 a = (int)d;    //a=1

  要注意的是byte是一個特殊的基本類型,當用int型常量賦值給byte變量時,只要不超過byte的取值範圍就不用進行強制轉換,可是:僅限於常量。虛擬機

1 byte b = 100;    //100是int型常量,且沒有超過byte的取值範圍因此不會出現錯誤
2 byte y = (byte)200;   //由於byte的最大正整數爲127,因此200超過了範圍,若是不進行強制轉換會出錯
3 int a = 10;
4 b = (byte)a;  //a是int型變量,當賦值給byte型變量時若是不進行強制轉換會出錯

 

最大值與最小值:以byte型爲例,它的最大值爲28-1,最小值爲-28,爲何最大值會(-1):class

  在Java中是以補碼的形式表示一個數的,當一個數爲正數時它的補碼就是它的補碼,當一個數是負數時,它的補碼等於它的原碼的數值位取反[取反以後變成了反碼]再在最低位加一,並且它的最高位,也就是從左往右的第一位表示符號位,1表示負,0表示正。以3爲例:變量

    +3的原碼:0000 0011;-3的原碼:1000 0011;硬件

    +3的反碼:0000 0011; -3的反碼:1111 1100;

    +3的補碼:0000 0011;-3的補碼:1111 1101;

  由於最高位是符號位,因此一個整數的最大值只能是0111 1111;轉換成十進制就是127,而負數的最小值就是1000 0000,這個是補碼,把它轉成反碼(即最低位-1)得:0111 1111,再轉成原碼得:1000 0000就是-128了。

相關文章
相關標籤/搜索