运算符

运算符指明对操作数的运算方式。组成表达式的Java操作符有很多种。
按照其要求的操作数数目来分,可以有单目运算符、双目运算符和三目运算符,它们分别对应于1个、2个、3个操作数。
按其功能来分,有算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符和其他运算符。

算术运算符

单目运算符

  • ~(按位取反)
  • ! (取非)
  • -(负号运算符)
  • ++(自增)
  • —(自减)

双目运算符

  • +(加)
  • -(减)
  • *(乘)
  • /(除)
  • %(取余)
  • instanceof
    • 左面的操作元是一个对象,右面是一个类或接口。当左面的对象是右面的类(或右边类的子孙类)创建的对象、或者是右边接口的实现类(或实现类的子孙类)的对象时,该运算符运算结果是true,否则是false。

三目运算符

a>b?true:false 说明:当a大于b的时候,为true(也就是冒号之前的值),否则为false;
这整个运算符包括一个关系运算符(可以是> < !=等等),一个,一个,冒号前后需要有两个表达式或者是值或者是对象。

关系运算符

  • ==(等于符号)
  • !=(不等于符号)
  • >(大于符号)
  • <(小于符号)
  • >=(大于等于符号)
  • <=(小于等于符号)

位运算符

  • &(与)
    • 双目运算符,运算时均把运算数转换为二进制再做比较,规则:当相同的位上均为1时结果为1,否则结 果为0.如:1010&1101,转为二进制:1111110010&10001001101,比较结果为:1000000转为十进制: 64。所以1010&1101=64;
  • ~(取反)
    • 0变1,1变0
  • |(或)
    • 当两边操作数的位有一边为1时,结果为1,否则为0。如1100|1010=1110
  • ^(异或)
    • 两边的位不同时,结果为1,否则为0。如1100^1010=0110

位移运算符

  • <<(带符号左移)
  • >>(带符号右移)
  • >>>(无符号右移)

逻辑运算符

  • &&(并)
  • !(非)
  • ||(或)

赋值运算符

  • =(赋值)
  • +=(加并赋值)
  • -=(减并赋值)
  • *=(乘并赋值)
  • /=(除并赋值)
  • %=(求余并赋值)
  • &=(与并赋值)
  • ^=(异或并赋值)
  • |=(取反并赋值)
  • <<=(带符号左移并赋值)
  • >>=(带符号右移并赋值)
  • >>>=(无符号右移并赋值)

运算符优先级

序列号 符号 结合性(与操作数)
1 .、()、[] 从左到右
2 !、+、-、~、++、– 从右向左
3 *、/、% 从左向右
4 +、- 从左向右
5 «、»、>>> 从左向右
6 <、<=、>、>=、instanceof 从左向右
7 ==、!= 从左向右
8 & 从左向右
9 ^ 从左向右
10 | 从左向右
11 && 从左向右
12 || 从左向右
13 ?: 从右向左
14 =、+=、-=、*=、/=、&=、|=、^=、~=、«=、»=、>>>= 从右向左