Java入门基础之常规的命名方法和变量的值及其引用
Java:命名的讲究
1、类名
类名通常以名词结尾。而且在类名中要体现它是以保存数据为主还是提供功能为主。例如ConnectionBuilder这个类我们都可以猜到它的主要功能是创建Connection对象,
以动词-er/or结尾的类名,至少应该包含一个以该动词开头的方法。例如ConnectionBuilder这个类,它至少应该包含一个以build-开头的方法。有了这种默契,别人就能更方便的使用这个类。
2、增删改查方法的命名
以对Person类的增删改查为例——
创建一个Person对象的方法一般命名为createPerson()/newPerson(),
添加方法命名为addPerson(),修改方法命名为updatePerson(),
删除方法命名为deletePerson()/removePerson(),
根据主键查询的方法命名为getPerson()/queryPerson()。
根据其他条件来查询,要指出具体的条件类型,例如getPersonByName()或getPersonByAge()。
方法的名称要统一。例如一开始用的是deleteXXX而不是removeXXX,那么整个项目都应该这样用下去。
3、计数方法
计数方法通常命名为getNumberOfXXX()/getXXXCount()。例如getNumberOfRows(),getQuestionCount()。
4、返回boolean值的方法
在JavaBean中,返回boolean属性必须用isXXX()命名。
检查某个属性是否为空或者某条记录是否存在的方法,通常命名为hasXXX(),例如hasResult()。
检查对象状态的方法通常以is+形容词命名。例如isClosed(),isReady()
5、返回集合对象的方法
返回集合对象的方法应该体现出复数形式,例如getPersons(),也可以体现容器类型,例如getPersonList()。
6、不要简化单词
不要写getHisList(),而要写getHistoryList();不要写usrno,而要写userNumber。一个简单的原则是要能够把这个名字读出来。
7、参数命名应该精确
createUser(Stringstr1,Stringstr2)看起来很难懂,但要是写成createUser(StringuserName,Stringpassword)就很好懂了。
8、返回值命名为result
在一个方法中将返回值命名为result,能够让方法的脉络更清晰。
9、接口
接口命名没有什么专门的原则,和类名一样要能够准确体现接口的功能。
有人喜欢在接口名字前面加I。完全可以。不管加不加,都要保证整个项目的统一性。
Java:变量的值和引用
广义的说,在Java中,凡是可以指向一个对象或包含一个值的标识符,都可以称为变量。
变量的内容,有可能是一个值,也有可能是指向一个对象的引用。
当变量的类型为基本型别(short,byte,int,long,float,double,boolean,char)时,变量的内容是一个值;当变量的类型为Object及其子类时,变量的内容是指向一个对象的引用。例如:
inta=3; Strings1="Hello!"; Strings2=s1;
这时变量a的内容就是3,变量s1的内容就是指向一个字符串对象的引用,s2则和s1一样指向该对象。如果执行了下面的语句:
a=4; s1="Helloagain!";
这时变量a的内容被改成了4,s1的内容改成了指向另一个字符串对象("Helloagain!")的引用。s2则还是指向原先的那个字符串("Hello!")。
接下来谈方法的调用。方法的调用是传值的。例如下面这个方法:
voidf(inti,Strings){ i=100;//i的值改成了100 s="Hi!";//s现在指向字符串"Hi!" }
当调用f(a,s1)时,变量a和s1的值被赋给参数i和s,然后才执行f方法。也就是说,无论i和s怎么变,都不会影响a和s1的值。
接下来是一个稍微复杂的例子。首先定义一个方法:
voidf(inti,Listlist){ i=10; list.add("Hello!"); }
假设再执行下面的句子:
inta=3; Listl=newArrayList(); f(a,l);
那么执行之后是什么结果呢?
i和a是两个不同的变量,i的值变了不会影响a,所以a的值还是3;
list和l是两个不同的变量,但它们指向同一个List对象。f的执行过程中给这个List对象添加了一个元素,那么执行完之后,通过l变量我们可以取到这个元素:
l.get(0);//"Hello!"
但如果f这样写:
voidf(inti,Listlist){ i=10; list=newArrayList(); list.add("Hello!"); }
那么list首先引用到另一个List对象去了,改变的是另一个List对象的内容,所以变量l指向的List对象没有改变,l.size()仍然是0。
像这样的概念,初学者可能容易混淆;但只要多练习,很快就能熟悉了。