最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

【reading】【中文】 1.1 Essentials | 基本要素

2023-07-12 22:26 作者:武宣博  | 我要投稿

Hello World

讓我們來(lái)看看我們的第一個(gè)Java程序。運(yùn)行時(shí),下面的程序會(huì)將“Hello world!”打印到屏幕上。

對(duì)于像Python這樣的語(yǔ)言來(lái)說(shuō),這可能看起來(lái)過(guò)于冗長(zhǎng)。然而,這都是有原因的,我們將在接下來(lái)的幾周內(nèi)逐漸理解。需要注意的一些關(guān)鍵語(yǔ)法特點(diǎn):

程序由一個(gè)類(lèi)聲明組成,使用關(guān)鍵字public class進(jìn)行聲明。在Java中,所有的代碼都存在于類(lèi)中。 運(yùn)行的代碼位于一個(gè)名為main的方法中,該方法聲明為public static void main(String[] args)。 我們使用大括號(hào){和}來(lái)表示代碼段的開(kāi)始和結(jié)束。 語(yǔ)句必須以分號(hào)結(jié)束。 這不是一本Java教材,所以我們不會(huì)詳細(xì)討論Java的語(yǔ)法。如果你需要參考資料,可以考慮Paul Hilfinger的免費(fèi)電子書(shū)《A Java Reference》,或者如果你想要一本更傳統(tǒng)的書(shū),可以考慮Kathy Sierra和Bert Bates的《Head First Java》。

為了好玩,看看其他語(yǔ)言中的Hello World。

運(yùn)行Java程序

執(zhí)行Java程序最常見(jiàn)的方法是通過(guò)兩個(gè)程序的順序運(yùn)行。第一個(gè)是Java編譯器(javac),第二個(gè)是Java解釋器(java)。

例如,要運(yùn)行HelloWorld.java,我們會(huì)在終端中輸入命令javac HelloWorld.java,然后輸入命令java HelloWorld。結(jié)果會(huì)像這樣:

上圖中,$表示我們終端的命令提示符。你的命令提示符可能會(huì)更長(zhǎng)。

你可能會(huì)注意到,我們?cè)诰幾g時(shí)包含了'.java',但在解釋時(shí)沒(méi)有包含'.class'。這就是它的工作方式(TIJTWII)。

練習(xí)1.1.1.在你的計(jì)算機(jī)上創(chuàng)建一個(gè)名為HelloWorld.java的文件,并復(fù)制粘貼上面的程序。嘗試運(yùn)行javac HelloWorld.java命令??雌饋?lái)好像什么都沒(méi)有發(fā)生。

然而,如果你查看目錄,你會(huì)發(fā)現(xiàn)一個(gè)名為HelloWorld.class的新文件被創(chuàng)建了。我們稍后會(huì)討論這是什么。

現(xiàn)在嘗試輸入java HelloWorld命令。你應(yīng)該在終端上看到“Hello World!”被打印出來(lái)。

只是為了好玩。嘗試使用像Notepad、TextEdit、Sublime、vim或你喜歡的任何文本編輯器打開(kāi)HelloWorld.class。你會(huì)看到很多只有Java解釋器才能理解的垃圾代碼。這是Java字節(jié)碼,我們?cè)谡n程中不會(huì)討論它。

變量和循環(huán)

下面的程序?qū)⒋蛴〕鰪?到9的整數(shù)。

當(dāng)我們運(yùn)行這個(gè)程序時(shí),我們會(huì)看到:

這個(gè)程序的一些有趣特點(diǎn)可能會(huì)引起你的注意:

我們必須在使用變量之前聲明它,并給它一個(gè)類(lèi)型! 我們的循環(huán)定義包含在大括號(hào){}中,被測(cè)試的布爾表達(dá)式包含在括號(hào)()中。 我們的打印語(yǔ)句只是System.out.print,而不是System.out.println。這意味著我們不應(yīng)該包含換行符(回車(chē))。 我們的打印語(yǔ)句在數(shù)字后面添加了一個(gè)空格。這樣可以確保數(shù)字之間不會(huì)重疊。嘗試刪除空格看看會(huì)發(fā)生什么。 當(dāng)我們運(yùn)行它時(shí),我們的提示符會(huì)出現(xiàn)在與數(shù)字同一行上(如果你愿意,你可以在下一個(gè)練習(xí)中修復(fù)這個(gè)問(wèn)題)。 在這些特點(diǎn)中,最重要的特點(diǎn)是變量有一個(gè)聲明的類(lèi)型。我們稍后會(huì)回到這個(gè)問(wèn)題,但首先,我們來(lái)做一個(gè)練習(xí)。

練習(xí)1.1.2.修改HelloNumbers,使其打印出從0到9的累加和。例如,你的輸出應(yīng)該以0 1 3 6 10...開(kāi)始,以45結(jié)束。

此外,如果你有審美的追求,可以修改程序,使其在最后打印一個(gè)新行。

Gradescope

