Java运算符
- 算术运算符:+,-,*, /,%,++,–
- 赋值运算符:=
- 关系运算符:>, < , >= ,<= , == , != instanceof
- 逻辑运算符:&&,||, !
- 位运算符:&,|,^, ~ , >> , << , >>>(了解!!!)
- 条件运算符: ? :
- 扩展赋值运算符: += ,-=, *=,/=
自增,自减
public class Demo{
public static void main(String[] args){
//++ -- 自增,自减 一元运算符
int a =3;
int b =a++; //执行完这行代码后,先给b赋值,再自增
//a++ a=a+1;
System.out.prinln(a); //4
//++a a=a+1;
int c =++a; //执行完这行代码前,先自增 ,再给c赋值
System.out.prinln(a); //5
System.out.prinln(b); //3
System.out.prinln(c); //5
//幂运算 2^3 2*2*2
double pow =Math.pow(2,3);//8.0
System.out.prinln(pow);
}
}
逻辑运算符
public class Demo{
public static void main(String[] args){
// 与(and) 或(or) 非(取反)
boolean a=true;
boolean b=false;
System.out.prinln(a&&b); //逻辑与运算,两个变量都为真,结果才为 true
System.out.prinln(a||b); //逻辑或运算,两个变量有一个为真,结果才为true
System.out.prinln(!(a&&b));//逻辑非运算,如果为真,则变为假,如果为假则为真
//短路运算
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.prinln(c); //5
System.out.prinln(d); //false
/*
如果后面c++<4 执行的话,c的结果会变为6,但结果为5,说明前面为假的时候,后面不执行,短路
*/
}
}
位运算
public class Demo{
public static void main(String[] args){
/*
A = 0011 1100
B = 0000 1101
---------------------------------------------------------
A&B= 0000 1100 //如果上面跟下面一位去比较,两个都为1他才为1
A|B= 0011 1101 //如果上面跟下面有一个1,他为1否则为0
A^B= 0011 0001 //如果上面跟下面相同,值为0,否则为1
~B= 1111 0010 //跟自身完全相反的
如何使 2*8=16运算的更快 2*2*2*2
<<(左移)*2 >>(右移)/2
相当于把数字按位向左和向右移动
比如下面1向左移动 从2(0000 0010) ->4(0000 0100)
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
0000 1000 8
0001 0000 16
因为使用的是二进制运算,所以计算效率很高!!!
*/
System.out.prinln(2<<3);
}
}
扩展赋值运算符
public class Demo{
public static void main(String[] args){
int a=10;
int b=20;
a+=b;
System.out.prinln(a); //30 a=a+b
//字符串连接符 +,string
System.out.prinln(a+b); //30
System.out.prinln(""+a+b);//1020 字符串在前面,会拼接
System.out.prinln(a+b+"");//30
}
}
#### 三元运算符
x?y:z
//如果x==true,则结果为y,否则结果为z
int score=80;
String type=score<60 ?"不及格":"及格"
优先级 | 运算符 | 结合性 |
---|---|---|
1 | ()、[]、{} | 从左向右 |
2 | !、+、-、~、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | «、»、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & | 从左向右 |
9 | ^ | 从左向右 |
10 | | | 从左向右 |
11 | && | 从左向右 |
12 | || | 从左向右 |
13 | ?: | 从右向左 |
14 | =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= | 从右向左 |