Java數(shù)據(jù)類型轉(zhuǎn)換的示例詳解
Java程序中要求參與的計算的數(shù)據(jù),必須要保證數(shù)據(jù)類型的一致性,如果數(shù)據(jù)類型不一致將發(fā)生類型的轉(zhuǎn)換。
自動轉(zhuǎn)換
一個int 類型變量和一個byte 類型變量進行加法運算, 結(jié)果會是什么數(shù)據(jù)類型?
public static void main(String[] args) { int i = 1; byte j = 2; // byte t = b + i; // 報錯 //int類型和byte類型運算,結(jié)果是int類型 int k = i + j; System.out.println(k); }
運算結(jié)果,變量的類型將是int 類型,這就是出現(xiàn)了數(shù)據(jù)類型的自動類型轉(zhuǎn)換現(xiàn)象。 自動轉(zhuǎn)換:將取值范圍小的類型自動提升為取值范圍大的類型 。
轉(zhuǎn)換原理
byte 類型內(nèi)存占有1個字節(jié),在和int 類型運算時會提升為int 類型 ,自動補充3個字節(jié),因此計算后的結(jié)果還是int 類型。 同樣道理,當(dāng)一個int 類型變量和一個double 變量運算時, int 類型將會自動提升為double 類型進行運算。
public static void main(String[] args) { int i = 1; double d = 2.5; //int類型和double類型運算,結(jié)果是double類型 //int類型會提升為double類型 double e = d+i; System.out.println(e); }
轉(zhuǎn)換規(guī)則
范圍小的類型向范圍大的類型提升, byte、short、char 運算時直接提升為int 。
byte、short、char‐‐>int‐‐>long‐‐>float‐‐>double
強制轉(zhuǎn)換
將1.5 賦值到int 類型變量會發(fā)生什么?產(chǎn)生編譯失敗,肯定無法賦值。
int i = 1.5; // 錯誤
double 類型內(nèi)存8個字節(jié), int 類型內(nèi)存4個字節(jié)。1.5 是double 類型,取值范圍大于int ??梢岳斫鉃閐ouble 是8 升的水壺, int 是4升的水壺,不能把大水壺中的水直接放進小水壺去。 想要賦值成功,只有通過強制類型轉(zhuǎn)換,將double 類型強制轉(zhuǎn)換成int 類型才能賦值。
強制類型轉(zhuǎn)換:將取值范圍大的類型強制轉(zhuǎn)換成取值范圍小的類型。 比較而言,自動轉(zhuǎn)換是Java自動執(zhí)行的,而強制轉(zhuǎn)換需要我們自己手動執(zhí)行。
轉(zhuǎn)換格式:
數(shù)據(jù)類型 變量名 = (數(shù)據(jù)類型)被轉(zhuǎn)數(shù)據(jù)值;
將1.5 賦值到int 類型,代碼修改為:
// double類型數(shù)據(jù)強制轉(zhuǎn)成int類型,直接去掉小數(shù)點。 int i = (int)1.5;
同樣道理,當(dāng)一個short 類型與1 相加,我們知道會類型提升,但是還想給結(jié)果賦值給short類型變量,就需要強制轉(zhuǎn)換。
注意
- 浮點轉(zhuǎn)成整數(shù),直接取消小數(shù)點,可能造成數(shù)據(jù)損失精度。
- int 強制轉(zhuǎn)成short 砍掉2個字節(jié),可能造成數(shù)據(jù)丟失。
ASCII編碼表
public static void main(String[] args) { //字符類型變量 char c = 'a'; int i = 1; //字符類型和int類型計算 System.out.println(c+i);//輸出結(jié)果是98 }
在計算機的內(nèi)部都是二進制的0、1數(shù)據(jù),如何讓計算機可以直接識別人類文字的問題呢?就產(chǎn)生出了編碼表的概念。
編碼表 :就是將人類的文字和一個十進制數(shù)進行對應(yīng)起來組成一張表格。
將所有的英文字母,數(shù)字,符號都和十進制進行了對應(yīng),因此產(chǎn)生了世界上第一張編碼表ASCII(American Standard Code for Information Interchange 美國標(biāo)準(zhǔn)信息交換碼)。
小貼士: 在char類型和int類型計算的過程中,char類型的字符先查詢編碼表,得到97,再和1求和,結(jié)果為98。char類型提升 為了int類型。char類型內(nèi)存2個字節(jié),int類型內(nèi)存4個字節(jié)。
到此這篇關(guān)于Java數(shù)據(jù)類型轉(zhuǎn)換的示例詳解的文章就介紹到這了,更多相關(guān)Java數(shù)據(jù)類型轉(zhuǎn)換內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud應(yīng)用idea實現(xiàn)可相互調(diào)用的多模塊程序詳解
IDEA 全稱 IntelliJ IDEA,是java編程語言的集成開發(fā)環(huán)境。IntelliJ在業(yè)界被公認(rèn)為最好的Java開發(fā)工具,尤其在智能代碼助手、代碼自動提示、重構(gòu)、JavaEE支持、各類版本工具(git、svn等)、JUnit、CVS整合、代碼分析、 創(chuàng)新的GUI設(shè)計等方面的功能可以說是超常的2022-07-07Spring 整合Shiro 并擴展使用EL表達式的實例詳解
Shiro是一個輕量級的權(quán)限控制框架,應(yīng)用非常廣泛。本文的重點是介紹Spring整合Shiro,并通過擴展使用Spring的EL表達式。需要的朋友可以參考下2018-03-03SpringBoot整合Lucene實現(xiàn)全文檢索的詳細(xì)步驟
全文搜索(Full-Text?Search)是指對大規(guī)模存儲在計算機系統(tǒng)中的文本數(shù)據(jù)進行檢索和匹配的技術(shù),它允許用戶輸入關(guān)鍵字,然后從海量的文本數(shù)據(jù)中快速找到相關(guān)的信息,本文介紹了SpringBoot整合Lucene實現(xiàn)全文檢索的詳細(xì)步驟,需要的朋友可以參考下2024-03-03基于SpringBoot和Vue3的博客平臺文章列表與分頁功能實現(xiàn)
在前面的教程中,我們已經(jīng)實現(xiàn)了基于Spring Boot和Vue3的發(fā)布、編輯、刪除文章功能。本教程將繼續(xù)引導(dǎo)您實現(xiàn)博客平臺的文章列表與分頁功能,需要的朋友可以參考閱讀2023-04-04