本課程的作業(yè)是通過(guò)一個(gè)名為gradescope的網(wǎng)站進(jìn)行評(píng)分的。如果你正在參加與本課程配套的加利福尼亞大學(xué)課程,你將使用這個(gè)網(wǎng)站提交作業(yè)以獲得成績(jī)。如果你只是為了好玩,你可以使用gradescope來(lái)檢查你的作業(yè)。要注冊(cè),請(qǐng)使用入口代碼93PK75。有關(guān)gradescope和如何提交作業(yè)的更多信息,請(qǐng)參見(jiàn)gradescope指南(鏈接稍后提供)。

靜態(tài)類(lèi)型

Java最重要的特點(diǎn)之一是所有的變量和表達(dá)式都有所謂的靜態(tài)類(lèi)型。Java變量只能包含該類(lèi)型的值,而且類(lèi)型一旦確定就不能改變。

Java編譯器的一個(gè)關(guān)鍵特點(diǎn)是它執(zhí)行靜態(tài)類(lèi)型檢查。例如,假設(shè)我們有下面的程序:

編譯這個(gè)程序,我們會(huì)看到:

$ javac HelloNumbers.java HelloNumbers.java:9: error: incompatible types: String cannot be converted to int ? ? ? ?x = "horse"; ? ? ? ? ? ? ? ?^ 1 error 編譯器在運(yùn)行之前就拒絕了這個(gè)程序。這是一件大事,因?yàn)檫@意味著在世界上運(yùn)行這個(gè)程序的人永遠(yuǎn)不會(huì)遇到類(lèi)型錯(cuò)誤!

這與Python等動(dòng)態(tài)類(lèi)型語(yǔ)言不同,用戶可以在執(zhí)行過(guò)程中遇到類(lèi)型錯(cuò)誤!

除了提供額外的錯(cuò)誤檢查外,靜態(tài)類(lèi)型還可以讓程序員準(zhǔn)確地知道自己正在處理的對(duì)象的類(lèi)型。我們將在接下來(lái)的幾周中看到這一點(diǎn)的重要性。這是我個(gè)人最喜歡的Java特性之一。

總結(jié)一下,靜態(tài)類(lèi)型具有以下優(yōu)點(diǎn):

編譯器確保所有的類(lèi)型是兼容的,這使得程序員更容易調(diào)試他們的代碼。 由于代碼保證沒(méi)有類(lèi)型錯(cuò)誤,因此編譯后的程序的用戶永遠(yuǎn)不會(huì)遇到類(lèi)型錯(cuò)誤。例如,Android應(yīng)用程序是用Java編寫(xiě)的,通常只以.class文件的形式分發(fā),即以編譯格式分發(fā)。因此,這樣的應(yīng)用程序不應(yīng)該由于類(lèi)型錯(cuò)誤而崩潰,因?yàn)樗鼈円呀?jīng)被編譯器檢查過(guò)了。 每個(gè)變量、參數(shù)和函數(shù)都有一個(gè)聲明的類(lèi)型,這使得程序員更容易理解和推理代碼。 然而,我們將看到靜態(tài)類(lèi)型也有缺點(diǎn),這將在后面的章節(jié)中討論。

額外的思考練習(xí)

在Java中,我們可以說(shuō)System.out.println(5 + " ");。但在Python中,我們不能像上面那樣說(shuō)print(5 + "horse")。為什么會(huì)這樣?

考慮下面這兩個(gè)Java語(yǔ)句:

這兩個(gè)語(yǔ)句中,第一個(gè)會(huì)成功;第二個(gè)會(huì)給出一個(gè)編譯錯(cuò)誤。由于Java是強(qiáng)類(lèi)型的,如果你告訴它h是一個(gè)字符串,它可以連接這些元素并給你一個(gè)字符串。但是當(dāng)h是一個(gè)整數(shù)時(shí),它不能連接一個(gè)數(shù)字和一個(gè)字符串并給你一個(gè)數(shù)字。

Python不限制類(lèi)型,它無(wú)法假設(shè)你想要的類(lèi)型。x = 5 + "horse"應(yīng)該是一個(gè)數(shù)字嗎?一個(gè)字符串?Python不知道。所以它會(huì)報(bào)錯(cuò)。

在這種情況下,System.out.println(5 + "horse");,Java將參數(shù)解釋為字符串連接,并打印出"5horse"作為結(jié)果?;蛘吒杏玫氖?,System.out.println(5 + " ");將在你的"5"后面打印一個(gè)空格。

System.out.println(5 + "10");會(huì)打印什么?510還是15?System.out.println(5 + 10);呢?

在Java中定義函數(shù)

在像Python這樣的語(yǔ)言中,函數(shù)可以在任何地方聲明,甚至在函數(shù)外部。例如,下面的代碼聲明了一個(gè)返回兩個(gè)參數(shù)中較大值的函數(shù),并使用這個(gè)函數(shù)計(jì)算并打印出8和10中較大的數(shù):

由于所有的Java代碼都是類(lèi)的一部分,所以我們必須定義函數(shù),使它們屬于某個(gè)類(lèi)。作為類(lèi)的一部分的函數(shù)通常被稱為“方法”。我們將在整個(gè)課程中交替使用這兩個(gè)術(shù)語(yǔ)。與上面的代碼相對(duì)應(yīng)的Java程序如下所示:

這里的新語(yǔ)法是我們使用關(guān)鍵字public static聲明了我們的方法,這是Python的def關(guān)鍵字的一個(gè)非常粗略的類(lèi)比。我們將在下一章中看到其他聲明方法的方式。

這里給出的Java代碼確實(shí)看起來(lái)更冗長(zhǎng)!你可能會(huì)認(rèn)為這種編程語(yǔ)言會(huì)減慢你的速度,事實(shí)上,在短期內(nèi)確實(shí)會(huì)減慢你的速度。把所有的東西都想象成我們還不理解的安全設(shè)備。當(dāng)我們構(gòu)建小型程序時(shí),所有這些東西似乎都是多余的。然而,當(dāng)我們開(kāi)始構(gòu)建大型程序時(shí),我們會(huì)開(kāi)始欣賞到所有額外的復(fù)雜性。

作為類(lèi)比,使用Python編程有點(diǎn)像Dan Osman在Lover's Leap上進(jìn)行自由攀巖。速度可能很快,但危險(xiǎn)。相比之下,Java更像在這個(gè)視頻中使用繩索、頭盔等。

代碼風(fēng)格、注釋、Javadoc

代碼可以以許多方式變得美觀。它可以簡(jiǎn)潔。它可以巧妙。它可以高效。初學(xué)者最不重視的代碼方面之一是代碼風(fēng)格。當(dāng)你作為初學(xué)者編程時(shí),你通常只關(guān)注讓它工作,而不考慮再次查看它或在很長(zhǎng)一段時(shí)間內(nèi)維護(hù)它。

在這門(mén)課程中,我們將努力保持我們的代碼可讀性。良好的編碼風(fēng)格的一些最重要特點(diǎn)是:

一致的風(fēng)格(間距、變量命名、大括號(hào)風(fēng)格等) 大?。ㄐ胁粚挘次募惶L(zhǎng)) 描述性命名(變量、函數(shù)、類(lèi)),例如使用year或getUserName這樣的變量或函數(shù)名稱,而不是x或f。 避免重復(fù)的代碼:你幾乎不應(yīng)該有兩個(gè)幾乎相同但除了一些更改之外的重要代碼塊。 適當(dāng)?shù)淖⑨?。Java中的行注釋使用//分隔符。塊(也稱為多行注釋?zhuān)┳⑨屖褂?和/。 黃金法則是:編寫(xiě)你的代碼,使陌生人能夠輕松理解。

這是課程的官方代碼風(fēng)格指南。值得一看!

通常情況下,我們?cè)敢獬袚?dān)輕微的性能損失,只是為了讓我們的代碼更簡(jiǎn)單易懂。我們將在后面的章節(jié)中舉例說(shuō)明。

注釋

我們鼓勵(lì)你編寫(xiě)自解釋的代碼,即通過(guò)選擇易于理解的變量名和函數(shù)名來(lái)知道發(fā)生了什么。然而,這并不總是足夠的。例如,如果你正在實(shí)現(xiàn)一個(gè)復(fù)雜的算法,你可能需要添加注釋來(lái)描述你的代碼。你使用注釋?xiě)?yīng)該審慎。通過(guò)經(jīng)驗(yàn)和接觸他人的代碼,你會(huì)對(duì)何時(shí)適合使用注釋有一個(gè)感覺(jué)。

一個(gè)特殊的注意事項(xiàng)是,幾乎所有的方法和大多數(shù)的類(lèi)都應(yīng)該使用所謂的Javadoc格式的注釋進(jìn)行描述。在Javadoc注釋中,塊注釋以額外的星號(hào)開(kāi)始,例如/**,注釋通常(但不總是)包含描述性的標(biāo)簽。我們不會(huì)在這本教材中討論這些標(biāo)簽,但可以參考上面的鏈接了解它們的工作原理。

作為一個(gè)沒(méi)有標(biāo)簽的示例:

廣泛使用的javadoc工具可以用來(lái)生成代碼的HTML描述。我們將在后面的章節(jié)中看到示例。

接下來(lái)做什么 在每章的最后,將提供鏈接,讓你知道可以使用到目前為止所學(xué)的材料完成哪些練習(xí),按照應(yīng)完成的順序列出。

Homework 0

Lab 1b

Lab 1

Discussion 1

【reading】【中文】 1.1 Essentials | 基本要素的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
醴陵市| 山东省| 临夏市| 宁明县| 金阳县| 贵阳市| 澄迈县| 西平县| 石狮市| 大安市| 西青区| 英吉沙县| 洪洞县| 黔南| 天全县| 夏邑县| 方正县| 天长市| 南昌市| 鹿泉市| 贵州省| 苗栗县| 紫金县| 五原县| 水城县| 泾川县| 博爱县| 五家渠市| 炎陵县| 钦州市| 长治市| 吉水县| 乳源| 南充市| 汾阳市| 扎鲁特旗| 罗定市| 宕昌县| 博客| 进贤县| 吴川市|