一.算数运算符
基本四则运算符 + - * / %(使用规则简单,正常使用即可)
注意事项:
a) int/int 结果还是 int 要保留小数需要使用double来计算
int a = 1;
int b = 2;
System.out.println(a/b);
//结果为0
b)0不能作为出除数
c)%表示取余不仅仅可以对int求模,也能对double求模
System.out.println(11.5 % 2.0);
//输出1.5
增量赋值运算符 (+= . -= . *= . /= . %= )
自增自减运算符 (++ . --)
语言
方法
4650
8DbgUuqr1R
5904
2007.03.03 11-03-13
注意:
1.java中在循环中尽量使用后置++
2.前置++ – (先++ – 后使用)
3.后置++ --(先使用,后++ --)
二.关系运算符
六个关系运算符:(== ,!=,< ,> ,<= ,>=)
**注意:**用法简单,值得关注的是关系运算符表达式的返回值都是布尔类型
三.逻辑运算符(重点)
逻辑运算符主要有三个(&& ,|| , !)
**注意:**逻辑运算符的操作数(操作符往往是关系运算符的结果)和返回值都是布尔类型
逻辑与 &&
规则:两个操作数都为true ,结果为true,否则结果为false
逻辑或 ||
规则:两个操作数都为false,结果为false,否则结果为true
逻辑非 !
规则: 操作数为true,结果为false,操作数为false,结果为true(这是个单目运算符,只有一个操作数)
应用:短路求值
System.out.println(10 > 20 && 10 / 0 == 0); //打印false
System.out.println(10 < 20 || 10 / 0 == 0); //打印true
结论:
1.对于&&,如果左侧表达式为false,则表达式的整体的值一定是false,无需计算右侧表达式。
2.对于||,如果左侧表达式为true,则表达式的整体的值一定是true,无需计算右侧表达式。
& 和 | (不推荐使用)
& 和 | 如果操作数为boolean 的时候,也表示逻辑运算,但是和&&及||相比,它们不支持短路求值。
System.out.println(10 > 20 && 10 / 0 == 0); //程序抛出异常
System.out.println(10 < 20 || 10 / 0 == 0); //程序抛出异常
四.位运算符
Java中对数据的操作的最小单位不是字节,而是二进制
位运算符主要有四个:(& , | , ~ ,^)
位操作表示按二进制位运算,计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算
按位与 &:如果两个二进制为都是1,则结果为1,否则为0
int a = 10; //10的二进制为1010
int b = 20; //20的二进制为10100
System.out.println(a & b);
按位或 | :
int a = 10;
int b = 20;
System.out.println(a | b);
注意:
当& 和 | 的操作数为整数(int short long byte)的时候,表示按位运算,当操作数为boolean的时候,表示逻辑运算。
按位取反 ~ :如果该位为0则转为1,如果该位为1则转为0
按位异或:如果两个数字的二进制位相同,则结果为0,相异则结果为1.
五.移位运算符
移位运算符有三个:<< , >> , >>> (都是按二进制位来运算)
左移<
int a = 0x10; //0x表示16进制
System.out.print("%x\n",a<<1); //运行结果20(是按16进制打印的)
右移>>: 最右侧位不要了,最左侧补符号位(正数补0,负数补1)
无符号右移>>>: 最右侧位不要了,最左侧补0.
注意:
1.左移1位相当于原数字2,左移N位,相当于原数字2的N次方
2.右移1位相当于原数字/2,左移N位,相当于原数字/2的N次方
3.计算机移位效率高于计算乘除
4.移动负数位或者移位位数过大都没有意义
六.条件运算符
条件运算符只有一个: 表达式1 ? 表达式2 :表达式3
也是Java中唯一的一个三目运算符,是条件判断语句的简化写法
//求两个数的最大值
int a = 10;
int b = 20;
int max = a > b ? a : b;
七.运算符的优先级
运算符之间是有优先级的,具体规则我们不必记忆,在可能存在的歧义的代码中加上括号即可。