一、常量定义的基本注意事项。
在Java语言中,主要是应用final关键字来定义常量。当常量被设定后,一般状况下就不允许再停止更改。如可以应用如下的形式来定义一个常量:final double PI=3.1315。在定义这个常量时,需要注意如下内容:
一是常量在定义的时分,就需要对常量停止初始化。也就是说,必需要在常量声明时对其停止初始化。都跟部分变量或者成员变量不同。当在常量定义的时分初始化当时,在使用顺序中就无法再次对这个常量停止赋值。如果强行赋值的话,数据库会跳出错误信息,并拒绝接受这一个新的值。
二是final关键字使用的范围。这个final关键字不只可以用来修饰基本数据类型的常量,还可以用来修饰对象的援用或者方法。如数组就是一个对象援用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。一旦一个数组对象被final关键字设置为常量数组之后,它只能够恒定的指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组中的值。
三是需要注意常量的命名规则。不同的语言,在定义变量或者常量的时分,都有本人一套编码规则。这主要是为了提高代码的共享水平与提高代码的易读性。在Java语言中,定义常量的时分,也有本人的一套规则。如在给常量取名的时分,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采用大写字符,主要是跟变量停止区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然的判断变量与常量,最好还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符。而不想对象名或者类名那样,通过首字符大写的方式来停止分隔。这些规则虽然不是强制性的规则,但是为了提高代码敌对性,方便开发团队中的其他成员阅读,这些规则还是需要恪守的。没有规矩,不成方圆。
总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来停止衔接多个单词。在定义final的数据不论是常量、对象援用还是数组,在主函数中都不可以改变。否则的话,会被编辑器拒绝并提示错误信息。
二、Final关键字与static关键字同时使用。
由于Javal是面向对象的语言,所以在定义常量的时分还有与其它编程语言不同的中央。如一段顺序代码从编辑到最后执行,即使需要经过两个过程,区分为代码的装载与对象的建立。不同的过程关于常量的影响是不同的。如今假定有如下的代码:
Private static Random rd1=new Random(); //实例化一个随机数生成对象。
Private final int int1=rd1.nestInt(10); //生成随机数并赋值给常量int1
Private static final int int2=rd1.
记忆枕nestInt(10); //生成随机数并赋值给常量int2
这上面的语句的大致含义是,通过Java语言提供的随机数类对象,生成随机数。并把生成的随机数赋值给常量int1与int2。细心的读者会发现,虽然异样是赋值语句,但是以上两个语句中有一个粗大的差异,即在第二条语句中多了一个关键字static。关于关键字的用处,笔者在以前的文章中也有谈到过。这个是一个静态的概念。即当应用这个关键字来修饰一个变量的时分,在创立对象之前就会为这个变量在内存中创立一个存储空间。当前创立对对象如果需要用到这个静态变量,那么就会共享这一个变量的存储空间。也就是说,在创立对象的时分,如果用到这个变量,那么系统不会为其再分配一个存储空间,而只是将这个内存存储空间的地址赋值给他。如此做的好处就是可以让多个对象采用相反的初始变量。当需要改变多个对象中变量值的时分,只需要改变一次即可。从这个特性上来说,其跟常量的作用比较类似。不过其并不能够取代常量的作用。
那么以上两条语句有什么差异吗?我们首先来看Private final int int1=rd1.nestInt(10)这条语句。虽然int1也是一个常量,但是其是在对象建立的时分初始化的。如如今需要创立两个对象,那么需要对这个变量初始化两次。而在两次对象初始化的过程中,由于生成的随机数不同,所以常量初始化的值也不同。最后招致的结果就是,虽然int1是常量,但是在不同对象中,其值有能够是不同的。可见,定义为final的常量并不是恒定不变的。由于默许状况下,定义的常量是在对象建立的时分被初始化。如果在建立常量时,直接赋一个固定的值,而不是通过其他对象或者函数来赋值,那么这个常量的值就是恒定不变的,即在多个对象中值也使相反的。但是如果在给常量赋值的时分,采用的是一些函数或者对象(如生成随机数的Random对象),那么每次建立对象时其给常量的初始化值就有能够不同。这往往是顺序开发人员不原意看到的。有时分顺序开发人员希望建立再多的对象,其在多个对象中援用常量的值都是相反的。