給新手 Java 開發者的 7 點提示
如果你才剛開始學習 Java 程式設計,這裡有七個你需要知道的基礎知識。
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 中國”官方小程式來檢視
相關文章
- 7 個給新手 Java 開發者的提示Java
- 送給 ES6 開發者的7個 hack
- 新手注意:java開發的有哪些重要的知識點?Java
- Linux新手如何入門?給新手的四點建議!Linux
- [譯] 新手開發者須知
- 給PHP開發者的建議PHP
- 遊戲開發中的紅點提示遊戲開發
- [譯] 寫給前端開發者的 GraphQL 指南前端
- WWDC 2018:寫給 OpenGL 開發者們的 Metal 開發指南
- 給Linux系統運維新手的四點建議Linux運維
- OpenMLDB 新手寶典 開發者上手必讀
- 1人作《致命公司》的成功,帶給遊戲開發者的三點啟示遊戲開發
- 參加Dubbo社群開發者日成都站後,帶給我的一點思考。
- [譯] 關於 Room 的 7 點專業提示OOM
- 給Android開發者的Flutter指南 (下) [翻譯]AndroidFlutter
- 給Android開發者的Flutter指南 (上) [翻譯]AndroidFlutter
- 寫給.NET開發者的Python教程(一):引言Python
- 給Java開發初學者的10個學習建議,助你學習事半功倍!Java
- 給Java開發初學者的10個學習建議,助你學習事半功倍Java
- 開發者的福利 - NutUI-vscode 智慧提示來了UIVSCode
- Spring 框架:Java 開發者的春天Spring框架Java
- BeanMappingKey,Java開發者們的福星!!!BeanAPPJava
- 給Android開發者Flutter上手指南AndroidFlutter
- 給數學新手的忠告
- 怎樣為遊戲設計新手教程?海外開發者分享了6點建議遊戲設計
- 開發者談設計遊戲時需要注意的7個關鍵點遊戲
- [譯] 寫給 React 開發者的自定義元素指南React
- 寫給go開發者的gRPC教程-通訊模式GoRPC模式
- 奈學開發者社群分享:Java - 設計模式的7個設計原則Java設計模式
- 推薦給新手的35個好用的Vue開源庫Vue
- 一個五年的後端開發老鳥給新手的 12 條忠告【原創】後端
- 寫給 Android 開發者的 Gradle 系列(一)基本姿勢AndroidGradle
- 寫給 Android 開發者的 Gradle 系列(三)撰寫 pluginAndroidGradlePlugin
- 寫給 Android 開發者的 Gradle 系列(二)撰寫 taskAndroidGradle
- 寫給國內遊戲開發者的出海小攻略遊戲開發
- 寫給go開發者的gRPC教程-錯誤處理GoRPC
- 新手Java學習路線乾貨教材 《Java Web開發實戰》JavaWeb
- Java中Iterator迭代器的next()方法的新手易錯點。Java