Java LanguageJava語言入門

Download Java Language for free

備註

Java編程語言是......

  • 通用 :它旨在用於在各種應用程序域中編寫軟件,並且缺少任何特定域的專用功能。

  • 基於類 :其對象結構在類中定義。類實例始終具有在其類定義中指定的那些字段和方法(請參閱類和對象 )。這與JavaScript等非基於類的語言形成對比。

  • 靜態類型 :編譯器在編譯時檢查是否遵守變量類型。例如,如果方法需要String類型的參數,那麼在調用方法時該參數實際上必須是一個字符串。

  • 面向對象 :Java程序中的大多數東西都是類實例,即狀態(字段)和行為的捆綁(對數據進行操作並形成對象與外部世界的接口的方法)。

  • 可移植 :它可以在任何具有javac平台上javac ,生成的類文件可以在任何具有JVM的平台上運行。

Java旨在讓應用程序開發人員“編寫一次,隨處運行”(WORA),這意味著編譯的Java代碼可以在支持Java的所有平台上運行,而無需重新編譯。

Java代碼被編譯為字節碼( .class文件),而後者又由Java虛擬機(JVM)解釋。理論上,由一個Java編譯器創建的字節碼應該在任何JVM上以相同的方式運行,即使在不同類型的計算機上也是如此。 JVM可能(並且在實際程序中)將選擇編譯為本機機器命令,經常執行字節碼的部分。這稱為“即時(JIT)編譯”。

Java版本和版本

Sun / Oracle定義了三個Java版本:

  • Java標準版(SE)是專為一般用途而設計的版本。
  • Java Enterprise Edition(EE)添加了一系列用於在Java中構建“企業級”服務的工具。 Java EE 單獨介紹
  • Java Micro Edition(ME)基於Java SE的子集,旨在用於資源有限的小型設備。

Java SE / EE / ME版本有一個單獨的主題。

每個版本都有多個版本。 Java SE版本如下所示。

安裝Java

有關安裝Java(標準版)的單獨主題。

編譯和運行Java程序

有以下單獨的主題:

下一步是什麼?

以下是繼續學習和理解Java編程語言的主題鏈接。這些主題是Java編程的基礎知識,可幫助您入門。

測試

雖然Java對標準庫中的測試沒有任何支持,但是有第三方庫旨在支持測試。兩個最受歡迎的單元測試庫是:

其他

  • 設計模式中介紹了Java的設計模式
  • 為Android編程是覆蓋在Android的
  • Java EE中介紹了Java Enterprise Edition技術。
  • 甲骨文的JavaFX技術覆蓋的JavaFX

1.在“ 版本”部分中, 生命週期結束(免費)日期是Oracle將停止向其公共下載站點發布Java SE的更多更新的日期。需要持續訪問關鍵錯誤修復和安全修復程序以及Java SE常規維護的客戶可以通過Oracle Java SE支持獲得長期支持

版本

