第3单元 运算符
*运算符:*
赋值运算符 =
算术运算符 + - * / %
组合运算符 += -= *= /= %= ++ -- (a++是先运算后++,++a是先++后运算 )
逻辑运算符 & | ! &&(短路与) ||(短路或)
关系运算符 > < == >= <= !=
位运算符 << >>
1.1 赋值运算符
=
赋值运算符有一个有趣的特性:它允许创建赋值链。例如,分析下面的代码段:
int x, y, z;
x = y = z = 100; // set x, y, and z to 100
//赋值给z为100,把z赋给y,又把y赋给x
/*int a = 10;//赋值运算符 int b = a; System.out.println(b);*/
1.2 算术运算符
+ - * / %
\1. 整型数字之间运算时,没有long类型参与时,结果是整型数字(int)
\2. 在有long类型参与的整数运算式中,结果是long类型
\3. 在有浮点型数字参与运算时,结果是浮点型数字(默认double类型)
\4. 在有字符串参与运算时,执行的是字符串拼接操作
/*2.算术运算符 int a = 4+6*3/5-4+8%3;// System.out.println(a);*/ //int a = 10; /*a+=3;//a=a+3; System.out.println(a);*/ /*a-=4;//a=a-4 System.out.println(a);*/ /*int a*=5;//a=a*5 System.out.println(a); a/=6;//a=a/6 System.out.println(a); a%=7;//a=a%7 System.out.println(a);*/
System.out.println(10+"1562"+26+2132);//遇到字符串后之后所有的+就变成了连接符
1.3 组合运算符
+= -= *= /= %= ++ --
1.符号在前 先自增1 再运算
2.符号在后 先运算 再自增1
/* int a = 10; a--; int b = (int)(a++ + 5 - --a*2 + 6 + ++a%3 + 0.3); System.out.println(b);*/
1.4 逻辑运算符
&(与) |(或) ^(异或) !(非) &&(短路与) ||(短路或)
布尔逻辑运算符,只能操作boolean型操作数。
运算符 | 结 果 |
---|---|
&& | 逻辑与(短路形式) |
|| | 逻辑或(短路形式) |
^ | 逻辑异或 |
! | 逻辑一元非 |
& | 逻辑与 |
| | 逻辑或 |
布尔逻辑运算规则:
操作数 | 逻辑运算及结果 | ||||
---|---|---|---|---|---|
A | B | A || B | A && B | !A | A ^ B |
false | false | false | false | true | false |
true | false | true | false | false | true |
false | true | true | false | true | true |
true | true | true | true | false | false |
&(与) 两边都为真 则真 否则为假 结果是布尔类型
|(或) 两边都为假 则假 否则为真
^(异或) 两边不一样为真 两边一样为假
!(非) 真为假 假为真 只能操作布尔类型
&&(短路与) 左边为假 右边不再判断(执行)
||(短路或) 左边为真 右边不再判断(执行)
int a = 5; int b =15; System.out.println(a>10 & b>20);//& 全真为真 否则为假 System.out.println(a<5 & b<16); System.out.println(a>10 | b<20);//| 全假为假 否则为真 System.out.println(a<4 | b<10); System.out.println(a<4 && ++b<10);//&&左边为真 则运行&&右边 System.out.println(a<6 && ++b<10);//&&左边为假 则不运行&&右边 System.out.println(a<6 || ++b<10);//||左边为真 则不运行||右边 System.out.println(a<4 || ++b<10);//||左边为假 则运行||右边
1.5 关系运算符
> >= < <= == !=
(1)关系运算的结果为boolean型数值。
(2)关系运算符最常用于if语句和各种循环语句中的控制表达式。
/* int a = 20; int b = 15; System.out.println(a>b); System.out.println(a<b); System.out.println(a<=b); System.out.println(a>=b); System.out.println(a==b); System.out.println(a!=b);*/
1.6 位运算符(适用于二进制,了解)
1.6.1 左移和右移
<<(左移) 左移之后右边空出来的位数补0(左移一位结果乘以2)
>>(右移) 右移之后右边多出来的位数直接砍掉(右移一位结果除以2)
>>>(无符号右移)
1.6.2 位逻辑运算符
运算符 | 结 果 |
---|---|
~ | 按位一元取反 |
& | 按位与 |
| | 按位或 |
^ | 按位异或 |
运算规则:
操作数 | 位运算及结果 | ||||
---|---|---|---|---|---|
A | B | A | B | A & B | A ^ B | ~A |
0 | 0 | 0 | 0 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 0 | 0 |
注意:
&和|,如果操作数为boolean类型,则为逻辑运算符,如果操作数为整数则为位运算符。通常将&和|作为位运算符。
1.7 三目运算符
语法:表达式1?表达式2:表达式3
运算规则:表达式1成立 执行表达式2 否则执行表达式3