java入門(1)--介紹

陣營

人們在認識事物的時候,很喜歡貼標籤、歸類、劃陣營。越是閱歷多就越會這樣。java

這也不徹底是什麼壞事,至少能夠把事物間做個對比、概括。python

java究竟是一種什麼樣的語言呢?windows

首先,她是一門高級語言。這是與機器語言、彙編語言相比較而言的。數組

也就是說,她主要仍是爲了方便人的理解與閱讀,並非優先考慮機器的執行效率。eclipse

其次,咱們總喜歡把高級語言劃分爲「編譯型」與「解釋型」。好比,c是編譯型的:編輯器

由於咱們須要先用編譯器把源代碼轉換爲機器能懂的可執行代碼,而後去執行。函數

注意,這個可執行代碼是與機器和操做系統密切相關的。windows下的可執行程序,拿到蘋果電腦上,根本沒法運行。工具

好比:python就是解釋型的,也被稱爲「腳本語言」。學習

python源碼不須要編譯,而是在須要執行的時候,用解釋器一邊翻譯一邊執行,這固然會有點慢,但得到了強大的動態能力。開發工具

Java呢? 兩者皆非。

Java採用了當時還比較新潮的思路(在今天固然不足爲奇了):

她把源碼不進行完全的編譯,而是編譯到半山腰,造成一種運行在理想的或說假想的機器上的代碼。

由於這臺機器是假想的,於是也就不會有windows, Linux,或是x86, power pc 等軟硬件上區別。

這臺假想的機器,在不一樣的真實機器上,能夠經過不一樣的軟件模擬出來。被稱爲「虛擬機」

 

這樣大費周折所換來的好處是:跨平臺。

具體地說,能夠把java產生的這種中間產品(字節碼)拷貝到任何主流的操做系統上都能執行。

這就是java提出的口號,所謂:一次編寫,處處運行。

你有可能會不服氣,說c語言的源碼不也能夠處處拷貝並編譯運行嗎?

python的源碼不也能夠處處運行的嗎?

這可不同,別人傳播的是源碼,java傳播的是字節碼。開發者通常不肯意自已的源碼直接給用戶的。

另外,java這樣作也提升了代碼的運行效率。由於編譯器可使用各類優化技術,程序規模越大越有優點。

固然,比起c語言的完全編譯,執行效率上還不如c,但由此得到的其它優點足以彌補此不足。

加上其它方面的改進,使得java從誕生後就一路走紅,連續霸佔TIOBE開發語言流行度的榜首。

因此,不管你學過什麼語言,都應該至少了解java。

安裝方法

能夠從網上下載java語言的對應操做系統的安裝包。

若是是windows系統,能夠選擇那種可執行文件自動安裝的,也能夠只下載zip包,解開就能夠了。

全自動安裝過程很簡單,網上資料鋪天蓋地,這裏就不重複介紹。

須要強調的是,它與直接解壓的那種安裝方法比,多作了兩件事:

1. 爲path環境變量增長了java虛擬機的位置信息。

2. 註冊了一個java update程序,能時不時提示你更新java包。

若是你對windows註冊表深惡痛絕,最好直接解壓文件。拋開這些不算,java是「純綠色軟件」,它並不依賴註冊表就能很好地幹活。

java安裝雖然容易,還有一件值得一提:

當下,咱們的機器大都是64位的處理器,java能夠選32位的,也能夠選64位的。

這個你要想清楚,由於有的軟件對java虛擬機版本有要求。

好比,eclipse32位版本的就只認32位java虛擬機,不對就會報錯。

實際上,咱們安裝的java是兩套產品:JDK和JRE

JRE是java運行時環境,有了它就能夠執行不管誰給你的 *.class文件。這個是給java最終用戶用的。

JDK是包含了編譯器等在內的一套開發工具包,是給java開發者用的。

JDK中包含了JRE。

問: 安裝了JDK還要再安裝JRE嗎?

答:不用,由於包含了。

問:能夠安裝多個版本的JDK嗎?

答:能夠。用的時候指明用哪一個。若是不指明,path中認定哪一個就是哪一個。

問:jdk的路徑是應該加在path前邊仍是後邊?

答:均可以,系統能找到就行。但爲了防止夜長夢多,仍是加在前邊更靠譜些。

 小試牛刀

安裝好了JDK,會用記事本,會用cmd。我們能夠開發java了。

首先用記事本寫一個純文本文件,名字可叫 MyA.java

其中的內容以下:

1 public class MyA
2 {
3     public static void main(String[] args){
4         System.out.println("hello....java");
5     }
6 }

而後,在cmd窗口,輸入命令:

 javac MyA.java

若是一切順利,會沒有任何返回的信息(沒有壞消息,就是好消息!)

但此時,你的目錄下已經多了一個文件: MyA.class

它就是那個著名的 字節碼 文件了。

而後,固然是用虛擬機去運行它了: java MyA 就能夠了。

假如沒有產生那個class文件,那有多是java沒有安裝好或者path環境變量配置的問題。

 源碼解讀

第1行,定義了一個類,名字是MyA。

從形式上看,java程序就是由若干的類組成的。

在每一個文件中,能夠定義多個類,但只有一個主類。

這裏的MyA就是一個主類,由於它以public修飾。

在類中,能夠定義數據和方法。

main是主類中的一個方法。調用它的人會傳入一個字符串數組。

該方法沒有返回值。

這個方法是靜態方法,由於以static修飾。至於什麼是靜態方法,咱們能夠在面向對象一節中再去了解。這裏,能夠先把它想象爲相似c語言中的函數就行了。

System是系統定義的類,out是它的一個成員,println是該成員的方法。

println相似於c語言的printf,它的任務是在標準輸出設備(默認就是屏幕)上輸出信息。

Java程序老是從主類的main方法開始執行,也就是說,main方法會自動執行。

由於咱們在控制檯執行MyA.class的時候,並無提供更多的參數,因此那個傳入參數,就是args字符串數組是空的。而且咱們也沒有在程序中使用它。

 怎樣編輯純文本

若是不知道其它的軟件,用記事本就能夠順利完成上面的任務。

但記事本太過簡陋,有的時候不能知足咱們的要求。

你可使用本身更喜歡的文本編輯器,好比,許多人用的:notepad++,editplus,ultraEdit,sublimeText 等。

但毫不能使用word,由於它是富文本編輯器,要複雜得多,產生的文本是有格式的。

若是設置得當,上面介紹的那些純文本編輯器均可以對java代碼進行着色。這樣看起來會更舒服一些。

固然,編譯和運行程序仍是要去cmd窗口中執行。除非你使用了額外的所謂「插件」,擴展了編輯器的功能。

若是你很不喜歡在cmd窗口中幹活,或者你但願有代碼提示或稱爲代碼自動補全功能,可使用更爲專業的所謂IDE工具。

IDE是集成開發環境的意思,就是把源碼的編輯,編譯,運行,調試,打包,部署等諸多功能都集成到一個軟件中。

固然這會比較龐大,比較複雜,掌握起來更有難度。

比較經常使用的IDE是 eclipse,myEclipse,IntelliJ IDEA,NetBeans 等,能夠百度安裝。

若是你是初學者,建議使用 JCreator,這個IDE十分小巧,輕便,很適合學習與實驗的場合。

推薦使用Jcreator的2.0 版本,新的版本功能更多,bug也就更多,但並不是咱們關心的。

 常見錯誤

運行javac 的時候出現的錯誤屬於編譯錯誤,通常都是語法問題,容易解決。

好比,這個:

這是因爲把String 誤寫爲string 形成的,java像c語言同樣是大小寫敏感的。

再看這個:

這是因爲在句子的結束位置沒有分號形成的。

java也像c語言同樣,每一個句子都要用分號結尾,若是忘了寫分號,就會被認爲是與下一行同一個句子了。

再看:

此次有分號啊,怎麼還錯呢?

這是由於用了中文的分號的緣故。

除非是用在字符串中,其它位置的符號都應該是西文符號。

這個呢?類名是Mya,文件名倒是MyA,這是不行的。

主類的名字必須與文件名徹底一致。

命名的約定

雖說,起個什麼樣的名字只是我的愛好問題,但遵照一些約定仍是必要的。

java編碼約定:

1 類名的首字母要大寫。換單詞的時候還要再次大寫。

好比:MyGoodClass 就是合格的類名。寫成mygoodclass 從語法上說也不錯,但不符合約定。

2 方法的名字首字母小寫。換單詞的時候大寫。

好比:myFirstFunc,不要寫成 my_first_func,或MyFirstFunc

在前邊看到的短短的源碼中,有許多類名,有些是咱們本身定義的,有些是系統定義的。

String, System是系統定義的類名, MyA 是咱們本身定義的類。

args是變量名,main,println 是方法名。

相關文章
相關標籤/搜索