Java SE版本代碼名稱壽命終止(免費1發布日期
Java SE 9(早期訪問) 沒有 未來 2017年7月27日
Java SE 8 蜘蛛未來 2014年3月18日
Java SE 7 海豚 2015年4月14日 2011-07-28
Java SE 6 野馬 2013年4月16日 2006-12-23
Java SE 5 2009-11-04 2004-10-04
Java SE 1.4 梅林在2009-11-04之前 2002-02-06
Java SE 1.3 紅隼在2009-11-04之前 2000年5月8日
Java SE 1.2 操場在2009-11-04之前 1998-12-08
Java SE 1.1 沒有 在2009-11-04之前 1997年2月19日
Java SE 1.0 橡木在2009-11-04之前 1996年1月21日

創建您的第一個Java程序

文本編輯器或名為HelloWorld.java IDE中創建一個新文件。然後將此代碼塊粘貼到文件中並保存:

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
 

在Ideone上運行

注意:為了讓Java將其識別為public class (而不是拋出編譯時錯誤 ),文件名必須與擴展名為.java 的類名(本例中為HelloWorld )相同。之前還應該有一個public 訪問修飾符。

命名約定建議Java類以大寫字符開頭,並採用駝峰格式(每個單詞的首字母大寫)。這些公約建議不要使用下劃線( _ )和美元符號( $ )。

要編譯,打開一個終端窗口並導航到HelloWorld.java 目錄:

cd /path/to/containing/folder/
 

注意: cd是更改目錄的終端命令。

輸入javac 後跟文件名和擴展名,如下所示:

$ javac HelloWorld.java
 

將錯誤'javac' is not recognized as an internal or external command, operable program or batch file. 相當常見的'javac' is not recognized as an internal or external command, operable program or batch file. 即使您已經安裝了JDK 並且能夠從IDE ex運行該程序。 eclipse 等因為默認情況下路徑沒有添加到環境中。

如果你在windows上得到這個,要解決,首先嘗試瀏覽你的javac.exe 路徑,它最有可能在你的C:\Program Files\Java\jdk(version number)\bin 。然後嘗試用下面運行它。

$ C:\Program Files\Java\jdk(version number)\bin\javac HelloWorld.java
 

以前當我們調用javac 它與上面的命令相同。只有在這種情況下,您的OS 才能知道javac 所在的位置。現在讓我們告訴它,這樣你就不必每次都輸入整個路徑。我們需要將它添加到PATH

要在Windows XP / Vista / PATH 編輯PATH 環境變量:

  • 控制面板⇒系統⇒高級系統設置
  • 切換到“高級”選項卡⇒環境變量
  • 在“系統變量”中,向下滾動以選擇“路徑”⇒編輯

你不能撤消這個,所以要小心。首先將現有路徑複製到記事本。然後獲取精確的PATH到您的javac 手動瀏覽到javac 所在的文件夾,然後單擊地址欄然後復制它。它看起來應該像c:\Program Files\Java\jdk1.8.0_xx\bin

在“變量值”字段中,粘貼所有現有目錄的IN FRONT ,然後是分號(;)。 請勿刪除任何現有條目。

Variable name  : PATH
Variable value : c:\Program Files\Java\jdk1.8.0_xx\bin;[Existing Entries...]
 

現在這應該解決。

對於基於Linux的系統,請嘗試此處

注意: javac 命令調用Java編譯器。

然後編譯器將生成一個名為HelloWorld.class字節碼文件,該文件可以在Java虛擬機(JVM)中執行 。 Java編程語言編譯器javac 讀取用Java編程語言編寫的源文件,並將它們編譯成bytecode 類文件。可選地,編譯器還可以使用Pluggable Annotation Processing API處理在源文件和類文件中找到的註釋。編譯器是命令行工具,但也可以使用Java Compiler API調用。

要運行程序,請輸入java 然後輸入包含main 方法的類的名稱(在我們的示例中為HelloWorld )。請注意.class 是如何省略的:

$ java HelloWorld
 

注意: java 命令運行Java應用程序。

這將輸出到您的控制台:

你好,世界!

您已經成功編寫並構建了第一個Java程序!

注意:為了識別Java命令( javajavac 等),您需要確保:

您將需要使用JVM提供的編譯器( javac )和執行程序( java )。要找出已安裝的版本,請在命令行中輸入java -versionjavac -version 。程序的版本號將打印在終端中(例如1.8.0_73 )。


仔細看看Hello World計劃

該“Hello World”程序包含一個文件,其中包含一個的HelloWorld 類定義,一個main 方法,和裡面的聲明main 方法。

public class HelloWorld {
 

class 關鍵字開始名為HelloWorld 的類的類定義。每個Java應用程序至少包含一個類定義( 有關類的更多信息 )。

    public static void main(String[] args)  {
 

這是一個入口點方法(由其名稱和public static void main(String[]) 簽名定義) JVM 可以從中運行您的程序。每個Java程序都應該有一個。它是:

  • public :意味著可以從程序外部的任何地方調用該方法。有關詳細信息,請參閱可見性
  • static :表示它存在並且可以自己運行(在類級別而不創建對象)。
  • void :意味著它不返回任何值。 注意:這與C和C ++不同,其中返回代碼如int (Java的方式是System.exit() )。

這個主要方法接受:

幾乎所有這些都是Java入口點方法所必需的。

非必需部件:

  • 名稱args 是一個變量名,所以它可以被稱為你想要的任何名稱,儘管它通常被稱為args
  • 它的參數類型是數組( String[] args )還是VarargsString... args )並不重要,因為數組可以傳遞給varargs。

注意:單個應用程序可能有多個包含入口點( main )方法的類。應用程序的入口點由作為java 命令的參數傳遞的類名確定。

在main方法中,我們看到以下語句:

        System.out.println("Hello, World!");
 

讓我們逐個元素地分解這個陳述:

元件目的
System 這表示後續表達式將從java.lang 包調用System 類。
. 這是一個“點運算符”。點運算符使您可以訪問類成員1 ;即它的字段(變量)及其方法。在這種情況下,此點運算符允許您引用System 類中的out 靜態字段。
out 這是包含標準輸出功能的System 類中PrintStream 類型的靜態字段的名稱。
. 這是另一個點運算符。此點運算符提供對out 變量內的println 方法的訪問。
println 這是PrintStream類中方法的名稱。此方法特別將參數的內容打印到控制台中,然後插入換行符。
( 此括號表示正在訪問方法(而不是字段)並開始傳遞給println 方法的參數。
"Hello, World!" 這是作為參數傳遞給println 方法的String文字。每個末尾的雙引號將文本分隔為String。
) 此括號表示傳遞給println 方法的參數的關閉。
; 這個分號標誌著聲明的結束。

注意: Java中的每個語句都必須以分號( ; )結尾。

然後關閉方法體和類體。

    }  // end of main function scope
}      // end of class HelloWorld scope 
 

