Java运算符
作者:互联网
算术运算符
- +
- -
- *
- /
- %:两边的操作数必须为int
- ++
- --
自增自减运算符(++、--)
测试代码:
public class Demo {
public static void main(String[] args) {
// a++先使用a的值再自增
int a = 1;
System.out.println(a++);
System.out.println(a);
// ++b先自增再使用b的值
int b = 1;
System.out.println(++b);
System.out.println(b);
}
}
结果:
赋值运算符
- =
- +=
- -=
- *=
- /=
- %=
- <<=
- >>=
- &=
- ^=
- !=
若a的类型为A,b的类型为B,若A>B,则a += b
等价于a += (A)b
;若A<B,则a += b
等价于a = (A)((B)a + b)
。其中A>B指的是数据类型A的范围比B大。
测试代码:
// A>B
public class Demo {
public static void main(String[] args) {
double a = 2.8;
int b = 100000;
a += b;
System.out.println(a);
}
}
// A<B
public class Demo {
public static void main(String[] args) {
int a = 100000;
double b = 2.8;
a += b;
System.out.println(a);
}
}
反编译后的代码:
// A>B
public class Demo {
public Demo() {
}
public static void main(String[] var0) {
double var1 = 2.8D;
int var3 = 100000;
var1 += (double)var3;
System.out.println(var1);
}
}
// A<B
public class Demo {
public Demo() {
}
public static void main(String[] var0) {
int var1 = 100000;
double var2 = 2.8D;
var1 = (int)((double)var1 + var2);
System.out.println(var1);
}
}
关系运算符
关系运算符的结果为boolean类型。
- >
- <
- >=
- <=
- ==
- !=
- instanceof:判断一个对象是否是一个类的实例
逻辑运算符
- &&:短路与
- ||:短路或
- !
测试代码:
public class Demo {
public static void main(String[] args) {
int a = 10;
boolean flag = a < 5 && a++ < 20;
// 结果输出10而不是11,说明&&是短路的
System.out.println(a);
}
}
public class Demo {
public static void main(String[] args) {
int a = 10;
boolean flag = a > 5 || a++ < 20;
// 结果输出10而不是11,说明||是短路的
System.out.println(a);
}
}
位运算符
- &:两个都是1则为1,否则为0
- |:只要有一个1就为1
- ^:相同为0,不同为1
- ~:按位取反,0变1,1变0
- >>:按位右移1位,相当于除以2,向下取整
- <<:在数字没有溢出的前提下,按位左移1位,相当于乘2
- >>>:按位右移,高位补0
public class Demo {
public static void main(String[] args) {
System.out.println(11 >> 1); // 5
System.out.println(-11 >> 1); // -6
System.out.println(11 << 1); // 22
System.out.println(-11 << 1); // -22
}
}
条件运算符
- ?:
A?B:C
:A为真,则执行B,否则执行C
public class Demo {
public static void main(String[] args) {
int a = 10;
// 输出true
System.out.println(a > 5 ? "true" : "false");
}
}
运算符优先级
从上到下依次降低
运算符 | 结合性 |
---|---|
* / % | 从左到右 |
+ - | 从左到右 |
>> >>> << | 从左到右 |
> >= < <= | 从左到右 |
== != | 从左到右 |
& | 从左到右 |
^ | 从左到右 |
| | 从左到右 |
&& | 从左到右 |
|| | 从左到右 |
?: | 从右到左 |
= += -= *= /= %= >>= <<= &= ^= |= | 从右到左 |
标签:Java,从左到右,System,运算符,println,public,out 来源: https://www.cnblogs.com/hllog/p/15440415.html