java基本数据类型转换
Java 語言是一種強(qiáng)類型的語言。強(qiáng)類型的語言有以下幾個(gè)要求:
變量或常量必須有類型:要求聲明變量或常量時(shí)必須聲明類型,而且只能在聲明以后才能使用。
賦值時(shí)類型必須一致:值的類型必須和變量或常量的類型完全一致。
運(yùn)算時(shí)類型必須一致:參與運(yùn)算的數(shù)據(jù)類型必須一致才能運(yùn)算。
但是在實(shí)際的使用中,經(jīng)常需要在不同類型的值之間進(jìn)行操作,這就需要一種新的語法來適應(yīng)這種需要,這個(gè)語法就是數(shù)據(jù)類型轉(zhuǎn)換。
在數(shù)值處理這部分,計(jì)算機(jī)和現(xiàn)實(shí)的邏輯不太一樣,對(duì)于現(xiàn)實(shí)來說,1和 1.0 沒有什么區(qū)別,但是對(duì)于計(jì)算機(jī)來說,1 是整數(shù)類型,而 1.0 是小數(shù)類型,其在內(nèi)存中的存儲(chǔ)方式以及占用的空間都不一樣,所以類型轉(zhuǎn)換在計(jì)算機(jī)內(nèi)部是必須的。
Java 語言中的數(shù)據(jù)類型轉(zhuǎn)換有兩種:
自動(dòng)類型轉(zhuǎn)換:編譯器自動(dòng)完成類型轉(zhuǎn)換,不需要在程序中編寫代碼。
強(qiáng)制類型轉(zhuǎn)換:強(qiáng)制編譯器進(jìn)行類型轉(zhuǎn)換,必須在程序中編寫代碼。
由于基本數(shù)據(jù)類型中 boolean 類型不是數(shù)字型,所以基本數(shù)據(jù)類型的轉(zhuǎn)換是出了 boolean 類型以外的其它 7 種類型之間的轉(zhuǎn)換。下面來具體介紹兩種類型轉(zhuǎn)換的規(guī)則、適用場(chǎng)合以及使用時(shí)需要注意的問題。
自動(dòng)類型轉(zhuǎn)換
自動(dòng)類型轉(zhuǎn)換,也稱隱式類型轉(zhuǎn)換,是指不需要書寫代碼,由系統(tǒng)自動(dòng)完成的類型轉(zhuǎn)換。由于實(shí)際開發(fā)中這樣的類型轉(zhuǎn)換很多,所以 Java 語言在設(shè)計(jì)時(shí),沒有為該操作設(shè)計(jì)語法,而是由 JVM 自動(dòng)完成。
轉(zhuǎn)換規(guī)則:從存儲(chǔ)范圍小的類型到存儲(chǔ)范圍大的類型。
具體規(guī)則為:byte→short(char)→int→long→float→double
也就是說 byte 類型的變量可以自動(dòng)轉(zhuǎn)換為 short 類型,示例代碼:
byte b = 10; short? sh? =? b;這里在賦值時(shí),JVM 首先將 b 的值轉(zhuǎn)換為 short 類型,然后再賦值給 sh。
在類型轉(zhuǎn)換時(shí)可以跳躍。示例代碼:
注意問題:在整數(shù)之間進(jìn)行類型轉(zhuǎn)換時(shí),數(shù)值不發(fā)生改變,而將整數(shù)類型,特別是比較大的整數(shù)類型轉(zhuǎn)換成小數(shù)類型時(shí),由于存儲(chǔ)方式不同,有可能存在數(shù)據(jù)精度的損失。
?
強(qiáng)制類型轉(zhuǎn)換
強(qiáng)制類型轉(zhuǎn)換,也稱顯式類型轉(zhuǎn)換,是指必須書寫代碼才能完成的類型轉(zhuǎn)換。該類類型轉(zhuǎn)換很可能存在精度的損失,所以必須書寫相應(yīng)的代碼,并且能夠忍受該種損失時(shí)才進(jìn)行該類型的轉(zhuǎn)換。
轉(zhuǎn)換規(guī)則:從存儲(chǔ)范圍大的類型到存儲(chǔ)范圍小的類型。
具體規(guī)則為:double→float→long→int→short(char)→byte
語法格式為:(轉(zhuǎn)換到的類型)需要轉(zhuǎn)換的值
示例代碼:
double d = 3.10; int n = (int)d; 這里將 double 類型的變量 d 強(qiáng)制轉(zhuǎn)換成 int 類型,然后賦值給變量 n。需要說明的是小數(shù)強(qiáng)制轉(zhuǎn)換為整數(shù),采用的是“去 1 法”,也就是無條件的舍棄小數(shù)點(diǎn)的所有數(shù)字,則以上轉(zhuǎn)換出的結(jié)果是 3。整數(shù)強(qiáng)制轉(zhuǎn)換為整數(shù)時(shí)取數(shù)字的低位,例如 int 類型的變量轉(zhuǎn)換為 byte 類型時(shí),則只去 int 類型的低 8 位(也就是最后一個(gè)字節(jié))的值。
示例代碼:
則 b 的值還是 123,而 b1 的值為-46。b1 的計(jì)算方法如下:m 的值轉(zhuǎn)換為二進(jìn)制是10011010010,取該數(shù)字低8位的值作為b1的值,則b1的二進(jìn)制值是11010010,按照機(jī)器數(shù)的規(guī)定,最高位是符號(hào)位,1 代表負(fù)數(shù),在計(jì)算機(jī)中負(fù)數(shù)存儲(chǔ)的是補(bǔ)碼,則該負(fù)數(shù)的原碼是 10101110,該值就是十進(jìn)制的-46。
注意問題:強(qiáng)制類型轉(zhuǎn)換通常都會(huì)存儲(chǔ)精度的損失,所以使用時(shí)需要謹(jǐn)慎。
總結(jié)
以上是生活随笔為你收集整理的java基本数据类型转换的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Myeclipse实现快速调试
- 下一篇: java 空指针异常(java.lang