运算符优先级 | 结合性 |
---|---|
[ ] . ( ) (方法调用) | 从左向右 |
! ~ ++ – +(一元运算) -(一元运算) | 从右向左 |
* / % | 从左向右 |
+ - | 从左向右 |
<< >> >>> | 从左向右 |
< <= > >= instanceof | 从左向右 |
== != | 从左向右 |
& | 从左向右 |
^ | 从左向右 |
| | 从左向右 |
&& | 从左向右 |
|| | 从左向右 |
?: | 从右向左 |
= | 从右向左 |
基本运算符
Java语言支持如下运算符:
算术运算符: + , - , * , / , % , ++ , –
赋值运算符: =
关系运算符 : > , < , >= , <= , == , != instanceof
逻辑运算符:&& , || , !
位运算符: & , | , ^ , ~ , >> , << , >>> (了解)
条件运算符 ? :
扩展赋值运算符 :+= , -= , *= , /=
算术运算符
% 称取余,也叫模运算
ctrl + D //复制当前行到下一行
对整数做除法运算时,需要注意转换精度为浮点数类型
例如:
System.out.println(a/(double)b);
进行运算操作时
- 如果某个操作数的数据类型为long,则输出结果类型为long
- 如果某个操作数的数据类型为double,则输出结果类型为double
- 如果操作数的数据类型既没有long,也没有double,则输出结果类型为int.
// ++ – 自增, 自减
int a = 3;
int b = a++; //b=3
int c = ++a; //c=5
//很多运算使用数学工具去操作,数学函数
幂运算 2^3 222
double pow = Math.pow(2,3)
System.out.println(pow); //8
逻辑运算符
与(and) 或(or) 非(取反)
boolean a = true ;
boolean b = false;
System.out.println(“a&&b:”+(a&&b)); //false
System.out.println(“a||b:”+(a||b)); //true
System.out.println("!(a&&b):"+!(a&&b)) //true
短路运算
int c = 5;
boolean d = (c<<4)&&(c++<4);
System.out.println(d); //false
System.out.println©; // C=5
位运算符
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A/ B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
面试题:如何高效求2*8的值
2*8 = 16 2X2X2X2X2
<< *2
.>> /2
2<<3 左移3位
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);
扩展运算符
a=10;
b=20;
a+=b;
System.out.println(a); //a = 30
同上:
a+=b; //a=a+b
a-=b; //a=a-b
a*=b; //a=a*b
a/=b; //a=a/b
字符串连接 + , String
如果在println()里面,+左右两边只要有一方出现String类型,就会将另外一个操作数或其他操作数转化为String进行连接.
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
三元运算符
例如:
public operator;
//三元运算符
public class decom08;
public static void main(String args[]){
// x ? y : z
// 如果x为真,则输出y,为假,则输出z
int score = 80;
String type = score>60 ? "及格" :"不及格";
System.out.println(type); //及格
}
学习链接(B站up主 狂神说):https://www.bilibili.com/video/BV12J41137hu?p=30