命名
包名:统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
1
正例:应用工具类包名为 com.alibaba.ai.util、类名为 MessageUtils
类名:使用
UpperCamelCase
风格,但以下情形例外:DO / BO / DTO / VO / AO / PO / UID
等。- 抽象类名:使用
Abstract
或Base
开头。 - 异常类名:使用
Exception
结尾。 - 测试类名:以它要测试的类的名称开始,以
Test
结尾。
1
2正例:JavaServerlessPlatform / UserDO / XmlService / TcpUdpDeal / TaPromotion
反例:javaserverlessplatform / UserDo / XMLService / TCPUDPDeal / TAPromotion- 抽象类名:使用
方法名、参数名、成员变量、局部变量:都统一使用
lowerCamelCase
风格,必须遵从驼峰形式。1
正例:localValue / getHttpMessage() / inputUserId
常量名:全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
1
2正例:MAX_STOCK_COUNT / CACHE_EXPIRED_TIME
反例:MAX_COUNT / EXPIRED_TIME各层命名规范
Service/DAO
层方法命名- 获取单个对象的方法用
get
做前缀 - 获取多个对象的方法用
list
做前缀,复数形式结尾如:listObjects
- 获取统计值的方法用
count
做前缀 - 插入的方法用
save/insert
做前缀 - 删除的方法用
remove/delete
做前缀 - 修改的方法用
update
做前缀
- 获取单个对象的方法用
- 领域模型命名
- 数据对象:
xxxDO
,xxx 即为数据表名 - 数据传输对象:
xxxDTO
,xxx 为业务领域相关的名称 - 展示对象:
xxxVO
,xxx 一般为网页名称 POJO
是DO/DTO/BO/VO
的统称,禁止命名成xxxPOJO
- 数据对象:
注释
注释类型
- 单行注释:
//
- 多行注释:
/*..*/
- 文档注释:
/**..*/
注释规范
- 类、类属性、类方法的注释必须使用
Javadoc
规范,使用/**..*/
格式。 - 抽象方法必须要用
Javadoc
注释、除了返回值、参数、 异常说明外,还必须指出该方法实现的功能。 - 所有的类都必须添加创建者和创建日期。
- 方法内部单行注释。
- 所有的枚举类型字段必须要有注释,说明每个数据项的用途。
数据类型
Java 中,一共有 8 种基本类型,其中有 4 种整型、2 种浮点类型、1 种字符类型、1 种布尔类型。
整型
类型 | 存储 | 取值范围 |
---|---|---|
int | 4 字节 | -2147483648 ~ 2147483647(约20亿) |
short | 2 字节 | -32768 ~ 32767 |
long | 8 字节 | -9223372036854775808 ~ 9223372036854775807 |
byte | 1 字节 | -128 ~ 127 |
提醒:Java 没有任何无符号类型(unsigned),且整型的范围与运行 Java 代码的机器无关。
浮点型
类型 | 存储 | 取值范围 |
---|---|---|
float | 4 字节 | 有效位数 6~7 位 |
double | 8 字节 | 有效位数 15 位 |
警告:浮点数值不适用于禁止出现舍入误差的金融计算中。
char
char 类型用于表示单个字符,是一个单一的 16 位 Unicode 字符,最小值是 \u0000
(即为 0),最大值是 \uffff
(即为 65,535),建议不要在程序中使用 char 类型。
boolean
布尔类型有两个值:false 和 true,用于判定逻辑条件,整型值和布尔值之间不能进行相互转换。
变量
在 Java 中,每一个变量属于一种类型(Type),在声明变量时,变量所属的类型位于变量名之前,声明变量之后,必须用赋值语句对变量进行显式初始化。
1 | double salary = 6500.0; |
常量
在 Java 中,利用关键字 final 指示常量,final 表示这个变量只能被赋值一次,一旦赋值后就不能改再修改了,习惯上常量名使用全大写。
1 | final double CM_PER_INCH = 2.54; |
运算符
优先级 | 运算符 | 简介 | 结合性 |
---|---|---|---|
1 | [ ] 、. 、( ) |
方法调用,属性获取 | 从左向右 |
2 | !、~、 ++、 – | 一元运算符 | 从右向左 |
3 | * 、/ 、% | 乘、除、取模(余数) | 从左向右 |
4 | + 、 - | 加减法 | 从左向右 |
5 | <<、 >>、 >>> | 左右位移 | 从左向右 |
6 | < 、<= 、>、 >=、 instanceof | 对象是否属于同类型 | 从左向右 |
7 | == 、!= | 是否相等 | 从左向右 |
8 | & | 按位与 | 从左向右 |
9 | ^ | 按位异或 | 从左向右 |
10 | | | 按位或 | 从左向右 |
11 | && | 短路与 | 从左向右 |
12 | || | 短路或 | 从左向右 |
13 | ?: | 三元运算符 | 从右向左 |
14 | =、 += 、-= 、*= 、/=、 %=、 &=、 |=、 ^=、 <、<= 、>、>= 、>>= | 混合赋值运算符 | 从右向左 |
提醒:&& 和 || 是按照“短路”方式求值,如果第一个操作数已经能够确定表达式的值,第二个操作数就不必要计算了。& 和 | 这两个运算符与前面非常相似,只是不按“短路”方式计算,即在得到计算结果之前,一定要计算两个操作数的值。
字符串
从概念上讲,Java 字符串就是 Unicode 字符序列。Java 没有内置的字符串类型,而是在标准 Java 类库中提供了一个预定义类,叫做 String。Java 有自动垃圾回收机制,如果一块内存不再使用了,系统最终会将其回收。
检测字符串是否相等:使用
equals
方法,不区分大小写使用equalsIgnoreCase
方法,不要使用==
运算符。空串:空串 “” 是长度为 0 的字符串,用以下方式可以检查是否为空。
1 | if (str.length() == 0) |
- Null 串:表示目前没有任何对象与该变量关联,检查一个字符串既不是 null 也不为空串。
1 | if (str != null && str.length() != 0) |
- 字符串 API:
java.lang.string
输入输出
读取输入:使用 java.util.Scanner
类
1 | import java.util.*; |
格式化输出:使用 System.out.printf()
- d:整数类型
- c:Unicode 字符
- b:Boolean 值
- s:String
- f:浮点数(十进制)
- e:浮点数(科学计数)
- x:整数
- h:散列码(十六进制)
- %:字符 “%”
控制流
- 条件语句:if (condition) statement
- 循环:while (condition) statement、do statement while (condition)、for (int i = 1; i <= n; i++)
- 多重选择:switch…case…
- 中断控制:break(跳出循环)、continue(跳转到下一次循环)
数组
数组是一种数据结构,用来存储同一类型值的集合。用于数组的增强 for 循环:
1 | public class Test { |
关键字
类别 | 关键字 | 说明 |
---|---|---|
访问控制 | private | 私有的 |
protected | 受保护的 | |
public | 公共的 | |
类、方法和变量修饰符 | abstract | 声明抽象 |
class | 类 | |
extends | 继承 | |
final | 不可改变的 | |
implements | 实现(接口) | |
interface | 接口 | |
native | 本地 | |
new | 创建 | |
static | 静态 | |
strictfp | 严格 | |
synchronized | 线程同步 | |
transient | 短暂 | |
volatile | 易失 | |
程序控制 | break | 跳出循环 |
continue | 继续 | |
switch | 根据值选择执行 | |
case | 定义一个值以供 switch 选择 | |
default | 默认 | |
do | 运行 | |
if | 如果 | |
else | 否则 | |
for | 循环 | |
instanceof | 实例 | |
return | 返回 | |
while | 循环 | |
错误处理 | assert | 断言表达式是否为真 |
catch | 捕捉异常 | |
finally | 有没有异常都执行 | |
throw | 抛出一个异常对象 | |
throws | 声明一个异常可能被抛出 | |
try | 捕获异常 | |
包 | import | 引入 |
package | 包 | |
数据基本类型 | byte | 字节型 |
short | 短整型 | |
int | 整型 | |
long | 长整型 | |
float | 单精度浮点 | |
double | 双精度浮点 | |
char | 字符型 | |
boolean | 布尔型 | |
变量应用 | super | 超类 |
this | 本类 | |
void | 无返回值 | |
保留关键字 | goto | 是关键字,但不能使用 |
const | 是关键字,但不能使用 | |
null | 空 |