Java關鍵字解析

Java關鍵字是編程語言中具有特殊含義的保留字,不能用作標識符(如變量名、類名等)。Java共有50多個關鍵字(不同版本略有差異),下面我將分類詳細介紹這些關鍵字及其使用方式。

一、數據類型相關關鍵字

1. 基本數據類型

關鍵字大小取值范圍默認值示例
byte8位-128~1270byte b = 100;
short16位-32768~327670short s = 1000;
int32位-231~231-10int i = 100000;
long64位-2?3~2?3-10Llong l = 100000L;
float32位IEEE 7540.0ffloat f = 3.14f;
double64位IEEE 7540.0ddouble d = 3.14159;
char16位\u0000~\uffff\u0000char c = 'A';
boolean-true/falsefalseboolean flag = true;

2. 引用類型

關鍵字用途示例
class定義類class Person {}
interface定義接口interface Runnable {}
enum定義枚舉enum Color {RED, GREEN}

二、流程控制關鍵字

1. 條件語句

// if-else
if (condition) {// 代碼塊
} else if (anotherCondition) {// 代碼塊
} else {// 代碼塊
}// switch (Java 12+支持表達式形式)
switch (value) {case 1 -> System.out.println("One");case 2 -> System.out.println("Two");default -> System.out.println("Other");
}

2. 循環語句

// for循環
for (int i = 0; i < 10; i++) {// 代碼塊
}// 增強for循環
for (String item : collection) {// 代碼塊
}// while循環
while (condition) {// 代碼塊
}// do-while循環
do {// 代碼塊
} while (condition);

3. 跳轉控制

關鍵字用途示例
break退出循環/switchwhile(true) { break; }
continue跳過本次循環for(int i=0;i<10;i++) { if(i%2==0) continue; }
return方法返回值return x * 2;

三、訪問控制關鍵字

關鍵字類內部同包子類其他包說明
public????完全開放
protected????子類可訪問
默認(無)????包級私有
private????僅類內部

示例:

public class AccessExample {public int publicVar;protected int protectedVar;int packagePrivateVar;private int privateVar;
}

四、類與對象相關關鍵字

1. 類定義與繼承

// extends - 繼承
class Animal {}
class Dog extends Animal {}// implements - 實現接口
interface Runnable {void run();
}
class Runner implements Runnable {public void run() {}
}// abstract - 抽象類/方法
abstract class Shape {abstract void draw();
}// final - 不可繼承/不可修改
final class Constants {final double PI = 3.14159;
}

2. 對象操作

// new - 實例化對象
Object obj = new Object();// this - 當前對象引用
class Person {String name;Person(String name) {this.name = name;}
}// super - 父類引用
class Student extends Person {Student() {super("Unknown");}
}// instanceof - 類型檢查
if (obj instanceof String) {String s = (String) obj;
}

五、異常處理關鍵字

// try-catch-finally
try {// 可能拋出異常的代碼
} catch (IOException e) {// 處理特定異常System.err.println("IO錯誤: " + e.getMessage());
} catch (Exception e) {// 處理通用異常System.err.println("錯誤: " + e.getMessage());
} finally {// 總會執行的代碼System.out.println("清理資源");
}// throw - 拋出異常
if (value < 0) {throw new IllegalArgumentException("值不能為負");
}// throws - 聲明可能拋出的異常
public void readFile() throws IOException {// 方法實現
}

六、修飾符關鍵字

關鍵字適用目標用途
static變量/方法/代碼塊類級別成員
final類/方法/變量不可繼承/不可重寫/不可修改
synchronized方法/代碼塊線程同步
volatile變量保證變量可見性
transient變量不參與序列化
native方法本地方法(JNI)
strictfp類/方法嚴格浮點計算

示例:

class ModifierExample {static int classVar;          // 類變量final int constant = 100;     // 常量synchronized void safeMethod() {}  // 同步方法transient String tempData;    // 不序列化native void nativeMethod();   // 本地方法strictfp double preciseCalc() { return 0.1 + 0.2; }
}

七、包與導入關鍵字

// package - 定義包
package com.example.myapp;// import - 導入類/包
import java.util.List;
import static java.lang.Math.PI;  // 靜態導入

八、Java 10+新增關鍵字

1. var (局部變量類型推斷)

var list = new ArrayList<String>();  // 推斷為ArrayList<String>
var stream = list.stream();          // 推斷為Stream<String>

2. record (Java 16+, 數據載體類)

record Point(int x, int y) {}  // 自動生成構造器、getter、equals等Point p = new Point(10, 20);
System.out.println(p.x());     // 自動生成的getter

3. sealed (Java 17+, 密封類)

sealed interface Shape permits Circle, Rectangle, Square { /*...*/ }final class Circle implements Shape { /*...*/ }
non-sealed class Rectangle implements Shape { /*...*/ }

九、保留關鍵字(未使用)

以下關鍵字在Java中保留但未使用:

  • goto (保留但不允許使用)
  • const (保留但未實現,用final替代)

十、關鍵字使用最佳實踐

  1. 訪問控制

    • 優先使用最嚴格的訪問級別(從private開始)
    • 只有需要被繼承的方法才用protected
  2. final使用場景

    • 所有常量應該用final
    • 不被設計為繼承的類應該標記為final
    • 不會被重寫的方法應該標記為final
  3. 異常處理

    • 不要用try-catch處理業務邏輯
    • 不要捕獲Exception這種太通用的異常
    • 自定義業務異常應繼承RuntimeException
  4. static使用準則

    • 工具方法適合聲明為static
    • 避免濫用靜態變量(特別是可變靜態變量)
    • 靜態工廠方法優于構造器
  5. 現代Java特性

    • Java 10+ 在局部變量中使用var提高可讀性
    • Java 16+ 對數據載體類使用record
    • Java 17+ 使用sealed控制類繼承

十一、常見問題解答

1. finalfinallyfinalize()的區別

  • final:修飾符,表示不可變
  • finally:異常處理塊,確保代碼執行
  • finalize():Object類的方法,垃圾回收前調用(已廢棄)

2. abstract類與interface的區別

特性abstract類interface
多繼承不支持支持
方法實現可以有Java 8前不能有
變量任意類型默認public static final
構造器
設計目的代碼復用定義契約

3. 什么時候用static方法?

  • 方法不依賴實例狀態時
  • 工具類方法
  • 工廠方法
  • 當方法語義上與類相關而非實例相關時

十二、關鍵字思維導圖

Java關鍵字
├── 數據類型
│   ├── 基本類型: byte, short, int, long, float, double, char, boolean
│   └── 引用類型: class, interface, enum
├── 流程控制
│   ├── 條件: if, else, switch, case, default
│   ├── 循環: for, while, do
│   └── 跳轉: break, continue, return
├── 訪問控制
│   └── public, protected, private
├── 類與對象
│   ├── 繼承: extends, implements
│   ├── 實例化: new
│   ├── 引用: this, super
│   ├── 類型檢查: instanceof
│   └── 修飾: abstract, final, static
├── 異常處理
│   └── try, catch, finally, throw, throws
├── 包管理
│   └── package, import
└── 其他├── 同步: synchronized├── 變量修飾: volatile, transient├── 本地方法: native└── 嚴格浮點: strictfp

掌握這些關鍵字及其正確用法是成為Java開發者的基礎。隨著Java版本的更新,關鍵字也在不斷增加和演變,建議定期關注新特性以充分利用現代Java的能力。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/79284.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/79284.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/79284.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue自定義表頭內容excel表格導出

1、安裝 npm install xlsx file-saver 2、使用 import * as XLSX from xlsx import { saveAs } from file-saverconst exportAccounts (data) > {// 將對象數組轉換為 worksheetconst worksheet XLSX.utils.json_to_sheet(data)// 創建 workbook 并附加 sheetconst wor…

鴻蒙NEXT開發組件截圖和窗口截圖工具類SnapshotUtil(ArkTs)

import { image } from kit.ImageKit; import { componentSnapshot, window } from kit.ArkUI; import { AppUtil } from ./AppUtil; import { ArrayUtil } from ./ArrayUtil;/*** 組件截圖和窗口截圖工具類* author 鴻蒙布道師* since 2025/04/28*/ export class SnapshotUtil…

C#與SVN的深度集成:實現版本控制自動化管理?

目錄 1. 環境準備 2. 創建 C# 工程 3. 引用 SharpSvn 庫 4. 編寫代碼 1. 環境準備 2. 創建 C# 工程 3. 引用 SharpSvn 庫 4. 編寫代碼 5. 代碼說明 6. 注意事項 1. 環境準備 首先&#xff0c;需要安裝 SharpSvn 庫。可以從 SharpSvn 官方網站 下載適合 .NET Framewor…

本文不定期更新,用于收錄各種怪異的python腳本

1.計算自然數對數底 a b 1 for n in range(1, 1001):a a * n 1b b * n t a % br . for i in range(1, 1001):t 10if t < b:r 0else:r str(t // b)t % bprint(str(a//b) r) 得到 2.7182818284590452353602874713526624977572470936999595749669676277240766303…

日志之ClickHouse部署及替換ELK中的Elasticsearch

文章目錄 1 ELK替換1.1 Elasticsearch vs ClickHouse1.2 環境部署1.2.1 zookeeper 集群部署1.2.2 Kafka 集群部署1.2.3 FileBeat 部署1.2.4 clickhouse 部署1.2.4.1 準備步驟1.2.4.2 添加官方存儲庫1.2.4.3 部署&啟動&連接1.2.4.5 基本配置服務1.2.4.6 測試創建數據庫和…

2025年大一ACM訓練-搜索

2025年大一ACM訓練-搜索 前期知識&#xff1a;DFS&#xff0c;本文搜索題解法以深度優先搜索為主 1.1 DFS 的定義 深度優先搜索&#xff08;Depth-First Search&#xff09;是一種用于遍歷樹或圖的算法。核心思想是盡可能“深入”訪問圖的每個節點&#xff0c;直到無法繼續前進…

Nginx核心功能02

目錄 一&#xff0c;正向代理 1&#xff0c;編譯安裝Nginx &#xff08;1&#xff09;安裝支持軟件 &#xff08;2&#xff09;創建運行用戶&#xff0c;組和日志目錄 &#xff08;3&#xff09;編譯安裝Nginx &#xff08;4&#xff09;添加Nginx系統服務 2&#xff0c…

rk3568安全啟動功能實踐

本文主要講述筆者在rk3568芯片上開發安全啟動功能實踐的流程。其中主要參考瑞芯微官方文檔《Rockchip_Developer_Guide_Secure_Boot_for_UBoot_Next_Dev_CN.pdf》。文檔中描述邏輯不是很清晰而且和當前瑞芯微的sdk中安全啟動的流程匹配度不高。本文就不再對瑞芯微官方文檔的內容…

[操作系統] 線程互斥

文章目錄 背景概念線程互斥的引出互斥量鎖的操作初始化 (Initialization)靜態初始化動態初始化 加鎖 (Locking)阻塞式加鎖非阻塞式加鎖 (嘗試加鎖/一般不考慮) 解鎖 (Unlocking)銷毀 (Destruction)設置屬性 (Setting Attributes - 通過 pthread_mutex_init) 鎖本身的保護互斥鎖…

【神經網絡與深度學習】兩種加載 pickle 文件方式(joblib、pickle)的差異

引言 從深度學習應用到數據分析的多元化需求出發&#xff0c;Python 提供了豐富的工具和模塊&#xff0c;其中 pickle 和 joblib 兩種方式在加載數據文件方面表現尤為突出。不同場景對性能、兼容性以及后續處理的要求不盡相同&#xff0c;使得這兩種方式各顯優勢。本文將通過深…

Electron 入門指南

Electron 入門指南 Electron 是一個使用 JavaScript、HTML 和 CSS 構建跨平臺桌面應用的框架。通過 Electron&#xff0c;你可以利用 Web 技術開發出功能強大的桌面應用程序&#xff0c;并且能夠運行在 Windows、Mac 和 Linux 系統上。 本文將帶你從零開始構建一個簡單的 Ele…

編程中如何與AI交互-結構化輸入和理解確認機制

一 結構化輸入是什么 &#x1f4cc; 結構化輸入的定義&#xff1a; 結構化輸入是指以清晰、分層、有邏輯的格式向 AI 輸入信息&#xff0c;使其更容易解析內容、抓住重點&#xff0c;并準確回答問題。 &#x1f4e6; 舉個例子&#xff08;編程場景&#xff09;&#xff1a; 非…

13:傅里葉變換

傅立葉變換(FT, Fourier Transform)的作用是將一個信號由時域變換到頻域。其實就是把數據由橫坐標時間、縱坐標采樣值的波形圖格式&#xff0c;轉換為橫坐標頻率、縱坐標振幅(或相位)的頻譜格式。換后可以很明顯地看出一些原先不易察覺的特征。 有些信號在時域上是很難看出什么…

基于單片機的音頻信號處理系統設計(一)

項目名稱:基于單片機的音頻信號處理系統設計學院名稱:信息學院學生姓名:學號專業年級:指導教師:教師職稱:教授企業導師:目 錄 摘 要 Abstract 1 前言 1.1研究背景與意義 <

機器學習實操 第一部分 機器學習基礎 第8章 降維技術

機器學習實操 第一部分 機器學習基礎 第8章 降維技術 內容概要 第8章探討了降維技術&#xff0c;這些技術在處理高維數據時至關重要。高維數據不僅會使訓練過程變得極其緩慢&#xff0c;還會增加找到良好解決方案的難度&#xff0c;這就是所謂的維度災難問題。幸運的是&#…

微信小程序 XSS 防護知識整理

場景1&#xff1a;用戶輸入表單&#xff08;如評論框&#xff09; 錯誤做法&#xff1a;直接渲染未過濾的用戶輸入 // WXML <view>{{ userInput }}</view>// JS&#xff08;用戶輸入了惡意內容&#xff09; Page({data: { userInput: <script>alert("…

MySQL 服務搭建

&#x1f4a2;歡迎來到張翊塵的開源技術站 &#x1f4a5;開源如江河&#xff0c;匯聚眾志成。代碼似星辰&#xff0c;照亮行征程。開源精神長&#xff0c;傳承永不忘。攜手共前行&#xff0c;未來更輝煌&#x1f4a5; 文章目錄 在線安裝Ubuntu/Debian更新系統包索引安裝 MySQL …

【Java面試筆記:進階】23.請介紹類加載過程,什么是雙親委派模型?

Java的類加載機制是JVM的核心組成部分,其過程分為三個階段,并采用雙親委派模型來保證類加載的安全性和一致性。 1.類加載過程 1.加載階段(Loading) 核心任務:查找并加載類的二進制字節流(如.class文件)。具體行為: 將字節碼數據從不同數據源(如文件系統、網絡等)讀…

UN R79 關于車輛轉向裝置形式認證的統一規定(正文部分1)

UN R79法規是針對轉向裝置的型式認證法規&#xff0c;涉及A/B1/C類的橫向控制輔助駕駛功能&#xff0c;對各功能的功能邊界、性能要求、狀態提示、故障警示以及型式認證要提交的信息做了規范&#xff0c;本文結合百度文心一言對法規進行翻譯&#xff0c;并結合個人理解對部分內…

[隨筆] 升級uniapp舊項目的vue、pinia、vite、dcloudio依賴包等

匯總 # 升級uniapp項目dcloudio整體依賴&#xff0c;建議執行多次 # 會順帶自動更新/升級vue的版本 npx dcloudio/uvmlatest alpha# 檢查 pinia 的最新版本 npm view pinia version# 更新項目 pinia 到最新版本 npm update pinia# 更新項目 pinia 到特定的版本 # 首先&#xf…