The JavaTM Tutorial

Trail: Learning the Java Language
Lesson: Language Basics

## Summary of Operators

### Summary of Arithmetic Operators

The following table lists the basic arithmetic operators provided by the Java programming language. Except for `+`, which is also used to concatenate strings, these operators can be used only on numeric values.

Binary Arithmetic Operators
Operator Use Description
`+` `op1 + op2` Adds `op1` and `op2`; also used to concatenate strings
`-` `op1 - op2 ` Subtracts `op2` from `op1`
`*` `op1 * op2` Multiplies `op1` by `op2`
`/` `op1 / op2` Divides `op1` by `op2`
`%` `op1 % op2` Computes the remainder of dividing `op1` by `op2`

These short cut operators increment or decrement a number by one.

Shortcut Arithmetic Operators
Operator Use Description
`++` `op++` Increments `op` by 1; evaluates to the value of `op` before it was incremented
`++` `++op` Increments `op` by 1; evaluates to the value of `op` after it was incremented
`--` `op--` Decrements `op` by 1; evaluates to the value of `op` before it was decremented
`--` `--op` Decrements `op` by 1; evaluates to the value of `op` after it was decremented

Here are the Java programming language's other arithmetic operators.

Unary Arithmetic Operators
Operator Use Description
`+` `+op` Promotes `op` to `int` if it's a `byte`, `short`, or `char`
`-` `-op` Arithmetically negates `op`

### Summary of Relational and Conditional Operators

Use these relational operators to determine the relationship between two values.

Relational Operators
Operator Use Description
`>` `op1 > op2 ` Returns `true` if `op1` is greater than `op2`
`>=` `op1 >= op2` Returns `true` if `op1` is greater than or equal to `op2`
`<` `op1 < op2` Returns `true` if `op1` is less than `op2`
`<=` `op1 <= op2 ` Returns `true` if `op1` is less than or equal to `op2`
`==` `op1 == op2` Returns `true` if `op1` and `op2` are equal
`!=` `op1 != op2 ` Returns `true` if `op1` and `op2` are not equal

You can use the following conditional operators to form multi-part decisions.

Conditional Operators
Operator Use Description
`&&` `op1 && op2` Returns `true` if `op1` and `op2` are both `true`; conditionally evaluates `op2`
`||` `op1 || op2` Returns `true` if either `op1` or `op2` is `true`; conditionally evaluates `op2`
`!` `!op` Returns `true` if `op` is `false`
`&` `op1 & op2` Returns `true` if `op1` and `op2` are both boolean and both `true`; always evaluates `op1` and `op2`; if both operands are numbers, performs bitwise `AND` operation
`|` `op1 | op2` Returns `true` if both `op1` and `op2` are boolean and either `op1` or `op2` is `true`; always evaluates `op1` and `op2`; if both operands are numbers, performs bitwise inclusive `OR` operation
`^` `op1 ^ op2` Returns `true` if `op1` and `op2` are different — that is, if one or the other of the operands, but not both, is `true`

### Summary of Shift and Logical Operators

Each shift operator shifts the bits of the left-hand operand over by the number of positions indicated by the right-hand operand. The shift occurs in the direction indicated by the operator itself.

Shift Operators
Operator Use Description
`<<` `op1 << op2` Shift bits of `op1` left by distance `op2`; fills with zero bits on the right-hand side
`>>` `op1 >> op2` Shift bits of `op1` right by distance `op2`; fills with highest (sign) bit on the left-hand side
`>>>` `op1 >>> op2` Shift bits of `op1` right by distance `op2`; fills with zero bits on the left-hand side

These operators perform logical functions on their operands.

Logical Operators
Operator Use Operation
`&` `op1 & op2` Bitwise `AND` if both operands are numbers;
conditional `AND` if both operands are boolean
`|` `op1 | op2` Bitwise `OR` if both operands are numbers;
conditional `OR` if both operands are boolean
`^` `op1 ^ op2` Bitwise exclusive `OR` (`XOR`)
`~` `~op2` Bitwise complement

### Summary of Assignment Operators

The basic assignment operator looks as follows and assigns the value of `op2` to `op1`.
```op1 = op2;
```

In addition to the basic assignment operation, the Java programming language defines these short cut assigment operators that perform an operation and an assignment using one operator.

Shortcut Assignment Operators
Operator Use Equivalent to
`+=` `op1 += op2` `op1 = op1 + op2`
`-=` `op1 -= op2` `op1 = op1 - op2`
`*=` `op1 *= op2` `op1 = op1 * op2`
`/=` `op1 /= op2` `op1 = op1 / op2`
`%=` `op1 %= op2` `op1 = op1 % op2`
`&=` `op1 &= op2 ` `op1 = op1 & op2`
`|=` `op1 |= op2` `op1 = op1 | op2`
`^=` `op1 ^= op2` `op1 = op1 ^ op2`
`<<=` `op1 <<= op2` `op1 = op1 << op2`
`>>=` `op1 >>= op2` `op1 = op1 >> op2`
`>>>=` `op1 >>>= op2` `op1 = op1 >>> op2`

### Summary of Other Operators

The Java programming language also supports these operators.

Other Operators
Operator Use Description
`?:` `op1 ? op2 : op3` If `op1` is true, returns `op2`. Otherwise, returns `op3`.
`[]` `type []` Declares an array of unknown length, which contains type elements.
`[]` `type[ op1 ]` Creates and array with `op1` elements. Must be used with the `new` operator.
`[]` `op1[ op2 ]` Accesses the element at `op2` index within the array `op1`. Indices begin at 0 and extend through the length of the array minus one.
`.` `op1.op2` Is a reference to the `op2` member of `op1`.
`()` `op1(params)` Declares or calls the method named `op1` with the specified parameters. The list of parameters can be an empty list. The list is comma-separated.
`(type)` `(type) op1` Casts (converts) op1 to `type`. An exception will be thrown if the type of `op1` is incompatible with `type`.
`new` `new op1` Creates a new object or array. `op1` is either a call to a constructor, or an array specification.
`instanceof` `op1 instanceof op2` Returns true if `op1` is an instance of `op2`