首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 基礎語法與面向對象核心精講:從 HelloWorld 到多態實戰

     編輯:Java 綜合教學

Java 基礎語法與面向對象核心精講:從 HelloWorld 到多態實戰

Java 作為強類型、編譯執行、面向對象的語言,與 PHP、Python 等動態語言有本質區別。本文系統梳理 Java 程序結構、核心語法、數據類型、修飾符、面向對象三大特性,並對比 PHP 差異,助你建立扎實的 Java 思維模型。

一、Java 程序結構與入口

1. 最小化程序

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

2. 編譯與運行

javac HelloWorld.java  # 編譯生成 HelloWorld.class
java HelloWorld        # 執行字節碼

3. 核心規則 (與 PHP 差異巨大)

規則JavaPHP
大小寫敏感是 (類名、方法名、變數名嚴格區分)類/函數名不敏感,變數名敏感
源文件名必須與 public 類名完全一致 (含大小寫),副檔名 `.java`無要求
入口方法必須有 `public static void main(String[] args)` (Java Application)無固定入口,腳本頂層代碼即入口
變數聲明先聲明類型,再使用動態類型,無需聲明
字符串雙引號 `"hello"`,連接符 `+`單/雙引號均可,連接符 `.`

二、數據類型體系

1. 八大基本類型

分類類型位數默認值包裝類
整數byte80Byte
short160Short
int320Integer
long640LLong
浮點float320.0fFloat
double640.0dDouble
字符char16'\u0000'Character
布爾boolean1 (JVM 實現)falseBoolean

注意:`long` 字面量需加 `L` (如 `100L`),`float` 需加 `F` (如 `3.14F`),`char` 用單引號。

2. 引用類型

  • 類、介面、陣列、枚舉、註解。
  • 變數存儲引用(地址),默認值 `null`。
  • 對象在堆上創建,變數在棧上存引用。

3. 常量

final double PI = 3.14159; // 命名慣例:全大寫下劃線分隔

三、核心語法進階

1. 陣列

// 靜態初始化
int[] scores = {90, 85, 95};
String[] names = new String[]{"Tom", "Jerry"};

// 動態初始化
int[] nums = new int[5]; // 默認值 0
String[] cities = new String[3]; // 默認值 null

// 多維陣列
int[][] matrix = new int[3][4]; // 3行4列
String[][] ragged = new String[2][];
ragged[0] = new String[2];
ragged[1] = new String[3];

特點:長度固定、同類型、對象在堆上。`Arrays` 工具類提供排序、複製、查找、轉字符串等靜態方法。

2. 枚舉

enum Season { SPRING, SUMMER, AUTUMN, WINTER }

public class TestEnum {
    Season current = Season.SPRING;
    // 枚舉可定義字段、方法、構造器,實現介面
}

優點:類型安全、單例模式天然實現、可用於 `switch`、實現介面行為。

3. 修飾符總覽

分類修飾符類屬性方法構造器局部變數
訪問控制public✓✓✓✓✗
protected✗ (頂層類)✓✓✓✗
default (無)✓✓✓✓✗
private✗ (頂層類)✓✓✓✗
非訪問static✓ (內部類)✓✓✗✗
final✓✓✓✗✓ (實際最終)
abstract✓✗✓✗✗
synchronized✗✗✓✗✗
volatile✗✓✗✗✗
transient✗✓✗✗✗

4. 字符串處理三大類

類可變性線程安全適用場景
String不可變是 (不可變即線程安全)少量拼接、常量、鍵值
StringBuilder可變否 (高效)單線程大量拼接
StringBuffer可變是 (同步開銷)多線程共享拼接 (少用)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) sb.append(i);
String result = sb.toString();

四、面向對象核心:類與對象

1. 類定義範例

public class Dog {
    // 屬性 (封裝)
    private String name;
    private int age;

    // 構造器 (可多載)
    public Dog() {}
    public Dog(String name) { this.name = name; }
    public Dog(String name, int age) { this(name); this.age = age; }

    // 方法
    public void bark() { System.out.println(name + ": 汪汪!"); }
    public int getAge() { return age; }
    public void setAge(int age) { this.age = age; } // this 區分同名屬性
}

2. 關鍵差異 (vs PHP)

  • 構造器:同名方法,無返回類型,可多載。PHP 用 `__construct()` 只能有一個。
  • 方法定義:`<修飾符> <返回類型> <方法名>(參數)`。PHP 用 `function` 關鍵字。
  • 內部調用:直接 `methodName()` 或 `fieldName`,隱含 `this.`。PHP 用 `$this->method()` / `$this->field`。
  • 文件結構:一個文件只能有一個 public 類,文件名必須匹配。PHP 無此限制。

五、面向對象三大特性深度解析

1. 封裝

  • 屬性 `private`,提供 `public` getter/setter。
  • 在 setter 中加入業務校驗 (如年齡範圍、性別合法值)。
  • 優點:隱藏實現、數據安全、易維護、框架依賴 (反射調用 getter/setter)。

2. 繼承

public class Animal {
    protected String name; // 子類可見
    public void eat() { System.out.println(name + " 進食"); }
}

public class Dog extends Animal {
    // 繼承 name, eat()
    // 可新增屬性/方法,可重寫方法
    @Override
    public void eat() { System.out.println(name + " 啃骨頭"); }
}
  • 單繼承:`extends` 只能繼承一個父類。
  • 子類構造器默認調用 `super()` (父類無參構造器),需顯式 `super(參數)` 調用帶參構造器。
  • 不繼承:父類 `private` 成員、構造器、`static` 成員 (但可訪問/隱藏)。
  • 關聯 vs 繼承:「是一個」用繼承,「有一個」用組合/關聯 (如 `Person` 有 `Dog`)。

3. 多態

Animal a = new Dog(); // 父類引用指向子類對象
a.eat(); // 動態綁定:調用 Dog.eat()

// 應用場景
public void feed(Animal animal) { // 參數多態
    animal.eat();
}
feed(new Dog());
feed(new Cat());

核心:編譯期看引用類型,運行期看實際對象 (僅非靜態方法)。向上轉型自動,向下轉型需強制 `(Dog)a` 並建議 `instanceof` 守衛。

4. super vs this

成員類型編譯看左側 (引用類型)運行看右側 (實際對象)
非靜態方法檢查父類有無執行子類重寫方法
靜態方法調用父類調用父類 (隱藏非重寫)
屬性 (含靜態)訪問父類訪問父類
thissuper
指向當前對象父類對象引用
調用構造器`this(...)` 本類其他構造器`super(...)` 父類構造器
訪問成員`this.field` 當前類 (含繼承)`super.field` 父類被隱藏成員
前提無繼承也可用需繼承關係
構造器限制必須為首行必須為首行,二擇一

六、常用核心類速查

  • 包裝類:`Integer`、`Double` 等,提供 `parseInt`、`toString`、`compareTo`、自動拆裝箱。
  • String:不可變,常用 `length()`、`charAt()`、`substring()`、`split()`、`replace()`、`format()`。
  • Math:`random()`、`round()`、`max/min`、`pow()`、`sqrt()`。
  • Arrays:`sort()`、`binarySearch()`、`toString()`、`fill()`、`copyOf()`。
  • Object:`toString()`、`equals()`、`hashCode()`、`clone()`、`getClass()`、必須重寫 equals/hashCode 配對。

七、總結:Java 思維模型建立清單

  1. ✅ 類即類型,對象即實例,引用非對象本身。
  2. ✅ 編譯期類型檢查,運行期多態分派。
  3. ✅ 封裝是邊界,繼承是復用,多態是擴展。
  4. ✅ 基本類型傳值,引用類型傳引用值 (共享堆對象)。
  5. ✅ 構造器鏈 `this()`/`super()` 保證初始化完整性。
  6. ✅ 靜態屬於類,非靜態屬於對象,切勿混淆。
  7. ✅ 字符串不可變,拼接用 `StringBuilder`。
  8. ✅ 陣列固定長度,集合框架 (List/Set/Map) 才是主力。

夯實基礎,方能馭駕框架、架構與高併發。Java 的嚴謹正是其工程化威力的源泉。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved