### Java Operators

Java provides a rich set of operators enviroment. Java operators can be devided into following categories

- Arithmetic operators
- Relation operators
- Logical operators
- Bitwise operators
- Assignment operators
- Conditional operators
- Misc operators

#### Arithmetic operators

Arithmetic operators are used in mathematical expression in the same way that are used in algebra.

operator | description |
---|---|

+ | adds two operands |

- | subtract second operands from first |

* | multiply two operand |

/ | divide numerator by denumerator |

% | remainder of division |

++ | Increment operator increases integer value by one |

-- | Decrement operator decreases integer value by one |

#### Relation operators

The following table shows all relation operators supported by Java.

operator | description |
---|---|

== | Check if two operand are equal |

!= | Check if two operand are not equal. |

> | Check if operand on the left is greater than operand on the right |

< | Check operand on the left is smaller than right operand |

>= | check left operand is greater than or equal to right operand |

<= | Check if operand on left is smaller than or equal to right operand |

#### Logical operators

Java supports following 3 logical operator. Suppose a=1 and b=0;

operator | description | example |
---|---|---|

&& | Logical AND | (a && b) is false |

|| | Logical OR | (a || b) is true |

! | Logical NOT | (!a) is false |

#### Bitwise operators

Java defines several bitwise operators that can be applied to the integer types long, int, short, char and byte

operator | description |
---|---|

& | Bitwise AND |

| | Bitwise OR |

^ | Bitwise exclusive OR |

<< | left shift |

>> | right shift |

Now lets see truth table for bitwise `&`

, `|`

and `^`

a | b | a & b | a | b | a ^ b |
---|---|---|---|---|

0 | 0 | 0 | 0 | 0 |

0 | 1 | 0 | 1 | 1 |

1 | 0 | 0 | 1 | 1 |

1 | 1 | 1 | 1 | 0 |

The bitwise shift operators shifts the bit value. The left operand specifies the value to be shifted and the right operand specifies the number of positions that the bits in the value are to be shifted. Both operands have the same precedence.**Example**

a = 0001000 b= 2 a << b= 0100000 a >> b= 0000010

#### Assignment Operators

Assignment operator supported by Java are as follows

operator | description | example |
---|---|---|

= | assigns values from right side operands to left side operand | a=b |

+= | adds right operand to the left operand and assign the result to left | a+=b is same as a=a+b |

-= | subtracts right operand from the left operand and assign the result to left operand | a-=b is same as a=a-b |

*= | mutiply left operand with the right operand and assign the result to left operand | a*=b is same as a=a*b |

/= | divides left operand with the right operand and assign the result to left operand | a/=b is same as a=a/b |

%= | calculate modulus using two operands and assign the result to left operand | a%=b is same as a=a%b |

#### Misc operator

There are few other operator supported by java language.

#### Conditional operator

It is also known as ternary operator and used to evaluate Boolean expression

epr1 ? expr2 : expr3If

**epr1**Condition is true? Then value

**expr2**: Otherwise value

**expr3**

#### instanceOf operator

This operator is used for object reference variables. The operator checks whether the object is of particular type (class type or interface type)