java中数据类型转换、ASCII编码
數(shù)據(jù)類型轉(zhuǎn)換:
JAVA語(yǔ)言中要求參與計(jì)算的數(shù)據(jù)類型要保持一致,如果不一致則會(huì)發(fā)生數(shù)據(jù)類型轉(zhuǎn)換,數(shù)據(jù)類型轉(zhuǎn)換可分為:自動(dòng)類型轉(zhuǎn)換(隱式轉(zhuǎn)換)和強(qiáng)制類型轉(zhuǎn)換(顯式轉(zhuǎn)換)。
自動(dòng)類型轉(zhuǎn)換:代碼不需要特殊處理,自動(dòng)轉(zhuǎn)換;要求數(shù)據(jù)范圍從小到大(數(shù)據(jù)范圍小的可以向數(shù)據(jù)范圍大的轉(zhuǎn)換)。
/*注意:如果注釋中含中文,那么在編譯時(shí)會(huì)獲取操作系統(tǒng)的編碼格式gbk,此時(shí)會(huì)報(bào)錯(cuò): 編碼 GBK 的不可映射字符;其中一種解決方法是在編譯時(shí)指明編碼格式,加-encoding UTF-8字符,如:javac -encoding UTF-8 DataType.java */ public class DataType{public static void main(String[] args){// 1.整數(shù)默認(rèn)是int類型:System.out.println(88);//88// 2.浮點(diǎn)數(shù)默認(rèn)是double類型:System.out.println(5.21);//5.21// 3.int類型轉(zhuǎn)long類型:long類型的變量在賦值時(shí)后面要加L,但是不加也會(huì)自動(dòng)加上,不會(huì)報(bào)錯(cuò),如:long num1 = 5L;System.out.println(num1);//5long num2 = 5;System.out.println(num2);//5// 4.float類型可以自動(dòng)轉(zhuǎn)double類型,但是double類型不能被自動(dòng)轉(zhuǎn)換為float類型:double num3 = 5.2F;System.out.println(num3);//5.199999809265137// 5.當(dāng)取值范圍大的數(shù)據(jù)類型向取值范圍小的數(shù)據(jù)類型自動(dòng)轉(zhuǎn)換時(shí),會(huì)報(bào)錯(cuò):float num4 = 5.2;System.out.println(num4);//報(bào)錯(cuò):不兼容的類型: 從double轉(zhuǎn)換到float可能會(huì)有損失} }強(qiáng)制類型轉(zhuǎn)換:自動(dòng)轉(zhuǎn)換只能對(duì)取值范圍小的向取值范圍大的數(shù)據(jù)類型轉(zhuǎn)換,若想要取值范圍大的向取值范圍小的數(shù)據(jù)類型轉(zhuǎn)換,此時(shí)就需要強(qiáng)制轉(zhuǎn)換對(duì)代碼進(jìn)行格式處理,其格式:取值小范圍數(shù)據(jù)類型關(guān)鍵字 變量名 = (取值范圍小的數(shù)據(jù)類型關(guān)鍵字)取值范圍大的數(shù)據(jù)
數(shù)據(jù)溢出:當(dāng)取值范圍大的數(shù)據(jù)的值本身不是很大或很小時(shí),可以正常轉(zhuǎn)換且值不變,但是當(dāng)值本身特別大或特別小時(shí),此時(shí)會(huì)發(fā)生數(shù)據(jù)溢出,即數(shù)據(jù)增大或減小到某類型的取值范圍內(nèi)。
精度損失:當(dāng)浮點(diǎn)型向整型轉(zhuǎn)換時(shí),會(huì)自動(dòng)丟棄小數(shù)部分,并非四舍五入。
public class DataType2 {public static void main(String[] args){// 1.整數(shù)型默認(rèn)數(shù)據(jù)類型為int:int num1 = 8;System.out.println(num1);//8// 2.long數(shù)據(jù)類型的取值范圍比int數(shù)據(jù)類型的取值范圍大,取值范圍大的向取值范圍小的自動(dòng)轉(zhuǎn)換時(shí)會(huì)報(bào)錯(cuò),此時(shí)可以強(qiáng)制轉(zhuǎn)換:// int num2 = 6L;// System.out.println(num2);//錯(cuò)誤: 不兼容的類型: 從long轉(zhuǎn)換到int可能會(huì)有損失// 3.強(qiáng)制類型轉(zhuǎn)換:格式:小范圍數(shù)據(jù)類型關(guān)鍵字 變量名 = (小范圍數(shù)據(jù)類型關(guān)鍵字) 取值范圍大的數(shù)據(jù)int num3 = (int) 6L;System.out.println(num3);//6// 4.數(shù)據(jù)溢出:當(dāng)轉(zhuǎn)換后的值不在某個(gè)數(shù)據(jù)取值范圍內(nèi)時(shí),會(huì)發(fā)生數(shù)據(jù)溢出(可理解為裝不下)。int num4 = (int) 8888888888L;System.out.println(num4);//298954296// 5.精度損失:小數(shù)轉(zhuǎn)整數(shù)時(shí),小數(shù)部分會(huì)舍棄,并非四舍五入,只留下整數(shù)部分:int num5 = (int) 5.20;System.out.println(num5);//5// 6.byte、char、short三類型可以發(fā)生數(shù)學(xué)運(yùn)算,在運(yùn)算前首先會(huì)提升為int類型后在參與計(jì)算,如:char str = 'f';System.out.println(str + 1);//103,數(shù)據(jù)在計(jì)算機(jī)中是二進(jìn)制儲(chǔ)存的,二進(jìn)制本身就是數(shù)字形式,// 7.BOOlean類型不能發(fā)生數(shù)據(jù)類型轉(zhuǎn)換:boolean flag = false;int num6 = (int) flag;System.out.println(flag);//錯(cuò)誤: 不兼容的類型: boolean無(wú)法轉(zhuǎn)換為int} }ASCII編碼表:
在計(jì)算機(jī)的內(nèi)部都是二進(jìn)制的0、1數(shù)據(jù),為讓計(jì)算機(jī)可以直接識(shí)別人類文字,于是產(chǎn)生了編碼表的概念。
ASCII全稱American Standard Code for Information Interchange ,意為:美國(guó)標(biāo)準(zhǔn)信息交換碼,它只包含了美國(guó)語(yǔ)言中所對(duì)應(yīng)的將所有的英文字母,數(shù)字,符號(hào)都和十進(jìn)制數(shù)字進(jìn)行了一一對(duì)應(yīng)的關(guān)系,它屬于Unicode(萬(wàn)國(guó)表)中的一部分。
提示:本文圖片等素材來(lái)源于網(wǎng)絡(luò),若有侵權(quán),請(qǐng)發(fā)郵件至郵箱:810665436@qq.com聯(lián)系筆者刪除。
筆者:苦海
總結(jié)
以上是生活随笔為你收集整理的java中数据类型转换、ASCII编码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 共聚焦图片怎么加标尺_科研教程|利用PS
- 下一篇: c 获取mysql安装路径_linux查