Java資料型別
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
開發工具與關鍵技術:eclipse與java
作者:黃富滔
撰寫時間:2021年02月02日
知識點羅列:
注意兩個默認:在eclipse中,默認輸入的整數是int型別,輸入的小數默認是double型別。如果使用到long資料型別時,在數字后面加L。如果使用到float型別時,需要在小數后面加F。
Java資料型別分為兩大資料型別
1、基本資料型別
基本資料型別又分三種
1.0 數字型別
數字型別分兩種:
(1)整數型 byte、short、int、long(準確值)
(2)浮點型 float、double(近似值)
2.0 符型別:char(沒有符號位,0占一位)
3.0 布爾型:boolean
2、參考資料型別(也就是基本資料型別的包裝類)看似沒有沒有區別,但是本質上面是有區別的。
各基本資料型別的參考型別: 記住兩個特殊一點的,一個int的包裝類Integer,另外一個char的包裝類Character。其他都是將首字母改為了大寫。
參考資料型別的特征:1.0物件、陣列都是參考資料型別。
2.0所有參考型別的默認值都是null。
3.0 一個參考變數可以用來參考與任何與之兼容的型別。
基本資料型別--->包裝類(參考資料型別)
裝箱: 基本資料型別轉換為對應的包裝型別別的程序
拆箱: 對應的包裝型別別轉換為基本資料型別的程序
Byte b2=12;byte byte3=b2;--->直接將參考型別轉換成基本資料型別。從JDK1.5開始支持自動裝箱和拆箱。
包裝類的作用:一、方便我們以后再需要物件的時候,能夠把基本的資料型別轉換物件。二、提供了很多方法/工具類。
資料型別的轉換:有隱式轉換和顯式轉換
隱式轉換:從小范圍的自動轉換到大范圍的。例如: byte b1=111;long long1=b1+1; (這里面涉及到了兩個隱式轉換,第一次將b1先轉換為int型別,第二次將int型別的計算結果 再轉換long型別)
注意:
1.0 char型別是可以隱式轉換為范圍比char型別大的資料型別的;例如long、int、float、double。轉換后列印出來也就是該字符的字符編碼。意思就是如果你想獲取到某個字符的字符編碼,可以使用這個方法去嘗試一下。
2.0 從float型別轉換為double型別,轉換結果可能會出現近似值。但是按照標準來說,不能說是精度損失。浮點數本身就是不準確的。
顯式轉換:范圍大的轉換到范圍小的或者是包裝類之間的轉換(整數型會導致記憶體溢位,浮點數既有精度丟失也有記憶體溢位。上面的情況只在超出范圍小的情況下出現)
轉換方式:1.0強制轉換
2.0通過包裝類來轉換
整形與String包裝類之間的轉換
int int2str=1000;String Str1=String.valueOf(int2str);使用String包裝類自帶的方法valueof即可將整形轉換為String包裝類。其實大部分其他型別的資料都是使用String自帶的方法valueof進行轉換的。
數字型別中整數型轉換為浮點型的時候也有可能出現精度丟失,但是在整數型之間進行轉換的話是沒有精度丟失的,包括char字符型向范圍比char大的整數型轉換的時候也是沒有精度丟失的(char其實它內部也是通過整形來存放的)。
浮點數與整數之間的轉換通過舍棄小數得到,而不是四舍五入。
了解原碼、反碼、補碼(正數的補碼和反碼都是其本身,也就是原碼)
計算機記憶體運算用的是補碼,記憶體中的強制轉換就是把多余的部分去掉。在計算機中,第一位如果是0,代表的是正數,第一位如果是1,代表的是負數。
例如將int型別強制轉換為byte型別int int1=128;
計算機會將十進制的129轉換為二進制的數值1000 0001;然后int型別的記憶體位數為32位 ,二進制數1000 0001要在前面補上24位,補上之后也就是 00000000 00000000 00000000 10000001。
00000000 00000000 00000000 10000001 原碼、反碼、補碼(正數的反碼和補碼跟原碼是一樣的)
如果將int129強制轉換為byte型別的129的話,因為byte型別記憶體位數為8位,所以在強制轉換的時候會把多余的部分去掉,去掉后后為10000001(補碼)。10000001第一位為1,所以為負數。因為負數的補碼是在其反碼的基礎上+1,所以反碼為10000000。負數的反碼是符號位保持不變,其余位取反。第一位為1,故為負數;所以其反碼10000000的原碼為11111111。第一位符號位,1代表負,其余七位的二進制數的1111111轉換為十進制為127,所以最終結果為-127。
精度丟失:在計算機當中,計算浮點數的時候可能不會計算出準確值。計算機中以二進制的方式存盤或計算,當你計算浮點數的時候會將其他進制的數轉換為二進制去計算,所以會出現精度丟失。不能用浮點數去計算錢等。
對于基本資料型別的取值范圍,如果我們已經忘記了,可以用包裝類里面已經定義好的一些常量來進行列印輸出即可知道基本資料型別的取值范圍。
例如byte 獲取記憶體位數 Byte.SIZE
獲取最大值 Byte.MAX_VALUE
獲取最小值 Byte.MIN_VALUE
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/255736.html
標籤:Java SE
上一篇:2021-02-02:力扣424. 替換后的最長重復字符。如何用代碼實作?
下一篇:java的運算順序是怎么樣的?
