1. 算术运算符
运算符 运算 范例 结果 + 正号 +3 3 - 负号 b=4;-b -4 + 加 5+5 10 - 减 5-4 1 * 乘 3*4 12 / 除 5/2 2 % 取模 5%5 0 ++ 自增(前) a=2;b=++a a=3,b=3 ++ 自增(后) a=2;b=a++ a=3;b=2 – 自减(前) a=2;b=–a a=1;b=1 – 自减(后) a=2;b=a– b=2;a=1 + 字符串相加 “hello”+“world” helloworld
算术运算符的注意问题
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。但被模数是负数就另当别论。(取模运算符号看被模数,即左边) 对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。
例如:int x=3510;x=x/1000*1000; x的结果是?3000 “+”除字符串相加功能外,还能把非字符串转换成字符串,
例如:System.out.println(“5+5=”+5+5);//打印结果是?5+5 = 55
2. 赋值运算符
运算符 运算 范例 结果 = 赋值 a=3;b=2 a=3;b=2 += 加等于 a=3;b=2;a+=b a=5;b=2 -= 减等于 a=3;b=2;a-=b a=1;b=2 *= 乘等于 a=3;b=2;a*=b a=6;b=2 /= 除等于 a=3;b=2;a/=b a=1;b=2 %= 模等于 a=3;b=2;a%=b a=1;b=2
int a,b,c; a=b=c=3;
int a = 3; a+=5;等同运算
a=a+5;
short s = 3;
s=s+2;//编译报错 因为short,char ,byte 在表达式运算中会自动向上转型int s=(short)s+2
s+=2;//编译通过
3. 比较运算符
运算符 运算 范例 结果 == 相等 a=3;b=2;a==b false != 不等于 a=3;b=2;a!=b true < 小于 a=3;b=2;a<b fasle > 大于 a=3;b=2;a>b true <= 小于等于 a=3;b=2;a<=b fasle >= 大于等于 a=3;b=2;a>=b true instanceof 检查是否是类的对象 “Hello” instanceof String true
注意:
比较运算符运行结束之后返回的都是boolean 注意运算符= =不要写成=
4. 逻辑运算符
运算符 运算 范例 结果 & and(与) false&true false | or(或) true|false true ^ xor异或 truefalse;true true true;false ! not(非) !false true && 短路与 false&&true fasle || 短路或 true||false true
注意:
逻辑运算符用于连接布尔型表达式,在Java中不可以写成3<x<6,应该写成x>3 & x<6 。 “&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算; 双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。 “|”和“||”的区别同理,双或时,左边为真,右边不参与运算。 异或( ^ )与或( | )的不同之处是:当左右都为true时, 结果为false。
5. 位运算符
运算符 运算 范例 结果 << 左移位 3<<2 12 (3*2*2=12) >> 右移位 3>>1 1(3/2=1) >>> 无符号右移位 3>>>1 1(3/2=1) & 与运算 6&3 2 | 或运算 6|3 7 ^ 异或运算 6^3 5 ~ 反码 ~6 -7
位运算符的细节
<< : 空位补0,被移除的高位丢弃,空缺位补0。左移几位就相当于乘以2的几次方 。 >> : 被移位的二进制最高位是0,右移后,空缺位补0;最高位是1,空缺位补1。 相当于除以2的几次方。 >>> : 被移位二进制最高位无论是0或者是1,空缺位都用0补。 正数移动没区别,负数移动后变为正数。 & : 二进制位进行&运算,只有1&1时结果是1,否则是0; | : 二进制位进行| 运算,只有0 | 0时结果是0,否则是1; ^ : 任何相同二进制位进行^ 运算,结果是0;1^1=0 , 0^0=0不相同二进制位^ 运算结果是1。1^0=1 , 0^1=1
public static void swapNum ( int a, int b)
{
a = a^ b;
b = a^ b;
a = a^ b;
System . out. println ( "交换后:a=" + a+ ";b=" + b) ;
}
class OperationTest
{
public static void main ( String [ ] args)
{
System . out. println ( 2 << 3 ) ;
}
}