這是展示OO範例的另一個例子。讓我們為一個足球隊建模一個(是的,一個!)成員。可以有更多,但我們將討論當我們到達數組。

首先,讓我們定義我們的Team 類:

public class Team {
    Member member;
    public Team(Member member) {  // who is in this Team?
        this.member = member;  //  one 'member' is in this Team!
    }
}
 

現在,讓我們定義我們的Member 類:

class Member {
    private String name;
    private String type;
    private int level; // note the data type here
    private int rank; // note the data type here as well

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
}
 

為什麼我們在這裡使用private ?好吧,如果有人想知道你的名字,他們應該直接問你,而不是伸手掏腰帶拿出你的社保卡。這個private 做了類似的事情:它阻止外部實體訪問你的變量。您只能通過getter函數返回private 成員(如下所示)。

將所有內容放在一起,然後添加前面討論過的getter和main方法,我們有:

public class Team {
    Member member;
    public Team(Member member) {  
        this.member = member;  
    }

    // here's our main method
    public static void main(String[] args) {
       Member myMember = new Member("Aurieel", "light", 10, 1); 
       Team myTeam = new Team(myMember); 
       System.out.println(myTeam.member.getName());
       System.out.println(myTeam.member.getType());
       System.out.println(myTeam.member.getLevel());
       System.out.println(myTeam.member.getRank());
    }
}

class Member {
    private String name;
    private String type;
    private int level;
    private int rank;

    public Member(String name, String type, int level, int rank) {
        this.name = name; 
        this.type = type;
        this.level = level;
        this.rank = rank;
    }
    
    /* let's define our getter functions here */
    public String getName() { // what is your name?
        return this.name; // my name is ...
    }
   
    public String getType() { // what is your type?
        return this.type; // my type is ...
    }
    
    public int getLevel() { // what is your level?
        return this.level; // my level is ...
    }
    
    public int getRank() { // what is your rank?
        return this.rank; // my rank is
    }
}
 

輸出:

Aurieel
light
10
1
 

在ideone上運行

再一次, Test 類中的main 方法是我們程序的入口點。如果沒有main 方法,我們就無法告訴Java虛擬機(JVM)從哪裡開始執行該程序。


1 - 因為HelloWorld 類與System 類關係不大,所以它只能訪問public 數據。

Apache Commons Lang