Java支持的运算符
算术运算符
+、-、*、/、%、++、–
赋值运算符
=
关系运算符
<、>、>=、<=、==、!=instanceof
逻辑运算符
&&、||、!
位运算符
&、|、^、~、>>、<<、>>>
条件运算符
?、:
扩展赋值运算符
+=、-=、*=、/=
二元运算符
int a = 10;
int b = 20;
System.out.println(a+b); // 30
System.out.println(a-b); // -10
System.out.println(a*b); // 200
System.out.println(a/b); // 0 (强制转换)
System.out.println(a/(double)b); // 0.5 (强制转换)
不同类型运算
long a = 123123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); // Long类型
System.out.println(b+c+d); // Int类型
System.out.println(c+d); // Int类型
// 多个参数中,有一个为long则结果为long,如果没有long则结果为int
// 有一个参数为double则结果为double
关系运算符返回的结果
int a = 10;
int b = 20;
System.out.println(a>b); // false
System.out.println(a<b); // true
System.out.println(a==b); // false
System.out.println(a!=b); // true
// 结果为布尔值,常配合if使用
// 取余
int c = 21;
System.out.println(c%a); // 1 (21/10 = 2...1)
自增、自减、一元运算符
int a = 3;
int b = a++; // 此时b = a,而后a = a+1;即先给b赋值,再自增
int c = ++a; // 此时a = a+1,而后c = a;即先自增,再赋值给c
// a++是先赋值后计算,++a是先计算后赋值
System.out.println(a); // 5
System.out.println(b); // 3
System.out.println(c); // 5
// 幂运算 2^3 = 2*2*2
double pow = Math.pow(2, 3);
System.out.println(pow); // 8.0
// 通过Math工具类实现
与、或、非,短路运算,位运算
boolean a = true;
boolean b = false;
System.out.println(a&&b); // 逻辑与:同真则真
System.out.println(a||b); // 逻辑或:同假为假
System.out.println(!(a&&b));
// 短路运算:当前者为假,则不继续执行后者
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); // false
System.out.println(c); // 5
// c++并没有执行
// 位运算
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1110010
*/
/*
位运算巧用
2*8 = 16 --> 2*2*2*2
使用位运算 --> 2<<3
System.out.println(2<<3) // 16
原理:“<<” 左移
0000 0010 2
0000 0100 4 ->左移一位
0000 1000 8 ->左移两位
0001 0000 16 ->左移三位
*/
扩展赋值运算
int a = 10;
int b = 20;
a += b; // a = a+b
System.out.println(a); // 30
a -= b; // a = a-b
System.out.println(a); // 10
// 字符串连接符
System.out.println(a+b); // 30
System.out.println(""+a+b); // 1020
// “+”两侧出现String类型,则会把后面的参数都转为String类型
System.out.println(a+b+""); // 30
// 此时先执行加法运算后再转为字符串
三元运算符
// a ? x : y
// 如果a==true,则结果为x,否则结果为y
int n = 54;
Srting type = n < 80 ? "偏低" : "达标";
System.out.println(type); // 偏低
上一篇:Java_类型转换
下一篇:Java_用户交互Scanner