运算符
运算符的优先级与结合性
优先级 | 运算符 | 结合性 |
---|---|---|
1 | .、()、[] | 从左向右 |
2 | !(取反)、-(取负)、~(按位取反)、++、– | 从右向左 |
3 | *、/、% | 从左向右 |
4 | +、- | 从左向右 |
5 | <<、>>、>>> | 从左向右 |
6 | <、<=、>、>=、instanceof | 从左向右 |
7 | ==、!= | 从左向右 |
8 | & (按位与/逻辑与) | 从左向右 |
9 | ^ (按位异或) | 从左向右 |
10 | | (按位或/逻辑或) | 从左向右 |
11 | && (短路与) | 从左向右 |
12 | || (短路或) | 从左向右 |
13 | ?: (三目运算符) | 从右向左 |
14 | =、+=、-=、*=、/=、%=、&=、|=、^=、<<=、>>=、>>>= | 从右向左 |
% : 首先被取模数的绝对值与取模数的绝对值进行模除操作,如果被取模数的结果为负值,那么最终结果也应为负值
System.out.println(10 % 6); //4
System.out.println(10 % -6); //4
System.out.println(-10 % 6); //-4
System.out.println(-10 % -6); //-4
instanceof : 判断一个对象属不属于一个类,返回true/false
public class People {
public static void main(String[] args){
People a = new People();
System.out.println(a instanceof People);//true a是属于People类的一个对象
}
}
. (点运算符): 对象运算符,取出对象中的属性或方法
System.out.println("hello world"); //这里就是点运算符的用法例子
<<、>>、>>> 运算符(效率极高)
-
<<1 将二进制各个位(包括符号位)都向左移一位,超出边界的一位消失,右边补0
-
同理 >>>1是将二进制各个位(包括符号位)都向右移一位,超出边界的一位消失,高位补0
-
同理 >>1是将二进制各个位(包括符号位)都向右移一位,超出边界的一位消失,高位补符号位(正数补0,负数补1)
+运算符
- +不仅可以用于计算还可以用于连接字符串,这两种操作的优先级相同
- 当数字遇到字符串时,会被转换成字符串与之连接
int a=2;
int b=3;
System.out.println("12"+a*b); //126
System.out.println("12"+a+b); //1223
System.out.println(a+b+"12"); //512