【Java基础知识 2】Java中常用的48个关键字和2个保留字 || Java命名规范(从此告别起名难)

简介: 【Java基础知识 2】Java中常用的48个关键字和2个保留字 || Java命名规范(从此告别起名难)

Java中常用的48个关键字和2个保留字

上一篇文章中讲到了public、static、void、main 等等,这些其实都是Java的关键字

关键字

abstract: 用于声明抽象类,以及抽象方法。


boolean: 用于将变量声明为布尔值类型,只有 true 和 false 两个值。


break: 用于中断循环或 switch 语句。


byte: 用于声明一个可以容纳 8 个比特的变量。


case: 用于在 switch 语句中标记条件的值。


catch: 用于捕获 try 语句中的异常。


char: 用于声明一个可以容纳无符号 16 位比特的 Unicode 字符open in new window的变量。


class: 用于声明一个类。


continue: 用于继续下一个循环,可以在指定条件下跳过其余代码。


default: 用于指定 switch 语句中除去 case 条件之外的默认代码块。


do: 通常和 while 关键字配合使用,do 后紧跟循环体。


double: 用于声明一个可以容纳 64 位浮点数的变量。


else: 用于指示 if 语句中的备用分支。


enum: 用于定义一组固定的常量(枚举)。


extends: 用于指示一个类是从另一个类或接口继承的。


final: 用于指示该变量是不可更改的。


finally: 和 try-catch 配合使用,表示无论是否处理异常,总是执行 finally 块中的代码。


float: 用于声明一个可以容纳 32 位浮点数的变量。


for: 用于声明一个 for 循环,如果循环次数是固定的,建议使用 for 循环。


if: 用于指定条件,如果条件为真,则执行对应代码。


implements: 用于实现接口。


import: 用于导入对应的类或者接口。


instanceof: 用于判断对象是否属于某个类型(class)。


int: 用于声明一个可以容纳 32 位带符号的整数变量。


interface: 用于声明接口。


long: 用于声明一个可以容纳 64 位整数的变量。


native: 用于指定一个方法是通过调用本机接口(非 Java)实现的。


new: 用于创建一个新的对象。


null: 如果一个变量是空的(什么引用也没有指向),就可以将它赋值为 null,和空指针异常息息相关。


package: 用于声明类所在的包。


private: 一个访问权限修饰符,表示方法或变量只对当前类可见。


protected: 一个访问权限修饰符,表示方法或变量对同一包内的类和所有子类可见。


public: 一个访问权限修饰符,除了可以声明方法和变量(所有类可见),还可以声明类。main() 方法必须声明为 public。


return: 用于在代码执行完成后返回(一个值)。


short: 用于声明一个可以容纳 16 位整数的变量。


static: 表示该变量或方法是静态变量或静态方法。


strictfp: 并不常见,通常用于修饰一个方法,确保方法体内的浮点数运算在每个平台上执行的结果相同。


super: 可用于调用父类的方法或者字段。


switch: 通常用于三个(以上)的条件判断。


synchronized: 用于指定多线程代码中的同步方法、变量或者代码块。


this: 可用于在方法或构造函数中引用当前对象。


throw: 主动抛出异常。


throws: 用于声明异常。


transient: 修饰的字段不会被序列化。


try: 于包裹要捕获异常的代码块。


void: 用于指定方法没有返回值。


volatile: 保证不同线程对它修饰的变量进行操作时的可见性,即一个线程修改了某个变量的值,新值对其他线程来说是立即可见的。


while: 如果循环次数不固定,建议使用 while 循环。


像一些其他的关键字,比如final,static等,后面会单独拉出来讲的。

保留字

“除了这些关键字,Java 中还有两个非常特殊的保留字(goto 和 const),它们不能在程序中使用。”


“goto 在 C语言中叫做‘无限跳转’语句,在 Java 中,不再使用 goto 语句,因为无限跳转会破坏程序结构。”


“const 在 C语言中是声明常量的关键字,在 Java 中可以使用 public static final 三个关键字的组合来达到常量的效果。”

Java命名规范(从此告别起名难)

命名约定决定我们使用什么样的标识符来命名包、类、字段、方法等等,虽然这个规则不是强制的,可以遵守,也可以不遵守,但如果不遵守的话,有时就会带来很多不必要的麻烦。


起个好的名字,就好像穿一件得体的衣服,呈现给人的用户体验是完全不一样的。


好的命名可以让你的代码更易读,包括你自己和你的小伙伴,看一眼,不用想太多,就能明白代码是干嘛的。


比如我的网名,其实不是《像风而行》的宋宋,在这剧播之前,我女朋友从认识我就开始叫我,到现在也叫了半年多了hh,顾名思义,我有一对大耳朵🤣


01、包(package)

包的命名应该遵守以下规则:


应该全部是小写字母


点分隔符之间有且仅有一个自然语义的英语单词


包名统一使用单数形式,比如说 com.itss.util 不能是 com.itss.utils


在最新的 Java 编程规范中,要求开发人员在自己定义的包名前加上唯一的前缀。由于互联网上的域名是不会重复的,所以多数开发人员采用自己公司(或者个人博客)在互联网上的域名称作为包的唯一前缀。比如我文章中出现的代码示例的包名就是 package com.itss。

02、类(class)

类的命名应该遵守以下规则:

  • 须以大写字母开头
  • 最好是一个名词,比如说 System
  • 类名使用 UpperCamelCase(驼峰式命名)风格
  • 尽量不要省略成单词的首字母,但以下情形例外:DO/BO/DTO/VO/AO/PO/UID 等

另外,如果是抽象类的话,使用 Abstract 或 Base 开头;如果是异常类的话,使用 Exception 结尾;如果是测试类的话,使用 Test 结尾。

03、接口(interface)

接口的命名应该遵守以下规则:

  • 必须以大写字母开头
  • 最好是一个形容词,比如说 Runnable
  • 尽量不要省略成单词的首字母

来看个例子:

interface Printable {}

接口和实现类之间也有一些规则:

  • 实现类用 Impl 的后缀与接口区别,比如说 CacheServiceImpl 实现 CacheService 接口
  • 或者,AbstractTranslator 实现 Translatable 接口

04、字段(field)和变量(variable)

字段和变量的命名应该遵守以下规则:


必须以小写字母开头


可以包含多个单词,第一个单词的首字母小写,其他的单词首字母大写,比如说 firstName


最好不要使用单个字符,比如说 int a,除非是局部变量


类型与中括号紧挨相连来表示数组,比如说 int[] arrayDemo,main 方法中字符串数组参数不应该写成 String args[]


POJO 类中的任何布尔类型的变量,都不要加 is 前缀,否则部分框架解析会引起序列化错误,我自己知道的有 fastjson


避免在子类和父类的成员变量之间、或者不同代码块的局部变量之间采用完全相同的命名,使可理解性降低。子类、父类成员变量名相同,即使是 public 类型的变量也能够通过编译,另外,局部变量在同一方法内的不同代码块中同名也是合法的,这些情况都要避免。


反例:

public class ConfusingName {
    public int stock;
    // 非 setter/getter 的参数名称,不允许与本类成员变量同名
    public void get(String alibaba) {
        if (condition) {
            final int money = 666;
// ...
        }
        for (int i = 0; i < 10; i++) {
// 在同一方法体中,不允许与其它代码块中的 money 命名相同 final int money = 15978;
// ...
        }
    }
}
class Son extends ConfusingName {
// 不允许与父类的成员变量名称相同 public int stock;
}

05、常量(constant)

常量的命名应该遵守以下规则:

  • 应该全部是大写字母
  • 可以包含多个单词,单词之间使用“_”连接,比如说 MAX_PRIORITY,力求语义表达完整清楚,不要嫌名字长
  • 可以包含数字,但不能以数字开头

来看个例子:

static final int MIN_AGE = 18;

06、方法(method)

方法的命名应该遵守以下规则:

  • 必须以小写字母开头
  • 最好是一个动词,比如说 print()
  • 可以包含多个单词,第一个单词的首字母小写,其他的单词首字母大写,比如说 actionPerformed()

来看个例子:

void writeBook(){}

Service/DAO 层的方法命名规约:


获取单个对象的方法用 get 做前缀

获取多个对象的方法用 list 做前缀,复数结尾,如:listObjects

获取统计值的方法用 count 做前缀

插入的方法用 save/insert 做前缀

删除的方法用 remove/delete 做前缀

修改的方法用 update 做前缀

07、总结

除了以上这些规则以外,还有一些共同的规则需要遵守,比如说:


代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。反例:_name / __name / $name / name_ / name$ / name__


所有编程相关的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。反例:DaZhePromotion [打折] / getPingfenByName() [评分] / String fw[福娃] / int 某变量 = 3


代码和注释中都要避免使用任何语言的种族歧视性词语。反例:RIBENGUIZI / Asan / blackList / whiteList / slave


方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase 风格。

杜绝完全不规范的缩写,避免望文不知义。反例:AbstractClass “缩写”成 AbsClass;condition “缩写”成 condi;Function 缩写”成 Fu,此类随意缩写严重降低了代码的可阅读性。


为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达。


在常量与变量的命名时,表示类型的名词放在词尾,以提升辨识度。正例:startTime / workQueue / nameList / TERMINATED_THREAD_COUNT


如果模块、接口、类、方法使用了设计模式,在命名时需体现出具体模式。 将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。比如说:public class OrderFactory;public class LoginProxy;public class ResourceObserver;


枚举类名带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。枚举其实就是特殊的常量类,且构造方法被默认强制是私有。比如说:枚举名字为 ProcessStatusEnum 的成员名称:SUCCESS / UNKNOWN_REASON。


