运算符
-
Java语言支持如下运算符:
算数运算符 赋值运算符 关系运算符 逻辑运算符 位运算符 条件运算符 扩展赋值运算符 + = > && & ? += - < || | : -= * == ! ^ *= / >= ~ /= % <= << ++ != >> – instansof >>> -
运算符的优先级:
优先级 运算符 结合性 1 . () [] 从左向右 2 ! +(正) -(负) ~ ++ – 从右向左 3 * / % 从左向右 4 +(加) -(减) 从左向右 5 << >> >>> 从左向右 6 < <= > >= instansof 从左向右 7 == != 从左向右 8 &(按位与) 从左向右 9 ^ 从左向右 10 | 从左向右 11 && 从左向右 12 || 从左向右 13 ? : 从右向左 14 = += -= *= /= %= &= |= ^= ~= <<= >>= >>>= 从右向左 -
算数运算符
int a = 10;
int b = 20;
System.out.println(a+b);
System.out.println(a-b);
System.out.println(a*b);
System.out.println((double)a/b);
System.out.println((double)a%b); // 取a/b的余数,%为取模运算符
int c = 3;
d = c++; // b = 3 a = 4 // ++在操作数后,先运算再自增
d = ++c; // b =4 a = 4 // ++在操作数前,先自增后运算
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类型参与结果均为int类型
//除式子中只有byte与short类型外,结果的类型取参与运算的容量最大的类型
-
赋值运算符
int a = 10; // 给变量a赋值为10
-
关系运算符
// 关系运算符返回的结果:boolean // 常与if一起用 int a = 10; int b = 20; int c = 21; System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b);
-
逻辑运算符
boolean a = true; boolean b = false; System.out.println("a && b:"+(a&&b)); // && and 两个变量都为true,结果才为true System.out.println("a || b:"+(a||b)); // || or 两个结果有一个为true,结果为true System.out.println("!(a && b):"+ !(a&&b)); // ! not !(a&&b) !(a||b) 括号里为真则为假,括号里为假则为真 //短路运算 int c = 5; boolean d = (c<4)&&(c++<10); System.out.println(c);//5 System.out.println(d); boolean d1 = (c<4)||(c++<10); System.out.println(c);//6 //假设逻辑运算符前面为假,则不会运行逻辑运算符后面的运算
-
位运算符
/* A = 0011 1100; B = 0000 1101; A&B = 0000 1100; & 与 有0则0 A|B = 0011 1101; | 或 有1则1 A^B = 0011 0001; ^ 异或 相同即为零,不相同即为1,也可以看作不仅为的二进制加法 ~B = 1111 0010; ~ 非 取与B相反的数 2*8 = 16; 怎么运算最快? 移位 << 左移 相当于*2 >> 右移 相当于/2 效率极高 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 详见《计算机组成原理》 */ int a = 10; int b = 20; int num = 2<<3; System.out.println(num); a^=b; b^=a; a^=b; //异或可以交换两个变量的值 System.out.println(a); System.out.println(b);
-
条件运算符
//三元运算符 int score = 80; String type = score >= 60?"及格":"不及格"; //格式:if ?then:else;
-
扩展赋值运算符
int a = 10; int b = 20; a+=b; //a = a+b 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+""); // 字符串在后面,前面的会运算 //两个输出结果有什么区别? //字符串后面的是连接,字符串前面的是运算