Java标识符温习

Java标识符

在Java语言以及其他编程语言中,都会有标识符。也就是用来命名类、方法、属性以及修饰它们的字符串。
计算机其实不在乎代码中标识符对应字符串是否见名知意,只要没有命名冲突等问题就行。但代码除了给计算机看,最重要的是给人看(自己、同事等等)。而这种情况下让标识符的含义一目了然就能够显著提高代码的可读性了。
毕竟软件工程这一门学科目的之一就是让代码变得“好看”、“漂亮”。雷军说的写代码像写诗一样也是类似道理。^_^

标识符分类

1.自定义标识符
2.系统标识符(关键字)

自定义标识符

1.程序员给类、方法、属性起的名字,一般是英文单词或者连续单词。

Mike
ZhangSan
liSi

注意命名有大小驼峰法和下划线法2个流派,不同编程语言以及同一语言但是不同公司规则都会有差异。这里我们同一按照Java通行规则来即可。

1.大驼峰,类似WoShiYiGeShuaiGe,第一个单词的第一个字母大写,后续单词的首字母也都大写,看起来就像骆驼的驼峰一样。(科普一下,骆驼驼峰有单驼峰和双驼峰2个品种,这里指的是双驼峰的骆驼,上下起伏明显一些(∩_∩))
2.小驼峰,类似woShiYiGeShuaiGe,第一个单词的第一个字母小写,后续单词首字母也都大写。这里小驼峰不是指的小骆驼,而是指第一个开始单词的第一个字母是小写的<( ̄︶ ̄)>。
3.下划线,类似wo_shi_yi_ge_shuai_ge,注意使用下划线方式时,单词就全部小写即可,不需要再大写首字母了,不然会变成混合风格,大家知道混搭也是考研一个人的美学修养的<(^-^)>。

2.Java中的自定义标识符允许字母、数字、$/ _(美元符合和下划线) 三种,但不允许数字开头。这一个规则很多程序都是通用的。 下划线开头的变量在一些程序语言里面是作为系统定义变量来使用的,例如Object -C语言就是如此。

Fan 类名
fans 变量名
j2ee() 方法名

3.Java语言是大小写敏感的。按照规则,类、接口的命名必须大写字母开头,方法和变量则是小写开头。常量全部都是大写字母,字母之间以下划线连接。
如:

class Apple {}
public interface Shape{}
PI = 3.1415926f

系统标识符(关键字)

关键字可以简单理解为编程语言给自己预定下的标识符,一般都有特定含义,普遍性会和这个单词本身含义有关联。一般关键字都是一个单词,并且小写。

if
return
break
const
static
等等

这也是为什么英语作为母语的人学编程前期会有优势的原因。不过中国也有自己的中文编程语言-- 易语言,^_^ 。

Java中关键字分类标准多个,这里我从其中一个角度去分类。

注意,就跟通往罗马的路有很多种一样,解决问题和分析问题本身也有很多种方式,千万不要钻牛角尖。这是作为程序员写代码if else判断多了之后很容易产生一个副作用,非此即彼,非黑即白。

1.访问控制
为什么代码中需要有访问控制权限?因为在代码和社会中一样,只需要知道该知道的信息,知道的多了反而容易出问题。类似电影里面众多路人甲死法之一,知道的太多了
当然实际上是,设计模式六大准则之一,迪米特法则,又称之为最少知道原则。只暴露给别人需要知道的信息。
注意属性和方法的访问权限受限于所属类的权限

1.public

  • 权限等级
    最高
  • 类比
    对于社会、家族、家庭、个人模型来说,这个等级类似于社会的资源,谁都可以访问。
  • 修饰范围
    类、方法、属性;修饰类时,这个类可以跨jar包访问;修饰方法时,这个类可以访问的地方,方法都可以访问;修饰属性时,这个类可以访问的地方,属性都可以访问(set、get)。
  • 特殊场景
    针对interface,必须使用public修饰。可以把interface当成更高级的抽象类,只有设置为public,其他类才可以遵循和实现其属性和方法。

2.protected

  • 权限等级
    次高
  • 类比
    对于社会、家族、家庭、个人模型来说,这个等级类似于家族的资源,最多在jar包内和继承的子类中可以访问。例如火影里面一个家族的血继限界~( ̄▽ ̄~)(~ ̄▽ ̄)~
  • 修饰范围
    可以修饰方法和属性,注意不能修饰类。类只能public和default2种修饰类型。修饰方法时,这个方法可以被子类访问;修饰属性时,这个属性可以被子类访问。
  • 特殊场景
    注意如果一个子类和父类不在同一个包中,那子类不能跨包访问父类属性和方法,但可以调用继承自父类的属性和方法。

