2.5 java中的运算符

java中的运算符

Java 语言支持如下运算符:

  1. 算术运算符:+、-、*、/、%、++、–。
  2. 关系运算符:>、<、>=、<=、==、!=。
  3. 赋值运算符:=、+=、-=、*=、/= 等。
  4. 逻辑运算符:!、&&、|| 等。
  5. 位运算符:~、&、|、^、>>、<<、>>>(无符号右移)。

算术运算符
从参与运算的因子的数量,可以将算术运算符分为以下 3 类

单目运算符:+(取正)、-(取负)、++(自增 1)、–(自减 1)。
双目运算符:+、-、*、/、%(取余)。
三目运算符:(表达式 1)?(表达式 2):(表达式 3),当表达式 1 的结果为真时,整个运算的结果为表达式 2,否则为表达式 3,该运算符是 Java 语言唯一一个三目运算符,常被使用,需要掌握。

i++是先取值再加一,例如i=3,输出i++则会输出3,再输出i就是4
在这里插入图片描述
++i是先加1再进行取值

在这里插入图片描述
例:
在这里插入图片描述
Java 中整形在进行与整形的运算中结果仍然是整形,所以小数点后面的数字被忽略了,只取整数位。例如 3/2=1 后面的 0.5 就被忽略掉了。

关系运算符和赋值运算符

关系运算符和赋值运算符比较简单,这里不展开介绍。需要注意的是,关系运算符 == 和赋值运算符 = 看起来比较类似,但含义完全不同,== 用于判断两边是否相等,而 = 是将右边的值赋给左边。此外,关系运算符的比较结果是布尔类型,例如:

boolean flag = 3 > 2 ; //比较结果:true

+=、-= 等是扩展的赋值运算符,x += y 等价于 x = x + y,程序员在实际的编程过程中,为了方便阅读,尽量不要使用这种扩展的赋值运算符。

逻辑运算符

在 Java 语言中有 3 种逻辑运算符,它们是逻辑非(用符号“!”表示)、逻辑与(用符号“&&”表示)和逻辑或(用符号“||”表示)。注意区分||和|还有&&和&
在这里插入图片描述
1、 逻辑运算符要求两边的算子都是布尔类型,并且逻辑运算符最终的运算结果也是一个布尔类型。

2、 短路与和逻辑与最终的运算结果是相同的,只不过短路与存在短路现象。

      短路或和逻辑或最终的运算结果是相同的,只不过短路或存在短路现象。

  *   逻辑与:
int x = 10;
int y = 8;
System.out.println( x < y & ++x < y);
System.out.println(x);
     输出结果为   false        

                           11

   *   短路与:
int x = 10;
int y = 8;
System.out.println( x < y && ++x < y);
System.out.println(x);
     输出结果为  false

                           10

       x < y 结果是false,整个表达式结果已经确定是false,所有后面的表达式没有再执行,这种现象被称为短路现象,短路与才会有短路现象。

3、 什么情况下会发生短路或,短路与?

        第一个表达式执行结果是true,会发生短路或。

        第一个表达式执行结果是false,会发生短路与。

例题:
在这里插入图片描述

位运算符

在计算机中,所有的信息都是以二进制形式存储的。可以用位运算符对整数的二进制位进行操作。位运算符主要包括按位非(用符号 ~ 表示)、按位与(用符号 & 表示)、按位或(用符号 | 表示)、按位异或(用符号 ^ 表示)和移位运算符(用符号 <<、>>、>>> 表示)。

在企业面试 Java 工程师的时候,也常会问到 && 和 & 以及 || 与 | 的区别,通过下面的学习,可以清楚地理解逻辑运算符和位运算符的区别。

按位非表示按位取反(得到的是补码,原码取反时正数符号位要变,负数符号位不变),其关系值表如下表所示。
在这里插入图片描述
例:
6按位非后得到-7的反码
在这里插入图片描述

按位与是逐位逻辑与。按位与的关系值表如下表所示。

A	B	A & B
1	1	1
1	0	0
0	1	0
0	0	0
例:
在这里插入图片描述

按位或是逐位逻辑或。按位或的关系值表如下表所示。

A	B	A 或 B
1	1	1
0	1	1
1	0	1
0	0	0
例:
在这里插入图片描述

按位异或是当两个运算位不同时(重点在“异”字),结果为 1,否则为 0。按位异或的关系值表如下表所示。

A	B	A ^ B
1	1	0
0	1	1
1	0	1
0	0	0
例:
在这里插入图片描述

移位运算符,当移位数为正时以原码移动,用0补齐,移位数为负数时以反码移动,用1补齐,例:
正数左移
在这里插入图片描述
正数右移
在这里插入图片描述
负数右移:
-7补码为1111 1001,右移两位后变为1111 1110
-2的原码为1000 0010,反码为1111 1101,补码为1111 1110
所以-7右移两位变为-2
在这里插入图片描述
无符号右移:无论正负左边都用0补齐,补齐后得到的是原码
例:
-7为整数类型,按四个字节来算其补码其实是
11111111 11111111 11111111 11111001
将其右移两位后变为
00111111 11111111 11111111 11111110
值为1073741822
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值