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

news2024/11/19 9:35:48

 本文已收录专栏

🌲《Java进阶之路》🌲


目录

 本文已收录专栏

🌲《Java进阶之路》🌲

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

关键字

保留字

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

01、包(package)

02、类(class)

03、接口(interface)

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

05、常量(constant)

06、方法(method)

07、总结


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

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

关键字

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

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

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

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

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

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

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

  8. class: 用于声明一个类。

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

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

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

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

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

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

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

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

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

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

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

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

  21. implements: 用于实现接口。

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

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

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

  25. interface: 用于声明接口。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  42. throw: 主动抛出异常。

  43. throws: 用于声明异常。

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

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

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

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

  48. 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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163432.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring MVC 整合 Shiro 权限控制

Apache Shiro 是一个功能强大且灵活的开放源代码安全框架&#xff0c;可以细粒度地处理认证 (Authentication)&#xff0c;授权 (Authorization)&#xff0c;会话 (Session) 管理和加密 (cryptography) 等企业级应用中常见的安全控制流程。 Apache Shiro 的首要目标是易于使用和…

python实现excel和csv中的vlookup函数

本篇博客会介绍如何使用python在excel和csv里实现vlookup函数的功能&#xff0c;首先需要简单了解一下python如何操作excel 1. python处理excel 1.1 删除excel中指定行 在文件夹里创建了一个excel文件&#xff0c;可以看到里面放的是三国人物的数据 会发现在【蜀】里&#…

ESP-IDF:在C++环境下实现动态数组例程,包括初始化,添加数值,查找,删除,打印等功能

代码&#xff1a; /* 动态数组 */ struct DYNAMICARRAY { int *pAddress; int size; int capacity; }; DYNAMICARRAY *initialDynamicArray() { DYNAMICARRAY *p (DYNAMICARRAY *)malloc(sizeof(DYNAMICARRAY)); p->size 0; p->capacity 5; p->pAddress (int *)…

数据结构与算法--python版-01

文章目录基本概念数据存储方式算法案例基本概念 程序 数据结构 算法 数据结构&#xff0c;数据的存储&#xff08;物理结构&#xff09;及相互间的关联关系(逻辑结构)&#xff1b; 线性表&#xff08;顺序表、链表、队列、栈&#xff09;&#xff0c;一个前驱&#xff0c;一…

口语语言理解最新进展及前沿

口语语言理解 作为任务型对话系统的核心组件&#xff0c;目的是为了获取用户询问语句的框架语义表示信息&#xff0c;进而将这些信息为对话状态的追踪模块DSTDSTDST, 以及自然语言生成模块NLGNLGNLG所使用 SLUSLUSLU任务通常包含以下两个任务: 意图识别任务: intent detectio…

企企购商城 | 破解降本难题,非生采购“利器”来了

近年来&#xff0c;疫情反复无常&#xff0c;全球市场环境动荡不安&#xff0c;在瞬息万变的环境下&#xff0c;很多企业都处于降本处境&#xff0c;采购降本成了其中的重要一环。其中&#xff0c;非生采购作为贯穿企业各个职能板块的采购活动&#xff0c;众多国际先进的企业已…

应用PID算法对ABS系统的仿真和分析

1、内容简介略635-论文V2 可以交流、咨询、答疑2、内容说明摘要&#xff1a;本文旨在设计一种利用模糊控制理论优化的pid控制器&#xff0c;控制abs系统&#xff0c;达到对滑移率最佳控制范围的要求 &#xff0c;所提出的方案采用级联控制架构&#xff1a;设计用于外环中的车轮…

零基础开始QT绘图(6)

前面我们开始提到了GraphicView的使用&#xff0c;也提到GraphicsItem的使用&#xff0c;并且开始了自定义GraphicsItem的编写&#xff0c;而且上次我们的GraphicsItem也是可以拖动了&#xff0c;但这离我们需要的效果还有一定的距离。 所以&#xff0c;这次&#xff0c;我们进…

工程电磁设备在2018年杭州电磁大会的报告

1 方法原理 本篇是对多频电磁方法,应用的解读。 本汇报讲述了EMI传感器的基本情况,以及用手持多频电磁仪进行实际探测应用的例子。 什么是电磁感应?用发射装置(TX)激发谐波,产生一次场(Primary field),地下导体目标会相应产生涡流电磁场,产生二次场,被接收装置(RX…

「网络安全渗透」如果你还不懂CSRF?这一篇让你彻底掌握

1 什么是 CSRF 面试的时候的著名问题&#xff1a;"谈一谈你对 CSRF 与 SSRF 区别的看法" 这个问题&#xff0c;如果我们用非常通俗的语言讲的话&#xff0c;CSRF 更像是钓鱼的举动&#xff0c;是用户攻击用户的&#xff1b;而对于 SSRF 来说&#xff0c;是由服务器…

14.0、Linux-yum方式安装 docker

14.0、Linux-yum方式安装 docker 第一步&#xff1a; 检测 CentOS7 -> cat /etc/redhat-release 第二步&#xff1a; 用以下命令安装准备环境 -> yum -y install gcc yum -y install gcc-c 第三步&#xff1a; 如果之前安装过 docker 的&#xff0c;先用以下命令删…

【每日一题】【LeetCode】【第十三天】移动零

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 看到这题目&#xff0c;第一时间还真想到了双指针法&#xff08;暴力解法是个会写代码的都能第一时间想到&#xff0c;所以自己学会了尽量不第一时间用暴力解法&#xff09; right的初始位置元素若为0&…

Jenkins-Slave分布式架构搭建

♥ Jenkins的分布式构建&#xff0c;在Jenkins的配置中叫做节点&#xff0c;分布式构建能够让同一套代码或项目在不同的环境(如&#xff1a;Windows和Linux系统)中编译、部署等。 ♥ 将jenkins项目发布在不同服务器上&#xff08;分布jenkins工作空间&#xff0c;部署项目到不同…

java 简单了解spring之(IOC容器)

IOC 容器 是spring的一个重要组成部分 IOC 翻译过来叫控制反转 他在做的事是 降低计算机代码的耦合度 这个过程叫IOC 通过控制反转 对象在被创建时 由一个调控系统内所有对象的外界实体将将其所依赖的对象引用传递给他&#xff0c;也可以说&#xff0c;依赖被注入到对象中 说简…

[oeasy]python0048_取整_int_float_浮点型_cast_扮演_tab_制表键_制表符

转化为10进制 回忆上次内容 上次 把其他进制 转化回 十进制 用的是 int 函数 int 来自于 integer 同源词 还有 integrateentire意思都是完整的 完整的 和 零散的 相对 可以把 零散的小数 转化为 完整的整数吗&#xff1f;&#x1f914; 取整 可以 把一个浮点型的小数 取…

【Proteus仿真】【51单片机】酒精浓度检测系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真51单片机控制器&#xff0c;使用LCD1602显示模块、按键模块、LED和蜂鸣器、MQ-3酒精传感器模块等。 主要功能&#xff1a; 系统运行后&#xff0c;LCD1602显示酒精浓度值和阈值&…

【自学Docker】Docker命令

Docker命令 Docker命令分类 Docker环境信息 docker [info|version]Docker容器生命周期管理 docker [create|exec|run|start|stop|restart|kill|rm|pause|unpause]Docker容器操作运维 docker [ps|inspect|top|attach|wait|export|port|rename|stats]Docker容器rootfs命令 …

AMBA--AHB总线协议学习及Verilog实现与仿真(一)

1、AHB总线概述 AHB&#xff1a;Advanced High-performance Bus,即高级高性能总线。AHB总线是SOC芯片中应用最为广泛的片上总线。下图是一个典型的基于AMBA AHB总线的微控制器系统&#xff1a; 基于AMBA AHB的设计中可以包含一个或多个总线主机&#xff0c;通常一个系统里至少…

MySQL——如何正确的显示随机消息

在之前的文章中有介绍order by语句的几种执行模式。考虑如下场景&#xff1a;有一个APP&#xff0c;有一个随机显示英语单词的功能&#xff0c;也就是根据每个用户的级别有一个单词表&#xff0c;然后这个用户每次访问首页的时候&#xff0c;都会随机滚动显示三个单词。会发现随…

PhotoZoom2023专业的图片无损放大软件最新V8版功能介绍

PhotoZoom 8 全新版本 震撼来袭。 一款划时代的、技术上产生革命性影响的数码图片放大工具。 我们获取图片的方法&#xff0c;一般是从度娘图片和各个图库里找素材。但一般网上搜索到的很多图片像素都非常小&#xff0c;普通方法放大就像打了马赛克一样&#xff0c;根本没法直接…