目录
运算符分类
算术运算符
/:除法
%:取余运算符
+:加号
++,--自增自减运算符
赋值运算符
关系运算符
逻辑运算符
基本规则
逻辑运算符&&与&,||与|的区别
三元运算符
位移运算符
左移运算符<<和右移运算符>>
无符号右移>>>
额外的运算符知识
概念:对常量和变量进行操作的符号
运算符分类
算术运算符,赋值运算符,关系运算符,逻辑运算符,三元运算符
优先级:算数运算符>关系运算符>逻辑运算符
算术运算符
算数运算符 含义 + 正号 - 负号 + 加 - 减 * 乘 / 除(即算数中整数的结果) % 取模(即算术中的求余数) ++ 自增(前) ++ 自增(后) – 自减(前) – 自减(后) /:除法
整数相除只能得到整数,要想得到小数,就必须有浮点数参与运算,比如3/4=0,而3/4.0=0.75%:取余运算符
得到的是两个相除数据的余数,结果的余数符号是跟被模数的符号一致的
例如:12%5=2 -12%5=-2 12%-5=2 -12%-5=-2
使用场景: %:判断两个数据是否整除。
+:加号
加号在Java中有两种功能:
- 就是数学上普通的加号,做数字相加
- 要是加号两边有一边是字符串,则做连接符,用于拼接出新的字符串
++,--自增自减运算符
对变量做加1或者减1的操作
单独使用的时候,++或者--无论是放在变量的前面还是后面,结果是一样的
参与操作的时候:
如果++或者--在变量的后面,先拿变量参与操作,后变量做++或者--
如果++或者--在变量的前面,先变量做++或者--,后拿变量参与操作
赋值运算符
基本的赋值运算符:=
扩展的赋值运算符:+=,-=,*=,/=,%= 隐含了强制类型转换
举例:+= 把左边和右边的数据进行运算,最后赋值给左边。左边的只能是变量
Int a=10;
a+=10; 等同于 a=(a的数据类型)(a+10);
a最后的结果等于20
关系运算符
==,!=,>,>=,<,<=
关系运算符的结果都是boolean型,也就是要么是true,要么是false
逻辑运算符
&,|,^,!,&&,||
用法:逻辑运算符一般用于连接boolean类型的表达式或者值。
表达式:就是用运算符把常量或者变量连接起来的符合java语法的式子
算术表达式:a + b
比较表达式:a == b(条件表达式)
基本规则
&逻辑与:有false则false。
|逻辑或:有true则true。
^逻辑异或:相同为false,不同为true。
!逻辑非:非false则true,非true则false。
逻辑运算符&&与&,||与|的区别
A:&&和&的区别?
a:最终结果一样。
b:&&具有短路效果。左边是false,右边不执行。
&是无论左边是false还是true,右边都会执行
B:||和|的区别?
a:最终结果一样
b:||具有短路效果.左边是true,右边不执行
|是无论左边是false还是true,右边都会执行
三元运算符
格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
条件表达式是boolean类型,表达式1和表达式2必须是可以统一成一个类型的结果,因为必须要有一个统一类型去接收结果,如果表达式1是int类型,而表达式2是String类型,就无法定义到底要什么类型来接收结果,如果一个是int,一个是double,则可以定义结果为double来接收
例如:判断一个成绩,输出优秀、及格还是不及格,要求:使用三目运算符完成
Int score = 99;
String result = score>80?"优秀":score>60?"及格":"不及格";
位移运算符
左移运算符<<和右移运算符>>
结论:
- 位运算符操作的都是整型的数据
- <<:在一定范围内,每向左移一位,相当于乘以2
>>:在一定范围内,每向右移一位,相当于除以2
最好我们把要位移的数据进行二进制展示,再做左移或者右移操作,左移最低位补0,而右移要看原来数字最高位是1还是0,如果是负数,最高位为1,则空缺位补上1,如果是整数,最高位是0,则空缺位补上0,这样就知道最后移动后到底得到的数是多少
无符号右移>>>
被移数据的二进制最高位无论是0或者是1,空缺位都用0补
额外的运算符知识
图中的1就相当于true,0就相当于false