准備學習java,這裡做些整理,了解一下開發java的基本過程以及java的基本特性。與C++做些簡單的比較,熟悉兩種語言的共性和區別。
1、Java語言的語法與C語言和C++語言很接近,使得大多數程序員很容易學習和使用。另一方面,Java丟棄了C++中很少使用的、很難理解的、令人迷惑的那些特性,如操作符重載、多繼承、自動的強制類型轉換。特別地,Java語言不使用指針,而是引用。並提供了自動的廢料收集,使得程序員不必為內存管理而擔憂。
2、Java是面向對象的,具有類,接口等原語;
3、Java是解釋型的語言,Java程序在Java平台上被編譯為字節碼格式,然後可以在實現這個Java平台的任何系統中運行。
解釋型語言:,解釋性語言編寫的程序不進行預先編譯,以文本方式存儲程序代碼。在發布程序時,看起來省了道編譯工序。但是,在運行程序的時候,解釋性語言必須先解釋再運行。
編譯型語言:程序在執行之前需要一個專門的編譯過程,把程序編譯成 為機器語言的文件,運行時不需要重新翻譯,直接使用編譯的結果就行了。程序執行效率高,依賴編譯器,跨平台性差些。如C、C++、Delphi等。
1、開發包
Java主要分為三大體系:
JavaSE(J2SE)(Java2 Platform Standard Edition,java平台標准版)
JavaEE(J2EE)(Java 2 Platform,Enterprise Edition,java平台企業版)
JavaME(J2ME)(Java 2 Platform Micro Edition,java平台微型版)
2005年6月,JavaOne大會召開,SUN公司公開Java SE 6。此時,Java的各種版本已經更名以取消其中的數字”2”:J2EE更名為Java EE, J2SE更名為Java SE,J2ME更名為Java ME。
說明:
Standard Edition(標准版) J2SE 包含那些構成Java語言核心的類。
比如:數據庫連接、接口定義、輸入/輸出、網絡編程
Enterprise Edition(企業版) J2EE 包含J2SE 中的類,並且還包含用於開發企業級應用的類。
比如:EJB、servlet、JSP、XML、事務控制
Micro Edition(微縮版) J2ME 包含J2SE中一部分類,用於消費類電子產品的軟件開發。
比如:呼機、智能卡、手機、PDA、機頂盒
他們的范圍是:J2SE包含於J2EE中,J2ME包含了J2SE的核心類,但新添加了一些專有類,應用場合,API的覆蓋范圍各不相同。
上面的每個版本都分別對應不同的JDK(java development kit),可以根據應用不同下載不同的JDK安裝。對於初學者,先學習Java SE,有了一定基礎之後,可以考慮深入學習Java EE,或者轉戰Android也行。
JDK中包含了java開發需要的各種類和接口,以及運行java程序所需要的環境JRE,若是只想在各種系統平台上運行java程序而不進行開發,則可以直接下載JRE包即可。有些系統是自帶JRE的,但不包括windows,因此要想在windows上運行java程序,需要在系統上安裝JRE。
JRE中包含了JVM(Java虛擬機):它是整個java實現跨平台的最核心的部分,所有的java程序會首先被編譯為.class的類文件,這種類文件可以在虛擬機上執行,也就是說class並不直接與機器的操作系統相對應,而是經過虛擬機間接與操作系統交互,由虛擬機將程序解釋給本地系統執行。
2、工具
Java開發需要一些較好的開發工具,比較好的一個IDE就是Eclipse;eclipse、idea等IDE有自己的編譯器而不是用JDK bin目錄中自帶的,所以在安裝時你會發現他們只要求你選中jre路徑就ok了;而且用eclipse的話不需要設置系統環境變量,它會自動找到安裝的JRE地址。
3、開發環境
Java可以下windows和linux等系統下進行開發,這裡僅介紹在windows下開發需要設置的環境參數,在安相應版本JDK之後,進行變量設置。
變量設置
變量名:JAVA_HOME
變量值:C:\Program Files\Java\jdk1.7.0
//這裡是你JDK的安裝路徑,可以更換
變量名:CLASSPATH
變量值:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; //記得前面有個"."
變量名:Path
變量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
1、”開始”->;”運行”,鍵入”cmd”;
2、鍵入命令”java -version”,”java”,”javac”幾個命令,出現相關畫面,說明環境變量配置成功;
1、基本語法規則
編寫Java程序時,應注意以下幾點:
大小寫敏感:Java是大小寫敏感的,這就意味著標識符Hello與hello是不同的。類名:對於所有的類來說,類名的首字母應該大寫。如果類名由若干單詞組成,那麼每個單詞的首字母應該大寫,例如 MyFirstJavaClass 。方法名:所有的方法名都應該以小寫字母開頭。如果方法名含有若干單詞,則後面的每個單詞首字母大寫。源文件名:源文件名必須和類名相同。當保存文件的時候,你應該使用類名作為文件名保存(切記Java是大小寫敏感的),文件名的後綴為.java。(如果文件名和類名不相同則會導致編譯錯誤)。主方法入口:所有的Java 程序由public static void main(String args[])方法開始執行。
另外:java中沒有頭文件,它是以import的方法從外面導入.class文件的; java中的main()函數是包含在一個類中的,與C++是不一樣的,在C++中沒有定義類也是一個程序。
2、源文件聲明規則
當在一個源文件中定義多個類,並且還有import語句和package語句時,要特別注意這些規則。
一個源文件中只能有一個public類一個源文件可以有多個非public類源文件的名稱應該和public類的類名保持一致。例如:源文件中public類的類名是Employee,那麼源文件應該命名為Employee.java。如果一個類定義在某個包中,那麼package語句應該在源文件的首行。如果源文件包含import語句,那麼應該放在package語句和類定義之間。如果沒有package語句,那麼import語句應該在源文件中最前面。import語句和package語句對源文件中定義的所有類都有效。在同一源文件中,不能給不同的類不同的包聲明。
類有若干種訪問級別,並且類也分不同的類型:抽象類和final類等。這些將在訪問控制章節介紹。除了上面提到的幾種類型,Java還有一些特殊的類,如:內部類、匿名類。
3、Java包:
包主要用來對類和接口進行分類。當開發Java程序時,可能編寫成百上千的類,因此很有必要對類和接口進行分類。(即包中包含很多種類的類和接口)當編譯一個.java文件(即一個編譯單元)時,在.java文件中的每個類都會有一個輸出文件,而該輸出文件的名稱與.java文件中每個類的名稱相同,只是多了一個後綴名.class。因此在編譯少量.java文件之後,會得到大量的.class文件。每一個.java文件編譯以後都會有一個public類,以及任意數量的非public類。因此每個.java文件都是一個構件,如果希望許許多多的這樣的構件從屬於同一個群組,就可以在每一個.java文件中使用關鍵字package。而這個群組就是一個類庫。如果使用package語句,它必須是.java文件中除注釋以外的第一句程序代碼。5、數據類型
byte: Java數據類型和c/c++基本類似,但Java中有byte類型,表示8位2進制的整數,相當於c/c++中的char.常量:Java中常量用final表示,相當於const,final中的值是可以改變的;
-包裝類: 在開發過程中,有時候需要使用對象,而不是內置數據類型,因此java為每個內置數據類型提供了對應的包裝類所有的包裝類(Integer、Long、Byte、Double、Float、Short)都是抽象類Number的子類,對於字符也有相應的Character類。每個類具有相應的函數。
數組:java數組是對象,與c++不同,語法上與c++類似,java數組具有一個屬性length可以獲取數組的長度。(數組a,a.length為數組長度),Array類具有一些函數可以對數組進運算。
1、Java中的接口
Java中類繼承只允許一個父類,當需要進行多個繼承時,需要使用接口。接口類似於類,定義時用interface替代類定義中的class,但裡面的方法只有定義沒有實現。接口文件的文件名必須與接口名相同。繼承接口的關鍵字為implement,與類的繼承extends相似,可以進行多繼承。接口繼承必須實現接口中的所有方法。
接口是規范,規定某個實現類裡必須有那些方法,只要事先定義好接口,當大家一起合作的時候就不用特別麻煩的交互,而是每個人寫好自己的接口實現類,最後拼接到一起就可以了比如數據庫連接類,接口規定好有哪些方法、方法的功能,然後每個數據庫廠商根據接口去實現具體的類,達到統一的目的,要不每個數據庫廠商自己實現一套,那麼你編程的時候就要根據不同驅動使用不同的方法,造成不必要的麻煩。
參考:
2、Java中的抽象類
只聲明方法的存在而不具體實現的類,抽象類不能實例化(不能創建相應對象)定義方式:在class前加上abstract,ex:
abstract class 類名{ ;;;}
抽象類中定義的沒有實際意義的,必須在子類重寫的方法為抽象方法,定義時前面加abstract:abstract type name(agrs)。
一般方法定義與在正常類中定義一樣。
java對象創建一般方式:ClassName obj = new ClassName();