运算符:对常量和变量连接起来的一种符号
1、算数运算符
运算符 | 运算 | 范例 | 结果 |
+ | 正号 | +3 | 3 |
- | 负号 | b=4;-b; | -4 |
+ | 加 | 5+5 | 10 |
- | 减 | 6-4 | 2 |
* | 乘 | 3*4 | 12 |
/ | 除 | 5/5 | 1 |
% | 取余 | 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--; | a=1;b=2; |
+ | 字符串相加 | “He”+”llo” | “Hello” |
2、赋值运算符
基本的赋值运算符:=,这个一般叫等于号,但是在程序里面不叫等于号,叫赋值号。
扩展的赋值运算符:+=,-=,*=,/=,%=
把左边和右边做算法,然后赋值给左边
例子:
public class OperatorDemo {
public static void main(String[] args) {
//定义一个变量
int x=10;
//其他用法
int a,b;
a=b=10;
System.out.println("a="+a);
System.out.println("b="+b);
}
}
输出结果:
3、比较运算符
运算符 | 运算 | 范例 | 结果 |
== | 相等于 | 4==3 | false |
!= | 不等于 | 4!=3 | true |
< | 小于 | 4<3 | false |
> | 大于 | 4>3 | True |
<= | 小于等于 | 4<=3 | false |
>= | 大于等于 | 4>=3 | false |
Instancecof | 检查是否是类的对象 | “Hello” instanceof String | true |
比较运算符的结果都是Boolean型,也就是要么是true要么是false。
比较运算符“==”不能被误写成“=”。
例子:
public class OperatorDemo {
public static void main(String[] args) {
int x=3;
int y=4;
int z=3;
System.out.println("x==y ="+(x==y));
System.out.println("x==z ="+(x==z));
System.out.println("(x+y)==(x+z) ="+((x+y)==(x+z)));
}
}
输出结果:
4、逻辑运算符
运算符 | 运算 | 范例 | 结果 |
& | AND(与) | false&true | false |
| | OR(或) | false|true | true |
^ | XOR(异或) | true^false | true |
! | Not(非) | !true | false |
&& | AND(短路) | false&&true | false |
|| | OR | false||true | 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,右移后,空缺位补0;最高位是1,最高位补1。
>>>:被移位二进制最高位无论是0或者是1,空缺位都用0补。
&:任何二进制位和0进行&运算,结果是0;和1进行&运算结果是原值。
|:任何二进制位和0进行 | 运算,结果是原值;和1进行 | 运算结果是1。
^:任何相同二进制位进行 ^ 运算,结果是0;不相同二进制位 ^ 运算结果是1。
例子:
public class OperatorDemo {
public static void main(String[] args) {
int a=3;
int b=4;
System.out.println("3 & 4 ="+(3 & 4));
System.err.println("3 | 4 ="+(3 | 4));
System.out.println("3 ^ 4 ="+(3 ^ 4));
System.out.println("~3 ="+(~3));
}
}
输出结果:
6、三目运算符
格式
(关系表达式)?表达式1:表达式2;
如果条件为true,运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2
示例:
public class OperatorDemo {
public static void main(String[] args) {
int x=3,y=4,z;
z=(x>y)?x:y;//z变量存储的就是两个数的大数
System.out.println("z ="+z);
}
}
输出结果: