运算符【详细】

前言

※※※大家好!我是同学〖森〗,一名计算机爱好者,今天让我们进入学习模式。若有错误,请多多指教。

👍 点赞  收藏 📝留言 都是我创作的最大的动力!

目录

⭐思维导图⭐

1.算术运算符

1.1基本运算符(+,- ,*,/ ,%)

1.2增量运算符 (+=,-=,*=,/=,%=)

1.3自增自减运算符(++、--)

2.关系运算符

2.1六个关系运算符(<、>、==、!=、<=、>=)

3.逻辑运算符(重点)

3.1与或非

3.2短路与

3.3短路或 

 4.位运算符

4.1按位与(&)

4.2按位或 (|)

4.3 按位取反(~)

4.4按位异或(^)

5.移位运算

6. 条件运算符(三目运算符)

7.运算符的优先级


思维导图

 

正文

1.算术运算符

1.1基本运算符(+-*/ ,%

加,减,乘不用多讲,但需注意类型提升,对此有疑惑的小伙伴请移步---》数据类型

+、-、*、/、%都为二元运算符,

二元运算符:二元运算符指的是需要两个操作数才能完成运算的运算符。

/除:注意被除数不能为零,不然编译会报错。

%求余:右操作数不能为零。

%:     其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数” 符号和左边操作数相同

下面小题两道,如果你回答正确,那这基本四则运算符,你也就毫无问题了。 

        //下列输出结果是多少?
        System.out.println(7/4);
        System.out.println((float)(7/4));
        System.out.println((float)7/4);
        System.out.println(7/(float)4);




结果:1、1.0、1.75、1.75

7/4因为都是整数,所以结果就是1;

(float)(7/4) 根于括号,先算7/4,然后对1强转为1.0;

(float)7/4) 或 7/(float)4,是先将7或4强转为小数。结果就是1.75;

            //下列输出结果是?
        System.out.println(10%3);
        System.out.println(10%-3);
        System.out.println(-10%3);
        System.out.println(-10%-3);


结果:1、1、-1、-1

10/3=3……1

10/-3=-3……1

-10/3=-3……-1

-10/-3=3……-1

1.2增量运算符 (+=,-=,*=,/=,%=)

    a += 10;//--> a = a + 10;
    b *= 10;//--> b = b * 10;
    //其余以此类推;

增量运算符会自动进行类型转换

 例如

 1.3自增自减运算符(++、--)

(1)++,--   为一元运算符(只需要一个操作数就能完成运算的运算符

(2)++是变量+1,--是变量-1;

(3)前置++,是先加后用;后置++,是先用后减

        
        int a1 = 3;
        int b = a1++;
        int a2 = 3;
        int c = ++a2;
        System.out.println("b = "+b+",c = " + c);
        System.out.println("a1 = "+a1+",a2 = " + a2);


输出结果:
b = 3,c = 4
a1 = 4,a2 = 4

2.关系运算符

2.1六个关系运算符(<、>、==、!=、<=、>=

(1)关系运算符是用来比较的,其结果为true/false

(2)当需要多次判断时,不能连着写,比如:1 < a < 5,应为:1 < a && a < 5

关系运算符
运算符含义示例
<小于a < b
>大于a > b
==等于a == b
!=不等于a != b
<=小于或等于a <= b
>=大于或等于a >= b

3.逻辑运算符(重点)

3.1与或非

逻辑运算符
运算符名称说明示例
&&逻辑与左右表达式全为真,则结果为真布尔表达式a && 布尔表达式b
| |逻辑或
左右表达式至少有一个为真,则结果为真
布尔表达式a | | 布尔表达式b
!逻辑非
真变假,假变真。
!布尔表达式a

(1)逻辑运算符 的运算结果为Boolean类型(TRUE/FALSE)

3.2短路与

短路与:对于&&,如果左侧表达式为FALSE,表达式结果一定为FALSE,而右侧表达式不执行。

 例如:

        int a = 2;
        int b = 4;
        boolean c = (a > 5) && (b++ > 3);
        System.out.println("b = " + b);

//运行结果:b = 4

所以 (b++ > 3) 这块代码并没有执行。否则b应该变成5;

3.3短路或 

短路或:对于 | | ,如果左侧表达式为TRUE,表达式结果为TURE,右侧表达式也不执行

例如:

        int a = 2;
        int b = 4;
        boolean c = (a < 5) || (b++ > 3);
        System.out.println("b = " + b);

//运行结果:b = 4

 4.位运算符

四个位运算符( & 、|、 ~、^)

位运算符
运算符名称说明
&按位与
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0
|按位或
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1.
~按位取反
如果该位为 0 则转为 1, 如果该位为 1 则转为 0
^按位异或
如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

4.1按位与(&)

例:

System.out.println(3&5);

//运行结果:1

因为3和5的二进制前28为都是0,所以只表示后4位。

如果两个二进制位都是 1, 则结果为 1, 否则结果为 0

3:0011;5:0101

3&5-->  0011&0101  -->0001 -->1;  

因为只有绿色的1在3和5中都是1,按位与后任然为1,其他全为0;所以结果为1;

4.2按位或 (|)

System.out.println(3|5);


//运行结果:7

如果两个二进制位都是 0, 则结果为 0, 否则结果为 1

3|5-->  0011|0101  -->0111 -->7;  


4.3 按位取反(~)

System.out.println(~(byte)3);

//运行结果-4

如果该位为 0 则转为 1, 如果该位为 1 则转为 0

3:0000 0011;

~3:1111 1100 最左面的1表示负数,故这是补码

1111 1100 取反,1000 0011 --》 +1得到原码   1000 0100

原码:1000 0100  —>-4

4.4按位异或(^)

System.out.println(3^5);


//运行结果: 6

如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1

3:0011; 5:0101;

3^5 --> 0011^0101 -->0110-->6

 5.移位运算

运算符名称说明
<<左移
最左侧位不要了 , 最右侧补 0
>>右移最右侧位不要了,最左侧补符号位(正数补0,负数补1)
>>>无符号右移
最右侧位不要了 , 最左侧补 0.

 

(1)正整数左移 1 , 相当于原数字 * 2. 左移 N , 相当于原数字 * 2 N次方.
(2)正整数右移 1 , 相当于原数字 / 2. 右移 N , 相当于原数字 / 2 N次方.
(3)  由于计算机计算移位效率高于计算乘除 , 当某个代码正好乘除 2 N 次方的时候可以用移位运算代替 .
(4) 移动负数位或者移位位数过大都没有意义 .

(5)位移运算会将Byte,Short类型的数据提升为int类型,而int,long类型会保持不变

(6)位移运算不能对浮点类型运用。

6. 条件运算符(三目运算符)

表达式1 ? 表达式2 : 表达式3

表达式1 的值为 true , 整个表达式的值为 表达式2 的值;
表达式1 的值为 false , 整个表达式的值为 表达式3 的值.

求a、b中的较大值 

int c = a > b ? a : b;

7.运算符的优先级

 以上运算符优先顺序不用死记硬背,不知谁的优先级高的话,加括号就行。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

同学〖森〗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值