Java运算符
运算符
算术运算符: +,-,*,/ ,%,++,--
赋值运算符:=
关系运算符:>, =, <=, !=, instancof
逻辑运算符: &&, ||, !
位运算符:&, |, ~, >>, <>>
条件运算符:? :
扩展赋值运算符:+=, -=, *=, /=
代码
// 二元运算符
int a = 10;
int b = 20;
int c = 30;
int d = 40;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println(a/(double)b);
System.out.println(b%a);
// java 的幂运算, 没有 2^3
System.out.println(Math.pow(2,3));
long a = 12312312312313L;
int b = 180;
short c = 50;
byte d = 10;
// 在运算时,如果有long,则运算结果为long; 如果没有long,double,float,则运算结果全部为int
System.out.println(a+b+c+d); // 输出为long
System.out.println(b+c+d); // 输出为int
System.out.println(c+d); // 输出为int
// 关系运算符
int a = 10;
int b = 20;
System.out.println(a>b);
System.out.println(a
System.out.println(a==b);
System.out.println(a!=b);
// ++ -- 自增 自减 一元运算符
int a = 0;
int b = a++; // a++ 就是 a = a + 1; b = a++ 先执行 b = a 再执行 a++
System.out.println(a);
int c = ++a; // ++a 也是 a = a + 1; 但 c = ++a 先执行 ++a 在执行 c = a
System.out.println(a);
System.out.println(b);
System.out.println(c);
boolean a = true;
boolean b = false;
System.out.println("a&&b: " + (a&&b)); // and 两个变量都为真,结果才为真
System.out.println("a||b: "+ (a||b)); // or 两个变量都为假,结果才为假
System.out.println("!a: "+ !a); // not 真变假,假变真
System.out.println("!b: "+ !b); // not
// 短路运算
int c = 5;
boolean d = (c<4)&&(c++<10); // 第二条语句没有被执行,第一个条件判为错,则后面的不执行,c的值在后面不会变
System.out.println(d);
System.out.println(c);
/*
位运算
A = 0011 1100
B = 0000 1101
A|B 0011 1101
A&B 0000 1100
A^B 0011 0001
~B 1111 0010
2*8 = 16 2*2*2*2
利用二进制,效率极高
<< 左移 *2
>> 右移 /2
0000 0000 0
0000 0001 1
0000 0010 2
...
0000 1000 8
....
0001 0000 16
*/
System.out.println(2<<3);
int a = 10;
int b = 20;
a += b; // a=a+b
System.out.println(a);
a -= b; // a=a-b
System.out.println(a);
//字符串连接符
System.out.println(a+b);
// 从第一个string开始,后面的所有变为string进行运算
System.out.println(""+a+b);
System.out.println(a+b+"");
// 三元运算符
// x ? y : z
// 如果x为true,则结果为y,否则结果为z
int score = 80;
String type = score>=60 ? "及格" : "不及格";
System.out.println(type);