給新手 Java 開發者的 7 點提示
Java 是一個多功能的編程語言,在某種程度上,它用在幾乎所有可能涉及計算機的行業了里。Java 的最大優勢是,它運行在一個 Java 虛擬機(JVM)中,這是一個翻譯 Java 代碼為與操作系統兼容的位元組碼的層。只要有 JVM 存在於你的操作系統上 —— 不管這個操作系統是在一個伺服器(或「無伺服器」,也是同樣的)、桌面電腦、筆記本電腦、移動設備,或嵌入式設備 —— 那麼,Java 應用程序就可以運行在它上面。
這使得 Java 成為程序員和用戶的一種流行語言。程序員知道,他們只需要寫一個軟體版本就能最終得到一個可以運行在任何平台上的應用程序;用戶知道,應用程序可以運行在他們的計算機上,而不用管他們使用的是什麼樣的操作系統。
很多語言和框架是跨平台的,但是沒有實現同樣的抽象層。使用 Java,你針對的是 JVM,而不是操作系統。對於程序員,當面對一些編程難題時,這是阻力最小的線路,但是它僅在當你知道如何編程 Java 時有用。如果你剛開始學習 Java 編程,這裡有你需要知道的七個基礎的提示。
但是,首先,如果你不確定是否你安裝了 Java ,你可以在一個終端(例如 Bash 或 PowerShell)中找出來,通過運行:
$ java --version
openjdk 12.0.2 2019-07-16
OpenJDK Runtime Environment 19.3 (build 12.0.2+9)
OpenJDK 64-Bit Server VM 19.3 (build 12.0.2+9, mixed mode, sharing)
如果你得到一個錯誤,或未返回任何東西,那麼你應該安裝 Java 開發套件(JDK)來開始 Java 開發。或者,安裝一個 Java 運行時環境(JRE),如果你只是需要來運行 Java 應用程序。
1、Java 軟體包
在 Java 語言中,相關的類被分組到一個軟體包中。當你下載 JDK 時所獲得的 Java 基礎庫將被分組到以 java
或 javax
開頭的軟體包中。軟體包提供一種類似於計算機上的文件夾的功能:它們為相關的元素提供結構和定義(以編程術語說,命名空間)。額外的軟體包可以從獨立開發者、開源項目和商業供應商獲得,就像可以為任何編程語言獲得庫一樣。
當你寫一個 Java 程序時,你應該在你的代碼是頂部聲明一個軟體包名稱。如果你只是編寫一個簡單的應用程序來入門 Java,你的軟體包名稱可以簡單地用你的項目名稱。如果你正在使用一個 Java 集成開發環境,如 Eclipse,當你啟動一個新的項目時,它為你生成一個合乎情理的軟體包名稱。
package helloworld;
/**
* @author seth
* An application written in Java.
*/
除此之外,你可以通過查找它相對於你的項目整體的路徑來確定你的軟體包名稱。例如,如果你正在寫一組類來幫助遊戲開發,並且該集合被稱為 jgamer
,那麼你可能在其中有一些唯一的類。
package jgamer.avatar;
/**
* @author seth
* An imaginary game library.
*/
你的軟體包的頂層是 jgamer
,並且在其內部中每個軟體包都是一個獨立的派生物,例如 jgamer.avatar
和 jgamer.score
等等。在你的文件系統里,其目錄結構反映了這一點,jgamer
是包含文件 avatar.java
和 score.java
的頂級目錄。
2、Java 導入
作為一名通曉多種語言的程序員,最大的樂趣是找出是否用 include
、import
、use
、require
,或一些其它術語來引入你不管使用何種編程語言編寫的庫。在 Java 中,順便說一句,當導入你的代碼的需要的庫時,使用 import
關鍵字。
package helloworld;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author seth
* A GUI hello world.
*/
導入是基於該環境的 Java 路徑。如果 Java 不知道 Java 庫存儲在系統上的何處,那麼,就不能成功導入。只要一個庫被存儲在系統的 Java 路徑中,那麼導入能夠成功,並且庫能夠被用於構建和運行一個 Java 應用程序。
如果一個庫並不在 Java 路徑中(因為,例如,你正在寫你自己的庫),那麼該庫可以與你的應用程序綁定在一起(協議許可),以便導入可以按預期地工作。
3、Java 類
Java 類使用關鍵字 public class
聲明,以及一個唯一的對應於它的文件名的類名。例如,在項目 helloworld
中的一個文件 Hello.java
中:
package helloworld;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* @author seth
* A GUI hello world.
*/
public class Hello {
// this is an empty class
}
你可以在一個類內部聲明變數和函數。在 Java 中,在一個類中的變數被稱為欄位。
4、Java 方法
Java 的方法本質上是對象中的函數。基於預期返回的數據類型(例如 void
、int
、float
等等),它們被定義為 public
(意味著它們可以被任何其它類訪問)或 private
(限制它們的使用)。
public void helloPrompt(ActionEvent event) {
String salutation = "Hello %s";
string helloMessage = "World";
message = String.format(salutation, helloMessage);
JOptionPane.showMessageDialog(this, message);
}
private int someNumber (x) {
return x*2;
}
當直接調用一個方法時,以其類和方法名稱來引用。例如,Hello.someNumber
指向在 Hello
類中的 someNumber
方法。
5、static
Java 中的 static
關鍵字使代碼中的成員可以獨立於包含其的對象而被訪問。
在面向對象編程中,你編寫的代碼用作「對象」的模板,這些對象在應用程序運行時產生。例如,你不需要編寫一個具體的窗口,而是編寫基於 Java 中的窗口類的窗口實例(並由你的代碼修改)。由於在應用程序生成它的實例之前,你編寫的所有代碼都不會「存在」,因此在創建它們所依賴的對象之前,大多數方法和變數(甚至是嵌套類)都無法使用。
然而,有時,在對象被通過應用程序創建前,你需要訪問或使用其中的數據。(例如,除非事先知道球是紅色時,應用程序無法生成一個紅色的球)。對於這些情況,請使用 static
關鍵字。
6、try 和 catch
Java 擅長捕捉錯誤,但是,只有你告訴它遇到錯誤時該做什麼,它才能優雅地恢復。在 Java 中,嘗試執行一個動作的級聯層次結構以 try
開頭,出現錯誤時回落到 catch
,並以 finally
結束。如果 try
子句失敗,則將調用 catch
,最後,不管結果如何,總是由 finally
來執行一些合理的動作。這裡是一個示例:
try {
cmd = parser.parse(opt, args);
if(cmd.hasOption("help")) {
HelpFormatter helper = new HelpFormatter();
helper.printHelp("Hello <options>", opt);
System.exit(0);
}
else {
if(cmd.hasOption("shell") || cmd.hasOption("s")) {
String target = cmd.getOptionValue("tgt");
} // else
} // fi
} catch (ParseException err) {
System.out.println(err);
System.exit(1);
} //catch
finally {
new Hello().helloWorld(opt);
} //finally
} //try
這是一個健壯的系統,它試圖避免無法挽回的錯誤,或者,至少,為你提供讓用戶提交有用的反饋的選項。經常使用它,你的用戶將會感謝你!
7、運行 Java 應用程序
Java 文件,通常以 .java
結尾,理論上說,可以使用 java
命令運行。然而,如果一個應用程序很複雜,運行一個單個文件是否會產生有意義的結果是另外一個問題。
來直接運行一個 .java
文件:
$ java ./Hello.java
通常,Java 應用程序以 Java 存檔(JAR)文件的形式分發,以 .jar
結尾。一個 JAR 文件包含一個清單文件(可以指定主類、項目結構的一些元數據),以及運行應用程序所需的所有代碼部分。
要運行一個 JAR 文件,你可以雙擊它的圖標(取決於你的操作系統設置),你也可以從終端中啟動它:
$ java -jar ./Hello.jar
適合所有人的 Java
Java 是一種強大的語言,由於有了 OpenJDK 項目及其它的努力,它是一種開放式規範,允許像 IcedTea、Dalvik 和 Kotlin 項目的茁壯成長。學習 Java 是一種準備在各種行業中工作的好方法,而且,使用 Java 的理由很多。
via: https://opensource.com/article/19/10/java-basics
作者:Seth Kenlon 選題:lujun9972 譯者:robsean 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive