被模数就是前面的数字,如 12, -12
* 赋值运算符: = , += , -= , *= , /= , %=
-
+=
short s = 10; //因为后面的3是int型,会损失精度,s不能接受int型的数值 s = (s + 3); s += 3; //既可以实现运算,也不会更改s的数据类型 System.out.println(s); System.out.println(i1);
-
比较运算符
-
逻辑运算符
&与&&的区别
& 不管左边是true还是false,右边都会进行运算
&& 当左边为false,右边就不再运算
boolean b = false;
if (b & (i1++) > 0) {
System.out.println("今天");
} else {
System.out.println("昨天");
}
System.out.println(i1);
int i2 = 10;
if (b && (i2++) > 0) {
System.out.println("明天");
} else {
System.out.println("昨天");
}
System.out.println(i2);
结果为昨天
11
昨天
10
即&&时,因为b是false,所以右边没有进行计算
| 与 || 的区别与上述相同
| 无论左边是true还是false,都会进行右边的运算
|| 则不会
建议使用 && 和 ||
-
位运算符
<< 以二进制表示数值往左边移位,右边用0补齐
">> (有符号的右移)数值向右移,如果最高位是1,就补1,如果是0就补0
'>>> (无符号的右移),数值向右移,不管符号位,都用0补int a = -31; // 0000 1000 //System.out.println(a << 2); // 0010 0000 System.out.println(a >> 2); System.out.println(a >>> 2);
结果为
& | ^ ~
System.out.println(12&5);//4 System.out.println(12|5);//13 System.out.println(12^5);//9 System.out.println(~12);//-13
int m = 12;
int n = 5;
System.out.println("m:" + m + "n:" + n);
System.out.println();
// 方法1:提供一个临时变量
// int a = 0;
// a = m;
// m = n;
// n = a;
// System.out.println("m:" + m + "n:" + n);
// 方法2:int数是有容量的,当数值太大的时候不能采用这个方法,可能出现精度损失
// m = m + n;// m = 12+5;
// n = m - n;// n = 17-5;
// m = m - n;// m = 17 - 12;
// System.out.println("m:" + m + "n:" + n);
// 方法3:优点是没有上述两种方法的缺点
m = m ^ n;
n = m ^ n; // (m^n)^n ==n
m = m ^ n;// (m^n)^n ==m
System.out.println("m:" + m + "n:" + n);
相当于创建了一个临时数,运算后又释放出去了
练习:写一个程序将60的十六进制在电脑中打印出来