基本數(shù)據(jù)類型有四類八種,相互之間有著包含與被包含的關(guān)系。 比如9,它既可以是字節(jié)型,也可以是短整型,也可以是整型,長(zhǎng)整型,甚至還可以是一個(gè)字符。 那他們之間是如何轉(zhuǎn)化的呢? 一、自動(dòng)轉(zhuǎn)換看下面例子: 2和2.0,在我們的認(rèn)知中,可能就覺得它們其實(shí)就是一回事,但是在Java世界里,它們對(duì)應(yīng)不同的數(shù)據(jù)類型。 2這個(gè)常數(shù)默認(rèn)是int類型的,當(dāng)它賦值給一個(gè)double類型的時(shí)候,輸出時(shí)就會(huì)自動(dòng)轉(zhuǎn)換。 代碼執(zhí)行過程中 其中大小范圍如下: byte、short、char < int < long < float < double 再看一個(gè)例子: 1,它既可以是byte、也可以是short、char、int、long,但是在運(yùn)算時(shí)會(huì)自動(dòng)轉(zhuǎn)換成int。 所以:b1+b2=2(這個(gè)2是int類型) 無法將int類型的數(shù)值賦值給byte類型。 同理我們可以依次證明 二、強(qiáng)制轉(zhuǎn)換前面我們將一個(gè)int類型的數(shù)據(jù)賦值給一個(gè)double類型,它會(huì)完成自動(dòng)轉(zhuǎn)換。 那反過來會(huì)怎么樣? 1.2默認(rèn)是double數(shù)據(jù)類型,當(dāng)把一個(gè)double數(shù)據(jù)類型的數(shù)據(jù)賦值給一個(gè)int類型時(shí),編譯會(huì)報(bào)錯(cuò)。 這個(gè)時(shí)候我們就需要強(qiáng)制轉(zhuǎn)換了 由此我們可以理解強(qiáng)制轉(zhuǎn)換的概念:
轉(zhuǎn)換格式: int i=(int)1.2; 數(shù)據(jù)類型 變量名 = (數(shù)據(jù)類型)被轉(zhuǎn)數(shù)據(jù)值; 也就是一個(gè)括號(hào)加上需要強(qiáng)制轉(zhuǎn)換的數(shù)據(jù)類型,強(qiáng)制轉(zhuǎn)換后會(huì)發(fā)現(xiàn),i從1.2變成1了。 綜上我們可以發(fā)現(xiàn):自動(dòng)轉(zhuǎn)換時(shí)是Java自動(dòng)執(zhí)行的不需要我們參與,而強(qiáng)制轉(zhuǎn)換需要我們自己手動(dòng)執(zhí)行。 轉(zhuǎn)換原理: 前面我們學(xué)習(xí)了字節(jié),其取值范圍為[-128,127] 忘記了,可以做個(gè)回顧:基本數(shù)據(jù)類型 定義一個(gè)byte類型的變量,賦值一個(gè)在它范圍之外的一個(gè)數(shù),比如257 結(jié)果為何為1? 257超過了byte類型的取值范圍,默認(rèn)為int類型,int類型4個(gè)字節(jié),也就是32位。 強(qiáng)制轉(zhuǎn)換為byte類型,會(huì)丟失前三個(gè)字節(jié)的數(shù)據(jù)。 故:強(qiáng)轉(zhuǎn)有風(fēng)險(xiǎn),操作需謹(jǐn)慎
三、ASCII編碼表在學(xué)習(xí)二進(jìn)制中我們便知道了計(jì)算機(jī)底層都是二進(jìn)制數(shù)據(jù)(0和1) 那如何讓計(jì)算機(jī)識(shí)別人類的文字呢? 于是就產(chǎn)生出了編碼表的概念。 編碼表 就是將人類的字符和一個(gè)十進(jìn)制數(shù)進(jìn)行對(duì)應(yīng)起來組成一張表格。 表中每個(gè)字符都對(duì)應(yīng)了一個(gè)十進(jìn)制數(shù)值,如下: 記住最常見的幾個(gè):
PS:0~9是字符時(shí),也有對(duì)應(yīng)的十進(jìn)制數(shù)字 每個(gè)字符都對(duì)應(yīng)一個(gè)數(shù)值。如果要進(jìn)行數(shù)值運(yùn)算,字符可以 代表其對(duì)應(yīng)的數(shù)值,比如char轉(zhuǎn)int: int i ='0';//此時(shí)'0'是一個(gè)字符而不是一個(gè)數(shù)字 System.out.println(i);//結(jié)果是48 System.out.println('0'+1)//結(jié)果是49 總結(jié): |
|