Java 開發入門指南
什麼是 Java
Java 是一種跨平台的物件導向程式語言,由 Sun Microsystems(現為 Oracle)開發。Java 的核心理念是「一次編寫,到處執行」(Write Once, Run Anywhere),這使得 Java 成為企業級應用開發的首選語言之一。
主要特色
- 跨平台性:透過 Java 虛擬機器(JVM)實現跨平台執行
- 物件導向:完全的物件導向程式設計語言
- 記憶體管理:自動垃圾回收機制
- 安全性:內建安全機制和沙箱模式
- 豐富的生態系統:龐大的函式庫和框架支援
- 企業級支援:廣泛應用於企業級應用開發
開發環境準備
必要工具
-
Java 開發工具包(JDK)
- 推薦使用 OpenJDK - 開源且免費的 Java 實作
- 建議版本:Java 17 LTS 或 Java 21 LTS
-
建置工具
- Apache Maven - 專案管理和建置工具
- 或 Gradle - 現代化的建置自動化工具
-
整合開發環境(IDE)
- IntelliJ IDEA(推薦)
- Eclipse
- Visual Studio Code + Java Extension Pack
快速安裝(macOS)
# 安裝 OpenJDK
brew install openjdk@17
# 安裝 Maven
brew install maven
# 驗證安裝
java -version
mvn -version
快速安裝(Windows)
# 使用 Chocolatey
choco install openjdk17
choco install maven
# 或使用 Scoop
scoop install openjdk17
scoop install maven
第一個 Java 程式
Hello World 範例
// HelloWorld.java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
編譯和執行
# 編譯
javac HelloWorld.java
# 執行
java HelloWorld
Maven 專案結構
建立新專案
mvn archetype:generate \
-DgroupId=com.example \
-DartifactId=my-app \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false
標準目錄結構
my-app/
├── pom.xml
└── src/
├── main/
│ ├── java/
│ │ └── com/example/
│ │ └── App.java
│ └── resources/
└── test/
└── java/
└── com/example/
└── AppTest.java
基本 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>my-app</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Java 基礎語法
變數和資料型別
// 基本資料型別
int age = 25;
double price = 99.99;
boolean isActive = true;
char grade = 'A';
// 參考型別
String name = "John Doe";
Integer count = 100;
// 陣列
int[] numbers = {1, 2, 3, 4, 5};
String[] names = new String[3];
控制結構
// 條件判斷
if (age >= 18) {
System.out.println("成年人");
} else {
System.out.println("未成年");
}
// 迴圈
for (int i = 0; i < 5; i++) {
System.out.println("Count: " + i);
}
// 增強型 for 迴圈
for (String name : names) {
System.out.println(name);
}
// while 迴圈
while (count > 0) {
count--;
}
方法定義
public class Calculator {
// 靜態方法
public static int add(int a, int b) {
return a + b;
}
// 實例方法
public double multiply(double x, double y) {
return x * y;
}
// 方法重載
public int add(int a, int b, int c) {
return a + b + c;
}
}
物件導向程式設計
類別和物件
public class Person {
// 屬性
private String name;
private int age;
// 建構子
public Person(String name, int age) {
this.name = name;
this.age = age;
}
// Getter 和 Setter
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
// 方法
public void introduce() {
System.out.println("我是 " + name + ",今年 " + age + " 歲");
}
}
繼承
public class Student extends Person {
private String studentId;
public Student(String name, int age, String studentId) {
super(name, age); // 呼叫父類別建構子
this.studentId = studentId;
}
@Override
public void introduce() {
super.introduce();
System.out.println("學號:" + studentId);
}
}
常用 Maven 指令
# 編譯專案
mvn compile
# 執行測試
mvn test
# 打包專案
mvn package
# 清理專案
mvn clean
# 安裝到本地倉庫
mvn install
# 執行應用程式
mvn exec:java -Dexec.mainClass="com.example.App"
下一步學習
完成基本 Java 學習後,可以繼續學習:
-
進階 Java 特性
- 泛型(Generics)
- Lambda 表達式
- Stream API
- 多執行緒程式設計
-
Java 框架
- Spring Boot - 企業級應用框架
- Hibernate - ORM 框架
- JUnit - 測試框架
-
資料庫整合
- JDBC
- JPA/Hibernate
- Spring Data
-
Web 開發
- Servlet/JSP
- Spring MVC
- RESTful API 開發
學習資源
官方文件
線上教學
書籍推薦
- "Effective Java" by Joshua Bloch
- "Java: The Complete Reference" by Herbert Schildt
- "Head First Java" by Kathy Sierra