前言
最近打算全面系统地学习JAVA编程,以提升自己的后端编程能力,为以后的人工智能模型部署打好基础。
JAVA开发环境选择
目前来说,进行JAVA后端开发,通常使用IDEA,这里提供部分可能用到的工具:
部分参考工具:
- 项目协同开发/代码托管系统参考:https://coding.net/
- 原型设计工具参考:蓝湖、墨刀
- 接口设计工具参考:http://www.doclever.cn/
- 图标设计工具参考:https://www.iconfont.cn/
- 数据库设计工具参考:Navicat for MySQL【安装教程:https://mp.weixin.qq.com/s/mPZHBwqDb5X2PV3hozqY7Q ;资源链接:https://pan.baidu.com/s/19BlJRx7tLnDPIM4U6DNWvA;提取码:d9ci】
- Java编程工具参考:IntelliJ IDEA
- 前端开发工具参考:VSCode
Java 基础概念
- 类:类是一个模板,它描述一类对象的行为和状态。
- 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
- 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
- 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
Java 标识符
Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
关于 Java 标识符,有以下几点需要注意:
- 所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线(_)开始。
- 首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线(_)或数字的任何字符组合
- 关键字不能用作标识符
- 标识符是大小写敏感的
合法标识符举例:age、$salary、_value、__1_value
非法标识符举例:123abc、-salary
Java修饰符
像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
- 访问控制修饰符 :
default, public , protected, private
- 非访问控制修饰符 :
final, abstract, static, synchronized
基础代码模板框架
创建FirstCode.java
文件,在文件内撰写类FirstCode
:
public class FirstCode {
/* 第一个Java程序
* FirstCode.java
*/
public static void main(String[] args) {
System.out.println("The First java application!"); // The First java application!
}
}
需要注意的是,
- 所有的 Java 程序由
public static void main(String[] args)
方法开始执行。 - 源文件名必须和类名相同(例如,主类为
FirstCode
,则文件名需为FirstCode.java
)。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
在IDEA中,直接点击run即可运行代码,我们也可以用命令行的方式编译运行代码:
javac FirstCode.java
java FirstCode
或者:
javac -encoding UTF-8 FirstCode.java
java FirstCode
命名规则
基础规则
以下规则参考《阿里巴巴Java开发手册终极版v1.3.0》:
- 对于所有的类来说,类名的首字母应该大写(UpperCamelCase 风格)。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如
FirstCode
。 - 所有的方法名、参数名、成员变量、局部变量都应该以小写字母开头(lowerCamelCase风格)。如果方法名、参数名、成员变量、局部变量含有若干单词,则后面的每个单词首字母大写。
- 代码中的命名均不能以下划线_或美元符号
$
开始,也不能以下划线_或美元符号$
结束。 - 代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
- 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
- 抽象类命名使用 Abstract 或 Base 开头;异常类命名使用 Exception 结尾;测试类命名以它要测试的类的名称开始,以 Test 结尾。
- 中括号是数组类型的一部分,数组定义如下:
String[] args
,禁止使用String args[]
的方式来定义。 - 包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。例如:应用工具类包名为 com.alibaba.open.util、类名为 MessageUtils(此规则参考spring 的框架结构)。
- 杜绝完全不规范的缩写,避免望文不知义,例如,将
AbstractClass
“缩写”命名成AbsClass
,降低了可读性。为了达到代码自解释的目标,任何自定义编程元素在命名时,使用尽量完整的单词组合来表达其意。 - long 或者 Long 初始赋值时,使用大写的
L
,不能是小写的l
,小写容易跟数字1
混淆,造成误解。
后端开发规则
-
不要使用一个常量类维护所有常量,按常量功能进行归类,分开维护。大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。
-
常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
-
如果模块、接口、类、方法使用了设计模式,在命名时体现出具体模式。说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计理念。例如:
public class OrderFactory;
-
接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的 Javadoc 注释。尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
-
对于 Service 和 DAO 类,基于 SOA 的理念,暴露出来的服务一定是接口,内部的实现类用 Impl 的后缀与接口区别。例如,
CacheServiceImpl
实现CacheService
接口。 -
如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able 的形式)。正例:
AbstractTranslator
实现Translatable
。 -
枚举类名建议带上 Enum 后缀,枚举成员名称需要全大写,单词间用下划线隔开。说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。
-
各层命名规约:
A) Service/DAO 层方法命名规约
1) 获取单个对象的方法用 get 做前缀。
2) 获取多个对象的方法用 list 做前缀。
3) 获取统计值的方法用 count 做前缀。
4) 插入的方法用 save/insert 做前缀。
5) 删除的方法用 remove/delete 做前缀。
6) 修改的方法用 update 做前缀。
B) 领域模型命名规约
1) 数据对象:xxxDO,xxx 即为数据表名。
2) 数据传输对象:xxxDTO,xxx 为业务领域相关的名称。
3) 展示对象:xxxVO,xxx 一般为网页名称。
4) POJO 是 DO/DTO/BO/VO 的统称,禁止命名成 xxxPOJO。 -
如果变量值仅在一个范围内变化,且带有名称之外的延伸属性,定义为枚举类。下面正例中的数字就是延伸信息,表示星期几。
正例:
public Enum { MONDAY(1), TUESDAY(2), WEDNESDAY(3), THURSDAY(4), FRIDAY(5), SATURDAY(6), SUNDAY(7);}
代码格式
以下规则参考《阿里巴巴Java开发手册终极版v1.3.0》:
- 大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:
1) 左大括号前不换行。
2) 左大括号后换行。
3) 右大括号前换行。
4) 右大括号后还有 else 等代码则不换行;表示终止的右大括号后必须换行。 - 左小括号和字符之间不出现空格;同样,右小括号和字符之间也不出现空格。
- if/for/while/switch/do 等保留字与括号之间都必须加空格。
- 任何二目、三目运算符的左右两边都需要加一个空格。(运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号等。)
- 采用 4 个空格缩进,禁止使用 tab 字符。如果使用 tab 缩进,必须设置 1 个 tab 为 4 个空格。IDEA 设置 tab 为 4 个空格时,请勿勾选 Use tab character;而在 eclipse 中,必须勾选 insert spaces for tabs。
- 注释的双斜线
//
与注释内容之间有且仅有一个空格。 - 单行字符数限制不超过 120 个,超出需要换行,换行时遵循如下原则:
1) 第二行相对第一行缩进 4 个空格,从第三行开始,不再继续缩进,参考示例。
2) 运算符与下文一起换行。
3) 方法调用的点符号与下文一起换行。
4) 方法调用时,多个参数,需要换行时,在逗号后进行。 5) 在括号前不要换行,见反例。 - 方法参数在定义和传入时,多个参数逗号后边必须加空格。
- IDE 的 text file encoding 设置为 UTF-8; IDE 中文件的换行符使用 Unix 格式,
不要使用 Windows 格式。 - 没有必要增加若干空格来使某一行的字符与上一行对应位置的字符对齐。
- 方法体内的执行语句组、变量的定义语句组、不同的业务逻辑之间或者不同的语义之间插入一个空行。相同业务逻辑和语义之间不需要插入空行。