运算符:
分类:
算数运算符
赋值运算符
比较运算符|关系运算符
逻辑运算符
条件运算符
位运算符
操作数: 运算符左右两边的数
表达式: 运算符连接操作数整体叫做表达式
语句: 分号代表语句的结束
单目|一元运算符: 操作数为1个 +号 ++ --
双目|二元运算符: 操作数为2个 + - * /
三目|三元运算符: 条件运算符
-
算数运算符: + 正号(可省略) 加法运算 字符串的连接符 如果+左右两边有字符串的出现"",+就是作为字符串的连接符使用,把两边的内容拼接成为一整个字符串使用 - 负号 减法运算 * / % 模以 取模 求余数 如果第一个操作数小于第二个操作数,结果就为第一个操作数 ++ --
++ –
++ 自增 a++ ==> a=a+1;
— 自减 a-- ==> a=a-1;分析:
++,–操作自己
++放在操作数的前面还是后面,都是自身+1
–放在操作数的前面还是后面,都是自身-1
++,–操作别人
+±-放在操作数的前面,先自身+1|-1,再去参与运算
+±-放在操作数的后面,先去参与运算,在自身+1-1
*/
public class Demo02 {
public static void main(String[] args){
int a=1;
a++; //a=a+1
System.out.println(a);
++a;
System.out.println(a); //3
--a;
System.out.println(a); //2
//影响别人|操作别人|参与运算
int b=a++;
System.out.println(a); //3
System.out.println(b); //2
//操作别人 a的值影响输出结果
System.out.println(--a); //2 a=2;
System.out.println(b++); //2 b=3;
System.out.println(a); //2
System.out.println(b); //3
//操作别人
b=2 + --a;
System.out.println(a); //1
System.out.println(b); //3
int i=3;
int num= i++ + ++i + i++ + i++ + ++i;
System.out.println(i); //8
System.out.println(num); //17 27 30-
2.测试赋值运算符
基础赋值运算符
= 是java中唯一一个自右向左运算的符号
优先级最低
扩展赋值运算符(算数运算符+基础赋值运算符)
+= a+=b; ==> a=a+b;
-=
*= a*=b; ==> a=a*b;
/=
%=
推荐使用扩展赋值运算符
优点:
执行效率高
缺点:
不直观
3 测试关系运算符|比较运算符
> < >= <=
byte short int long float double char
== !=
基本数据类型,引用数据类型
关系运算符最终得到的结果 boolean类型的结果
4 .测试java中的逻辑运算符
& 与
一个false就是false,两个都为true,才为true
| 或
一个为true就是true,两个都为false,才是false
! 非
取反 !true->false !false->true
^ 亦或
相同为false,不同为true
短路: 如果第一个操作数就能够决定最终的结果,第二个操作数位置不执行
&& 短路与
|| 短路或
推荐使用短路内容
所有的逻辑运算符的操作数都为值为boolean类型的表达式
5.测试java中的条件运算符
条件表达式 ? 值1 : 值2;
条件表达式:值为boolean类型的表达式
执行流程:
1.条件表达式 ,最终会得到一个boolean结果
2.如果结果为true,整个条件表达式最终的结果为值1
3.如果结果为flase,最终结果为值2
条件运算符最终肯定会得到一个结果
6.测试java中的位运算符
先把操作数转为二进制,根据运算符的逻辑进行操作,最终得到的结果再转为十进制
& : 同一位置的两个数,如果一个为0就是0,两个都为1才是1
| : 同一位置的两个数,如果一个为1就是1,两个都为0才是0
^ : 同一位置的两个数,相同为0,不同为1
位移运算符
<< 左移 第一个操作数转为2进制,第二个操作数是移动位数 ,向左移动指定的位数,空位补零
8<<2 1000左移2位 1000 00 -> 转为十进制 32
>> 右移 第一个操作数转为2进制,第二个操作数是移动位数 ,向右移动指定的位数,想象数据的右边有一条分水线,右侧的内容砍掉,只保留左侧的数据,转为十进制
8>>2 1000 右移2位 10->转为十进制 2
右移相当于/2 8>>3 8/2^3
左移相当于*2 8<<3 8*2^3
位运算符比直接使用* /效率高
运算符的优先级:
(),.优先级是最高的
单目乘除位关系,逻辑三目后赋值