基本运算符&初识Math工具类
- 算术运算符:+,-,*,/,%,++,–-
- 赋值运算符:=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
二元运算符
int a=1;
int b=2;
int c=3;
int d=4;
System.out.println(a+b); //加
System.out.println(a-b); //减
System.out.println(a*b); //乘
System.out.println(a/(double)b); //除
System.out.println(a%b); //取余
System.out.println("------------");
long a1=12344565364346l;
int b1=100;
byte c1=10;
short d1=4;
System.out.println(a1+b1+c1+d1); //结果还是long类型
System.out.println(b1+c1+d1); //结果为int类型
System.out.println(c1+d1); //结果为int类型
tips:运算时自动升为混合运算类型中最高类型
输出结果:
3
-1
2
0.5
1
------------
12344565364460
114
14
关系运算符
//关系运算符返回的结果为true false
int a = 1;
int b = 2;
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a == b);
System.out.println(a != b);
输出结果:
false
true
false
true
自增自减运算符(一元运算符)
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a + 1;
System.out.println(a);
//a++ a = a + 1;
int c = ++a; //执行完这行代码后,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
幂运算(拓展)
//幂运算 2^3 2*2*2 = 8 很多运算,我们会使用一些工具类操作!
double pow = Math.pow(3,2);
System.out.println(pow);//9.0
逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a && b: " + (a && b));
//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b: " + (a || b));
//逻辑或运算:两个变量有一个为真,啧结果为true
System.out.println("! (a && b): " + !(a && b));
//如果是真,则变为假,如果是假,则变为真
//短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4);
System.out.println(d);
System.out.println(c);
位运算
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A||B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
面试题拓展
用更高效的方法算出 2 * 8 = 16。即 222*2
tips:使用位运算符,效率极高
/*
<< *2
>> /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3)//16
扩展赋值运算符(不推荐)
int a = 10;
int b = 20;
a += b; //a = a + b
a -= b; //a = a - b
System.out.println(a);//10
//字符串连接符 + ,String
System.out.println("" + a + b);//1020
System.out.println(a + b + "");//30
条件运算符(三元运算符)
此为必须掌握的运算符
//x ? y :z
//如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score < 60 ? "不及格":"及格";
//if
System.out.println(type);//不及格
运算符优先级
运算符 结合性
[ ] . ( ) (方法调用) 从左向右
! ~ ++ -- +(一元运算) -(一元运算) 从右向左
* / % 从左向右
+ - 从左向右
> >>> 从左向右
< >= instanceof 从左向右
== != 从左向右
& 从左向右
^ 从左向右
| 从左向右
&& 从左向右
|| 从左向右
?: 从右向左
= 从右向左