Java关键字解析
Java关键字是编程语言中具有特殊含义的保留字,不能用作标识符(如变量名、类名等)。Java共有50多个关键字(不同版本略有差异),下面我将分类详细介绍这些关键字及其使用方式。
一、数据类型相关关键字
1. 基本数据类型
关键字 | 大小 | 取值范围 | 默认值 | 示例 |
---|---|---|---|---|
byte | 8位 | -128~127 | 0 | byte b = 100; |
short | 16位 | -32768~32767 | 0 | short s = 1000; |
int | 32位 | -2³¹~2³¹-1 | 0 | int i = 100000; |
long | 64位 | -2⁶³~2⁶³-1 | 0L | long l = 100000L; |
float | 32位 | IEEE 754 | 0.0f | float f = 3.14f; |
double | 64位 | IEEE 754 | 0.0d | double d = 3.14159; |
char | 16位 | \u0000~\uffff | \u0000 | char c = 'A'; |
boolean | - | true/false | false | boolean 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 | 退出循环/switch | while(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
替代)
十、关键字使用最佳实践
-
访问控制:
- 优先使用最严格的访问级别(从
private
开始) - 只有需要被继承的方法才用
protected
- 优先使用最严格的访问级别(从
-
final
使用场景:- 所有常量应该用
final
- 不被设计为继承的类应该标记为
final
- 不会被重写的方法应该标记为
final
- 所有常量应该用
-
异常处理:
- 不要用
try-catch
处理业务逻辑 - 不要捕获
Exception
这种太通用的异常 - 自定义业务异常应继承
RuntimeException
- 不要用
-
static
使用准则:- 工具方法适合声明为
static
- 避免滥用静态变量(特别是可变静态变量)
- 静态工厂方法优于构造器
- 工具方法适合声明为
-
现代Java特性:
- Java 10+ 在局部变量中使用
var
提高可读性 - Java 16+ 对数据载体类使用
record
- Java 17+ 使用
sealed
控制类继承
- Java 10+ 在局部变量中使用
十一、常见问题解答
1. final
、finally
和finalize()
的区别
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的能力。
相关文章:
Java关键字解析
Java关键字是编程语言中具有特殊含义的保留字,不能用作标识符(如变量名、类名等)。Java共有50多个关键字(不同版本略有差异),下面我将分类详细介绍这些关键字及其使用方式。 一、数据类型相关关键字 1. 基…...

突破zero-RL 困境!LUFFY 如何借离线策略指引提升推理能力?
在大模型推理能力不断取得突破的今天,强化学习成为提升模型能力的关键手段。然而,现有zero-RL方法存在局限。论文提出的LUFFY框架,创新性地融合离线策略推理轨迹,在多个数学基准测试中表现卓越,为训练通用推理模型开辟…...
React Native本地存储方案总结
1. AsyncStorage(键值对存储) 适用场景:简单键值对存储(如用户配置、Token、缓存数据)。特点:异步、轻量、API 简单,但性能一般,不推荐存储大量数据。安装:npm install …...

基于Redis实现-附近商铺查询
基于Redis实现-附近查询 这个功能将使用到Redis中的GEO这种数据结构来实现。 1.GEO相关命令 GEO就是Geolocation的简写形式,代表地理坐标。Redis在3.2版本中加入到了对GEO的支持,允许存储地理坐标信息,帮助我们根据经纬度来检索数据&#…...

【java WEB】恢复补充说明
Server 出现javax.servlet.http.HttpServlet", according to the project’s Dynamic Web Module facet version (3.0), was not found on the Java Build Path. 右键项目 > Properties > Project Facets。Dynamic Web Module facet version选4.0即可 还需要在serv…...

安川机器人常见故障报警及解决办法
机器人权限设置 操作权限设置(如果密码不对,就证明密码被人修改) 编辑模式密码:无(一把钥匙,默认) 管理模式密码:999999999(9个9,二把钥匙) 安全模式密码:555555555(9个5,三把钥匙,权限最高,有的型号机器人,没有此模式,但最高密码为安全模式密码) 示教器…...

tiktok web X-Bogus X-Gnarly 分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 部分python代码 import req…...

kes监控组件安装
环境准备 创建监控用户 useradd -m -s /bin/bash -d /home/kmonitor kmonitor passwd k_monitor usermod –a –G kingbase kmonitor 检查java版本 java –version [kmonitorkingbase node_exporter]$ java -version java version "1.8.0_341" Java(TM) SE …...

React-Native Android 多行被截断
1. 问题描述: 如图所示: 2. 问题解决灵感: 使用相同的react-native代码,运行在两个APP(demo 和 project)上。demo 展示正常,project 展示不正常。 对两个页面截图,对比如下。 得出…...

深度学习【Logistic回归模型】
回归和分类 回归问题得到的结果都是连续的,比如通过学习时间预测成绩 分类问题是将数据分成几类,比如根据邮件信息将邮件分成垃圾邮件和有效邮件两类。 相比于基础的线性回归其实就是增加了一个sigmod函数。 代码 import matplotlib.pyplot as plt i…...

数据科学与计算
1.设计目标与安装 Seaborn 是一个建立在 Matplotlib 基础之上的 Python 数据可视化库,专注于绘制各种统计图形,以便更轻松地呈现和理解数据。Seaborn 的设计目标是简化统计数据可视化的过程,提供高级接口和美观的默认主题,使得用…...
Swift与iOS内存管理机制深度剖析
前言 内存管理是每一位 iOS 开发者都绕不开的话题。虽然 Swift 的 ARC(自动引用计数)极大简化了开发者的工作,但只有深入理解其底层实现,才能写出高效、健壮的代码,避免各种隐蔽的内存问题。本文将从底层原理出发&…...

怎样给MP3音频重命名?是时候管理下电脑中的音频文件名了
在处理大量音频文件时,给这些文件起一个有意义的名字可以帮助我们更高效地管理和查找所需的内容。通过使用专业的文件重命名工具如简鹿文件批量重命名工具,可以极大地简化这一过程。本文将详细介绍如何利用该工具对 MP3 音频文件进行重命名。 步骤一&am…...
当AI浏览器和AI搜索替代掉传统搜索份额时,老牌的搜索引擎市场何去何从。
AI搜索与传统搜索优劣势分析 AI搜索优势 理解和处理查询方式更智能:利用自然语言处理(NLP)和机器学习技术,能够更好地理解用户的意图和上下文,处理复杂的问答、长尾问题以及多轮对话,提供更为精准和相关的…...

快速上手非关系型数据库-MongoDB
简介 MongoDB 是一个基于文档的 NoSQL 数据库,由 MongoDB Inc. 开发。 NoSQL,指的是非关系型的数据库。NoSQL有时也称作Not Only SQL的缩写,是对不同于传统的关系型数据库的数据库管理系统的统称。 MongoDB 的设计理念是为了应对大数据量、…...

【C++学习笔记】深入理解虚函数和多态
文章目录 1. 基本概念1.1 虚函数1.2 虚函数表1.3 虚函数表指针1.4 虚函数表在支持多态方面的工作原理 2. 类对象在内存中的布局参考 1. 基本概念 1.1 虚函数 类的成员函数,并不占用类对象的内存空间。 类中有虚函数,编译器会向类中插入一个看不见的成…...
STM32F103C8T6信息
STM32F103C8T6 完整参数列表 一、核心参数 内核架构 ARM Cortex-M3 32位RISC处理器 最大主频:72 MHz(基于APB总线时钟) 运算性能:1.25 DMIPS/MHz(Dhrystone 2.1基准) 总线与存储 总线宽度ÿ…...
用手机相册教我数组概念——照片分类术[特殊字符][特殊字符]
目录 前言一、现实场景1.1 手机相册的照片管理1.2 照片分类的需求 二、技术映射2.1 数组与照片分类的对应关系2.2 数组索引与照片标签的类比 三、知识点呈现3.1 数组的基本概念3.2 数组在编程中的重要性3.3 数组的定义与初始化3.4 数组的常见操作(增删改查ÿ…...

Node.js CSRF 保护指南:示例及启用方法
解释 CSRF 跨站请求伪造 (CSRF/XSRF) 是一种利用用户权限劫持会话的攻击。这种攻击策略允许攻击者通过诱骗用户以攻击者的名义提交恶意请求,从而绕过我们的安全措施。 CSRF 攻击之所以可能发生,是因为两个原因。首先,CSRF 攻击利用了用户无法辨别看似合法的 HTML 元素是否…...

【Linux】VSCode用法
描述 部分图片和经验来源于网络,若有侵权麻烦联系我删除,主要是做笔记的时候忘记写来源了,做完笔记很久才写博客。 专栏目录:记录自己的嵌入式学习之路-CSDN博客 目录 1 安装环境及运行C/C 1.1 安装及配置步骤 1.2 运…...

来聊聊JVM中安全点的概念
文章目录 写在文章开头详解safepoint基本概念什么是安全点?为什么需要安全点JVM如何让线程跑到最近的安全点线程什么时候需要进入安全点JVM如何保证线程高效进入安全点如何设置安全点用一次GC解释基于安全点的STW实践-基于主线程休眠了解安全点的工作过程代码示例基于日志印证…...
【AI面试准备】负责所有Al产品的模型能力评估及测试,保障AI产品的质量
面试岗位提出这个要求:负责所有Al产品的模型能力评估及测试,保障AI产品的质量。 目录 **一、AI产品模型评估的核心框架**1. **评估维度全景图**2. **质量保障全流程****二、关键模型类型评估策略**1. **分类模型(如推荐系统)**2. **生成模型(如GPT、Stable Diffusion)**…...

Nginx — http、server、location模块下配置相同策略优先级问题
一、配置优先级简述 在 Nginx 中,http、server、location 模块下配置相同策略时是存在优先级的,一般遵循 “范围越小,优先级越高” 的原则,下面为你详细介绍: 1. 配置继承关系 http 块:作为全局配置块&…...
mysql数据库备份与恢复方法
一、备份方法 逻辑备份(基于SQL语句) 使用mysqldump工具 全库备份:mysqldump -u root -p --all-databases > all_databases_backup.sql单库备份:mysqldump -u root -p jztdb > full_backup.sql排除特定表:--igno…...
实验三 软件黑盒测试
实验三 软件黑盒测试使用测试界的一个古老例子---三角形问题来进行等价类划分。输入三个整数a、b和c分别作为三角形的三条边,通过程序判断由这三条边构成的三角形类型是等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角形)。其中要求输入变量&#x…...

线性代数—向量与矩阵的范数(Norm)
参考链接: 范数(Norm)——定义、原理、分类、作用与应用 - 知乎 带你秒懂向量与矩阵的范数(Norm)_矩阵norm-CSDN博客 什么是范数(norm)?以及L1,L2范数的简单介绍_l1 norm-CSDN博客 范数(Norm…...
Umi-OCR项目(1)
最近接触到了一个项目,我在想能不能做出点东西出来。 目标:识别一张带表格的图片,要求非表格内容和表格内容都要识别得很好,并且可视化输出为word文档。 下面是第一步的测试代码,测试是否能够调用ocr能力。 import re…...

【业务领域】电脑主板芯片电路结构
前言 由前几期视频合集(零基础自学计算机故障排除—7天了解计算机开机过程),讲解了POST的主板软启动过程;有不少网友留言、私信来问各种不开机的故障,但大多网友没能能过我们的这合集视频,很好的理清思路,那这样的情况…...

pandas读取Excel数据(.xlsx和.xls)到treeview
对于.xls文件,xlrd可能更合适,但需要注意新版本的xlrd可能不支持xlsx,不过用户可能同时需要处理两种格式,所以可能需要结合openpyxl和xlrd?或者直接用pandas,因为它内部会处理这些依赖。 然后,…...
【Nginx】负载均衡配置详解
Nginx作为高性能的HTTP服务器和反向代理服务器,提供了强大的负载均衡功能。本文将详细介绍Nginx负载均衡的配置方法和相关策略。 一、基础负载均衡配置 1.单服务示例配置 配置nginx.conf模块 在Nginx配置文件中定义upstream模块: worker_processes a…...