- 算数运算符 + - * / % ++ --
- 赋值运算符 =
- 关系运算符 > < >= <= == != instanceof
- 逻辑 && || !
- 位 & | ^ ~ >> <<
- 条件 ? :
- 拓展 += -= *= /=
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
//有一个数类型为long则结果是long类型,若没有long类型则结果都为int(short+byte也为int),若有一个数是double则结果为double
System.out.println(a + b + c + d);//long
System.out.println(b + c + d);//int
System.out.println(c + d);//int
//关系运算符范围的结果: true、false 布尔值
int a = 10;
int b = 20;
int c = 21;
System.out.println(a > b);//false
System.out.println(a < b);
System.out.println(a == b);
System.out.println(a != b);
//取余,模运算
System.out.println(c % a);// c/a 21/10 = 2...1
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//a = a+1; 执行完这行代码后,a再自增
System.out.println(a);//a == 4;
int c = ++a;// 执行这行代码前,a先自增
System.out.println(a);
//幂运算 2^3 2*2*2=8 很多运算,我们会使用一些工具类来操作!
double pow = Math.pow(2, 3);//使用Math工具类 用ALt+Enter 引入局部变量拿到这个返回值
System.out.println(pow);
//逻辑运算符
//与(and) 或(or) 非(取反)
boolean a = false;
boolean b = true;
System.out.println(a && b);//与:两个都为真才会真
System.out.println(a || b);//或:有一个真结果为真
System.out.println(!a);//真变假,假变真
//短路运算
int c = 5;
boolean d= (c<4)&&(c++<4);
System.out.println(d);//false 且c是5,由于短路,c++<4不执行
System.out.println(c);//输出5
/*
A = 0011 1100
B = 0000 1101
A&B=0000 1100//与:相同取1
A|B=0011 1101//或:有1则1
A^B=0011 0001//异或:不一样为1,一样会0
~B =1111 0010//取反
//位运算效率极高!
2*8 = 16 2*2*2*2
<<左移: *2 //左移乘以2
>>右移: /2 //右移除以2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0100 4
则2*8只需要(2<<3)就为16
*/
System.out.println(2 << 3);
//字符串链接 在+两侧只要出现String类型,则会把+后面一侧的结果转换为String再进行链接
System.out.println("" + a + b);//结果为1020 因为""是一个空字符串且在前面,所以会与后面进行拼接 10与20拼
System.out.println(a + b + "");//结果为30 因为“”在后面,前面依旧进行运算。
System.out.println(a + b + "" + a + b);//结果为301020;""前a+b正常运算,""后面进行拼接
//三元运算符
// x ? y : z 如果x==true,结果为y,否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type); //输出不及格