1. 程式人生 > >java的8種基本資料型別總結

java的8種基本資料型別總結

java中只有8種基本資料型別,除了這8種,其餘的都是引用型別。 分類: 第一類:邏輯型 boolean 第二類: 整型 byte short int long 第三類:字元型 char 第四類:浮點型 float double 基本資料型別在棧中可以直接分配記憶體,引用型別是資料的引用在棧中,但是它的物件在堆中。 佔用位元組: boolean: 1/8(即1位) byte: 1 char: 2 shot: 2 int: 4 float: 4 double: 8 long:8 java中預設的整數是int型,要想定義為long型,要在數值後加l或L; 預設的浮點型是double,要想定義為float,要在數值後加f或F。
基本資料型別自動轉換時,小可轉大,大轉小需要強轉,會失去r精度。 基本資料型別與包裝器類的區別: 包裝器類繼承Object, 可以重寫equals,hashcode等Object裡的方法;可以為null; 包裝器類的物件存在堆中,引用存放在棧中, 基本資料型別只存放在棧中。 浮點型(double float)不能表示精確的值,如貨幣 double型別是8個位元組,有效位15位。其中52小數,11位偏指數,1位符號。其中1.1是沒有辦法用二進位制精確表示的。1.1的二進位制大約就是這樣1.0001100110011001 一直是小數部分一直是1001所以,只能取一個52精度的數近似代替1.1.因此,最終結果肯定會有誤差。
同理,任意一個整數都是可以使用二進位制精確表示,所以只要不超過精度總可以精確表示,但是小數往往不能使用二進位制精確表示。 因此,java引入了一個物件BigDecimal BigDecimal b1 = new BigDecimal("2.0"); BigDecimal b2 = new BigDecimal("1.1");  System.out.println(b1.subtract(b2)); 這樣就可以得到精確的0.9. tips:構造BigDecimal物件使用浮點數只能使用字串,如果直接使用浮點數,依然會丟失精度。所以需要高精度的浮點數計算時,資料庫中最好直接定義為varchar型,以免轉換。