JAVA运算符
作者:互联网
JAVA运算符
目录加减乘除的简写运算符
n+=100;//相当于n=n+100
n-=100;//相当于n=n-100
n*=100;//相当于n=n*100 相除只能得到整数部分,取余使用%
n/=100;//相当于n=n/100
自增自减
对整数进行加1和减1操作
public class Main {
public static void main(String[] args) {
int n = 3300;
n++; // 3301, 相当于 n = n + 1;
n--; // 3300, 相当于 n = n - 1;
int y = 100 + (++n); //++写在前面和后面是不一样的,++n表示先加1再引用n,反之。
System.out.println(y);// 输出y=3401
}
}
移位运算
- 左移:
int n = 7; // 00000000 00000000 00000000 00000111 = 7
int a = n << 1; // 00000000 00000000 00000000 00001110 = 14
int b = n << 2; // 00000000 00000000 00000000 00011100 = 28
int c = n << 28; // 01110000 00000000 00000000 00000000 = 1879048192
int d = n << 29; // 11100000 00000000 00000000 00000000 = -536870912
左移29位时,由于最高位变成1
,因此结果变成了负数。
- 右移
int n = 7; // 00000000 00000000 00000000 00000111 = 7
int a = n >> 1; // 00000000 00000000 00000000 00000011 = 3
int b = n >> 2; // 00000000 00000000 00000000 00000001 = 1
int c = n >> 3; // 00000000 00000000 00000000 00000000 = 0
如果对一个负数进行右移,最高位的1
不动,结果仍然是一个负数
- 还有一种无符号的右移运算,使用
>>>
,它的特点是不管符号位,右移后高位总是补0
,因此,对一个负数进行>>>
右移,它会变成正数,原因是最高位的1
变成了0
:
int n = -536870912;
int a = n >>> 1; // 01110000 00000000 00000000 00000000 = 1879048192
int b = n >>> 2; // 00111000 00000000 00000000 00000000 = 939524096
int c = n >>> 29; // 00000000 00000000 00000000 00000111 = 7
int d = n >>> 31; // 00000000 00000000 00000000 00000001 = 1
- 对
byte
和short
类型进行移位时,会首先转换为int
再进行位移。
其实左移实际上就是不断地×2,右移实际上就是不断地÷2。
位运算
与&
,或|
,非~
,异或^
异或运算的规则是,如果两个数不同,结果为1
,否则为0
布尔运算
-
比较运算符:
>
,>=
,<
,<=
,==
,!=
-
与运算
&&
-
或运算
||
-
非运算
!
短路运算
- 因为
false && x
的结果总是false
,无论x
是true
还是false
,因此,与运算在确定第一个值为false
后,不再继续计算,而是直接返回false
。 - 对于
||
运算,只要能确定第一个值为true
,后续计算也不再进行,而是直接返回true
。
- 因为
三元运算符
public class Main {
public static void main(String[] args) {
int n = -100;
int x = n >= 0 ? n : -n;//判断n>=0是否成立,true返回n,否则返回-n。
System.out.println(x);
}
}
三元运算b ? x : y
会首先计算b
,如果b
为true
,则只计算x
,否则,只计算y
。此外,x
和y
的类型必须相同,因为返回值不是boolean
,而是x
和y
之一。
标签:右移,JAVA,运算,00000000,运算符,int,100 来源: https://www.cnblogs.com/tmm-00/p/16142451.html