javase基础03-运算符
2018-03-24 本文已影响0人
jiyuchen1
运算符是用来计算数据的符号。数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数。
1.算术运算符
算术运算符最常见的操作就是将操作数参与数学计算,
+,-,*,/,%,++,--
+的用法
a:加法
b:正号
c:字符串连接符
/和%的区别
数据做除法操作的时候,/取得是商,%取得是余数
++和--的用法
a:他们的作用是自增或者自减
b:使用
单独使用
放在操作数据的前面和后面效果一样。
a++或者++a效果一样。
参与操作使用
放在操作数的前面:先自增或者自减,再参与操作
int a = 10;
int b = ++a;
放在操作数的后面:先参与操作,再自增或者自减
int a = 10;
int b = a++;
注意:
- 加法运算符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
- 除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
- “%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
- 整数做被除数,0不能做除数,否则报错。
2.赋值运算符
赋值运算符就是为变量赋值的符号
A:=,+=,-=,*=,/=,%=等
B:=叫做赋值运算符,也是最基本的赋值运算符
int x = 10; 把10赋值给int类型的变量x。
C:扩展的赋值运算符的特点:
隐含了自动强制转换。
注意:赋值运算符左边必须是变量
面试题:
short s = 1;
s = s + 1;
short s = 1;
s += 1;
请问上面的代码哪个有问题?
3.比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false。
A:==,!=,>,>=,<,<=
B:无论运算符两端简单还是复杂最终结果是boolean类型。
C:千万不要把==写成了=
4.逻辑运算符(条件运算符)
逻辑运算符,它是用于布尔值进行运算的,运算的最终结果为布尔值true或false。
A:&,|,^,!,&&,||
B:逻辑运算符用于连接boolean类型的式子
C:结论
&:有false则false
|:有true则true
^:相同则false,不同则true。
情侣关系。
!:非true则false,非false则true
&&:结果和&是一样的,只不过有短路效果。左边是false,右边不执行。
||:结果和|是一样的,只不过有短路效果。左边是true,右边不执行。
5.三元运算符
A:格式
比较表达式?表达式1:表达式2;
B:执行流程:
首先计算比较表达式的值,看是true还是false。
如果是true,表达式1就是结果。
如果是false,表达式2就是结果。
C:案例:
a:比较两个数据是否相等
b:获取两个数据中的最大值
c:获取三个数据中的最大值
6.位运算符
按位异或 ^
仅当两个操作数不同一时候。输出结果才为1,否则为0.
12 的二进制为 1100
5 的二进制为 0101
则 12 | 5 的二进制为 1001。则完整的运算式为 12 & 5 = 9
A:^的特殊用法
一个数据针对另一个数据位异或两次,该数不变
B:面试题
a:请实现两个变量的交换
**采用第三方变量
**用位异或运算符
左边a,b,a
右边a^b
b:请用最有效率的方式计算出2乘以8的结果
2<<3
按位或 |
按位与 &
按位非~(按位取反)
~的作用是各位数字取反
注意:
位运算符操作的都是数值的二进制补码,数字的真正值都需要转为原码.
移位运算符
<<
左边数据×2的移动次幂;
空位补零,移除的最高位丢弃;
>>
左边数据÷2的移动次幂
右移时,符号位将随同移动,为正时,最高位为0,补0;为负时,最高位为1,最高位补1
>>>
无论最高位是0,还是1,左边移空的都补零;
7.运算符优先级
优先级 | 描述 | 运算符 |
---|---|---|
1 | 括号 | ()、[] |
2 | 正负号 | +、- |
3 | 自增自减,非 | ++、--、! |
4 | 乘除,取余 | *、/、% |
5 | 加减 | +、- |
6 | 移位运算 | <<、>>、>>> |
7 | 大小关系 | >、>=、<、<= |
8 | 相等关系 | ==、!= |
9 | 按位与 | & |
10 | 按位异或 | ^ |
11 | 按位或 | | |
12 | 逻辑与 | && |
13 | 逻辑或 | || |
14 | 条件运算 | ?: |
15 | 赋值运算 | =、+=、-=、*=、/=、%= |
16 | 位赋值运算 | &=、|=、<<=、>>=、>>>= |
在开发过程中一般使用()来区别,运算优先级.