【Java基础知识 2】Java中常用的48个关键字和2个保留字 || Java命名规范(从此告别起名难)
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
本文已收录专栏
🌲《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 循环。
像一些其他的关键字比如finalstatic等后面会单独拉出来讲的。
保留字
“除了这些关键字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 “缩写”成 AbsClasscondition “缩写”成 condiFunction 缩写”成 Fu此类随意缩写严重降低了代码的可阅读性。
- 为了达到代码自解释的目标任何自定义编程元素在命名时使用尽量完整的单词组合来表达。
- 在常量与变量的命名时表示类型的名词放在词尾以提升辨识度。正例
startTime / workQueue / nameList / TERMINATED_THREAD_COUNT
- 如果模块、接口、类、方法使用了设计模式在命名时需体现出具体模式。 将设计模式体现在名字中有利于阅读者快速理解架构设计理念。比如说
public class OrderFactory;public class LoginProxy;public class ResourceObserver;
- 枚举类名带上 Enum 后缀枚举成员名称需要全大写单词间用下划线隔开。枚举其实就是特殊的常量类且构造方法被默认强制是私有。比如说
枚举名字为 ProcessStatusEnum 的成员名称SUCCESS / UNKNOWN_REASON
。