Java编程入门(2.1):基础Java应用程序
程序是指可以通過計算機執行一系列指令組成的任務。一個簡單的想法,但是計算機運行任何指令都必須按照計算機可以使用的方式編寫。這意味著,程序必須使用編程語言編寫。編程語言區別于普通人類語言的地方在于它完全明確并且對程序中允許和不允許的定義都非常嚴格。確定哪些是被允許的規則被稱為語言的語法。語法詳細說明了語言的基本詞匯以及如何使用循環、分支和子程序來組建程序。一個語法正確的程序是可以被成功的編譯或執行的;有語法錯誤的程序會被駁回(希望可以返回有用的錯誤信息以幫助你改正問題)。
因此,要做一個成功的程序員,你必須對你使用的編程語言的語法有詳細的了解。然而,語法只是一部分,對于寫一個可以運行并且返回正確結果的程序而言并不足夠!此外,程序的含義必須正確。程序的含義被稱為語義。更準確的說,編程語言的語義是指決定使用這個語言所編寫的程序含義的一系列規則。一個語義正確的程序可以完成你希望它完成的功能。
進一步說,一個語法和語義正確的程序可能依然是一個很糟糕的程序。正確使用語言和很好的使用語言是不一樣的。例如,好的程序是有“風格”的。它的寫作方法使得人們可以很簡單的閱讀和理解。它會依循其它程序員熟悉的慣例。并且它有一個整體設計使得人們可以讀得其意。計算機完全不在意這種設計,但對人類讀者,是很重要的。編程的這些方面通常被稱為語用(我通常會使用更通用的術語:風格。)
當我引進一個新的語言特性時,我會解釋這個特性的語法、語義和一些語用。你得記住語法,這是簡單的部分。然后你得通過給出的例子意會語義,確保你理解它們的使用方式,更理想一點,可以自己寫一些短程序來檢測你的理解。然后你得嘗試著欣賞和吸收語用——這意味著如何很好的使用語言特性,有了風格會為你贏得其他程序員的欽佩。
當然,即使你已經對語言的每一個特性都很熟悉了,也不意味著你就是一個程序員了。你還得學習如何構建復雜的程序解決特定的問題。要實現這個,你需要經驗和審美。你會在本書中發現一些軟件開發的小貼士。
我們使用一個非常傳統的問題來作為探究Java的開端:寫一個顯示“Hello World!”這一信息的程序。這聽起來很微不足道,不過這么做確實是學習新的編程語言的一大步(特別是學習人生第一個編程語言的時候)。這意味著你理解了以下這些基本步驟:
第一次過程中,以上每一步都可能需要經過幾次試錯。我不會在此詳解如果實現每一步的細節;它取決于特定的計算機和你使用的Java編程環境。可以參考2.6節,了解在特定編程環境下創建和運行Java程序的信息。但是通常來說,你需要使用一種文本編輯器寫入程序,并且存成文件。然后,你需要使用一些命令來編譯這個文件。你要么會得到一個報錯信息告訴你程序有語法錯誤,要么得到該程序的編譯后的版本。在Java中,程序被編譯成Java字節碼,而不是機器語言。最終,你可以使用適當的命令來運行這個編譯后的程序。對Java而言,你實際上是使用解釋器來執行Java字節碼。你的編程環境可能會為你自動執行一些步驟——例如,編譯步驟通常是自動的——但是可以肯定的是這三個步驟在后臺一定是都被執行了的。
下文是一個顯示“Hello World!”信息的Java程序。不要期望完全了解這個程序的每一句話;其中有一些會在之后的幾個章節中介紹:
| 1 2 3 4 5 6 7 8 9 10 | /** 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 |
實際打印信息的指令是下面這句:
| 1 | System.out.println("Hello World!"); |
這個指令是一個子程序調用語句的例子。它使用了一個叫做System.out.println的“內置子程序”來實現功能。回想一下,子程序是指將一系列執行指令組合在一起并賦予一個名字的指令集合。這個名字可以在需要執行這個指令集合的時候使用,以調用這個子程序。一個內直子程序是已經被定義好的作為語言的一部分的存在,因此在任何程序中都自動可用。
當你執行這個程序的時候,信息“Hello World!”(不包括引號)會被顯示在標準輸出中。不幸的是,我不能準確的表述這句話。Java是為了運行在許多不同的平臺而設計的,而標準輸出在不同的平臺意味著不同的東西。但是,你可以期待消息出現在一些方便或不方便的地方。(如果你是用命令行接口,就好像Oracle的Java開發包里的那樣,你輸入一個指令告訴計算機執行程序。計算機會將程序的輸出結果:Hello World! 輸出到下一行中。在一個類似于Eclipse這樣的集成開發環境中,輸出可能會出現在環境的某一個窗口中。)
你一定對上面那個程序的其它部分也很好奇。它其中一部分是由注釋組成的。程序中的注釋會全部被計算機忽視;它們是為了人類閱讀而存在。這并不意味著它們不重要。程序不止要給電腦讀,也要給人讀,沒有注釋的話,程序就很難被理解。Java有兩種注釋形式。第一種是使用//開頭,延伸到一行的結束。也就是上面那個程序的最后一行的注釋形式。計算機會無視//以及之后的同一行的所有內容。第二種是使用/*開頭,使用*/結尾,它可以擴展到多行。上面的程序的前三行就是這第二種注釋的實例。(實例中的注釋實際上是使用/**開頭的,它是有特殊含義的;它是“制作文檔”(Javadoc)注釋,被用來生成程序文檔。
該程序的其它部分需要遵循Java語法規則。Java的所有程序都必須寫在“類”(Class)里面。上面那個程序的第一行(注釋除外)意思是這是個叫做HelloWorld的類。“HelloWorld”既是這個類的名字,也是這個程序的名字。并不是每個類都是一個程序。為了定義一個程序,一個類必須包含一個叫做main的子程序,使用以下這種形式:
| 1 2 3 | public static void main(String[] args) { ??????statements } |
當你讓Java解釋器運行程序時,解釋器會調用這個main()子程序,執行它包含的所有語句。這些語句組成了一個腳本,告訴計算機當程序執行的時候實際上應該運行哪些東西。main()子程序可以調用定義在同一個類甚至定義在其它類中的其它子程序,但是main()子程序決定其它子程序的調用方法和調用順序。
main()的第一行的單詞“public”的意思是這個程序可以被程序外部所調用。這點至關重要,因為main()程序是被Java解釋器調用的,它是程序外部的。第一行的剩下部分現在更難以解釋。目前,就把它們當做必須的語法吧。子程序的定義——也就是用來說明它做了什么的指令——組成了“語句”序列,包含在花括號{和}里。這里,我是用了statements作為實際組成程序的語句的占位符。在整本書中,我將始終使用類似的格式:任何這種格式(綠色粗體)都是用來描述某種你需要在實際程序中輸入的內容的占位符。
按照上文所提及的,子程序不能獨自存在。它必須是類的一部分。一個定義有公共類的程序有著如下的格式:
| 1 2 3 4 5 6 7 8 9 10 11 | public class program-name { ????optional-variable-declarations-and-subroutines ????public static void main(String[] args) { ???????statements ????} ????optional-variable-declarations-and-subroutines } |
第一行的名字是這個程序的名字,也是這個類的名字。(請再次記住,這個program-name?是實際名字的占位符!)
如果這個類的名字叫HelloWorld,那么這個類就必須被保存在一個叫做HelloWorld.java的文件里。當這個文件被編譯后,會生成另一個叫做HelloWorld.class的類文件。這個叫HelloWorld.class的類文件包含程序被編譯后形成的Java字節碼,可以被Java解釋器執行。HelloWorld.java被稱為這個程序的源代碼。如果要執行這個程序,你只需要編譯類文件,而不需要源代碼。
這章的程序的布局,例如空白行和縮進,并不是這個語言的語法或語義的一部分。計算機不在乎布局——你可以把整個程序寫在一行里,只要你樂意。但是,布局對于人們閱讀很重要,有一些布局風格是被大多數程序員所遵循的。
還要注意,根據上面的語法定義,程序可以包含其它除了main()以外的子程序,又被稱作“變量聲明”。你從第四章開始會了解更多。
?
原文鏈接:? math.hws.edu ?翻譯:? ImportNew.com? -? 顧星竹譯文鏈接:?http://www.importnew.com/16968.html
本文由?ImportNew?-?顧星竹?翻譯自?math.hws.edu。
總結
以上是生活随笔為你收集整理的Java编程入门(2.1):基础Java应用程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java并发编程(9):死锁(含代码)
- 下一篇: 5个让你充满健身动力的方法