Java程序设计教程
上QQ阅读APP看书,第一时间看更新

1.4 运算符和表达式

描述各种不同运算的符号称为运算符,而参与运算的数据称为操作数。表达式用来表示某个求值规则,它由运算符、配对的圆括号及常量、变量、函数、对象等操作数组合而成。表达式可用来执行运算、处理字符串或测试数据等,每个表达式都产生唯一的值。表达式的类型由运算符的类型决定。

1.4.1 算术运算符与算术表达式

算术运算符分为一元运算符和二元运算符。由算术运算符与操作数构成的表达式称为算术表达式。

(1)一元运算符

一元运算符包括-(取负)、+(取正)、++(增量)、--(减量)。

一元运算符作用于一个操作数,其中“-”与“+”只能放在操作数的左侧,表示操作数为负或为正。

增量与减量符只能用于变量,不能用于常量,表示操作数增1或减1。例如:

增量与减量运算符既可以放在操作数的左侧,也可以放在操作数的右侧。如果在赋值语句中使用增量或减量符,其出现的位置不同具有的含义也不同。

若增量或减量符出现在操作数的左侧,表示将操作数先执行增量或减量,再将增(减)结果赋值给“=”左侧的变量。

若增量或减量符出现在操作数的右侧,表示先将未执行增(减)量操作的操作数赋值给“=”左侧的变量,再执行增量或减量操作,并将增(减)结果保存在操作数中。例如:

(2)二元运算符

二元运算符包括+(加)、-(减)、*(乘)、/(除)、%(求余)。其意义与数学中相应运算符的意义基本相同。

说明:%(求余)运算符是以除法的余数作为运算结果,故求余运算也叫模运算。例如:

在Java中,求余运算符不仅支持整型数值的运算,也支持实型数值的运算。如5 % 1.5的结果为0.5。

(3)算术表达式

算术表达式是指使用若干二元运算符、数学方法、括号和操作数等元素共同组成的数学式子,与大家熟悉的数学表达式十分相似。例如:

需要注意的是,在算术表达式中所有的括号都要使用圆括号“()”,不能使用“[]”和“{}”。此外,在使用算术表达式时,要特别注意数据类型对最终计算结果的影响。

在使用算术表达式时应特别注意变量的类型,不同数据类型的变量中存储的数据也可能是不同的,尽管这些数据都是来自相同的计算结果。例如:

这是由于相除的两个数都是整型,结果也是整型,小数部分被截去。即使被赋值的是浮点型变量,两个整型数相除,也不会保留相除结果的小数部分。例如:

这是由于a和b都是整型,所以运算的结果只能是整型,这个整型结果在赋给双精度变量x时,才被隐式转换为双精度型。因此,x的值自然是9,而不是9.25。

两个整型数相除如果想保留住小数,必须进行显式转换。例如:

由于a被强制转换为双精度型,则b在运算前也被隐式转换为双精度型(向数值范围宽的类型转换),运算的结果自然也是双精度型。

1.4.2 关系运算符与关系表达式

由>、<、!=等关系运算符结合操作数组成的表达式称为关系表达式。关系运算符用于对两个操作数进行比较,判断关系是否成立:若成立则结果为true,否则为false,即关系运算符的运算结果为布尔型。常用的关系运算符及说明见表1-6。

表1-6 Java中常用的关系运算符

需要注意以下两点:

1)等于运算符由两个连续的等号“==”构成,以区别于赋值号运算符“=”。由于字符串是一种引用类型的对象,故在相等比较时不能使用“==”,只能使用String类提供的equals()方法。

2)凡是由两个符号构成的关系运算符(如==、>=、<=、!=),在使用时两个符号之间不能有空格,否则将出错。

关系表达式由操作数和关系运算符组成。关系表达式既可以用于数值的比较,也可以用于字符型数据的比较,下面的代码给出了常见的关系表达式使用方法。

需要说明的是,在进行字符比较时,实际上比较的是字符的Unicode值。上例中两个字符变量的比较,由于“A”的ASCII码值小于“B”的ASCII码值(Unicode字符集中前128个字符及其Unicode值,恰好与ASCII相同),所以ca>cb的关系不成立,运算的结果为false。

1.4.3 布尔运算符与布尔表达式

布尔运算符也称为逻辑运算符。布尔表达式,也称为“逻辑表达式”,由关系运算符、布尔运算符连接常量或关系表达式组成,其取值为布尔值(true或false)。通过条件表达式或布尔表达式可对应用程序计算结果及用户输入值进行判断,并根据判断结果选取执行不同的代码段。

逻辑运算符的操作数是布尔类型,运算结果也是布尔类型。在Java中,最常用的布尔运算符是!(非运算)、&&(与运算)、||(或运算)。

1)非运算(!)是一元运算符,是求原布尔值相反值的运算,如果原值为true,非运算的结果为false,否则为true。

2)与运算(&&)是求两个布尔值都为true的运算,当两个布尔值都为true时,运算结果为true,即所谓“同真为真”。

3)或运算(||)是求两个布尔值中至少有一个为真的运算,当两个布尔值中至少有一个为true时,运算结果为true,只有在两个布尔值均为false时,运算结果才为false,即所谓“同假为假”。例如:

例如,挑选男女篮球队员,要求男队员身高为1.75m及以上,体重不超过90kg;女队员身高为1.65m及以上。对应上述条件的布尔表达式如下所示。