
基礎數據類型的相互轉換在 Java 中 , 對于基礎的數據類型轉換是學習的重點之一 , 只有知道了轉換規則才能避免轉換過程中遇到的一些坑 。本篇就來說說數據類型之前的轉換規則 。
對于基礎類型的轉換有兩種方式 。一種由小到大的轉換 , 不會丟失精度 。另一種由大變小的強制轉換 , 有可能有丟失精度和出錯 。
對于基礎類型的轉換 , Java 語言一共提供了 7 種數值類型進行相互轉換 。
根據現有規則把數據類型的轉換分為了兩種情況 , 一種是自動轉換 , 另一種是強制轉換 。
轉換規則(從小到大)
自動轉換從小轉到大的范圍情況下可以自動轉換 , 也可以叫作隱式轉換 。按照數據類型的從小到大自動進行轉換 。
對于自動轉換的規則遵守下面兩個規則:
- 對于需要轉換的數據類型必須要是轉換前的數據類型兼容轉換后的數據類型 。
- 轉換后的數據類型的范圍必須比轉換前的數據類型范圍大 。
byte byteVhttps://www.shwenmu.com/wenda/alue = 'a';// 'a' ASCII is 97short shortValue = byteValue;// 97int intValue = shortValue; // 97long longValue = intValue; // 97float floatValue = longValue; // 97double doubleValue = floatValue; // 97System.out.println(doubleValue);//97char charVhttps://www.shwenmu.com/wenda/alue = 'a'; int intCharValue = https://www.shwenmu.com/wenda/charValue; // 97System.out.println(intCharValue);運行查看:‘
以上是一級一級的往上轉換 。所以不會出現問題 , 哪怕是跳級也是可以的 。
比方說:
byte byteVal = 'b';int intVal= byteVal;或者是:【java中金額為負數設置方法 java正數變負數變成正數】
int intVal2 = 100;double d = intVal2;這樣也沒有問題 。但是如果是下面這樣就有問題了 。long longVal = 100;//這里會報錯 。Type mismatch: cannot convert from long to intint intVal3 = longVal; 如果非要這樣轉 , 并且轉換前的數據也是能夠和更小類型兼容 , 就需要使用強制轉換 。強制轉換強制轉換 , 代表著數據類型的轉換默認無法進行轉換 , 所以需要顯式的進行類型轉換 。
強制類型轉換的格式為在變量的名字前面加上括號寫上基礎類型 。
格式:(需要轉換的基礎類型)變量;
long longValWait = 100;int intConvert = (long)longValWait;想要詳細的了解強制類型轉換 , 需要先了解下面的這個圖:占用字節大的數據類型轉換字節小的就需要強制轉換 。并且轉換的時候需要注意丟失精度的問題 。
讓我看一個會丟失精度的代碼例子:
定義個 short , 規矩定義的規則我們可以得知 byte 的取值范圍是: -128 到 127 。所以當我們定義了不在改取值范圍的值時 , 比方例子中的 128 就會丟失精度 。讓我們看一下丟失的數值跑哪去了 。
首先可以看到 short 的字節是 2 , 也就是占用 16 bit , 但是 byte 只占用 1 位 , 也就是 8 bit 。所以在轉換的時候 , short 的前 8 bit 被丟了 。
并且在類型中 , 最左側的是符號位 。8 位的符號位也就是1 。在計算機處理二進制數的時候 , 符號位 1 代表負值 , 0 代表正值 。所以后面 7 位代表數據的值 。又因為負數在計算機中以補碼形式存在的 。所以還需要轉換成原碼進行計算 。也就是符號位不變的情況下 , 將后面 7 位二進制數即按位取反 。并在最后一位加 1 。
這個時候就遇到了一個特殊的情況也就是 -128 的來源 。因為0 和 -0 是一樣的 。但是對于 0 帶符號來說沒有意義 。而且會有 [0000 0000] 和 [1000 0000] 兩個原碼 。所以也就有了現在的補碼 。
推薦閱讀
- 我來教你Word 2013中輸入編號的快捷方法介紹 我來教你吧日劇百度云資源
- 教你wps2007中把一整頁刪除的操作方法 教你如何反懟回復
- 教你wps2007中關閉屏幕提示功能的相關操作步驟 教你wps怎么刪除空白頁
- 五百越南盾換人民幣多少人民幣多少人民幣,越南500元錢 換中國人民幣多少錢
- 夏天怎么防止貓咪中暑 如何防止貓咪中暑
- 小編分享在三星s10 中設置系統主題的圖文教程。
- 小編教你在三星s10 中刪除瀏覽器記錄的圖文教程。
- 我來教你在魅族note9中更換系統主題的方法講解。
- 我來分享在魅族手機中關閉天氣預報的方法介紹。
- 天門山景區玩多少時間,您好安排了大概一天的時間游天門山看資料說有東中西線請問應
