磨刀不误砍材工 – Java的基础语言要素(定义良好的标示符)
最后更新于:2022-04-01 20:08:21
**一、Java中的标示符是什么?**
第一,标示符的概念:
我们指定某个东西、人,都要用到它,他或她的名字;
在数学中解方程时,我们也常常用到这样或那样的变量名或函数名。
同样的道理:在编程中,是用户编程时使用的名字,对于变量、常量、函数、语句块也有名字,我们统统称之为标识符。
第二,Java中标示符的概念:
用来给类、对象、方法、变量、接口和自定义数据类型命名的名称。
**二、怎么理解Java中的标示符?**
看过了上面的概念过后。我们已经知道简要来讲,如果一个人名叫张三,那么“张三”就是这个人的标示符。
但为了更好的理解其概念,我们不妨对比自己熟悉的语言的来看待这个问题。
我们每个人从小就在学习我们的母语中文,我们都曾用汉字写过文章。
所以,正如我们用汉字写文章一样,我们同样可以使用Java语言来写文章,
唯一不同的是,Java语言写出的文章的表现形式被我们称作:“程序”。
接着,我们通过“小说”来更形象的理解Java中的标示符。
某位作家写了一本小说,小说被划分成为很多章节,每一个章节由很多的情节构成,每个情节里会有不同的人物。
拿《三国演义》为例,第一章的标题叫做《宴桃园豪杰三结义 斩黄巾英雄首立功》,而这一章节里面又会有相关的故事情节,故事情节里又会涉及到相关人物,例如:刘备,关羽,张飞等等。
在这个关系当中,“三国演义”是该小说的标示符;“宴桃园豪杰三结义 斩黄巾英雄首立功”是该小说里第一个章节的标示符;在该章节里,会涉及相关故事情节,这些故事情节是作者用自己的书写句子完成的;而“刘备,关羽,张飞”就是在这故事情节里涉及到的相关人物的标示符。
到了这里就好理解了。我们可以这样做一个“等价”看待:《三国演义》是我们用Java实现的一个类;《宴桃园豪杰三结义 斩黄巾英雄首立功》是这个类里提供的一个函数(方法);身为函数,就意味着会实现相应的功能,这些功能是coder用自己书写的程序语句完成的; 而这些程序语句里就通常会使用到相关的变量,例如:“刘备,关羽,张飞”。
所以,简单的来讲,我们大致得到了这样一种关系“小说=类;章节=函数;段落语句=程序语句;人物=变量”。而类似于“三国演义”,“宴桃园豪杰三结义 斩黄巾英雄首立功”这样的标题就是我们为其定义的名字。
这样一来,对于标示符的理解,是不是就形象了很多?
**三、定义标示符的目的是什么?**
我自己是这样理解的:
1.用自定义的较为特定的标题,与较为统筹的群体当中的某个个体发生关联,让它区别于该群体当中的其它个体。
举例来说:为什么我们每个人都有自己的名字?因为人是一个统筹的数量庞大的群体,姓名的作用就是让我们区别于其它人的独特标示。
同样的,一个Java类里可能有很多个变量或方法等等,定义标示符的意义就在于能让它们彼此区分。
2.方便对标示符关联的个体进行调用。
举例来说:一个班级里会有很多学生,老师想要抽取某个学生回答问题。如果学生没有自己的标示符,那么老师应当怎么进行抽取呢?
同理的,一个Java类中有很多变量,如果没有其独有的标示符,我们应当怎么调用到想要调用的变量呢?
所以,总的来说,标示符的意义就在于:让一个相同类型集体中的每个个体都有自己独一无二的“名牌”。
**四、Java中标示符的定义规则**
说了这么多,现在就让我们来看一看在Java中,合法的标示符应当怎么定义。
Java中的标示符定义规则很简单:
1.标示符由大小写字母,数字,下划线和美元符号组成,但是!不能以数字作为开头。
2.Java是一门严格区分大小写的语言。所以,“Abc”和"abc"是不同的标示符。
3.Java中提供的49个关键字不能被用作标示符。
所谓规则,就意味着你必须严格遵守。
就如同假设中国的户籍登记处,允许姓名的最大有效长度为6个字。而你非要给自己取一个7个字的名字,这没有问题,只要你高兴,你可以给自己写一首诗当名字。但是重点在于户籍登记处不承认,于是,恭喜你成为一名光荣的“黑户”。
而Java已经为你提供了详细的标示符定义规则,如果你不遵守其规则的话。那么,编译器就会编译出错。
**五、良好的标示符定义规范**
首先我们需要明确的是,一个符合定义规则的合法标示符并不意味着它就是一个良好的标示符。
如何定义一个良好的标示符?通常需要遵循的规范是:
- 目的性:使用带有明确意义的单词作为标示符,简单的说就是做到该标示符的含义能够让人“一目了然”。例如:“st”和“student”都可以作为变量学生的标示符,但显然后者更让人一击命中的了解到你定义的该变量的目的是什么。
- 包名:Java中通常使用反向域名,并且单词字母全部采用小写形式。例如,你的公司的域名是:mycompany.com,那么你的包名的定义通常为:com.mycompany.xx.xx的形式
- 类名/接口名:通常由带有具体含义的一个或多个单词组成,每个单词的首字母大写。
- 方法名:通常也是由带有具体含义的一个活多个单词组成,第一个单词的字母全部采用小写形式,其余的单词首字母大写。
- 变量名:成员变量的定义规范与方法名的定义规范相同。而局部变量的定义通常所有字母都采用小写形式。
- 常量名:单词字母全部采用大写形式,不同的单词之间以下划线“_”进行分隔。
最后,值得一提的的是,规范与规则的不同之处在于:规则代表着强制,意味着你必须遵守。而规范则代表着一种建议,意味着你可以选择遵守,但也可以选择不遵守。
但事实是,既然会针对一件事物声明了一个规范,这种规范通常也就代表着绝大多数人们认同的,针对于该事物的一种较好的处理方式。
就像我们乘坐公交车时,“向老弱病残让座”就是是一个良好的道德规范。针对于这一情况,你可以选择让座,也可以选择不让,不同之处在于,选择不让通常会在别人心里留下一个不好的印象。
同样的,在Java中,如果不按照规范定义标示符,但只要你的标示符是合法的,你的程序依旧可以正常的编译运行。但这样做的坏处通常在于:
- 影响代码的阅读性:例如你的代码里定义了一个关于整数加法运算的方法,图一时方便,你定义的方法名为“jia”。那么问题就出现了,如果当其它人需要对你的代码进行调用或者修改时,可能就会找你拼命了。抛开它人不讲,可能这个方法写好过后,过了一段时间,你需要对这个程序作出修改,那么可能你自己也不一定记得这样的标示符的含义了。
- 就像绝大多数人都遵循向老弱病残让座的规范一样,几乎绝大多数程序员都遵循良好的标示符定义规范。所以正如你不让座会给多数人留下一个不好的印象一样,当你进入一个工作团队,这样的做法也会让其他程序员对你造成不好的印象。
';