Java中的运算符
1)算术运算符
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取模(取余) | 7%5 | 2 |
++i | 自增(前):先自增1,后运算 | i=2;j=++i | i=3;j=3 |
i++ | 自增(后):先运算,后自增1 | i=2;j=i++ | i=3;j=2 |
--i | 自减(前):先自减1,后运算 | i=2;j=--i | i=1;j=1 |
i-- | 自减(后):先运算,后自减1 | i=2;j=i-- | i=1;j=2 |
+ | 字符串连接 | “He”+“llo” | “Hello” |
注意:
1、取余运算结果的符号与被模数的符号相同
2、自增1或自减1不会改变本身变量的数据类型。
2)复制运算符
符号:=(自右向左的原则,右边的类型必须满足左边的类型)
1、当 “=” 两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理。
2、支持连续复制 int i2,j2; i2 =j2 =10;或int i3 = 10,j3 = 10;
3、拓展赋值运算符:+=、-=、*=、/=、%= (同样也不会改变变量本身的数据类型)
3)比较运算符(关系运算符)
运算符 | 运算 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | true |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | true |
instanceof | 检查是否是类的对象 | “Hello” instanceof String | true |
注意:
1、比较运算符的结果都是boolean型,也就是要么是true,要么是false。
2、比较运算符“==”不能误写为“=”。
4)逻辑运算符
&–>逻辑与 |–>逻辑或 !–>逻辑非
&&–>短路与 ||–>短路或 ^–>逻辑异或(相异为true)
a | b | a&b | a&&b | a|b | a||b | !a | a^b |
---|---|---|---|---|---|---|---|
true | true | true | true | true | true | false | false |
true | false | false | false | true | true | false | true |
false | true | false | false | true | true | true | true |
false | false | false | false | false | false | true | false |
说明:
1、逻辑运算符操作的都是boolean类型的变量
2、开发中推荐使用短路与&&、短路或||
public static void main(String[] args) {
boolean b1 =false;
int num1 = 10;
//区分 & 与 &&
if(b1 & (num1++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num1 = " + num1);//输出num1 = 11
int num2 = 10;
if(b1 && (num2++ > 0)){
System.out.println("我现在在北京");
}else{
System.out.println("我现在在南京");
}
System.out.println("num2 = " + num2);//输出num2 = 10
}
区分 & 与 &&:(| 与 || 类似)
相同点:1、& 与 && 的运算结果相同;2、当符号左边是true时,二者都会执行符号右边的运算;
不同点:当符号左边为false时,&继续执行符号右边的运算,&&不再执行符号右边的运算。
5)位运算符(开发中很少用)
运算符 | 运算 | 范例 |
---|---|---|
<< | 左移 | 3 << 2 = 12 --> 3*2*2 = 12 |
>> | 右移 | 3 >> 1 = 1 --> 3/2 = 1 |
<<< | 无符号右移 | 3 <<< 1 = 1 --> 3/2 =1 |
& | 与运算 | 6 & 3 = 2 --> (0110) & (0011) = (0010) 即 数字 2 |
| | 或运算 | 6 | 3 =7 --> (0110) | (0011) = (0111) 即 数字 7 |
^ | 异或运算 | 6 ^ 3 =5 --> (0110) ^ (0011) = (0101) 即 数字 5 |
~ | 取反运算 | ~6 = -7 |
注意:
1、位运算是直接对整数的二进制进行运算
2、<<:在一定范围内,每向左移一位,相当于乘以2
3、>>:在一定范围内,每向右移一位,相当于除以2
6)三元运算符
格式:
注意:
1、条件表达式的结果为boolean类型
2、表达式1和表达式2要能统一成一个类型(比如表达式1为int,表达式2为double,则可以统一用double接收三元运算返回的值)
3、三元运算符可以嵌套使用
4、凡是可以用三元运算符的地方,都可以改写为if-else。反之,不成立。
5、能用三元就可以用三元运算符。原因:简洁、执行效率高。