Java语言基础(3)
运算符
1.算术运算符
运算符 | 运算 |
+ | 加或正号或连接字符串 |
- | 减或负号 |
* | 乘 |
/ | 除 |
% | 取模 |
++ | 自增 |
-- | 自减 |
++在前时,先自增,后使用;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--;a=1,b=2;
2.赋值运算符
运算符 | 运算 |
= | 赋值 |
+= | a+=b => a=a+b |
-= | a-=b => a=a-b |
*= | a*=b => a=a*b |
/= | a/=b => a=a/b |
%= | a%=b => a=a%b |
3.比较运算符
运算符 | 运算 |
== | 相等于 |
!= | 不等于 |
< | 小于 |
> | 大于 |
<= | 小于等于 |
>= | 大于等于 |
instanceof | 检查是否是类的对象 |
比较运算符返回的都是boolean值
4.逻辑运算符
运算符 | 运算 |
& | AND(与) |
| | OR(或) |
^ | XOR(异或) |
! | Not(非) |
&& | AND(短路与) |
|| | OR(短路或) |
&和&&的区别
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
“|”和“||”的区别同理,双或时,左边为真,右边不参与运算。
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=5 |
^ | 异或运算 | 6^3=5 |
~ | 反码 | ~6 |
位运算符的细节 | |
<< | 空位补0,被移除的高位丢弃,空缺位补0 |
>> | 被移位的二进制最高位是0,右移后,空缺位补0; 最高位是1,空缺位补1 |
>>> | 被移位二进制最高位无论是0或者是1,空缺位都用0补 |
& | 二进制位进行&运算,只有1&1时结果是0,否则结果是1 |
| | 二进制位进行|运算,只有0|0时结果是0,否则结果是1 |
^ | 任何相同二进制位进行^ 运算,结果是0;1^1=0 , 0^0=0 不相同二进制位^ 运算结果是1。1^0=1 , 0^1=1 |
我们可以对数据按二进制位进行移位操作,java的移位运算符有三种:
<< 左移 将二进制的每一位向左移,低位补0。左移几位就相当于乘以2的几次方。
>> 右移 将二进制的每一位向右移,原来高位是0就补0,原来高位是1就补1。右移几位就相当于除以2的几次方。
>>> 无无符号右移 将二进制的每一位向右移,高位补0。正数移动没区别,负数移动后变为正数。
练习: 有两个int型变量a和b,在不使用第三个变量的情况下交换两个变量中的值
/**
有两个int型变量a和b,
在不使用第三个变量的情况下交换两个变量中的值
*/
class SwapTest
{
public static void main(String[] args)
{
int a,b;
a = 3;
b = 4;
System.out.println("交换前:a="+a+";b="+b);
swapNum(a,b); //调用方法,传参
}
//定义方法体
public static void swapNum(int a, int b)
{
a = a^b;
b = a^b;
a = a^b;
System.out.println("交换后:a="+a+";b="+b);
}
}