前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java基础系列---操作符

Java基础系列---操作符

作者头像
haoming1100
发布2018-10-25 17:25:36
4900
发布2018-10-25 17:25:36
举报
文章被收录于专栏:步履前行步履前行

  还记得我们刚开始学习Java的时候记住优先级和逻辑运算符就可以开始工作了,昨天在看到源码的时候发现一个操作符 |=,没有印象,然后去搜了下,发现提到的文章也很少,今天去看了一下官文,然后去google找了一圈,总结下来,供自己和大家参考。

  Java 提供一套丰富的操作运算符:

    • 算术运算符
    • 关系运算符
    • 按位运算符
    • 逻辑运算符
    • 赋值运算符
    • 其他

算术运算符

  算术运算符和我们在数学中使用的一样,就是 +  -   *   /等。

符号

示例

+(加法)

A + B

-   (减法)

A  - B

*(乘法)

A * B

/ (除法)

A / B  比如 8 / 3 = 2(只取小数点之前的数字)

%(取余)

A % B 比如 8 % 3 = 2 (取余数)

++

++A 或者 A++ (第一个是返回之前加1,后面的是返回后加1)

--

与 ++ 同理


关系运算符

比较用

符号

示例

== (等于)

A == B

!= (不等于)

A  != B

>(大于)

A > B

<(小于)

A < B

>= (大于或者等于)

A>=B

<= (小于或者等于)

A<=B)


按位运算符

Java中有几个按位运算符,用于long, int, short, char 和byte

比如 a = 16, 00010000(在Java中,所有数据类型都是补码表示的,8位二进制为了方便直观的观看)

 b = 3,00100000

-------------------------------------

a & b 

    a : 0 0 0 1 0 0 0 0

     b : 0 0 1 0 0 0 0 0

等于 : 00000000

第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0

---------------------------------------

a | b 

    a : 00010000

     b : 00100000

等于 : 00110000

与&的运算正好相反,只要有一位是1,结果就是1

---------------------------------------

a ^ b 

    a :  00010000

     b : 00100000

等于 : 00110000

第一个数与第二个数是否相反,是的话就是1,不是就是0

---------------------------------------

~a 

    a :    0001 0000

等于:

操作数的第n位为1,那么结果的第n位为0,反之

在Java中,所有数据类型都是补码表示的,没有特殊说明,默认是int,int长度是8位,1为是4字节,就是32字节。

所以上面的a 正确的表示是(补码)00000000 00000000 00000000  00010000

          然后取反是11111111 11111111 11111111 11101111

到这里并没有结束,因为高位是1,所以结果会变为负数,负数的补码是其绝对值的原码取反,末尾再加1。

我们先末尾加1变为11111111 11111111 11111111 11101110 (这里是负数,负数 + 1)

然后负数取反变为 00000000 00000000 0000000 00010001

转换为 - 17

这里的这个负数加一 一定要注意,要不就像我一样,算半天始终不正确

--------------------------------------

在上边提到了补位的问题,其中上边已经提到了Java中所有数据都是以补位码形式存在的

我们这里再强调下,正数的原码、补码反码是一样的,负数的高位也就是符号位是1,补码和反码都是原码反过来 + 1.至于细节,我们在以后写出

----------------------------------------

至于<< 和>> 就简单了,只是在二进制的基础上 向左或者向右调整,即可。

在Java中 很多底层都用这种方法来处理数据,因为底层是用二进制进行表示的,直接用二进制进行处理当然是性能很高的

符号

描述

&(按位和)

第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0。

| (按位或)

A  |  B

^(按位异或)

A ^ B

〜(按位赞美)

A ~ B

<<(左移)

A<<B

>>(右移)

A>>B

>>>(零填充右移)

A >>>B 不管正负标志位,总是整体右移,左边用0来填充,右边舍弃


逻辑运算符

符号

描述

&&

逻辑与运算符,2个条件为真才为真,这里有短路情况

||

逻辑或运算符,只要有一个为真,就为真

逻辑非运算符,用于取反结果


赋值运算符

操作符

描述

例子

=

简单的赋值运算符,将右操作数的值赋给左侧操作数

C = A + B将把A + B得到的值赋给C

+ =

加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数

C + = A等价于C = C + A

- =

减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数

C - = A等价于C = C - A

* =

乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数

C * = A等价于C = C * A

/ =

除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数

C / = A等价于C = C / A

(%)=

取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数

C%= A等价于C = C%A

<< =

左移位赋值运算符

C << = 2等价于C = C << 2

>> =

右移位赋值运算符

C >> = 2等价于C = C >> 2

&=

按位与赋值运算符

C&= 2等价于C = C&2

^ =

按位异或赋值操作符

C ^ = 2等价于C = C ^ 2

| =

按位或赋值操作符

C | = 2等价于C = C | 2

摘自https://www.tutorialspoint.com/java/java_basic_operators.html

上面标红的3列,大家可能要额外看一下。


其他

条件运算符

代码语言:javascript
复制
variable x = (expression) ? value if true : value if false
比如 int a = a == 3 ? 1 : 2;

instanceof运算符

代码语言:javascript
复制
( Object reference variable ) instanceof  (class/interface type)

这里就是一个简单的验证 某类是否是某个类的子类

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-10-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 算术运算符
  • 关系运算符
  • 按位运算符
  • 逻辑运算符
  • 赋值运算符
  • 其他
    • 条件运算符
      • instanceof运算符
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档