Java基本數據類型與類型轉換

Java基本數據類型與類型轉換

文本關鍵字:8種、基本數據類型、整數類型、浮點類型、字符類型、布爾類型java

1、基本數據類型

1. 概述

在Java中,所使用到的類型能夠分爲兩大類,一類是基本數據類型,一共有8種,包含:整數,小數,字符,布爾。另一類是引用類型,包含:字符串,數組以及各類Java類。數組

2. 整數類型

整數類型是一個很經常使用,也比較簡單的類型,在計算機中以二進制的方式存儲,其中有一位是符號位。ide

  • byte:-2^7 ~ 2^7 - 1
    • 1字節
    • 8bit
  • short:-2^15 ~ 2^15 - 1
    • 2字節
    • 16bit
  • int:-2^31 ~ 2^31 - 1
    • 4字節
    • 32bit
  • long:-2^63 ~ 2^63 - 1編碼

    • 8字節
    • 64bit

      3. 浮點類型

      對於浮點(小數)類型,存儲的方式與整數有所不一樣,其中符號位固定爲1位,另外兩部分爲指數部分和小數部分。咱們都學過科學計數法的表示方式,對於十進制,小數點前的部分的取值範圍爲1-9,在存儲前也會整理成二進制的形式,會變成(+/-)1.b × 2^a。那麼指數部分對應的就是a,尾數部分對應的就是b。
      對於float,指數部分爲8位,尾數部分爲23位。對於double,指數部分爲11位,尾數部分爲52位。code

  • float:約1.4 × 10^-45~3.4 × 10^38,精度爲6~7位
    • 4字節
    • 32bit
  • double:約4.9 × 10^-432~1.7 × 10^308,精度爲15~16位blog

    • 8字節
    • 64bit

      4. 字符類型

      對於字符類型,在進行存儲時,也一樣是一個整數,只不過在使用時會進行編碼。說的直白一些就是,創建起了一個數字和字符之間的對應關係,只要明確字符對應的數字,或者直接將字符給出,都可以正確表示出一個字符。字符串

  • charit

    • 2字節
    • 16bit

      5. 布爾類型

      布爾類型是一個範圍最小的數據類型,只用一個二進制位就能夠來記錄,0表示false-假,1表示true-真。編譯

  • boolean:true/false
    • 1字節
    • 1bit

      6. 字面值

      當咱們在使用一個數據類型時,總會進行一些直接賦值的操做,完整的格式以下:class

  • 數據類型 變量名稱 = 變量值

如:int i = 5;char c = '中';double = 3.14;那麼出如今等號右側的值就被稱爲字面值。

  • 整數類型字面值
    • 默認十進制(int類型):136,當很是大的數須要用long存儲時結尾須要添加字母L/l
    • 二進制(0b開頭):0b101
    • 八進制(0開頭):073
    • 十六進制(0x開頭):0xAC23
  • 浮點類型字面值
    • 單精度(以F/f結尾):236.935f
    • 雙精度(默認小數類型):68263.2811

2、數據類型轉換

Java基本數據類型與類型轉換

1. 自動類型轉換

圖中黑色的部分,能夠自動進行轉換,而且不會出現任何使用上的問題,只不過存儲數據空間須要變大些,這也就是由低精度向高精度的轉換。
其中紅色箭頭的部分,也能夠自動進行轉換,即:代碼上不須要添加轉換的操做,且編譯不會出現問題。可是在使用時會出現精度丟失的問題,由於對於整數類型,在其所支持的存儲範圍內精度都是能夠保證的,而對於float和double類型,精度只有相應的6~7和15~16位,因此在使用時必定要注意!

2. 強制類型轉換

那何時須要手動來進行類型轉換呢?就是與箭頭方向相反時,以及由高精度到低精度來進行賦值操做時,必需要手動進行強制轉換。這意味着,你知道這其中的風險,並必定要這樣作,那麼沒法被記錄的字節將被直接截斷和丟棄,最高位被識別爲符號位。因此,只有當數據自己不會超出目標數據類型時,咱們纔會進行轉換,不然有可能會獲得各類奇怪的結果。

3. 表達式中的類型提高

當咱們在使用表達式進行計算時,如最基本的四則運算,加減乘除。

short s1 = 40;
short s2 = 40;
short s3 = s1 + s2;// 該行編譯錯誤,why?
short s4 = (short)(s1 + s2);// 編譯經過

對於以上的狀況,是由於出現了類型提高,當符號兩側出現整數時,運算結果的類型將被提高爲默認的整數類型:int,而將int類型賦值給short是須要類型轉換的。一樣,運算符號兩側出現小數類型時,運算結果的類型將被提高爲默認的浮點數類型:double,在賦值給其餘變量時一樣要進行類型轉換。

相關文章
相關標籤/搜索