歡迎訪問我的博客,同步更新: 楓山別院
基于Java 8
類型是什么牺蹄,從哪里來的
從這節(jié)開始忘伞,我們就正式進(jìn)入編程語(yǔ)言的學(xué)習(xí)了。
我先提個(gè)問題考一下大家:
1 + 1 = 沙兰?
這個(gè)非常簡(jiǎn)單氓奈,在計(jì)算正確的情況下,不出意外應(yīng)該是等于2
.幼兒園的小朋友在沒看過那個(gè)小品的情況下鼎天,基本都能算對(duì)舀奶。
那么,請(qǐng)問:
A + B = 斋射?
也許是AB育勺?
或者BA?
或者123
嗎罗岖?
可以說涧至,沒有人知道等于什么。英文字母不能做加法計(jì)算桑包,所以沒有結(jié)果化借,這是常識(shí)。
人類世界的常識(shí)在計(jì)算機(jī)世界也是有效的捡多。人類都不知道等于什么,計(jì)算機(jī)這個(gè)榆木腦袋更不可能知道了铐炫。
不同的東西運(yùn)算規(guī)則不一樣垒手,為了區(qū)分什么樣的內(nèi)容能做運(yùn)算,我們就有了類型這個(gè)概念倒信。
123
科贬,321
,這種,我們叫做數(shù)字的榜掌,可以做加減乘除等各種數(shù)學(xué)運(yùn)算优妙。
A,B憎账,C
套硼,這種的,是字母胞皱,不能做加減乘除等數(shù)學(xué)運(yùn)算邪意。
我們?nèi)祟惖臄?shù)字,在計(jì)算機(jī)中反砌,叫做整數(shù)類型雾鬼,簡(jiǎn)稱整型。
小數(shù)類型對(duì)于計(jì)算機(jī)來說宴树,比123
這種整型要復(fù)雜一點(diǎn)策菜,所以它有個(gè)單獨(dú)的類型,叫做浮點(diǎn)類型酒贬。在有的編程語(yǔ)言中也不區(qū)分又憨,整數(shù)和小數(shù)是同一種類型,但是Java是一種嚴(yán)謹(jǐn)?shù)恼Z(yǔ)言同衣,它是區(qū)分的竟块。
浮點(diǎn)這個(gè)名字很奇怪,詞不達(dá)意耐齐。這是因?yàn)橥鈬?guó)人先發(fā)明了計(jì)算機(jī)浪秘,他們有了優(yōu)先命名權(quán),這些奇怪的詞語(yǔ)都是直接從英文翻譯過來的埠况,我們覺得不能理解很正常的耸携,只要知道它表示小數(shù)就可以了,不用深究辕翰,這種詞語(yǔ)還有很多夺衍。
那么字母這些,也有一個(gè)類型喜命,叫做字符類型沟沙。這個(gè)好理解吧?
現(xiàn)在我們有了理論支持壁榕,我們就知道了矛紫,什么能計(jì)算,什么不能計(jì)算牌里。
我們給計(jì)算機(jī)定義好了這些規(guī)則颊咬,計(jì)算機(jī)就可以按照規(guī)則,計(jì)算我們給出的算式。
實(shí)踐一下整型計(jì)算
我們?cè)诰W(wǎng)頁(yè)中打開運(yùn)行代碼的網(wǎng)站喳篇,我們以后以w3cschool這個(gè)網(wǎng)站為例敞临。
打開之后,可以在黑框中看到如下代碼:
public class Main {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
有很多內(nèi)容麸澜,我們目前還沒有學(xué)習(xí)挺尿,沒有關(guān)系,學(xué)習(xí)的初級(jí)階段就是照貓畫虎痰憎。
其實(shí)我們關(guān)注的重點(diǎn)就是這一句代碼而已:
System.out.println("Hello, World!");
這句代碼的意思就是票髓,把Hello, World!
顯示在屏幕上。
那么我現(xiàn)在想讓計(jì)算機(jī)幫我計(jì)算一下1+1
這個(gè)難題铣耘。應(yīng)該如何寫呢洽沟?
其他的地方不要?jiǎng)樱覀冃薷南吕ㄌ?hào)里面的內(nèi)容蜗细,照貓畫虎如下:
System.out.println(1 + 1);
請(qǐng)大家注意:必須一個(gè)字不差的跟上面一樣裆操,因?yàn)橛?jì)算機(jī)是個(gè)榆木腦袋,任何一次字母或者符號(hào)錯(cuò)了炉媒,它就不認(rèn)識(shí)了踪区。
1 + 1
這個(gè)算式,為了美觀吊骤,我在+號(hào)的兩邊添加了空格缎岗,當(dāng)然你也可以這么寫 1+1
寫完之后,點(diǎn)擊運(yùn)行代碼白粉,看看結(jié)果是什么传泊。
結(jié)果是2,如果你跟我一樣鸭巴,那么你的第一個(gè)程序就運(yùn)行成功了眷细,恭喜。
你可以改成其他的試試鹃祖,比如123 + 321
或者 321 - 100
看看計(jì)算結(jié)果對(duì)不對(duì)溪椎。
字符類型
在上面我們已經(jīng)試過整型的計(jì)算了。
那么恬口,字符如何操作呢校读?
我們討論過了,字符是跟數(shù)字不一樣的類型祖能,計(jì)算機(jī)這個(gè)榆木腦袋地熄,是區(qū)分不出來A 和 1的明顯差別的,如果你直接寫一個(gè)A給計(jì)算機(jī)芯杀,它會(huì)報(bào)告一個(gè)錯(cuò)誤給你,不認(rèn)識(shí)A這個(gè)符號(hào)。揭厚。却特。。筛圆。裂明。
唔。太援。闽晦。。提岔。仙蛉。這是個(gè)問題,假如你是當(dāng)年發(fā)明計(jì)算機(jī)的科學(xué)家碱蒙,你如何解決呢荠瘪?
最好是跟數(shù)字的書寫方法不一樣,計(jì)算機(jī)就能認(rèn)識(shí)了赛惩。
于是哀墓,他們發(fā)明了字符的書寫方法。很簡(jiǎn)單喷兼,用單引號(hào)來包裹住字符就可以了篮绰。
像這樣:
'A'
這么寫,計(jì)算機(jī)就能認(rèn)識(shí)了季惯,哦吠各。。用單引號(hào)來裹住的星瘾,是個(gè)字符走孽。
實(shí)踐一下字符類型
同樣的,我們?cè)诰W(wǎng)頁(yè)中修改代碼琳状,照貓畫虎如下:
System.out.println('A');
然后運(yùn)行一下代碼看看磕瓷,如果你看到顯示了A,那么就是成功了念逞。計(jì)算機(jī)認(rèn)識(shí)我們輸入的A困食,并且給我們顯示了出來。
如果你的沒有成功顯示A翎承,那么檢查一下是否跟上面一樣硕盹。
初學(xué)者常犯的錯(cuò)誤就是,忘記了區(qū)分中文和英文的逗號(hào)引號(hào)分號(hào)叨咖。因?yàn)橛?jì)算機(jī)是外國(guó)人發(fā)明的瘩例,所以他們都是用的英文的符號(hào)啊胶,不是中文的。
逗號(hào)和引號(hào)在中文輸入法和英文輸入法中垛贤,是不一樣的焰坪。
我在上面用的單引號(hào)是'
,而不是中文的單引號(hào)’
聘惦,這兩個(gè)符號(hào)是有細(xì)微區(qū)別的某饰,中文的有一點(diǎn)傾斜。
英文的逗號(hào)是,
中文的逗號(hào)是善绎,
這兩個(gè)比較難區(qū)分黔漂,中文的要精致一些,英文的就是個(gè)小撇禀酱。
英文的分號(hào)是;
炬守,中文的分號(hào)是;
比勉,也不太一樣劳较,中文的要小一些。
所以在寫代碼的時(shí)候浩聋,我們都是直接切換到英文輸入法观蜗。
目前在沒有在專用的編輯器中寫代碼,只能靠大家自己的眼力了衣洁,后面我們會(huì)使用專業(yè)的編輯器墓捻,它們可以提示我們符號(hào)寫錯(cuò)了。
如果你實(shí)在分不清單引號(hào)坊夫,那也沒有關(guān)系砖第,字符類型其實(shí)我們平時(shí)用的很少。但是逗號(hào)和分號(hào)是用的很多的环凿。
多個(gè)字符
單個(gè)字符的我們已經(jīng)學(xué)會(huì)了梧兼,單引號(hào)表示。我現(xiàn)在不想用字符了智听,我要寫單詞羽杰,我要寫個(gè)Love
。
應(yīng)該怎么表示到推?
是'Love'
這樣寫嗎?
這種寫法在有些編程語(yǔ)言中是可以的考赛,但是!Java是個(gè)嚴(yán)謹(jǐn)?shù)木幊陶Z(yǔ)言莉测,單個(gè)字符跟多個(gè)字符還是有差別的嘛颜骤。
那么,多個(gè)字符就用雙引號(hào)好了捣卤,順理成章吧忍抽?
多個(gè)字符組成一個(gè)串八孝,名字就叫字符串好了。我們就有了字符串類型鸠项,用來表示多個(gè)字符唆阿。
像這樣:
"Love"
同樣的道理,我想顯示一句話:I Love You !
就這樣:
"I Love You !"
我們已經(jīng)跟計(jì)算機(jī)約定好锈锤,雙引號(hào)包裹住的內(nèi)容,是文字內(nèi)容闲询,我們可以寫一句話久免,或者一封表白信。
但是也有個(gè)問題扭弧,左右兩個(gè)雙引號(hào)只能在同一行阎姥,計(jì)算機(jī)才能認(rèn)為兩個(gè)雙引號(hào)是一對(duì)的,真是有點(diǎn)榆木腦袋鸽捻。
像這樣是不行的:
"I Love
You !"
這樣就是左右兩個(gè)雙引號(hào)不在同一行中呼巴,計(jì)算機(jī)會(huì)不認(rèn)識(shí)。
實(shí)踐一下字符串類型
像這樣照貓畫虎改一下:
System.out.println("I Love You !");
運(yùn)行一下御蒲,是不是顯示出來了呢衣赶?
如果沒有,再檢查一下是否一樣厚满,有沒有忘了使用英文的引號(hào)府瞄。
顯示中文也是可以的
System.out.println("我愛你!");
我們似乎還忘了一種簡(jiǎn)單的計(jì)算
小學(xué)課程里,除了加減乘除碘箍,好像還有大于和小于的比較遵馆。
如果我在代碼里輸入如下的代碼,會(huì)顯示什么呢丰榴?
System.out.println(3 > 2);
3 > 2
货邓,說了一句大實(shí)話。請(qǐng)執(zhí)行一下看看四濒。
我的計(jì)算機(jī)告訴我换况,結(jié)果是true
。如果你跟我一樣峻黍,那么我們就發(fā)現(xiàn)了一個(gè)新大陸复隆。
那么如果是這樣呢?
System.out.println(3 < 2);
這時(shí)候計(jì)算機(jī)告訴我姆涩,結(jié)果是false
挽拂。
我們知道,在英文中骨饿,true
的意思是符合事實(shí)的亏栈,真實(shí)的台腥,真的。 false
的意思是假的绒北,錯(cuò)誤的黎侈。
那么,我們?cè)谟?jì)算3 > 2
的時(shí)候闷游,計(jì)算機(jī)其實(shí)是想告訴我們峻汉,這是真的,正確的脐往。3 < 2
的時(shí)候休吠,告訴我們,這是錯(cuò)誤的业簿,假的瘤礁。
看來,計(jì)算機(jī)還能做一些比較大小的計(jì)算梅尤,可以告訴我們結(jié)果是不是正確的柜思。如果是正確的,就告訴我們true
巷燥,錯(cuò)誤的就告訴我們false
赡盘。
那么,我們推斷矾湃,肯定計(jì)算機(jī)是認(rèn)識(shí)true
和false
兩個(gè)詞的亡脑。
是的,這兩個(gè)詞也是對(duì)應(yīng)一個(gè)類型的邀跃,叫做布爾類型霉咨,英文是boolean
。這個(gè)類型僅有這兩個(gè)值拍屑,對(duì)計(jì)算機(jī)來說途戒,不是對(duì)的,就是錯(cuò)的僵驰,它是榆木腦袋喷斋,理解不了其他的。又是一個(gè)奇怪的名字蒜茴,不要深究星爪,因?yàn)槲腋闪诉@么多年,到現(xiàn)在也不知道為什么粉私,只知道是英文翻譯來的顽腾。
實(shí)驗(yàn)
之前我們?cè)谏厦嬲f,A和B是不能相加的诺核,除非我們約定一種計(jì)算規(guī)則抄肖。
請(qǐng)自己嘗試一下久信,我們是否跟計(jì)算機(jī)有關(guān)于字符相加的約定規(guī)則,計(jì)算結(jié)果是什么呢漓摩?
System.out.println('A' + 'B');
如果是小寫的a和b呢裙士?
System.out.println('a' + 'b');
再如果是字符串呢?能相加嗎管毙?
試一試看:
System.out.println("hello" + "Java");
如果是減法呢腿椎?
System.out.println('A' - 'B');
如果我們比較兩個(gè)字母的大小呢?
System.out.println('A' > 'B');
請(qǐng)大家嘗試一下夭咬。