取余运算:
1.结果的符号与被模数符号相同
(前)++ (后)++ (前)-- (后)–运算:
前++:先自增1,后运算
后++:先运算,后自增1
//注意点
short s1 = 10;
//s1 = s1 + 1;//常数1默认为整形
s1++;//不会改变本身变量的数据类型
+=、-=、*=、/=、%=运算:
int i = 1;
i *= 0.1;//0 不改变本身数据类型仍然为整形;
i++;
System.out.println(i);//1
//练习2
int m = 2;
int n = 3;
n *= m++;//n = n * m++;
System.out.println("m = " + m);//3
System.out.println("n = " + n);//6
n += (n++) + (++n);//n = n10 + (n++)10(先运算再++) + (++n)10;
逻辑运算符:
&逻辑与
&&短路与
boolean b2 = false;
int num2 = 10;
if(b2 && (num2++ > 0))
//b2的结果为false后面的运算直接短路所以num2的结果仍为10
boolean b2 = false;
int num2 = 10;
if(b2 & (num2++ > 0))
//b2的结果为false后面的运算计算num2的结果为11
|逻辑或
||短路或
!逻辑非
^逻辑异或 :相同的即为false
位运算符:
int i = 21;
i << 2;//2进制运算 i * 2的4次方
&:二进制中只有都为1时才为1
^ :相同为,不同为1
//数值交换
int num1 = 10;
int num2 = 20;
//使用位运算符
num1 = (num1 ^ num2);
num2 = (num1 ^ num2);
num1 = (num1 ^ num2);
System.out.println("num1 = " + num1 + ",num2 = " + num2);
三元运算符:
(条件表达式)? 表达式1 : 表达式2
如果表达式正确:执行表达式1
int m = 12;
int n = 5;
int max = (m > n)? m : n;//max的数据类型取决于m 和 n的数据类型
System.out.println(max);