运算符与表达式
运算符与表达式
运算符指的是一些特殊的符号,它们用于数学函数、赋值语句和逻辑比较等方面。而使用运算符将运算数据连接起来的符合Java语法规则的式子,称为表达式。
算术运算符与算术表达式
算术运算是人们在日常生活中经常要遇到的,相应地,在程序设计语言中也有相应的表示算术运算的语法。在Java语言里,共有5种算术运算符来完成基本的算术运算。
算术运算符都是二元运算符,运算符两侧要求有两个操作数。用算术运算符和两边的数字或变量连接起来的式子,就是算术表达式。这里要特别注意:
如果进行除法运算的两个操作数都是整数,那么不论能否整除,运算结果都将是一个整数。这里要注意的是,运算结果只是简单的截断,即去掉小数部分,而不是四舍五入。
当在整数之间进行求余运算时,运算结果为数学运算中的余数。被取余数为正数,则结果为正数,被取余数为负数,则结果为负数。
与数学运算一样,0可以做被除数,但是不可以做除数。当0做除数时,无论是除法运算还是求余运算,运算结果都是0,虽然可以通过编译,但是在程序运行时,会抛出异常。
赋值运算符与赋值表达式
赋值运算符为“=”,即等号。赋值运算符是二元运算符,它的左边必须是变量,不能是常量或表达式。赋值运算符的含义,是将运算符“=”右边的值赋给其左边的变量。
赋值运算符的运算是自右向左的,总是先计算赋值运算符右边的值,然后将值赋给左边的变量。给一个变量进行赋值的式子,就是赋值表达式。
除了赋值运算符之外,Java还提供了几个复合的赋值运算符,以提高程序员的编码效率。
关系运算符和关系表达式
在程序中,有时需要对两个值或变量进行比较,在Java语言中,使用关系运算符来完成这样的比较需要。
所有关系运算符都可以用于对整数、浮点数和字符型数据的比较,其中等于和不等于运算符可用于所有数据类型。
逻辑运算符与逻辑表达式
在实际编写程序时,有时需要将返回类型为boolean类型的表达式组合在一起,构成一个更加复杂的表达式。
1.“与”运算符&和&&
当两个表达式通过&或者&&链接在一起时,只有当两个关系表达式的值都为真时,该组合的表达式才为真。
虽然&和&&都是用于“与”的运算,但是它们还是有些不同。如果使用“&&”,当“&&”左侧表达式结果为false时,就不再计算其左侧的表达式,而是直接返回运算结果false,只有左侧为true时,才计算其右侧的表达式。而不管“&”运算符左侧运算结果是什么,都计算其左侧的表达式,再返回整个逻辑表达式的值。
2.“或”运算|和||
当两个关系表达式通过“|”或者“||”连接在一起时,只要两个关系表达式的值有一个为真,则该组合的表达式的值就为真。只有当运算符两侧的表达式都为false时,整个逻辑表达式的值才为false。
虽然“|”和“||”都是用于“或”的运算,但是它们还是有些不同。如果使用“||”,当“||”左侧表达式结果为true时,就不再计算其右侧的表达式,而是直接返回运算结果true,只有左侧为false时,才计算其右侧的表达式。而“|”运算符不管左侧运算结果是什么,都计算其右侧的表达式,再返回整个逻辑表达式的值。
3. 异或运算符^
当两个关系表达式通过“^”连接在一起时,只要连个关系表达式的值不相同时,该组合的表达式的值就为true、当运算符两侧的表达式都为true或都为false时,整个逻辑表达式的值为false。
4. 取反(非)运算符
运算符!用于对逻辑值进行取反运算。当逻辑值为false时,经过取反运算后,结果为true;当逻辑值为true时,经过取反运算后,结果为false。
运算符的优先级
如果一个表达式中有多个运算符参与混合运算,Java会根据运算符的优先级别来决定表达式中运算符的执行顺序,也就是说,不同的运算符有不同的优先级。
其它常用运算符
1、自增自减运算符
在编程中,有一种常见的任务是从一个整数变量上增加或者减小1。Java提供了一类特殊的运算符,用于这种表达式,称作“自增运算符(++)”和“自减运算符(--)”。使用自增和自减运算符,可以减少一定的代码量,使程序更加简洁。
++、--是一元运算符,可以放在操作数之后,也可以放在操作数之前。当“b=++a”时,先自增,再赋值;当“b=a++”时,先赋值,再自增。用一句口诀就是:“符号在前就先加/减,符号在后就后加/减”,(++a输出的是a+1的值,a++输出的是a值)。
2、按位运算符
位运算符指的是对操作数以二进制为单位进行的运算,运算结果为整数。在Java语言中,位运算符有7个,包括:按位与运算符&、按位或运算符“|”、按位异或运算符“^”、按位取反运算符“~”。
3、移位运算符
java中有三种移位运算符:“<<”:左移位运算符,num<<1,相当于num乘以2。“>>”:右移位运算符,num>>1,相当于num除以2;num>>2,相当于除以2的平方。“>>>”:无符号右移,左边补0,又称无符号右移。
4、三元运算符
Java中有一个唯一的三元运算符“?:”,它有三个操作数。语法如下:
逻辑表达式 ? 表达式1 : 表达式2
三元运算符的运算规则是:首先判断逻辑表达式的值,如果是true,整个三元表达式的值为表达式1的值;否则为表达式2的值。