购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.7 技术解惑

3.7.1 定义常量时的注意事项

在Java语言中,主要是利用final关键字(在Java类中灵活使用Static关键字)来进行Java常量定义。当常量被设定后,一般情况下就不允许再进行更改。在定义常量时,需要注意如下3点。

(1)在定义Java常量的时候,就需要对常量进行初始化。也就是说,必须要在常量声明时对其进行初始化。跟局部变量或者成员变量不同,当在常量定义的时候初始化过后,在应用程序中就无法再次对这个常量进行赋值。如果强行赋值的话,数据库会跳出错误信息,并拒绝接受这一新的值。

(2)需要注意final关键字使用的范围。这个final关键字不仅可以用来修饰基本数据类型的常量,还可以用来修饰对象的引用或者方法。如数组就是一个对象引用。为此可以使用final关键字来定义一个常量的数组。这就是Java语言中一个很大的特色。一旦一个数组对象被final关键字设置为常量数组之后,它只能够恒定地指向一个数组对象,无法将其改变指向另外一个对象,也无法更改数组中的值。

(3)需要注意常量的命名规则。不同的语言,在定义变量或者常量时,都有自己的一套编码规则。这主要是为了提高代码的共享程度与提高代码的易读性。在Java常量定义时,也有自己的一套规则。如在给常量取名时,一般都用大写字符。在Java语言中,大小写字符是敏感的。之所以采用大写字符,主要是为了跟变量进行区分。虽然说给常量取名时采用小写字符,也不会有语法上的错误。但是,为了在编写代码时能够一目了然地判断变量与常量,最好还是能够将常量设置为大写字符。另外,在常量中,往往通过下划线来分隔不同的字符,而不像对象名或者类名那样,通过首字符大写的方式来进行分隔。这些规则虽然不是强制性的规则,但是为了提高代码友好性,方便开发团队中的其他成员阅读,这些规则还是需要遵守的。

总之,Java开发人员需要注意,被定义为final的常量需要采用大写字母命名,并且中间最好使用下划线作为分隔符来进行连接多个单词。在定义final的数据不论是常量、对象引用还是数组,在主函数中都不可以改变,否则会被编辑器拒绝并提示错误信息。

3.7.2 char类型中单引号的意义

char类型使用单引号括起来,而字符串使用双引号括起来。关于String类的具体用法以及对应的各种方法,读者可以参考查阅API文档中的信息。其实Java语言中的单引号、双引号和反斜线都有特殊的用途,如果在一个字符串中包了这些特殊字符,应该使用转义字符的表示形式。例如我们希望在Java程序中表示一个绝对路径:"c:\daima",但这种写法得不到我们期望的结果,因为Java会把反斜线当成转义字符,所以我们应该写成"c:\\daima"的形式,只有同时写两个反斜线,Java才会把第一个反斜线当成转义字符,和后一个斜线组成真正的斜线。

3.7.3 正无穷和负无穷的问题

Java还提供了3个特殊的浮点数值:正无穷大、负无穷大和非数,用于表示溢出和出错。例如使用一个正数除以0将得到正无穷大,使用一个负数除以0将得到负无穷大,0.0除以0.0或对一个负数开方将得到一个非数。正无穷大通过Double或Float的POSITIVE_INFINITY表示;负无穷大通过Double或Float的NEGATIVE_INFINITY表示,非数通过Double或Float的NaN表示。

只有浮点数除以0才可以得到正无穷大或负无穷大,因为Java语言会自动把和浮点数运算的0(整数)当成0.0(浮点数)来处理。如果一个整数值除以0,则会抛出一个“ArithmeticException:/by zero(除以0异常)”。

3.7.4 移位运算符的限制

Java移位运算符只能用在整数型上,不能用在浮点型上。也就是说,>>、>>>和<<这三个移位运算符并不是适合所有的数值类型,它们只适合对byte、short、char、int和long等整数型进行运算。除此之外,进行移位运算时还有如下规则。

(1)对于低于int类型(如byte、short和char)的操作数来说,总是先自动类型转换为int类型后再移位。

(2)对于int类型的整数移位,例如a>>b,当b>32时,系统先用b对32求余(因为int类型只有32位),得到的结果才是真正移位的位数。例如a>>33和a>>l的结果完全一样,而a>>32的结果和a相同。

(3)对于long型的整数移位时a>>b,当b>64时,总是先用b对64求余(因为long类型是64位),得到的结果才是真正移位的位数。

当进行位移运算时,只要被移位的二进制码没有发生有效位的数字丢失(对于正数而言,通常指被移出的位全部都是0),不难发现左移n位就相当于乘以2的n次方,右移则是除以2的n次方。这里存在一个问题:左移时左边舍弃的位中数字通常是无效的,但右移时右边舍弃的位常常是有效的,因此左移和右移更容易看出这种运行效果。并且位移运算不会改变操作数本身,只是得到了一个新的运算结果,而原来的操作数本身是不会改变的。 0TyciQ/ejHzS52+2cw9+CewaQeYr92Hr02mdfEAhhOYggJ54qil+3J9WI/9gB+6O

点击中间区域
呼出菜单
上一章
目录
下一章
×