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
之一。