- 相關(guān)推薦
基礎(chǔ)Java應(yīng)用程序
程序是指可以通過(guò)計(jì)算機(jī)執(zhí)行一系列指令組成的任務(wù)。下面由小編為大家介紹的基礎(chǔ)Java應(yīng)用程序,希望可以幫到大家!
一個(gè)簡(jiǎn)單的想法,但是計(jì)算機(jī)運(yùn)行任何指令都必須按照計(jì)算機(jī)可以使用的方式編寫。這意味著,程序必須使用編程語(yǔ)言編寫。編程語(yǔ)言區(qū)別于普通人類語(yǔ)言的地方在于它完全明確并且對(duì)程序中允許和不允許的定義都非常嚴(yán)格。確定哪些是被允許的規(guī)則被稱為語(yǔ)言的語(yǔ)法。語(yǔ)法詳細(xì)說(shuō)明了語(yǔ)言的基本詞匯以及如何使用循環(huán)、分支和子程序來(lái)組建程序。一個(gè)語(yǔ)法正確的程序是可以被成功的編譯或執(zhí)行的;有語(yǔ)法錯(cuò)誤的程序會(huì)被駁回(希望可以返回有用的錯(cuò)誤信息以幫助你改正問(wèn)題)。
因此,要做一個(gè)成功的程序員,你必須對(duì)你使用的編程語(yǔ)言的語(yǔ)法有詳細(xì)的了解。然而,語(yǔ)法只是一部分,對(duì)于寫一個(gè)可以運(yùn)行并且返回正確結(jié)果的程序而言并不足夠!此外,程序的含義必須正確。程序的含義被稱為語(yǔ)義。更準(zhǔn)確的說(shuō),編程語(yǔ)言的語(yǔ)義是指決定使用這個(gè)語(yǔ)言所編寫的程序含義的一系列規(guī)則。一個(gè)語(yǔ)義正確的程序可以完成你希望它完成的功能。
進(jìn)一步說(shuō),一個(gè)語(yǔ)法和語(yǔ)義正確的程序可能依然是一個(gè)很糟糕的程序。正確使用語(yǔ)言和很好的使用語(yǔ)言是不一樣的。例如,好的程序是有“風(fēng)格”的。它的寫作方法使得人們可以很簡(jiǎn)單的閱讀和理解。它會(huì)依循其它程序員熟悉的慣例。并且它有一個(gè)整體設(shè)計(jì)使得人們可以讀得其意。計(jì)算機(jī)完全不在意這種設(shè)計(jì),但對(duì)人類讀者,是很重要的。編程的這些方面通常被稱為語(yǔ)用(我通常會(huì)使用更通用的術(shù)語(yǔ):風(fēng)格。)
當(dāng)我引進(jìn)一個(gè)新的語(yǔ)言特性時(shí),我會(huì)解釋這個(gè)特性的語(yǔ)法、語(yǔ)義和一些語(yǔ)用。你得記住語(yǔ)法,這是簡(jiǎn)單的部分。然后你得通過(guò)給出的例子意會(huì)語(yǔ)義,確保你理解它們的使用方式,更理想一點(diǎn),可以自己寫一些短程序來(lái)檢測(cè)你的理解。然后你得嘗試著欣賞和吸收語(yǔ)用——這意味著如何很好的使用語(yǔ)言特性,有了風(fēng)格會(huì)為你贏得其他程序員的欽佩。
當(dāng)然,即使你已經(jīng)對(duì)語(yǔ)言的每一個(gè)特性都很熟悉了,也不意味著你就是一個(gè)程序員了。你還得學(xué)習(xí)如何構(gòu)建復(fù)雜的程序解決特定的問(wèn)題。要實(shí)現(xiàn)這個(gè),你需要經(jīng)驗(yàn)和審美。你會(huì)在本書中發(fā)現(xiàn)一些軟件開發(fā)的小貼士。
我們使用一個(gè)非常傳統(tǒng)的問(wèn)題來(lái)作為探究Java的開端:寫一個(gè)顯示“Hello World!”這一信息的程序。這聽起來(lái)很微不足道,不過(guò)這么做確實(shí)是學(xué)習(xí)新的編程語(yǔ)言的一大步(特別是學(xué)習(xí)人生第一個(gè)編程語(yǔ)言的時(shí)候)。這意味著你理解了以下這些基本步驟:
學(xué)會(huì)計(jì)算機(jī)文本程序,
編譯程序,并且
執(zhí)行編譯后的程序。
第一次過(guò)程中,以上每一步都可能需要經(jīng)過(guò)幾次試錯(cuò)。我不會(huì)在此詳解如果實(shí)現(xiàn)每一步的細(xì)節(jié);它取決于特定的計(jì)算機(jī)和你使用的Java編程環(huán)境?梢詤⒖2.6節(jié),了解在特定編程環(huán)境下創(chuàng)建和運(yùn)行Java程序的信息。但是通常來(lái)說(shuō),你需要使用一種文本編輯器寫入程序,并且存成文件。然后,你需要使用一些命令來(lái)編譯這個(gè)文件。你要么會(huì)得到一個(gè)報(bào)錯(cuò)信息告訴你程序有語(yǔ)法錯(cuò)誤,要么得到該程序的編譯后的版本。在Java中,程序被編譯成Java字節(jié)碼,而不是機(jī)器語(yǔ)言。最終,你可以使用適當(dāng)?shù)拿顏?lái)運(yùn)行這個(gè)編譯后的程序。對(duì)Java而言,你實(shí)際上是使用解釋器來(lái)執(zhí)行Java字節(jié)碼。你的編程環(huán)境可能會(huì)為你自動(dòng)執(zhí)行一些步驟——例如,編譯步驟通常是自動(dòng)的——但是可以肯定的是這三個(gè)步驟在后臺(tái)一定是都被執(zhí)行了的。
下文是一個(gè)顯示“Hello World!”信息的Java程序。不要期望完全了解這個(gè)程序的每一句話;其中有一些會(huì)在之后的幾個(gè)章節(jié)中介紹:
/** A program to display the message
* "Hello World!" on standard output.
*/
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
} // end of class HelloWorld
實(shí)際打印信息的指令是下面這句:
System.out.println("Hello World!");
這個(gè)指令是一個(gè)子程序調(diào)用語(yǔ)句的例子。它使用了一個(gè)叫做System.out.println的“內(nèi)置子程序”來(lái)實(shí)現(xiàn)功能。回想一下,子程序是指將一系列執(zhí)行指令組合在一起并賦予一個(gè)名字的指令集合。這個(gè)名字可以在需要執(zhí)行這個(gè)指令集合的時(shí)候使用,以調(diào)用這個(gè)子程序。一個(gè)內(nèi)直子程序是已經(jīng)被定義好的作為語(yǔ)言的一部分的存在,因此在任何程序中都自動(dòng)可用。
當(dāng)你執(zhí)行這個(gè)程序的時(shí)候,信息“Hello World!”(不包括引號(hào))會(huì)被顯示在標(biāo)準(zhǔn)輸出中。不幸的是,我不能準(zhǔn)確的表述這句話。Java是為了運(yùn)行在許多不同的平臺(tái)而設(shè)計(jì)的,而標(biāo)準(zhǔn)輸出在不同的平臺(tái)意味著不同的東西。但是,你可以期待消息出現(xiàn)在一些方便或不方便的地方。(如果你是用命令行接口,就好像Oracle的Java開發(fā)包里的那樣,你輸入一個(gè)指令告訴計(jì)算機(jī)執(zhí)行程序。計(jì)算機(jī)會(huì)將程序的輸出結(jié)果:Hello World! 輸出到下一行中。在一個(gè)類似于Eclipse這樣的集成開發(fā)環(huán)境中,輸出可能會(huì)出現(xiàn)在環(huán)境的某一個(gè)窗口中。)
你一定對(duì)上面那個(gè)程序的其它部分也很好奇。它其中一部分是由注釋組成的。程序中的注釋會(huì)全部被計(jì)算機(jī)忽視;它們是為了人類閱讀而存在。這并不意味著它們不重要。程序不止要給電腦讀,也要給人讀,沒(méi)有注釋的話,程序就很難被理解。Java有兩種注釋形式。第一種是使用//開頭,延伸到一行的結(jié)束。也就是上面那個(gè)程序的最后一行的注釋形式。計(jì)算機(jī)會(huì)無(wú)視//以及之后的同一行的所有內(nèi)容。第二種是使用/*開頭,使用*/結(jié)尾,它可以擴(kuò)展到多行。上面的程序的前三行就是這第二種注釋的實(shí)例。(實(shí)例中的注釋實(shí)際上是使用/**開頭的,它是有特殊含義的;它是“制作文檔”(Javadoc)注釋,被用來(lái)生成程序文檔。
該程序的其它部分需要遵循Java語(yǔ)法規(guī)則。Java的所有程序都必須寫在“類”(Class)里面。上面那個(gè)程序的第一行(注釋除外)意思是這是個(gè)叫做HelloWorld的類!癏elloWorld”既是這個(gè)類的名字,也是這個(gè)程序的名字。并不是每個(gè)類都是一個(gè)程序。為了定義一個(gè)程序,一個(gè)類必須包含一個(gè)叫做main的子程序,使用以下這種形式:
public static void main(String[] args) {
statements
}
當(dāng)你讓Java解釋器運(yùn)行程序時(shí),解釋器會(huì)調(diào)用這個(gè)main()子程序,執(zhí)行它包含的所有語(yǔ)句。這些語(yǔ)句組成了一個(gè)腳本,告訴計(jì)算機(jī)當(dāng)程序執(zhí)行的時(shí)候?qū)嶋H上應(yīng)該運(yùn)行哪些東西。main()子程序可以調(diào)用定義在同一個(gè)類甚至定義在其它類中的其它子程序,但是main()子程序決定其它子程序的調(diào)用方法和調(diào)用順序。
main()的第一行的單詞“public”的意思是這個(gè)程序可以被程序外部所調(diào)用。這點(diǎn)至關(guān)重要,因?yàn)閙ain()程序是被Java解釋器調(diào)用的,它是程序外部的。第一行的剩下部分現(xiàn)在更難以解釋。目前,就把它們當(dāng)做必須的語(yǔ)法吧。子程序的定義——也就是用來(lái)說(shuō)明它做了什么的指令——組成了“語(yǔ)句”序列,包含在花括號(hào){和}里。這里,我是用了statements作為實(shí)際組成程序的語(yǔ)句的占位符。在整本書中,我將始終使用類似的格式:任何這種格式(綠色粗體)都是用來(lái)描述某種你需要在實(shí)際程序中輸入的內(nèi)容的占位符。
按照上文所提及的,子程序不能獨(dú)自存在。它必須是類的一部分。一個(gè)定義有公共類的程序有著如下的格式:
public class program-name {
optional-variable-declarations-and-subroutines
public static void main(String[] args) {
statements
}
optional-variable-declarations-and-subroutines
}
第一行的名字是這個(gè)程序的名字,也是這個(gè)類的名字。(請(qǐng)?jiān)俅斡涀,這個(gè)program-name 是實(shí)際名字的占位符!)
如果這個(gè)類的名字叫HelloWorld,那么這個(gè)類就必須被保存在一個(gè)叫做HelloWorld.java的文件里。當(dāng)這個(gè)文件被編譯后,會(huì)生成另一個(gè)叫做HelloWorld.class的類文件。這個(gè)叫HelloWorld.class的類文件包含程序被編譯后形成的Java字節(jié)碼,可以被Java解釋器執(zhí)行。HelloWorld.java被稱為這個(gè)程序的源代碼。如果要執(zhí)行這個(gè)程序,你只需要編譯類文件,而不需要源代碼。
這章的程序的布局,例如空白行和縮進(jìn),并不是這個(gè)語(yǔ)言的語(yǔ)法或語(yǔ)義的一部分。計(jì)算機(jī)不在乎布局——你可以把整個(gè)程序?qū)懺谝恍欣,只要你?lè)意。但是,布局對(duì)于人們閱讀很重要,有一些布局風(fēng)格是被大多數(shù)程序員所遵循的。
還要注意,根據(jù)上面的語(yǔ)法定義,程序可以包含其它除了main()以外的子程序,又被稱作“變量聲明”。你從第四章開始會(huì)了解更多。
【基礎(chǔ)Java應(yīng)用程序】相關(guān)文章:
關(guān)于電腦開機(jī)出現(xiàn)應(yīng)用程序錯(cuò)誤09-08
java培訓(xùn)心得05-06
java實(shí)習(xí)心得04-17
電腦應(yīng)用程序無(wú)響應(yīng)是怎么辦08-25
JAVA實(shí)訓(xùn)的心得04-23
Java實(shí)訓(xùn)心得12-04
java學(xué)習(xí)心得04-20
java的學(xué)習(xí)心得05-01
基礎(chǔ)樂(lè)理12-22
JAVA工程求職信03-09