java符号大全_JAVA基础3---运算符大全

Java中的运算符有以下种类:算术运算符、关系运算符、位运算符、逻辑运算符、赋值运算符、其他的运算符

现在假设定义 int A = 10,B = 5;

一、算术运算符

运算符

描述

案例

+

等同于数学中的加号

A+B=15

-

等同于数学中的减号

A-B = 5

*

等同于数学中的乘号

A*B = 50

/

除号,结果的类型和操作数类型有关,详情如下Demo

A/B=2

%

取余,左边除以右边数取余数,只可用于整数型,浮点型会有精度问题,详情如下Demo

A%B=0

++

自增,相当于操作数的值加1

A++或++A=11

--

自减,相当于操作数的值减1

A--或--A=9

详细Demo如下:

1 public static voidoperatorTest() {2 int A = 10, B = 5, C = 3, A1 = 10, A2 = 10, A3 = 10, A4 = 10;//定义整型

3 float D = 10.2F, E = 2.5F;//定义两个浮点型

4

5 System.out.println("A+B = " + (A + B));//15(整型)

6 System.out.println("A-B = " + (A - B));//5(整型)

7 System.out.println("A*B = " + (A * B));//50(整型)

8 System.out.println("A/B = " + (A / B));//2(整型)

9 System.out.println("A/C = " + (A / C));//3(整型)

10 System.out.println("A%B = " + (A % B));//0(整型)

11 System.out.println("A%C = " + (A % C));//1(整型)

12 System.out.println("D/B = " + (D / B));//2.04(浮点型)

13 System.out.println("D%B = " + (D % B));//0.19999981(浮点型,精度缺失)

14 System.out.println("A/E = " + (A / E));//4.0(浮点型)

15 System.out.println("A%E = " + (A % E));//0.0(能除以尽,则不会有精度问题)

16

17 System.out.println("A++ = " + (A1++));//10 先取值再做自增操作,取的A1的值为10,语句结束之后A1=11

18 System.out.println("++A = " + (++A2));//11 先做自增操作再取值,取的A2的值为11,语句结束之后A2=11

19 System.out.println("A-- = " + (A3--));//10 先做自增操作再取值,取的A2的值为10,语句结束之后A2=9

20 System.out.println("--A = " + (--A4));//9 先做自增操作再取值,取的A2的值为9,语句结束之后A2=9

21 }

关于A++和++A的区别的详细解析,可以参考另一篇文章:JAVA基础2---深度解析A++和++A的区别

二、关系运算符

运算符

描述

案例

>

判断左边操作数是否大于右边操作数,是则为true,否则为false

A>B = true

<

判断左边操作数是否小于右边操作数,是则为true,否则为false

A

>=

判断左边操作数是否大于或等于右边操作数,是则为true,否则为false

A>=B = true

<=

判断左边操作数是否小于或等于右边操作数,是则为true,否则为false

A<=B = false

==

判断左边操作数是否等于右边操作数,是则为true,否则为false

A==B = fasle

!=

判断左边操作数是否不等于右边操作数,是则为true,否则为false

A!=B = true

详细Demo如下:

1 public static voidoperatorTest2() {2 int A = 10, B = 5;3 System.out.println("A > B = " + (A > B));// A > B =true

4 System.out.println("A < B = " + (A < B));// A < B =false

5 System.out.println("A >= B = " + (A >= B));//A >= B =true

6 System.out.println("A <= B = " + (A <= B));//A <= B =false

7 System.out.println("A == B = " + (A == B));//A == B =false

8 System.out.println("A != B = " + (A != B));//A != B =true

9 }

需要注意的是,关系运算符的两边的操作数都必须是数值类型,如果是对象类型之间进行比较,需要自定义对象之间比较的规则。

如果两个对象类型使用了上面的运算符,则会报错提示运算符不支持改类型,而== 和 !=运算符不会报错,因为==和!=会比较两个对象的内存地址,而内存地址也是数值类型;

三、位运算符

位运算符用于JAVA的int、long、short、char和byte类型,按位进行运算,A =10和B=5对应的二进制格式如下

A = 0000 1010

B = 0000 0101

运算符

描述

案例

&

与运算,对应位置都为1则结果为1,否则结果为0

A&B=0000 0000,即A&B=0

|

或运算,对应位置都为0则结果为0,否则结果为1

A|B=0000 1111 ,即A|B =15

^

异或运算,对应位置值相同则为0,否则为1

A^B=0000 1111,即A^B=15

~

非运算,将操作数每个位置进行翻转,即0变为1,1变为0

