您好,登錄后才能下訂單哦!
文本關鍵字:8種、基本數據類型、整數類型、浮點類型、字符類型、布爾類型
在Java中,所使用到的類型可以分為兩大類,一類是基本數據類型,一共有8種,包含:整數,小數,字符,布爾。另外一類是引用類型,包含:字符串,數組以及各種Java類。
整數類型是一個很常用,也比較簡單的類型,在計算機中以二進制的方式存儲,其中有一位是符號位。
long:-2^63 ~ 2^63 - 1
對于浮點(小數)類型,存儲的方式與整數有所不同,其中符號位固定為1位,另外兩部分為指數部分和小數部分。我們都學過科學計數法的表示方式,對于十進制,小數點前的部分的取值范圍為1-9,在存儲前也會整理成二進制的形式,會變成(+/-)1.b × 2^a。那么指數部分對應的就是a,尾數部分對應的就是b。
對于float,指數部分為8位,尾數部分為23位。對于double,指數部分為11位,尾數部分為52位。
double:約4.9 × 10^-432~1.7 × 10^308,精度為15~16位
對于字符類型,在進行存儲時,也同樣是一個整數,只不過在使用時會進行編碼。說的直白一些就是,建立起了一個數字和字符之間的對應關系,只要明確字符對應的數字,或者直接將字符給出,都能夠正確表示出一個字符。
char
布爾類型是一個范圍最小的數據類型,只用一個二進制位就可以來記錄,0表示false-假,1表示true-真。
當我們在使用一個數據類型時,總會進行一些直接賦值的操作,完整的格式如下:
如:int i = 5;char c = '中';double = 3.14;那么出現在等號右側的值就被稱為字面值。
圖中黑色的部分,可以自動進行轉換,并且不會出現任何使用上的問題,只不過存儲數據空間需要變大些,這也就是由低精度向高精度的轉換。
其中紅色箭頭的部分,也可以自動進行轉換,即:代碼上不需要添加轉換的操作,且編譯不會出現問題。但是在使用時會出現精度丟失的問題,因為對于整數類型,在其所支持的存儲范圍內精度都是可以保證的,而對于float和double類型,精度只有相應的6~7和15~16位,所以在使用時一定要注意!
那什么時候需要手動來進行類型轉換呢?就是與箭頭方向相反時,以及由高精度到低精度來進行賦值操作時,必須要手動進行強制轉換。這意味著,你知道這其中的風險,并一定要這樣做,那么無法被記錄的字節將被直接截斷和丟棄,最高位被識別為符號位。所以,只有當數據本身不會超出目標數據類型時,我們才會進行轉換,否則有可能會得到各種奇怪的結果。
當我們在使用表達式進行計算時,如最基本的四則運算,加減乘除。
short s1 = 40;
short s2 = 40;
short s3 = s1 + s2;// 該行編譯錯誤,why?
short s4 = (short)(s1 + s2);// 編譯通過
對于以上的情況,是因為出現了類型提升,當符號兩側出現整數時,運算結果的類型將被提升為默認的整數類型:int,而將int類型賦值給short是需要類型轉換的。同樣,運算符號兩側出現小數類型時,運算結果的類型將被提升為默認的浮點數類型:double,在賦值給其他變量時同樣要進行類型轉換。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。