一、运算符
Java中运算符分成以下几类,且与C语言逻辑大致相同:
- 算术运算符(arithmetic operator)
- 关系运算符(relational operator)
- 位运算符(bitwise operator)
- 逻辑运算符(logical operator)
- 赋值运算符(assigning operator)
- 其他运算符
(一)、算术运算符
算术运算符 | 作用 | 例子 |
---|---|---|
+ | 加法 | 1+1等于2 |
- | 减法 | 1-1等于0 |
* | 乘法 | 1*2等于2 |
/ | 除法(求商) | 1/2等于0 |
% | 取模 | 1%2等于1 |
++ | 自增 | a++或++a |
– | 自减 | a–或--a |
p.s. 注意在自增自减处,a++和++a中a虽然结果都是自增,但是在某些语句产生的效果却是不同的。如当a=1时,语句while(++a<2)和while(a++<2),前者是a先自增再与2进行比较,后者是a先与2比较再自增,故这两句中仅有后者的循环会执行。
(二)、关系运算符
关系运算符 | 作用 | 例子 |
---|---|---|
== | 是否相等 | 1==2返回false |
!= | 是否不相等 | 1!=2返回true |
> | 是否大于 | 1>2返回false |
< | 是否小于 | 1<2返回true |
>= | 是否大于等于 | 1>=2返回flase |
<= | 是否小于等于 | 1<=2返回true |
(三)、位运算符
位运算符 | 作用 | 例子 |
---|---|---|
& | 按位与,对应位都为1,则为1,否则为0 | |
| | 按位或,对应位都为0,则为0,否则为1 | |
^ | 按位异或,对应位都不同,则为1,否则为0 | |
~ | 按位取反,按位翻转每一位 | |
<< | 按位左移,将指定数字左移(乘以2的n次方) | |
>> | 按位右移,将指定数字右移(除以2的n次方) | |
>>> | 按位右移补零(同上,只不过会把空缺部分补零) |
具体例子如下,假设byte A值1为10(二进制形式为1010),byte B值为12(二进制形式为1100)。
package day5;
public class operator {
public static void main(String[] args)
{
byte A = 10;//0000 1010
byte B = 12;//0000 1100
System.out.println("A:"+Integer.toBinaryString(A));
System.out.println("B:"+Integer.toBinaryString(B));
System.out.println("A&B:"+Integer.toBinaryString(A&B));
System.out.println("A|B:"+Integer.toBinaryString(A|B));
System.out.println("A^B:"+Integer.toBinaryString(A^B));
System.out.println("A>>1:"+Integer.toBinaryString(A>>1));
System.out.println("A<<1:"+Integer.toBinaryString(A<<1));
System.out.println("A>>>1:"+Integer.toBinaryString(B>>>1));
}
}
调试信息如下,数据均以二进制输出:
A:1010
B:1100
A&B:1000
A|B:1110
A^B:110
A>>1:101
A<<1:10100
A>>>1:110
(四)、逻辑运算符
逻辑运算符 | 作用 | 例子 |
---|---|---|
&& | 逻辑与操作符 | A&&B,若A为true则返回B,若A为false则返回A(即两个操作数都为true时才为true) |
! | 逻辑非操作符 | !A,若A为true则返回false,若A为flase则返回true |
(五)、赋值运算符
赋值运算符的作用即将算数的程序表达进行简化。
赋值运算符 | 作用 | 例子 |
---|---|---|
= | 赋值操作符 | A=B,将B的值赋给A |
+= | 加和操作符 | 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 |
<<= | 左移位赋值操作符 | A<<=B,即A=A<<B |
>>= | 右移位赋值操作符 | A>>=B,即A=A>>B |
&= | 按位与赋值操作符 | A&=B,即A=A&B |
|= | 按位或赋值操作符 | A|=B,即A=A|B |
^= | 按位异或赋值操作符 | A=B,即A=AB |
(六)、其他运算符
1、条件运算符
条件运算符也被称为三元运算符,通过判断布尔类型的值来选择哪个选项。
variable x = (expression) ? value if true : value if false
如下面例子,如果1>2则将1赋给value,否则将2赋给value。
byte value = (1>2)?1:2;
2、instanceof运算符
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
( Object reference variable ) instanceof (class/interface type)
如下面例子,判断变量myName是否为String类型。
String myName = "seanOY";
boolean result = myName instanceof String;
System.out.println(result);
(七)运算符优先级
当多个运算符同时出现在一个表达式时,就需要程序员去考虑它的运行顺序,下面写出各运算符的优先级,从优先级高到低。
运算符类型 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . | →(从左到右) |
一元 | ++ – ! ~ | ←(从右到左) |
乘性 | * / % | → |
加性 | + - | → |
移位 | >> >>> << | → |
关系 | > >= < <= | → |
相等 | == != | → |
按位与 | & | → |
按位异或 | ^ | → |
按位或 | | | → |
逻辑与 | %% | → |
逻辑或 | || | → |
条件 | ? : | ← |
赋值 | = += -= *= /= %= >>= <<= &= ^= |= | ← |
逗号 | , | → |
参考链接:
菜鸟教程-Java 运算符