Java关键字

1.用于定义访问权限修饰的关键字

a.private:

功能:最小访问权限,仅限当前类内部访问

场景:类的成员变量/方法、构造器,实现封装性(隐藏内部细节)

注意:不能修饰外部类,常与public的getter/setter方法配合使用

b.protexted:

功能:中等级别访问权限,可被同包类、子类(跨包)访问。

场景:需要被子类继承但限制同包外直接访问的成员(如父类方法/变量)。

注意:无法修饰外部类,子类访问父类的 protected 成员时,仅限继承关系,非继承关系的跨包子类不可直接访问。

c.public:

功能:最大访问权限,全工程(同项目/跨项目)均可访问。

场景:对外提供服务的类、接口、方法、常量(如工具类、API 接口)。

注意:过度使用会破坏封装性,需谨慎设计。

2.用于定义类,方法,变量修饰符的关键字

a.abstract:

功能:声明抽象类或抽象方法,表示“不完整”,需被子类实现/重写。

场景:

抽象类:包含抽象方法的类(不能实例化,需被继承),用于定义通用模板。

抽象方法:无方法体,强制子类实现具体逻辑。

注意:抽象类可包含普通方法和成员变量;抽象方法不能被  private / final  修饰。
 

b.final:

功能:表示“最终状态”,禁止修改或继承。

场景:

修饰类:不可被继承(如  String 、 Integer )。

修饰方法:不可被重写(防止核心逻辑被篡改)。

修饰变量:常量(需初始化,值不可变,推荐大写命名)。

注意: final  对象的引用不可变,但对象内部状态可能可变(如数组)。

c.static:

功能:属于类而非实例,用于共享数据和行为。

场景:

静态变量:所有实例共享(如计数器  private static int count )。

静态方法:无需实例即可调用(如工具方法  public static void sort() )。

静态代码块:类加载时执行一次(用于初始化静态资源)。

注意:静态方法不能直接访问非静态成员(需通过实例调用);静态内部类独立于外部类实例。

d.synchronized:

功能:线程同步锁,保证临界区代码的原子性。

场景:

修饰方法:锁定当前实例( synchronized void method() )或类( static synchronized void method() )。

修饰代码块:锁定指定对象( synchronized(obj) { ... } )。

注意:可能导致性能问题,需合理控制锁范围;Java 5 后推荐使用  Lock  接口替代部分场景。

3.用于定义类与类之间关系的关键字

a.extends:

功能:表示继承关系,子类继承父类的非私有成员。

场景:单继承(一个类只能有一个直接父类),用于代码复用和多态基础。

注意:Java 不支持多继承(但可通过接口实现类似效果);子类构造器隐式/显式调用父类构造器。

b.implements:

功能:表示实现接口关系,类必须实现接口的所有抽象方法。

场景:多实现(一个类可实现多个接口),定义规范(如  List  接口由  ArrayList / LinkedList  实现)。

注意:接口中的方法默认  public abstract ,变量默认  public static final ;JDK 8 后接口可包含默认方法和静态方法。

4.用于建立实例及引用关系实例,判断实例的关键字

a.new:

功能:创建对象实例,分配内存并调用构造器。

场景: ClassName obj = new ClassName(); ,完成对象的初始化。

注意:若构造器未显式定义,编译器会生成默认无参构造器。

b.this:

功能:指向当前对象的引用,用于区分局部变量和成员变量。

场景:

解决成员变量与参数同名冲突( this.name = name; )。

调用当前类的其他构造器( this(参数); ,需位于构造器首行)。

注意:静态上下文( static  方法/代码块)中不可使用  this 。

c.super:

功能:指向父类对象的引用,用于访问父类成员。

场景:

调用父类被重写的方法( super.method(); )。

访问父类构造器( super(参数); ,子类构造器首行隐式调用  super() )。

注意:只能在子类中使用,不能访问父类的私有成员

d.instanceof:

功能:判断对象是否为指定类或其子类的实例。

语法: 对象 instanceof 类/接口 ,返回  boolean  值。

场景:强制类型转换前的安全检查(避免  ClassCastException )。

注意: null instanceof 任何类型  返回  false ;子类对象 instanceof 父类一定为  true 。

5.用于异常处理的关键字

a.try、catch、finally:

try:包含可能抛出异常的代码块。

catch:捕获并处理特定类型的异常(可多个 catch 分层处理)。

finally:无论是否发生异常,必定执行的代码块(常用于资源释放,如关闭流)。

注意:JDK 7+ 支持  try-with-resources  自动释放资源;finally 中的  return  会覆盖 try/catch 的返回值(需谨慎)。

b.throw:

功能:主动抛出异常对象(语法: throw new 异常类(参数); )。

场景:业务逻辑校验失败时(如参数非法),或自定义异常场景。

注意:必须抛出  Throwable  子类对象(异常或错误)。

c.throws:

功能:声明方法可能抛出的异常(在方法签名后: 返回类型 方法名() throws 异常类列表

{ ... } )。

场景:告知调用者“该方法可能抛出异常,需自行处理”。

注意:仅用于声明受检异常(checked exception),不处理则必须由调用者处理或继续声明;不能声明运行时异常(unchecked exception)。

6.用于包的关键字

a.package:

功能:声明当前类所属的包(语法: package 包名; ,需位于文件首行)。

场景:避免命名冲突,组织代码层次(如  com.example.model.User )。

注意:包名建议全小写,采用域名反写规则(如公司域名  com.company )

b.import:

功能:导入其他包中的类,简化代码书写(避免全限定名)。

语法:

单个类: import 包名.类名; (如  import java.util.List; )。

通配符: import 包名.*; (导入包下所有类,不包含子包)。

场景:使用外部包的类时必须导入(除了  java.lang  包下的类,如  String  可直接使用)。

注意:静态导入( import static 包名.类名.静态成员; )可直接使用静态方法/变量,无需类名前缀

7.其他修饰符关键字

a.native:

功能:声明方法由非 Java 语言(如 C/C++)实现,Java 仅提供接口。

场景:调用系统底层功能(如 JNI 技术,Java 与操作系统交互)。

注意:方法体为空,实现代码在独立的  .dll / .so  文件中;需配合 C/C++ 代码开发。

b.strictfp:

功能:强制浮点运算遵循 IEEE 754 标准,保证跨平台一致性。

场景:需要精确浮点计算的科学计算或金融领域。

注意:可修饰类或方法,修饰后类中所有方法自动应用严格浮点规则;JVM 默认会优化浮点运算,strictfp 会禁用某些优化。

c.transient:

功能:标记实例变量不参与序列化(对象转字节流时忽略该字段)。

场景:敏感数据(如密码)或无需持久化的临时变量。

注意:反序列化时,transient 字段会被初始化为默认值(如  int  为 0);需配合  readObject() / writeObject()  自定义序列化逻辑

d.volatile:


功能:保证变量可见性(一个线程修改后,其他线程立即可见)和有序性(禁止指令重排)。

场景:多线程环境下的轻量级同步(替代 synchronized 的低开销方案)。

注意:不保证原子性(如  i++  需配合  synchronized  或  AtomicInteger );适用于一个线程写、多个线程读的场景。

e.assert:

功能:断言机制,用于调试阶段验证假设条件是否成立。

语法: assert 条件 : 错误信息; (条件为 false 时抛出  AssertionError )。

场景:开发阶段检查程序逻辑正确性(如  assert index >= 0 : "索引不能为负" )。

注意:默认关闭(需通过 JVM 参数  -ea  启用);生产环境不建议依赖断言进行业务逻辑校验

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值