~A = 1111 0101,即~A=-11;  ~B = 1111 1010,即~B = -6

<<

位左移运算,左操作数按位左移右操作数指定的位数,如A<

A<

>>

位右移运算,左操作数按位右移右操作数指定的位数,如A<

A>>B = 0000 0000 即A >> B = 0

>>>

位右移补零运算,左操作数按位右移右操作数指定的位数,移动得到的空位补零,和>>差不多

A>>>B = 0000 0000 即A >> B = 0

详细Demo如下:

1 public static voidoperatorTest3() {2 int A = 50;//0011 0010

3 int B = 15;//0000 1111

4 int C = 3;5 System.out.println("A & B = " + (A & B));//0000 0010 = 2

6 System.out.println("A | B = " + (A | B));//0011 1111 = 63

7 System.out.println("A ^ B = " + (A ^ B));//0011 1101 = 61

8 System.out.println("~ A = " + (~A));//1100 1101 = -51

9 System.out.println("~ B = " + (~B));//1111 0000 = -16

10 System.out.println("A << C = " + (A << C));//0001 1001 0000 = 400

11 System.out.println("A >> C = " + (A >> C)); //0000 0110 = 6

12 System.out.println("A >>> C = " + (A >>> C));//0000 0110 = 6

13 }

对于>>和>>>区别,如果左操作数为正数的话,两运算符计算结果相同,若为负数的话,则结果不一样;

>>是表示右移,如果该数为正,则高位补0,若为负数,则高位补1;

>>>表示无符号右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。

四、逻辑运算符

定义 boolean A = true,boolean B=false

运算符

描述

案例

&&

逻辑与运算符,当两个操作数都为true,则结果为true,否则为false

A&&B = false

||

逻辑或运算符,当两个操作数都为false,则结果为false,否则为true

A||B = true

!

逻辑非运算符,当操作数为true,则结果为false,当操作数为false,则结果为true

!A = false;!B=true

逻辑与 &&具有短路功能,具体参考结尾Tips

五、赋值运算符

运算符

描述

案例

=

基本赋值,将右操作数赋值给左边操作数

A=B,将B的值赋值给A,结果A=5

+=

加和赋值,将左操作数加上右操作数的值再赋值给左操作数

A+=B相当于A=A+B,结果为A=15

-=

减和赋值,将左操作数减上右操作数的值再赋值给左操作数

A-=B相当于A=A-B,结果A=5

*=

乘和赋值,将左操作数乘以右操作数的值再赋值给左操作数

A*=B相当于A=A*B,结果为A=50

/=

除和赋值,将左操作数除以右操作数的值再赋值给左操作数

A/=B相当于A=A/B,结果为A=2

%=

取余和赋值,将左操作数取余右操作数的值再赋值给左操作数

A%=B相当于A=A%B,结果为0

<<=

左移位赋值,左操作数左移右操作数指定位数后赋值给左操作数

A<<=B 相当于A=A<

>>=

右移位赋值,左操作数右移右操作数指定位数后赋值给左操作数

A>>=B 相当于A=A>>B ,结果为0

&=

位与赋值,左操作数位与运算右操作数再赋值给左操作数

A&=B 相当于A=A&B,结果为0

|=

位或赋值,左操作数位或运算右操作数再赋值给左操作数

A|=B 相当于A=A|B,结果为15

^=

位异或赋值,左操作数位异或运算右操作数再赋值给左操作数

A^=B 相当于A=A^B,结果为15

六、其他运算符

条件运算符:条件 ?true_value:false_value

当条件的结果为true时,则表达式的值为true_value,当条件的结果为false时,则表达式的值为false_value,如下Demo:

1 public static voiddemo1() {2 int A = 10, B = 5;3 int C = A > B ? A : B;//当A大于B时,取值为A,否则取B

4 int D = A < B ? A : B;//当A小于B时,取值为A,否则取B

5 System.out.println("C = " + C);//结果为10

6 System.out.println("D = " + D);//结果为5

7 }

Tips:

1. &&具有短路功能,当第一个操作数的结果为false,则第二个操作数就不再判断了,如下Demo:

1 public static voiddemo1() {2 int A = 10;3 int B = 10;4 boolean flag1 = (A > 5 && ++A >5);5 boolean flag2 = (B < 5 && ++B >5);6 System.out.println("没有短路: A="+A);//结果为 A = 117 System.out.println("短路之后:"+"B="+B);//结果为 B = 108 }

因为A>5=true,所以继续执行 ++A>5;而B < 5=false,第二个操作就不再执行,所以 ++B >5就不再执行;

你可能感兴趣的:(java符号大全)