相关文章
|
9月前
|
Java 开发者
重学Java基础篇—Java类加载顺序深度解析
本文全面解析Java类的生命周期与加载顺序,涵盖从加载到卸载的七个阶段,并深入探讨初始化阶段的执行规则。通过单类、继承体系的实例分析,明确静态与实例初始化的顺序。同时,列举六种触发初始化的场景及特殊场景处理(如接口初始化)。提供类加载完整流程图与记忆口诀,助于理解复杂初始化逻辑。此外,针对空指针异常等问题提出排查方案,并给出最佳实践建议,帮助开发者优化程序设计、定位BUG及理解框架机制。最后扩展讲解类加载器层次与双亲委派机制,为深入研究奠定基础。
339 0
|
5月前
|
存储 Java 程序员
Java 基础知识点全面梳理包含核心要点及难点解析 Java 基础知识点
本文档系统梳理了Java基础知识点,涵盖核心特性、语法基础、面向对象编程、数组字符串、集合框架、异常处理及应用实例,帮助初学者全面掌握Java入门知识,提升编程实践能力。附示例代码下载链接。
216 0
|
7月前
|
IDE Java 开发工具
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
IntelliJ IDEA创建Java项目的图文详细步骤,手把手带你创建Java项目
1206 10
【Java基础-环境搭建-创建项目】IntelliJ IDEA创建Java项目的详细步骤
|
6月前
|
存储 安全 Java
2025 年最新 40 个 Java 基础核心知识点全面梳理一文掌握 Java 基础关键概念
本文系统梳理了Java编程的40个核心知识点,涵盖基础语法、面向对象、集合框架、异常处理、多线程、IO流、反射机制等关键领域。重点包括:JVM运行原理、基本数据类型、封装/继承/多态三大特性、集合类对比(ArrayList vs LinkedList、HashMap vs TreeMap)、异常分类及处理方式、线程创建与同步机制、IO流体系结构以及反射的应用场景。这些基础知识是Java开发的根基,掌握后能为后续框架学习和项目开发奠定坚实基础。文中还提供了代码资源获取方式,方便读者进一步实践学习。
1719 2
|
6月前
|
存储 安全 Java
Java 基础知识面试题汇总 最全面的 Java 基础面试题整理
本文全面解析Java基础知识面试题,涵盖Java基础概念、面向对象编程、异常处理、集合框架等核心内容。通过实际应用场景,提供技术方案与应用实例,如JDK与JRE区别、==与equals()差异、String类特性、final与static关键字用法、多继承替代方案及接口与抽象类对比。帮助开发者夯实基础,高效备考,提升实战能力。附带完整代码示例,可供下载学习。
774 3
|
10月前
|
缓存 安全 Java
Volatile关键字与Java原子性的迷宫之旅
通过合理使用 `volatile`和原子操作,可以在提升程序性能的同时,确保程序的正确性和线程安全性。希望本文能帮助您更好地理解和应用这些并发编程中的关键概念。
262 21
|
9月前
|
设计模式 缓存 Java
重学Java基础篇—Java对象创建的7种核心方式详解
本文全面解析了Java中对象的创建方式,涵盖基础到高级技术。包括`new关键字`直接实例化、反射机制动态创建、克隆与反序列化复用对象,以及工厂方法和建造者模式等设计模式的应用。同时探讨了Spring IOC容器等框架级创建方式,并对比各类方法的适用场景与优缺点。此外,还深入分析了动态代理、Unsafe类等扩展知识及注意事项。最后总结最佳实践,建议根据业务需求选择合适方式,在灵活性与性能间取得平衡。
574 3
|
9月前
|
安全 IDE Java
重学Java基础篇—Java泛型深度使用指南
本内容系统介绍了Java泛型的核心价值、用法及高级技巧。首先阐述了泛型在**类型安全**与**代码复用**中的平衡作用,解决强制类型转换错误等问题。接着详细讲解了泛型类定义、方法实现、类型参数约束(如边界限定和多重边界)、通配符应用(PECS原则)以及类型擦除的应对策略。此外,还展示了泛型在通用DAO接口、事件总线等实际场景的应用,并总结了命名规范、边界控制等最佳实践。最后探讨了扩展知识,如通过反射获取泛型参数类型。合理运用泛型可大幅提升代码健壮性和可维护性,建议结合IDE工具和单元测试优化使用。
332 1
|
9月前
|
安全 IDE Java
重学Java基础篇—Java Object类常用方法深度解析
Java中,Object类作为所有类的超类,提供了多个核心方法以支持对象的基本行为。其中,`toString()`用于对象的字符串表示,重写时应包含关键信息;`equals()`与`hashCode()`需成对重写,确保对象等价判断的一致性;`getClass()`用于运行时类型识别;`clone()`实现对象复制,需区分浅拷贝与深拷贝;`wait()/notify()`支持线程协作。此外,`finalize()`已过时,建议使用更安全的资源管理方式。合理运用这些方法,并遵循最佳实践,可提升代码质量与健壮性。
266 1
|
9月前
|
Java C语言
课时8:Java程序基本概念(标识符与关键字)
课时8介绍Java程序中的标识符与关键字。标识符由字母、数字、下划线和美元符号组成,不能以数字开头且不能使用Java保留字。建议使用有意义的命名,如student_name、age。关键字是特殊标记,如蓝色字体所示。未使用的关键字有goto、const;特殊单词null、true、false不算关键字。JDK1.4后新增assert,JDK1.5后新增enum。
189 4