Java 新手入門指南 輕鬆學會編程基礎

文章最後更新於 2024 年 10 月 2 日

1. Java 語言概述

1.1 Java 的歷史

Java 語言由 Sun Microsystems 的 James Gosling 和他的團隊於 1995 年推出。最初,Java 是為了開發嵌入式系統而設計的,但隨後迅速被應用於網絡和企業應用開發。Java 的設計理念是“寫一次,隨處運行”,這使得它成為跨平台部署的理想選擇。

  • Java 的版本演變
    • Java 1.0:1996 年發布,簡化了網絡應用的開發。
    • Java 2(Java 1.2):1998 年推出,增加了 Swing GUI 組件和集合框架。
    • Java 5(Java 1.5):2004 年引入了泛型、註解和其他重要特性。
    • Java 8:2014 年發布,帶來了 Lambda 表達式和 Stream API,顯著提升了語言的功能性。
    • Java 17:2021 年成為 LTS(長期支持)版本,進一步改進了性能和安全性。

1.2 Java 的特點

  • 平台無關性(Write Once, Run Anywhere)
    Java 程式編譯成字節碼,這些字節碼可以在任何安裝了 Java 虛擬機(JVM)的系統上運行。

  • 垃圾回收機制
    Java 自動管理內存,通過垃圾回收器自動釋放不再引用的物件,減少了內存洩漏的風險。

  • 物件導向設計
    Java 是一種物件導向的語言,支援封裝、繼承和多態等概念,從而促進了代碼的重用和可維護性。

1.3 Java 的應用領域

  • 網頁應用(Java EE)
    Java EE(企業版)提供了一組規範和API,用於開發大型、跨平台的企業級應用,特別是在服務器端的開發。

  • 移動應用(Android)
    Java 是 Android 應用開發的主要語言之一,提供了豐富的庫和工具來構建移動應用。

  • 大數據和雲計算
    Java 在大數據處理領域中佔有重要地位,像是 Apache Hadoop 和 Apache Spark 等框架均是使用 Java 開發的。

2. Java 開發環境設置

2.1 安裝 JDK

  1. JDK 的下載與安裝步驟

    • 前往 Oracle 官方網站或 OpenJDK 頁面下載最新版本的 JDK。
    • 選擇合適的安裝包(如 Windows、macOS 或 Linux),下載後運行安裝程式,並遵循提示完成安裝。
  2. 環境變數配置

    • Windows 系統:
      • 在控制面板中尋找「系統」->「高級系統設置」->「環境變數」。
      • 在「系統變數」中新增 JAVA_HOME 變數,值設為 JDK 安裝路徑。
      • 編輯 Path 變數,新增 %JAVA_HOME%\bin
    • Linux/Mac 系統:
      • 編輯 ~/.bashrc~/.bash_profile,新增以下行:
        export JAVA_HOME=/path/to/jdk
        export PATH=$JAVA_HOME/bin:$PATH
      • 運行 source ~/.bashrcsource ~/.bash_profile 以使改動生效。

2.2 選擇 IDE

常見 IDE 比較

IDE 特點 優缺點
IntelliJ IDEA 智能提示、強大的重構功能 商業版本需付費,但社群版免費
Eclipse 開源、插件豐富 界面稍顯複雜,性能有時不穩定
NetBeans 支援多種語言,界面友好 社群支持相對較少
  • IDE 的基本配置
    • 下載並安裝所選的 IDE。
    • 在 IDE 中配置 JDK 路徑,確保能夠找到 Java 編譯器和執行時。
    • 配置必要的插件以增強開發體驗。

2.3 初始專案設置

  1. 建立簡單的 Java 專案

    • 在 IDE 中選擇創建新專案,選擇 Java 類型,設置專案名稱和存儲路徑。
    • 確保選擇正確的 JDK 版本。
  2. 編輯與運行第一個 Java 程式

    public class HelloWorld {
       public static void main(String[] args) {
           System.out.println("Hello, World!");
       }
    }
    • 在 IDE 中運行此程式,應該在控制台中看到輸出“Hello, World!”。

3. Java 基礎語法

3.1 變數與數據類型

基本數據類型介紹

數據類型 描述 範例值
int 整數 123
double 雙精度浮點數 3.14
char 字符 'A'
boolean 布林值(true/false) true
  • 變數的命名規範
    • 變數名稱應以字母開頭,可以包含字母、數字和下劃線(_)。
    • 不應使用 Java 保留字。
    • 變數名稱應具描述性,如 studentNametotalAmount

3.2 控制結構

  • 條件語句(if, switch)

    int score = 85;
    
    if (score >= 60) {
      System.out.println("及格");
    } else {
      System.out.println("不及格");
    }
    
    switch (score / 10) {
      case 10:
      case 9:
          System.out.println("優");
          break;
      case 8:
          System.out.println("良");
          break;
      default:
          System.out.println("需加強");
    }
  • 循環語句(for, while, do-while)

    // for 循環
    for (int i = 0; i < 5; i++) {
      System.out.println("i: " + i);
    }
    
    // while 循環
    int j = 0;
    while (j < 5) {
      System.out.println("j: " + j);
      j++;
    }
    
    // do-while 循環
    int k = 0;
    do {
      System.out.println("k: " + k);
      k++;
    } while (k < 5);

3.3 方法與參數

  • 方法的定義與調用

    public int add(int a, int b) {
      return a + b;
    }
    
    public static void main(String[] args) {
      HelloWorld hw = new HelloWorld();
      int sum = hw.add(5, 10);
      System.out.println("Sum: " + sum);
    }
  • 方法的參數與返回值

    • 方法可以接受多個參數,並可以返回任何數據類型的值。
    • 若不需要返回值,則使用 void 作為返回類型。

4. 物件導向編程(OOP)概念

4.1 類與對象

  • 類的定義與實例化

    public class Dog {
      String name;
      int age;
    
      void bark() {
          System.out.println(name + " says woof!");
      }
    }
    
    public static void main(String[] args) {
      Dog dog = new Dog();
      dog.name = "Buddy";
      dog.age = 3;
      dog.bark();
    }
  • 屬性與方法的使用

    • 屬性代表對象的狀態,方法代表對象的行為。

4.2 繼承與多態

  • 繼承的概念與實現

    public class Animal {
      void eat() {
          System.out.println("Animal eats");
      }
    }
    
    public class Cat extends Animal {
      void meow() {
          System.out.println("Cat meows");
      }
    }
    
    public static void main(String[] args) {
      Cat cat = new Cat();
      cat.eat(); // 繼承自 Animal 的方法
      cat.meow();
    }
  • 方法重寫與多態的應用

    public class Dog extends Animal {
      @Override
      void eat() {
          System.out.println("Dog eats bones");
      }
    }
    
    Animal myDog = new Dog();
    myDog.eat(); // 輸出: Dog eats bones

4.3 抽象類與介面

  • 抽象類的定義與使用

    abstract class Shape {
      abstract void draw();
    }
    
    class Circle extends Shape {
      void draw() {
          System.out.println("Drawing a circle");
      }
    }
  • 介面的概念及多重繼承

    interface Animal {
      void sound();
    }
    
    class Cat implements Animal {
      public void sound() {
          System.out.println("Meow");
      }
    }

5. Java 常用庫與框架

5.1 標準庫

  • java.lang、java.util 等常用包介紹

    • java.lang:包含基本類,如 StringMathSystem
    • java.util:提供集合框架,日期和時間 API 等。
  • 數據結構(List, Map, Set)的使用

    import java.util.ArrayList;
    import java.util.HashMap;
    
    public static void main(String[] args) {
      // List
      ArrayList fruits = new ArrayList<>();
      fruits.add("Apple");
      fruits.add("Banana");
    
      // Map
      HashMap map = new HashMap<>();
      map.put("one", 1);
      map.put("two", 2);
    }

5.2 流程與異常處理

  • 輸入輸出流的基本操作

    import java.io.*;
    
    public static void main(String[] args) {
      try {
          FileWriter writer = new FileWriter("example.txt");
          writer.write("Hello, World!");
          writer.close();
      } catch (IOException e) {
          e.printStackTrace();
      }
    }
  • 異常的捕獲與處理

    public static void main(String[] args) {
      try {
          int result = 10 / 0;
      } catch (ArithmeticException e) {
          System.out.println("Cannot divide by zero.");
      }
    }

5.3 受歡迎的框架

  • Spring 框架簡介
    Spring 是一個強大的框架,提供了依賴注入、面向切面編程等功能,廣泛用於企業級應用的開發。

  • Hibernate 的基本概念
    Hibernate 是一個物件關聯映射(ORM)框架,用於簡化數據庫操作,提供了對象與數據庫表之間的映射。

6. 實踐與資源

6.1 練習平台

  • 提供一些線上編程練習平台

    • LeetCode:提供各種算法挑戰,適合練習編程技巧。
    • HackerRank:提供豐富的編程挑戰和競賽。
  • 參加開源項目的建議

    • 在 GitHub 上尋找感興趣的開源項目,閱讀代碼並嘗試貢獻。

6.2 學習資源

  • 推薦書籍與線上課程

    • 書籍:《Head First Java》、《Effective Java》
    • 在線課程:Coursera、Udemy 上的 Java 課程。
  • 社區與論壇

    • Stack Overflow:尋找問題的解答,並參與討論。
    • Reddit:加入 r/java 社區,交流與學習。

6.3 實作專案建議

  • 初學者適合的專案範例

    • 簡單的計算器:實現基本的加減乘除功能。
    • 任務管理器:簡單的任務添加、刪除和查看功能。
  • 完成專案後的總結與反思

    • 反思學習過程中的挑戰與收穫,持續改進編程技巧。

這篇文章涵蓋了 Java 語言的基礎知識和實踐資源,旨在幫助新手快速入門並建立堅實的基礎。

關於作者

Carger
Carger
我是Oscar (卡哥),前Yahoo Lead Engineer、高智商同好組織Mensa會員,超過十年的工作經驗,服務過Yahoo關鍵字廣告業務部門、電子商務及搜尋部門,喜歡彈吉他玩音樂,也喜歡投資美股、虛擬貨幣,樂於與人分享交流!

如果對文章內容有任何問題,歡迎在底下留言讓我知道。
如果你喜歡我的文章,可以按分享按鈕,讓更多的人看見我的文章。