3.default

  • 权限等级
    默认权限,第三高
  • 类比
    对于社会、家族、家庭、个人模型来说,这个等级类似于家庭的资源,最多只能jar包内访问
  • 修饰范围
    类、方法、属性,修饰类,就是默认的jar包内访问权限;修饰方法和属性也是一样,默认的最高包内访问权限。
  • 特殊场景
    注意default表明访问权限时,不用写出来,默认就是。需要写出来的是使用switch控制语句时的默认处理逻辑时使用。

4.private

  • 权限等级
    最严格权限等级,只能在类里面访问
  • 类比
    对于社会、家族、家庭、个人模型来说,这个等级类似于个人的资源,最多只能jar包内访问。例如女人和车,概不外借。╰( ̄▽ ̄)╭
  • 修饰范围
    修饰方法、属性。修饰方法和属性,都只能在这个类里面访问
  • 特殊场景
    最严格权限控制,当需要严格控制权限时,可以考虑使用这个约束。

2.类、方法、变量修饰符号

1.修饰类
–abstract 抽象类
–final 声明这个类不能被继承,没有子类。所有的方法都会被隐式指定为final方法。按照俗话说的,丁克
–class 声明这是一个类
–extends 继承自某个类,可以是具体类,也可以是抽象类
–implements 实现某个接口(interface)
–interface 接口,可以看成更高级的抽象类,只允许声明属性和方法。
–new 创建一个新对象
–static 仅仅可以修饰内部类
–strictfp 修饰一个类时,所有代码都会严格计算,确保所有float和double按照标准进行计算。一般用在精准的数字和科学计算场景下,确保代码精度,不会受到不同硬件平台的影响

2.修饰方法
–final 子类继承自父类的final方法,不能被重写。如果希望后代不要改变某些做法,那就把这个声明为final就可以了。例如勤劳节俭,小心漂亮的女人等等_
–native 用来声明这是原生的方法,如C、C++;java调用这些方法有叫JNI,java native interface
–static 静态方法,也叫类方法
–strictfp 所有代码都会严格计算,确保所有float和double按照标准进行计算。
–synchronized 修饰方法和代码块,加同步锁

3.修饰属性
–final 必须初始化值,如果修饰基本类型,则这个变量不可以更改,如果修饰引用类型,则这个引用地址不能修改,但是这个引用的对象内容可以更改(引用,我们可以看成java在内存里面给我们创建的保存数据的一个桶,这个桶对应内存里面某个固定的内存地址。如果使用final修饰这个属性,那这个桶以及内存地址不能修改,但是这个桶里面放的东西我们可以更换)
–static 静态变量,也叫类变量。对应的是实例变量
–transient 当我们的一些类需要序列化,但是个别属性不适合序列化,防止被暴露出去时,就可以用这个修饰。
例如女人的年龄,其实就不太适合序列化时,被暴露出去
–volatile 共享变量被volatile修饰时,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,它会去内存中读取新值。(这个设计到多线程和内存模型,有兴趣可以研究一下。后续我会专门去研究探索一下)

3.程序控制

1.条件判断
–if
–else
–switch
–case
–default
2.循环
–do
–while
–for
–break
–continue
–return
3.instanceof

4.错误处理

–try
–catch
–finally
–throw 抛出异常的动作
–throws 抛出异常的方法声明
assert 可以用来做调试,例如预期某个变量 a==10, 但出现bug了,这个时候就可以写个断言来调试

5.包相关

import
package

6.基本数据类型

byte 1字节
short 2字节
char 2字节
int 4字节
long 8字节
float 4字节
double 8字节
boolean 1或者4字节

7.变量引用

super
this
void

8.保留关键字

const
null
goto

总而言之,关键字是编程语言预定的特定标识符,赋予了特定含义。都是小写的单词,含义一般和这个英文单词本意匹配。

自定义标识符和系统标识符(关键词)都可以算是程序里面使用的名字,俗话说,名字起的好,前途差不了。^_^
自定义标识符时,一定使用英文单词来标识。
至于不好的命名风格,国内有拼音法、随意命名法如变量a,这些不好的做法在工作中使用有被同事暴打的风险,谨慎谨慎!!!

猜你喜欢

转载自blog.csdn.net/xiaohu21/article/details/106889461