运算符
+,-,,/(商),%(余数),++,–
整数/整数结果只能为整数
int a = 3;
int b = 2;
System.out.println(a/b);
//输入结果为1
System.out.println(a1.0/b);
//输出结果为1.5
######### ++,-- ###########
++,-- 单独使用放前放后无区别
参与运算使用 放前是先自增或自减再参与运算,放后是先参与运算再自增或自减
int a = 3;
int b = 4;
int c = a++; //c=3 a=4
int d = b–; //d=4 b=3
int c = ++a; //c=4 a=4
int d = --b; //d=3 b=3
########## += ###########
short s = 1;
s += 1; //等价于 s = (short) (s + 1); 不等价于 s = s + 1;
System.out.println(s);
#####################
int a = 10;
int b = 20;
int c = (a = b); // c = 20 把b赋值给a留下a赋值给c
#######比较运算符########
!=
<=
=
######逻辑运算符########
& AND与
| OR或
^ XOR异或 相同为false 不同为true
! Not非 可以多个! 偶数个!不改变 奇数个改变
&& AND短路 左边是false右边不执行
|| OR短路 左边是true右边不执行
int a = 3;
int b = 4;
int c = 5;
System.out.println(b > a & c > b); // c>b>a; 这样是错误的
#########位运算符########## 转二进制 运算时用补码
& 与运算 有0则0 11为1
| 或运算 有1则1
^ 异或运算 相同则0不同则1 一个数据被另一个数据位异或量词结果不变
~ 反码(按位取反运算符) 0变1, 1变0
<< 左移 左边最高位丢失,右边补齐0 把<<左边的数据*2的移动次幂
右移 最高位是0,左边补齐0;最高位是1,左边补齐1 把>>左边的数据/2的移动次幂
无符号右移 无论最高位是0还是1,左边补齐0
题目:用最有效的方式计算2*8的结果
2 << 3;
题目:两个整数变量的交换
方式1:
int c = a;
a = b;
b = c;
方式2: ^的特点
int a = 10;
int b = 20;
a = a^b;
b = a^b; //b = abb b = a
a = a^b; // a = aba a = b
方式3:变量相加的做法
a = a + b;
b = a - b;
a = a - b;
方式4:一句话搞定
b = (a+b) - (a=b); // b=30-20=10,a=20
#######三目运算符######
单目运算符: ~3
双目运算符: 3+4
三目运算符:
int x = 100;
int y = 200;
int z = ((x > y)? x:y); // 结果取y z=200;
格式: 比较表达式?表达式1:表达式2;
比较表达式: ?前结果是boolean类型
执行流程:
根据比较表达式的计算返回一个true或者false.
如果是true就把表达式1作为结果.
如果是false就把表达式2作为结果.
题目: 比较数值大小
int a = 3;
int b = 4;
int c = 5;
int d = 6;
int a_b_max = a > b? a : b; // 两数比较大小取大
int temp = a > b? a : b;
int max_abc = temp > c? temp : c; // 三数比较大小
int max = a > b?(a > c? a : c):(b > c? b : c); // 一步取三数大小
System.out.println(max);
int max_abcd = a > d? (a > b? (a > c? a : c):(b > c? b : c)):(c > d?(c > b? c : b):(d > b? d : b)); 四数一步比较
比较两个数是否相同:
int a = 10;
int b = 10;
boolean flag = (a == b)? true : flase;
boolean flag = (a == b);