基本數據類型

1.Java語言有8種基本數據類型


2.int類型
(1)int
是最常用的整數類型,一個int類型的變量佔用4個字節,即32位的內存空間。Int的最大表示範圍爲:-231231-1,即-2147483648~2147483647,大約正負21個億多些
(2)
整數直接量是int類型
a.
整數的直接量的類型默認爲int類型,如果直接寫出的整數超過了int的表達範圍,將會出現編譯錯誤
b.
除了通常的十進制數字形式,整數直接量也可以寫成16進制的形式(以0X0x開頭)或8進制的形式(以0開頭)
如:

        int a =100000;// 10進制

        int b = 0x186a0;// 16進制

        int c = 0303240;// 8進制

 
(3)
兩個整數相除,會捨棄小數的部分(注意:不是四捨五入),結果也是整數
如:

      inttotal = 87;

      int error = 23;

      int percent = error / total * 100;

      System.out.println(percent+"%");//結果爲0%23除以87整數部分爲0,乘以100,爲0

      percent = 100 * error / total;

      System.out.println(percent +"%");// 結果爲26%230除以87整數部分爲26

(4)當兩個整數進行運算時, 其結果可能會超過整數的範圍而發生溢出,正數過大而產生的溢出,結果爲負數;負數過大而產生的溢出,結果爲正數
如:     

       inta = 2147483647;//int類型整數的上限

       int b = -2147483648;//int類型整數的下限

       a = a + 1;

       b = b - 1;

       System.out.println("a=" +a);//輸出結果: a=-2147483648溢出,結果錯誤

       System.out.println("b=" +b);//輸出結果: b=2147483647溢出,結果錯誤


3.long
類型
(1)
在表示整數時,如果int類型的範圍不夠,可以使用long類型,一個long型的變量佔用8個字節(即64位),最大表示範圍爲:-263 ~ 263-1,即 -9223372036854775808 ~9223372036854775807
如果要表示long直接量,需要以 L l結尾
       long a =10000000000;//會有編譯錯誤,因爲10000000000編譯器認爲是int類型,而這個值,已經超出了int的範圍

       long b = 10000000000l;//正確

(2)對於較大的整數運算(超過int的表達範圍),可以使用long

        long distance1 = 10000 * 365 * 24 * 60 * 60 * 299792458l;//必須有一個long型數據參與的運算結果纔是long

      System.out.println("distance1="+distance1);//distance1=547836957965889536結果正確

        long distance2 = 10000 * 365 * 24 * 60 * 60 * 299792458;

       System.out.println("distance2="+ distance2);

       //distance2=-1973211136 溢出,=號後面的數據默認爲int類型,超出了範圍,發生溢出

(3)JDK提供 System.currentTimeMillis()方法,返回197011日零點到此時此刻所經歷的毫秒數,數據太大,故其數據類型爲long
           long time =System.currentTimeMillis();

          System.out.println(time);//輸出的結果爲: 1399086735887

通過上面的代碼可以看出,輸出的結果已經超出int類型的最大值,因此,JDK設計的返回類型爲long型,該方法常常被用於計時操作
 

4.double類型
(1)2進制系統中無法精確的表示1/10,就好像十進制系統中無法精確的表示1/3一樣,所以,2進製表示10進制會有一些舍入誤差,對於一些要求精確運算的場合會導致代碼的缺陷
   double money = 3.0;

       double price = 2.9;

       System.out.println(money - price);//輸出的結果是: 0.10000000000000009

如果需要精確的運算可以考慮放棄使用double或float而採用BigDecimal 類來實現
(2)浮點數的直接量有兩種寫法:1)通常寫法,如:3.14、314、0.1、.5。 2)科學計數法,如:1.25E2、1.25e2、1.25E-2。其中,1.25E2表示1.25乘以10的2次方
默認的浮點直接量爲double型,如果需要表示float類型的直接量,需要加“f”或“F”後綴

5.char類型
(1)字符類型char事實上是一個16位無符號整數(都是正數),這個值是對應字符的編碼,Java字符類型採用Unicode字符集編碼,而Unicode是世界通用的定長字符集,所有的字符都是16位來表示
例如:字符a實際的值爲97,字符A實際的值爲65,字符0實際的值爲48
   char c1 = ‘’;//c1中存的是的編碼

       char c2 ='\u4e2d';//‘4e2d’所對應的16Unicode編碼的16進製表示形式

       System.out.println(c1);

       System.out.println(c2);

如上代碼的輸出結果:c1的值爲中,c2值也爲中,但c1和c2內部存儲的其實是”中”這個字符所對應的Unicode碼,即:一個無符號的整數
(2)對char型變量賦值
三種方式:
a.字符直接量:形如‘A’,變量中實際存儲的是該字符的Unicode編碼,一個char型變量只能存儲一個字符

char c1 ='A';  
b.整型直接量:範圍在0~65535之間的整數,變量中實際存儲的即該整數值,但表示的是該整數值所對應的Unicode字符

char c2 = 65; 
c.Unicode形式:形如‘\u0041’,Unicode字符的16進制形式

char c3 ='\u0041';

(3)使用轉義字符
字符直接量需要包含在一對’’單引號之中,那如果想表示單引號’的字符時,需要怎麼表示?想表示回車、換行符時,怎麼表示?因爲單引號爲特殊意義的字符,那麼,對於不方便輸出的字符可以採用轉義字符來表示

      char c ='\\';

       System.out.println(c);//輸出的結果爲:\

 


6.boolean類型

boolean類型適用於關係、邏輯運算, 表示某個條件是否成立, 只允許取值true或false,true表示條件成立, 而false表示條件不成立
boolean型變量經常用於存儲關係運算的結果,所謂關係運算就是比較兩個變量的大小相等等關係
    int age = 18;

          boolean isChild = age<16;

          System.out.println(isChild);// isChild的值爲false

          boolean running =true;

          boolean closed =false;

 

7.類型間的轉換
(1).類型間轉換
a.自動類型轉化(隱式類型轉換):從小類型到大類型可以自動完成


b.強制轉化:從大類型到小類型需要強制轉換符
語法:(需要轉換成的類型)變量
因爲大類型的精度值大於小類型,取值範圍大於小類型,所以,當使用強制轉化時,有可能會造成精度的損失或者溢出,所以,在使用強制轉化時要求顯式的告訴編譯器,正在進行強制轉換
(2).強制轉換時的精度喪失和溢出
   int a = 100;

       int b = 200;

       long c = a + b;//自動將int轉化爲long

       long l1 = 1024l;

       int i = (int) l1;//需要加強制轉化符由於1024int的範圍內,所以沒有產生溢出

       long l = 1024L * 1024 * 1024 * 4;

       int j = (int) l;//會產生溢出

       System.out.println(j);//結果爲:0

       double pi = 3.1415926535897932384;

       float f = (float) pi;//會造成精度的損失,因爲單精度的精確度小於double

       System.out.println(f);//結果爲:3.1415927

(3).數值運算時的自動轉換
如果在一個表達式中出現了多種數據類型,則運算結果會自動的向較大的類型進行轉化
  //由於有long型的直接量參與,整個表達式的結果爲long

       long distance = 10000 * 365 * 24 * 60 * 60 * 299792458l;

       //由於有double型的直接量599.0參與,整個表達式的結果爲 double

       double change = 800 - 599.0;

       //結果爲0.0,右邊都是int型數據運算結果也爲int類型,結果爲0,再賦值給double

       //型,將0轉化爲 0.0

       double persent1 = 80 / 100;

       //結果爲0.8,右邊表達式有double型直接量參與,運算結果爲double

       double persent2 = 80.0 / 100;

(4).byte、char、short轉換爲int
a.int直接量可以直接賦值給byte、char和short,只要不超過其表示範圍

    byte b = 97;

          short s = 97;

          char c = 97;

b.byte、char、short三種類型參與運算時,先一律轉換成int類型再進行運算
       byte b = 97;

       int num = b + b;//num的值爲194

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