Java中的六种常用运算符
Java中的常用六种运算符
六种运算符:算术运算符、关系运算符、逻辑运算符、赋值运算符、字符串连接、三目/条件运算符。
(1)算术运算符
包含+、-、*、/、%、++、--。
和数学计算差不多。不同之处如下:
<1>除法:当两个整数相除时,结果有小数,则会无条件舍去,只保留整数。
<2>%表示取余数。余数为0,则表示可以被整除。
<3>++和--的用法
这里以++为例子,--同理即可。有两种情况:
- 单独使用情况
所谓单独使用,指的是一个语句里面,只有a++或者++a。不能出现其他的代码。
上面的代码单独使用,++在前、在后一个效果。
- 被使用情况
被使用情况下,++在前,例如:++a相当于a=a+1。
上面代码,b=++a相当于a=a+1,然后b=a。所以b的最终结果为a自加1后的值,即:b=11。
被使用情况下,++在后,例如:a++相当于a。
上面代码,b=a++相当于b=a,然后a=a+1。所以b的最终结果为a的值,即:b=10。
所谓被使用就是除了++a或者a++之外,含有其他语句,例如:上面代码++a之后含有赋值语句。
(2)关系运算符
包含>、<、>=、<=、==、!=。
关系运算的结果都是boolean类型,即:true或者false。关系成立,则为true,关系不成立,则为false。
(3)逻辑运算符
包含&&(与)、||(或)、!(非)。
与(&&)运算:全为true,整个表达式结果则为true。
或(||)运算:有一个为true,则整个表达式结果为true。
非(!)运算:非真则假。
逻辑运算符一般要和关系运算符一起使用。所以逻辑运算的结果也为boolean值。
逻辑运算两个特殊之处:
- 逻辑与短路(&&)现象
逻辑与短路指的是当多个关系表达式通过与(&&)运算时,第一个关系表达式如果为false,那么后面的关系表达式的代码就不会执行。
举例说明,代码如下:
以上代码分析:
由于a=5,b=6,所以第一个关系a>b为false,出现与短路现象,所以++a<c和b-->c两个表达式不会被执行,所以最终结果flag=false,而a和b的值不会增加减少。
换句话说,如果没有出现与短路,那么代码执行结束后,a应该加1,b应该减1。
- 逻辑或短路(||)现象
逻辑或短路指的是当多个关系表达式通过或(||)运算时,第一个关系表达式如果为true,那么后面的关系表达式的代码就不会执行。
代码和与短路类似。
分析和与短路类似。
(4)赋值运算符
包含=、+=、-=、*=、/=、%=。
赋值可以分为两类:
- 简单赋值运算符:=
- 扩展赋值运算符:+=、-=、*=、/=、%=
扩展赋值运算符具有数据类型强制转换的功能。
上面代码都是给s进行赋值操作,但是第二种方式却编译错误。
分析:因为short类型在参与运算时,一律先转换为int类型,然后再进行计算。s+=10相当于s=s+10,但是由于扩张赋值运算符具有强制转换功能,所以s+=10等价于s=(short)(s+10),结果编译正确。相反的,简单赋值不具有该功能,所以s=s+10计算时,先转换为int类型,s+10结果为int类型,而s为short类型,所以数据类型不匹配,编译错误。
(5)字符串连接运算符
包含+,就一个加号表示。
连接运算符也有两种情况:
- 若两边是数值,则直接做加法运算。
- 若有一边是字符串,则进行字符串连接。
常见面试题:
// 下面输出结果分别为多少
System.out.println(10+20+30+"");
System.out.println(10+20+""+30);
System.out.println(""+10+20+30);
第一个结果为字符串"60"。
第二个结果为字符串"3030"。
第三个结果为字符串"102030"。
(6)三目/条件运算符
格式:表达式 ? 值1:值2
当表达式的值为true时,整个表达式的值取值1。
当表达式的值为false时,整个表达式的值取值2。
三目运算符可以替换简单的if...else结构。