运算符:对常量和变量连接起来的一种符号
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);
}
}
输出结果: