Java标识符是Java类名、包名、变量名,如何定义类名、包名和变量名能够体现出Java工程师技能高低和工作经验多少,Java编程规范中规定很多编码约定,这里重点强调一下关键几点。
编写Java程序时,必须定义包名、类名、变量名,这些名词都属于Java标识符,这些名称可以是任意英文字母和数字,已经特殊字符($,_)的组合,数字不能放在第一个位置
int age = 10;//合法
int _age = 20;//合法
int $age20 = 20;;//合法
int 20age = 20;//非法
int %age = 20;//非法
定义Java标识符,不能与Java保留字重名,比如 if ,for,break等
Java的保留字具有不同含义,在后面的章节中会解释这些保留字的用法,在此列举所有Java保留字,可以这样认为,所有的Java程序都是保留字和自定义标识符组成代码。
类:class、
接口:interface、
抽象:abstract ,
继承:extends、
实现接口:implements—
新建对象:new、
父类引用:super、
当前对象引用:this
判断对象类型:instanceof
无条件跳转:goto、
常量:const
访问修饰符:public、protected、private
无返回值:void
整型数据:byte、short、int、long
浮点型数据:float、double
字符型数据:char
布尔类型:boolean
枚举:enum
空对象:null、
布尔值:true、false
线程同步:synchronized
线程同步(修饰属性,属性的同步):volatile
抛出异常:throw
抛出方法异常:throws
捕获:try
处理try捕获的异常:catch
最终执行代码块:finally
返回:return
循环、条件:if、else、switch、case、break、default、continue、while、do、for
包:package、import
瞬时对象:transient
断言:assert
本地调用:native
静态的:static
不可变的:final
列举几个关键Java编码约定
- 包名一定小写
- 类名必须按照驼峰命名规则
每个单词首字母大写,其他字母小写,尽量避免出现连续两个大写字母
package com.hk.oa.util;
public class OaUtil{
public static String frmStr(Object obj)
{
if(obj == null)
return "";
return obj.toString().trim();
}
}
- 方法名按照驼峰规则
方法名的第一个字符小写
package com.gf.erp.model;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;
import org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name = "ORGMODEL_ORG")
public class OrgInfo {
@GenericGenerator(name = "generator", strategy = "assigned")
@Id
@GeneratedValue(generator = "generator")
@Column(name = "ID", nullable = false, length = 40)
private String id = null;
@Column(name = "NAME", length = 100)
private String name = null;
@Column(name = "PARENTID", length = 40)
private String parentId = null;
@Column(name = "ORGPATH", length = 200)
private String orgPath = null;
@Column(name = "FULLNAME", length = 200)
private String fullName = null;
@Column(name = "SEQNO", nullable = true)
private Integer seqno = 0;
@Column(name = "FLAG", length = 20)
private String flag = "gufang";
@Transient
private List<OrgInfo> child = new ArrayList<OrgInfo>();
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getParentId() {
return parentId;
}
public void setParentId(String parentId) {
this.parentId = parentId;
}
public String getOrgPath() {
return orgPath;
}
public void setOrgPath(String orgPath) {
this.orgPath = orgPath;
}
public String getFullName() {
return fullName;
}
public void setFullName(String fullName) {
this.fullName = fullName;
}
public Integer getSeqno() {
return seqno;
}
public void setSeqno(Integer seqno) {
this.seqno = seqno;
}
public String getFlag() {
return flag;
}
public void setFlag(String flag) {
this.flag = flag;
}
public List<OrgInfo> getChild() {
return child;
}
public void setChild(List<OrgInfo> child) {
this.child = child;
}
public void addChild(OrgInfo org)
{
if(child == null)
child = new ArrayList<OrgInfo>();
child.add(org);
}
}
4.变量名按照驼峰规则,如果变量名太长可以单词辅音字符组成
public class OrgInfo{
private Date birthday = new Date();//使用单词的全称
private Date brthd = new Date();//生日单词中的辅音
}
这个几个编码约定非常关键,能够反映出你的编码水平。可以多参考一下Spring,Hibernate,MyBatis的源码学习一下编码规则。