Java开发手册新
- 格式:docx
- 大小:60.68 KB
- 文档页数:24
java中文参考手册Java是一种广泛应用于各种领域的编程语言,它具有跨平台、面向对象、高效等特点。
自1995年由Sun公司推出以来,Java在全球范围内得到了众多开发者的喜爱。
本手册将为您介绍Java的基本概念、编程技巧以及相关工具和资源。
一、Java简介与历史Java语言诞生于1995年,由詹姆斯·高斯林领导的研究团队开发。
Java的初衷是为了解决C++语言中复杂、易错、低效的问题,设计出一门简单、安全、高效的编程语言。
Sun公司(已被甲骨文公司收购)将其作为核心产品推广,并逐步发展出Java虚拟机(JVM)、Java企业版(J2EE)等系列技术。
二、Java编程基础1.数据类型与变量:Java中有基本数据类型(如int、float、double、boolean等)和引用数据类型(如类、数组和接口)。
变量是用于存储数据的标识符,需要声明其数据类型和初始值。
2.运算符与表达式:Java支持算术、关系、逻辑等运算符,以及赋值、条件、逗号等表达式。
3.控制结构:Java的控制结构包括顺序、分支(如if、switch)和循环(如for、while、do-while)等。
4.函数与方法:函数是一段封装了特定功能的代码,可以通过参数和返回值与调用者进行交互。
方法是类中定义的功能模块,可以用于执行特定操作。
三、Java面向对象编程1.类与对象:类是面向对象编程的基本单元,包含属性和方法。
对象是类的实例,通过创建对象,我们可以调用类中定义的方法来实现具体功能。
2.封装、继承与多态:封装是将数据和操作封装在一起,提高代码的可维护性。
继承是子类继承父类的属性和方法。
多态是指子类可以根据需要覆盖或实现父类的方法,使得不同的对象可以以统一的接口进行操作。
3.接口与内部类:接口是一组方法的声明,可以用于定义类之间的契约。
内部类是定义在另一个类内部的类,可以访问外部类的成员。
四、Java常用类库1.字符串操作:Java提供了许多字符串操作方法,如字符串匹配、替换、截取等。
java21开发手册
Java 21开发手册是一本关于Java编程语言的参考书,它详细介绍了Java 21版本中的各种特性和功能。
这本书包括了Java语言的基本语法、面向对象编程、异常处理、多线程编程、网络编程、数据库编程等方面的内容,同时还介绍了Java虚拟机的工作原理和调优方法。
以下是一些Java 21开发手册中的主要内容:
1. Java语言基础:介绍Java语言的基本语法、数据类型、运算符、控制语句等基础知识。
2. 面向对象编程:介绍Java中的类、对象、继承、封装、多态等面向对象编程的概念和技术。
3. 异常处理:介绍Java中的异常机制和异常处理的方法,包括try-catch语句、throw语句、finally语句等。
4. 多线程编程:介绍Java中的多线程编程技术,包括线程的创建、启动、同步、通信等。
5. 网络编程:介绍Java中的网络编程技术,包括Socket编程、HTTP协议、TCP/IP协议等。
6. 数据库编程:介绍Java中的数据库编程技术,包括JDBC接口、SQL语言、事务处理等。
7. Java虚拟机:介绍Java虚拟机的工作原理和调优方法,包括内存管理、垃圾回收、性能优化等。
总之,Java 21开发手册是一本非常实用的Java编程参考书,对于想要深入学习Java编程语言的人来说是一本不可多得的好书。
阿里巴巴java开发手册
阿里巴巴Java开发手册是一份由阿里巴巴集团编写的开发规范手册,它旨在指导Java开发人员编写优秀的代码,提高代码质量和可维护性。
以下是阿里巴巴Java开发手册的一些主要内容:
1. 命名规范:包括类命名、方法命名、变量命名等。
2. 代码格式:包括缩进、空格、换行等。
3. 注释规范:包括类注释、方法注释、变量注释等。
4. 异常处理:包括异常捕获、异常处理、异常抛出等。
5. 类设计:包括类的继承、类的组合、类的访问修饰符等。
6. 其他编程规范:包括循环、条件判断、错误处理等。
阅读阿里巴巴Java开发手册可以帮助开发人员编写规范的代码,减少代码错误和bug的产生,提高代码的可读性和
可维护性。
此外,遵循统一的开发规范也有助于团队协作和代码的交接。
阿里巴巴Java开发手册可以在官方网站上免费下载。
《Java语言程序设计基础教程》上机实验指导手册实验一基本数据类型与控制语句【目的】①掌握开发Java应用程序的3个步骤:编写源文件、编译源文件和运行应用程序;②学习同时编译多个Java源文件;③掌握char型数据和int型数据之间的相互转换,同时了解unicode字符表;④掌握使用if…else if多分支语句;⑤使用if…else分支和while循环语句解决问题。
【内容】1.一个简单的应用程序✧实验要求:编写一个简单的Java应用程序,该程序在命令行窗口输出两行文字:“你好,很高兴学习Java”和“We are students”。
✧程序运行效果示例:程序运行效果如下图所示:✧程序模板:Hello.javapublic class Hello{public static void main (String args[ ]){【代码1】//命令行窗口输出"你好,很高兴学习Java"A a=new A();a.fA();}}class A{void fA(){【代码2】//命令行窗口输出"We are students"}}✧实验后的练习:1.编译器怎样提示丢失大括号的错误?2.编译器怎样提示语句丢失分号的错误?3.编译器怎样提示将System写成system这一错误?编译器怎样提示将String写成string这一错误?2.联合编译✧实验要求:编写4个源文件:Hello.java、A.java、B.java和C.java,每个源文件只有一个类,Hello.java是一个应用程序(含有main方法),使用了A、B和C类。
将4个源文件保存到同一目录中,例如:C:\100,然后编译Hello.java。
✧程序运行效果示例:程序运行效果如下图所示:✧程序模板:模板1:Hello.javapublic class MainClass{public static void main (String args[ ]){【代码1】 //命令行窗口输出"你好,只需编译我"A a=new A();a.fA();B b=new B();b.fB();}}模板2 :A.javapublic class A{void fA(){【代码2】 //命令行窗口输出"I am A"}}模板3 :B.javapublic class B{void fB(){【代码3】 //命令行窗口输出"I am B"}}模板4 :C.javapublic class C{void fC(){【代码4】 //命令行窗口输出"I am C"}}✧实验后的练习:4.将Hello.java编译通过后,不断修改A.java源文件中的代码,比如,在命令行窗口输出“我是A类”或“我被修改了”。
《Java开发⼿册》⼀、编程规约 (⼀) 命名风格6. 【强制】抽象类命名使⽤Abstract或Base开头;异常类命名使⽤Exception 结尾;测试类命名以它要测试的类的名称开始,以Test结尾。
8. 【强制】POJO类中布尔类型变量都不要加is前缀,否则部分框架解析会引起序列化错误。
说明:在本⽂ MySQL 规约中的建表约定第⼀条,表达是与否的值采⽤ is_xxx 的命名⽅式,所以,需要在设置从 is_xxx到 xxx的映射关系。
反例:定义为基本数据类型 Boolean isDeleted 的属性,它的⽅法也是 isDeleted(),RPC框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进⽽抛出异常。
9. 【参考】各层命名规约: A) Service/DAO 层⽅法命名规约 1)获取单个对象的⽅法⽤ get 做前缀。
2)获取多个对象的⽅法⽤ list 做前缀,复数形式结尾如:listObjects。
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。
(三) 代码格式5. 【强制】采⽤4个空格缩进,禁⽌使⽤tab字符。
说明:如果使⽤ tab 缩进,必须设置1 个tab 为4 个空格。
IDEA 设置 tab 为4 个空格时,请勿勾选 Use tab character;⽽在eclipse 中,必须勾选 insert spaces for tabs。
正例:(涉及1-5 点)public static void main(String[] args) { // 缩进4个空格 String say = "hello"; // 运算符的左右必须有⼀个空格 int flag = 0; // 关键词if与括号之间必须有⼀个空格,括号内的f与左括号,0与右括号不需要空格 if (flag == 0) { System.out.println(say); } // 左⼤括号前加空格且不换⾏;左⼤括号后换⾏ if (flag == 1) { System.out.println("world"); // 右⼤括号前换⾏,右⼤括号后有else,不⽤换⾏ } else { System.out.println("ok"); // 在右⼤括号后直接结束,则必须换⾏ } }(四) OOP规约1. 【强制】避免通过⼀个类的对象引⽤访问此类的静态变量或静态⽅法,⽆谓增加编译器解析成本,直接⽤类名来访问即可。
阿⾥巴巴Java开发⼿册 1.4.0⼀、编程规约(⼀) 命名风格1. 【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例: _name / __name / $name / name_ / name$ / name__2. 【强制】代码中的命名严禁使⽤拼⾳与英⽂混合的⽅式,更不允许直接使⽤中⽂的⽅式。
说明:正确的英⽂拼写和语法可以让阅读者易于理解,避免歧义。
注意,即使纯拼⾳命名⽅式也要避免采⽤。
正例: alibaba / taobao / youku / hangzhou 等国际通⽤的名称,可视同英⽂。
反例: DaZhePromotion [ 打折 ] / getPingfenByName() [ 评分 ] / int 某变量 = 33. 【强制】类名使⽤ UpperCamelCase 风格,但以下情形例外: DO / BO / DTO / VO / AO /PO / UID 等。
正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion反例: macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion4. 【强制】⽅法名、参数名、成员变量、局部变量都统⼀使⽤ lowerCamelCase 风格,必须遵从驼峰形式。
正例: localValue / getHttpMessage() / inputUserId5. 【强制】常量命名全部⼤写,单词间⽤下划线隔开,⼒求语义表达完整清楚,不要嫌名字长。
正例: MAX _ STOCK _ COUNT反例: MAX _ COUNT6. 【强制】抽象类命名使⽤ Abstract 或 Base 开头 ; 异常类命名使⽤ Exception 结尾 ; 测试类命名以它要测试的类的名称开始,以 Test 结尾。
7. 【强制】类型与中括号紧挨相连来表⽰数组。
java8中文参考手册Java 8 中文参考手册Java 8 是 Java 编程语言的一个重要版本,引入了许多新的特性和改进。
本文将为您提供Java 8 中文参考手册,详细介绍这些特性和改进。
请注意,本手册仅供参考,具体代码示例请以官方文档为准。
一、Lambda 表达式Lambda 表达式是 Java 8 中引入的一个重要特性,可以简化代码的编写,特别是在处理集合数据时。
Lambda 表达式的基本语法是:`(参数列表) -> 表达式或代码块`。
Lambda 表达式的优点:1. 简化代码,减少冗余代码。
2. 使代码更易读。
Lambda 表达式的应用场景:1. 集合数据的遍历和过滤。
2. 线程和并行编程。
3. 函数式接口的实现。
二、函数式接口函数式接口是指只包含一个抽象方法的接口。
Java 8 中为函数式接口引入了 `@FunctionalInterface` 注解,用于标识接口为函数式接口。
函数式接口的优点:1. 简化代码,提高代码的可读性。
2. 方便函数式编程的实现。
常见的函数式接口:1. `Consumer<T>`:代表接受一个输入参数并且无返回的操作。
2. `Supplier<T>`:代表一个供给型的接口,用于提供一个返回值。
3. `Function<T, R>`:代表接受一个输入参数并且返回结果的操作。
4. `Predicate<T>`:用于判断给定参数是否符合特定条件。
三、Stream APIStream API 是 Java 8 中引入的一个新的抽象层,用于处理集合数据的操作。
使用 Stream API 可以以一种类似于 SQL 查询的方式对集合进行操作。
Stream API 的优点:1. 提供了一种更简洁的方式来处理集合数据。
2. 支持并行操作,充分利用多核处理器的优势。
Stream API 的基本用法:1. 创建流:通过集合、数组、文件等源创建一个流。
《新版阿⾥巴巴Java开发⼿册》提到的三⽬运算符的空指针问题到底是个怎么回事?最近,阿⾥巴巴Java开发⼿册发布了最新版——泰⼭版,这个名字起的不错,⼀览众⼭⼩。
新版新增了30+规约,其中有⼀条规约引起了作者的关注,那就是⼿册中提到在三⽬运算符使⽤过程中,需要注意⾃动拆箱导致的NullPointerException(后⽂简称:NPE)问题:因为这个问题我很久之前(2015年)遇到过,曾经在博客中也记录过,刚好最新的开发⼿册再次提到了这个知识点,于是把之前的⽂章内容翻出来并重新整理了⼀下,带⼤家⼀起回顾下这个知识点。
可能有些⼈看过我之前那篇⽂章,本⽂并不是单纯的"旧瓶装新酒",在重新梳理这个知识点的时候,作者重新翻阅了《The Java Language Specification》,并且对⽐了Java SE 7 和 Java SE 8之后的相关变化,希望可以帮助⼤家更加全⾯的理解这个问题。
基础回顾在详细展看介绍之前,先简单介绍下本⽂要涉及到的⼏个重要概念,分别是"三⽬运算符"、"⾃动拆装箱"等,如果⼤家对于这些历史知识有所掌握的话,可以先跳过本段内容,直接看问题重现部分即可。
三⽬运算符在《The Java Language Specification》中,三⽬运算符的官⽅名称是Conditional Operator ? :,我⼀般称呼他为条件表达式,详细介绍在JLS 15.25中,这⾥简单介绍下其基本形式和⽤法:三⽬运算符是Java语⾔中的重要组成部分,它也是唯⼀有3个操作数的运算符。
形式为:<表达式1> ? <表达式2> : <表达式3>以上,通过?、:组合的形式得到⼀个条件表达式。
其中?运算符的含义是:先求表达式1的值,如果为真,则执⾏并返回表达式2的结果;如果表达式1的值为假,则执⾏并返回表达式3的结果。
Java程序员开发手册通常是一个组织或团队内部制定的一份文档,旨在规范Java程序开发过程、编码风格以及最佳实践。
这样的手册有助于确保项目的代码质量、可维护性和一致性。
以下是一些可能包含在Java程序员开发手册中的主题:1. 命名规范:定义变量、方法、类、包等的命名规范,以确保代码的可读性和一致性。
2. 代码布局和格式化:规定代码缩进、括号使用、注释格式等,以保持代码的一致性。
3. 包的组织结构:定义项目包的结构,包括主代码、测试代码、资源文件等的组织方式。
4. 异常处理:规定如何使用异常以及如何处理异常,以确保代码的健壮性和可维护性。
5. 并发编程:提供关于多线程和并发编程的最佳实践,以防止常见的并发问题。
6. 日志记录:定义如何记录日志,包括使用哪些日志框架、日志级别等。
7. 单元测试和集成测试:规定如何编写单元测试和集成测试,以确保代码的质量和稳定性。
8. 代码复用和设计模式:提供关于如何重用代码和应用设计模式的指导,以提高代码的可维护性和可扩展性。
9. 性能优化:提供关于如何进行性能分析和优化的建议,以确保应用程序的高性能。
10. 安全性:包括有关安全编码实践、防范常见安全漏洞等的信息。
11. 版本控制:提供关于使用版本控制系统的最佳实践,例如Git或SVN。
12. 团队协作规范:包括代码评审流程、协作工具的使用规范等。
13. 文档编写:规定文档的编写格式和内容,包括代码注释、项目文档等。
14. 持续集成和部署:提供关于持续集成和部署的最佳实践,以确保代码的及时发布和集成。
这只是一份可能包含在Java程序员开发手册中的一些主题,具体内容会根据项目的特点和团队的实际需求而有所不同。
通常,这样的手册是一个持续更新的文档,以适应项目和技术的变化。
阿里巴巴java开发手册解析一、前言阿里巴巴java开发手册是一份非常全面、系统的技术规范,囊括了Java开发中的方方面面。
它旨在帮助开发人员编写高质量、高效率、安全性和可维护性兼具的Java代码,同时也提供了一些在实际项目中积累的经验和范例。
在本文中,我将对阿里巴巴java开发手册进行全面解析,深入探讨其中的重要规范和原则,以期能够帮助读者更好地理解和应用这些规范。
二、基本概念与原则1. 命名规范在阿里巴巴java开发手册中,对于包名、类名、方法名、变量名等的命名规范有非常详细的要求。
包名统一使用小写,类名使用驼峰命名法等。
这些统一规范的命名方式可以使得代码更加易读易懂,提高了代码的可维护性。
2. 代码风格在代码风格方面,阿里巴巴java开发手册提出了一系列的规范,包括缩进、括号的使用、代码注释等。
这些规范的制定可以使得团队内的代码风格更加统一,也有利于降低代码维护的难度。
3. 异常处理在异常处理方面,规范了异常的抛出和捕获、异常信息的打印等。
合理的异常处理可以提高代码的健壮性和可靠性,避免了不必要的异常被悄悄吞噬。
三、深入探讨1. 泛型阿里巴巴java开发手册对于泛型的使用有着详细的规范和说明,其中包括泛型的基本概念、通配符的使用、泛型方法等。
通过学习这些规范,我们可以更加深入地理解泛型的原理和使用方法,在实际项目中更加灵活地应用泛型。
2. 多线程在多线程编程方面,阿里巴巴java开发手册提出了一些高质量的编码原则和规范,包括多线程安全指南、可见性原则、可重入锁等。
这些规范有助于开发人员更加深入地理解多线程编程中的重要概念和原理,编写出更加高效、安全的多线程代码。
3. 安全性在安全性方面,阿里巴巴java开发手册对于输入校验、输出编码、敏感信息保护等提出了一些规范。
这些规范可以帮助开发人员更加深入地理解安全编程的重要性,避免了常见的安全漏洞。
四、总结与回顾阿里巴巴java开发手册作为一份全面、系统的技术规范,囊括了Java 开发中的方方面面。
Java开发手册前言现代软件行业的高速发展对于开发者的综合素质要求越来越高,因为不仅是编程知识点,其它维度的知识点也会影响到软件的最终交付质量。
比如:数据库的表结构和索引设计缺陷可能带来软件上的架构缺陷或性能风险;工程结构混乱导致维护困难;没有鉴权的漏洞代码被黑客攻击等等。
所以本手册以Java开发者为中心视角,划分为编程规约、异常日志规约、MySQL规约、工程规约、安全规约五大块,再根据内容特征,细分成若干二级子目录。
根据约束力强弱及故障敏感性,规约依次分为强制、推荐、参考三大类。
对于规约里的内容,“说明”对内容做了引申和解释;“正例”提倡什么样的编码和实现方式;“反例”说明需要提防的雷区,以及真实的错误案例。
本手册的愿景是码出质量、码出高效。
代码的字里行间流淌的是软件生命中的血液,质量的提升是尽可能少踩坑,杜绝踩重复的坑,切实提升质量意识。
另外,现代软件架构都需要协同开发完成,高效考虑的是降低协同成本,所谓无规矩不成方圆,无规范不能协作。
众所周知,制订交通法规表面上是要限制行车权,实际上是保障公众的人身安全。
试想如果没有限速,没有红绿灯,没有规定靠右行驶,谁还敢上路行驶。
对软件来说,适当的规范和标准绝不是消灭代码内容的创造性、优雅性,而是限制过度个性化,以一种普遍认可的统一方式一起做事,提升协作效率。
一、编程规约(一)命名规约1.【强制】代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。
反例:_name / __name / $Object / name_ / name$ / Object$2.【强制】代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。
说明:正确的英文拼写和语法可以让阅读者易于理解,避免歧义。
注意,即使纯拼音命名方式也要避免采用。
反例:DaZhePromotion [打折] / getPingfenByName() [评分] / int 某变量= 3正例:alibaba / taobao / youku / hangzhou 等国际通用的名称,可视同英文。
3.【强制】类名使用UpperCamelCase风格,必须遵从驼峰形式,但以下情形例外:(领域模型的相关命名)DO / BO / DTO / VO等。
正例:MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion反例:macroPolo / UserDo / XMLService / TCPUDPDeal / TAPromotion4.【强制】方法名、参数名、成员变量、局部变量都统一使用lowerCamelCase风格,必须遵从驼峰形式。
正例:localValue / getHttpMessage() / inputUserId5.【强制】常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
正例:MAX_STOCK_COUNT反例:MAX_COUNT6.【强制】抽象类命名使用Abstract或Base开头;异常类命名使用Exception结尾;测试类命名以它要测试的类的名称开始,以Test结尾。
7.【强制】中括号是数组类型的一部分,数组定义如下:String[] args;反例:使用String args[]的方式来定义。
8.【强制】POJO类中布尔类型的变量,都不要加is,否则部分框架解析会引起序列化错误。
反例:定义为基本数据类型Boolean isSuccess;的属性,它的方法也是isSuccess(),RPC 框架在反向解析的时候,“以为”对应的属性名称是success,导致属性获取不到,进而抛出异常。
9.【强制】包名统一使用小写,点分隔符之间有且仅有一个自然语义的英语单词。
包名统一使用单数形式,但是类名如果有复数含义,类名可以使用复数形式。
正例:应用工具类包名为com.alibaba.open.util、类名为MessageUtils(此规则参考spring 的框架结构)10.【强制】杜绝完全不规范的缩写,避免望文不知义。
反例:AbstractClass“缩写”命名成AbsClass;condition“缩写”命名成condi,此类随意缩写严重降低了代码的可阅读性。
11.【推荐】如果使用到了设计模式,建议在类名中体现出具体模式。
说明:将设计模式体现在名字中,有利于阅读者快速理解架构设计思想。
正例:public class OrderFactory;public class LoginProxy;public class ResourceObserver;12.【推荐】接口类中的方法和属性不要加任何修饰符号(public 也不要加),保持代码的简洁性,并加上有效的Javadoc注释。
尽量不要在接口里定义变量,如果一定要定义变量,肯定是与接口方法相关,并且是整个应用的基础常量。
正例:接口方法签名:void f();接口基础常量表示:String COMPANY = "alibaba";反例:接口方法定义:public abstract void f();说明:JDK8中接口允许有默认实现,那么这个default方法,是对所有实现类都有价值的默认实现。
13.接口和实现类的命名有两套规则:1)【强制】对于Service和DAO类,基于SOA的理念,暴露出来的服务一定是接口,内部的实现类用Impl的后缀与接口区别。
正例:CacheServiceImpl实现CacheService接口。
2)【推荐】如果是形容能力的接口名称,取对应的形容词做接口名(通常是–able的形式)。
正例:AbstractTranslator实现Translatable。
14.【参考】枚举类名建议带上Enum后缀,枚举成员名称需要全大写,单词间用下划线隔开。
说明:枚举其实就是特殊的常量类,且构造方法被默认强制是私有。
正例:枚举名字:DealStatusEnum,成员名称:SUCCESS / UNKOWN_REASON。
15.【参考】各层命名规约: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。
(二)常量定义1.【强制】不允许出现任何魔法值(即未经定义的常量)直接出现在代码中。
反例:String key = "Id#taobao_"+tradeId;cache.put(key, value);2.【强制】long或者Long初始赋值时,必须使用大写的L,不能是小写的l,小写容易跟数字1混淆,造成误解。
说明:Long a = 2l; 写的是数字的21,还是Long型的2?3.【推荐】不要使用一个常量类维护所有常量,应该按常量功能进行归类,分开维护。
如:缓存相关的常量放在类:CacheConsts下;系统配置相关的常量放在类:ConfigConsts 下。
说明:大而全的常量类,非得使用查找功能才能定位到修改的常量,不利于理解和维护。
4.【推荐】常量的复用层次有五层:跨应用共享常量、应用内共享常量、子工程内共享常量、包内共享常量、类内共享常量。
1)跨应用共享常量:放置在二方库中,通常是client.jar中的constant目录下。
2)应用内共享常量:放置在一方库的modules中的constant目录下。
反例:易懂变量也要统一定义成应用内共享常量,两位攻城师在两个类中分别定义了表示“是”的变量:类A中:public static final String YES = "yes";类B中:public static final String YES = "y";A.YES.equals(B.YES),预期是true,但实际返回为false,导致产生线上问题。
3)子工程内部共享常量:即在当前子工程的constant目录下。
4)包内共享常量:即在当前包下单独的constant目录下。
5)类内共享常量:直接在类内部private static final定义。
5.【推荐】如果变量值仅在一个范围内变化用Enum类。
如果还带有名称之外的延伸属性,必须使用Enum类,下面正例中的数字就是延伸信息,表示星期几。
(三)格式规约1.【强制】大括号的使用约定。
如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果是非空代码块则:1)左大括号前不换行。
2)左大括号后换行。
3)右大括号前换行。
4)右大括号后还有else等代码则不换行;表示终止右大括号后必须换行。
2.【强制】左括号和后一个字符之间不出现空格;同样,右括号和前一个字符之间也不出现空格。
详见第5条下方正例提示。
3.【强制】if/for/while/switch/do等保留字与左右括号之间都必须加空格。
4.【强制】任何运算符左右必须加一个空格。
说明:运算符包括赋值运算符=、逻辑运算符&&、加减乘除符号、三目运算符等。
5.【强制】缩进采用4个空格,禁止使用tab字符。
说明:如果使用tab缩进,必须设置1个tab为4个空格。
IDEA设置tab为4个空格时,请勿勾选Use tab character;而在eclipse中,必须勾选insert spaces for tabs。
6.【强制】单行字符数限制不超过120 个,超出需要换行,换行时遵循如下原则:1)第二行相对第一行缩进4 个空格,从第三行开始,不再继续缩进,参考示例。
2)运算符与下文一起换行。
3)方法调用的点符号与下文一起换行。
4)在多个参数超长,逗号后进行换行。
5)在括号前不要换行,见反例。
正例:StringBuffer sb = new StringBuffer();//超过120个字符的情况下,换行缩进4个空格,并且方法前的点符号一起换行sb.append("zi").append("xin")....append("huang")....append("huang")....append("huang");反例:StringBuffer sb = new StringBuffer();//超过120个字符的情况下,不要在括号前换行sb.append("zi").append("xin")...append("huang");//参数很多的方法调用可能超过120个字符,不要在逗号前换行method(args1, args2, args3, ..., argsX);7.【强制】方法参数在定义和传入时,多个参数逗号后边必须加空格。