热门标签 | HotTags
当前位置:  开发笔记 > 运维 > 正文

Java入门基础之常规的命名方法和变量的值及其引用

这篇文章主要介绍了Java的命名方法和变量的值及其引用,是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(String str1, String str2) 看起来很难懂,但要是写成 createUser(String userName, String password) 就很好懂了。

8、返回值命名为 result
在一个方法中将返回值命名为 result,能够让方法的脉络更清晰。

9、接口
接口命名没有什么专门的原则,和类名一样要能够准确体现接口的功能。
 
有人喜欢在接口名字前面加 I。完全可以。不管加不加,都要保证整个项目的统一性。


Java: 变量的值和引用
广义的说,在 Java 中,凡是可以指向一个对象或包含一个值的标识符,都可以称为变量。

变量的内容,有可能是一个值,也有可能是指向一个对象的引用。

当变量的类型为基本型别(short, byte, int, long, float, double, boolean, char)时,变量的内容是一个值;当变量的类型为 Object 及其子类时,变量的内容是指向一个对象的引用。例如:

int a = 3; 
String s1 = "Hello!"; 
String s2 = s1; 

这时变量 a 的内容就是 3,变量 s1 的内容就是指向一个字符串对象的引用,s2 则和 s1 一样指向该对象。如果执行了下面的语句:

a = 4; 
s1 = "Hello again!"; 

这时变量 a 的内容被改成了 4,s1 的内容改成了指向另一个字符串对象("Hello again!")的引用。s2 则还是指向原先的那个字符串("Hello!")。

接下来谈方法的调用。方法的调用是传值的。例如下面这个方法:

void f(int i, String s) { 
  i = 100;   // i 的值改成了 100 
  s = "Hi!";  // s 现在指向字符串 "Hi!" 
} 

当调用 f(a, s1) 时,变量 a 和 s1 的值被赋给参数 i 和 s,然后才执行 f 方法。也就是说,无论 i 和 s 怎么变,都不会影响 a 和 s1 的值。

接下来是一个稍微复杂的例子。首先定义一个方法:

void f(int i, List list) { 
  i = 10; 
  list.add("Hello!"); 
} 

假设再执行下面的句子:

int a = 3; 
List l = new ArrayList(); 
f(a, l); 

那么执行之后是什么结果呢?
i 和 a 是两个不同的变量,i 的值变了不会影响 a,所以 a 的值还是 3;
list 和 l 是两个不同的变量,但它们指向同一个 List 对象。f 的执行过程中给这个 List 对象添加了一个元素,那么执行完之后,通过 l 变量我们可以取到这个元素:

l.get(0); // "Hello!" 

但如果 f 这样写:

void f(int i, List list) { 
  i = 10; 
  list = new ArrayList(); 
  list.add("Hello!"); 
} 

那么 list 首先引用到另一个 List 对象去了,改变的是另一个 List 对象的内容,所以变量 l 指向的 List 对象没有改变,l.size() 仍然是 0。

像这样的概念,初学者可能容易混淆;但只要多练习,很快就能熟悉了。



推荐阅读
  • 春季职场跃迁指南:如何高效利用金三银四跳槽季
    随着每年的‘金三银四’跳槽高峰期的到来,许多职场人士都开始考虑是否应该寻找新的职业机会。本文将探讨如何制定有效的职业规划、撰写吸引人的简历以及掌握面试技巧,助您在这关键时期成功实现职场跃迁。 ... [详细]
  • 本文探讨了如何在Docker构建过程中使用动态环境变量,特别是针对Docker v1.9及以上版本的用户。我们将介绍如何声明和使用构建参数,以及这些参数对构建缓存的影响。 ... [详细]
  • 2017年软件开发领域的七大变革
    随着技术的不断进步,2017年对软件开发人员而言将充满挑战与机遇。本文探讨了开发人员需要适应的七个关键变化,包括人工智能、聊天机器人、容器技术、应用程序版本控制、云测试环境、大众开发者崛起以及系统管理的云迁移。 ... [详细]
  • 本文详细介绍如何在华为鲲鹏平台上构建和使用适配ARM架构的Redis Docker镜像,解决常见错误并提供优化建议。 ... [详细]
  • Flutter 核心技术与混合开发模式深入解析
    本文深入探讨了 Flutter 的核心技术,特别是其混合开发模式,包括统一管理模式和三端分离模式,以及混合栈原理。通过对比不同模式的优缺点,帮助开发者选择最适合项目的混合开发策略。 ... [详细]
  • 使用Echarts for Weixin 小程序实现中国地图及区域点击事件
    本文介绍了如何使用Echarts for Weixin在微信小程序中构建中国地图,并实现区域点击事件。包括效果展示、条件准备和逻辑实现的具体步骤。 ... [详细]
  • 将字符串中的嵌套列表转换回嵌套列表 ... [详细]
  • 本文将探讨如何在 Struts2 中使用 ActionContext 和 ServletActionContext 来获取请求参数和会话信息,同时解释它们的内部机制和最佳实践。 ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 本文介绍了存储器的基本原理及其分类,包括不同类型的存储介质和存储方式,并详细解释了各种存储器的特点和应用场景。 ... [详细]
  • 本文总结了近年来在实际项目中使用消息中间件的经验和常见问题,旨在为Java初学者和中级开发者提供实用的参考。文章详细介绍了消息中间件在分布式系统中的作用,以及如何通过消息中间件实现高可用性和可扩展性。 ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • 如何在DedeCMS专题页节点文档中调用自定义模型字段?
    在完成DedeCMS专题页节点文章列表样式的修改后,如果需要在列表中显示自定义模型的字段,由于DedeCMS默认不支持这一功能,因此需要进行一些二次开发。本文将详细介绍如何通过修改模板文件和核心文件来实现这一需求。 ... [详细]
  • 本文详细介绍了CSS中元素的显示模式,包括块元素、行内元素和行内块元素的特性和应用场景。 ... [详细]
  • 本文介绍了如何将Spring属性占位符与Jersey的@Path和@ApplicationPath注解结合使用,以便在资源路径中动态解析属性值。 ... [详细]
author-avatar
pierce2502910693
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有