In order to do arithmetic in Java, one must first declare at least one variable. Typically one declares a variable and assigns it a value before any arithmetic is done. Here's an example of declaring an integer variable:
Code section 3.59: Variable assignation. |
After creating a variable, one can manipulate its value by using Java's operators: + [addition], - [subtraction], * [multiplication], / [integer division], % [modulo or remainder], ++ [pre- & postincrement by one], -- [pre- & postdecrement by one].
The division operator rounds towards zero: 5/2 is 2, and -5/2 is -2. The remainder operator has the same sign as the left operand; it is defined such that [[a/b]*b] + [a%b] is always equal to a. The preincrement, predecrement, postincrement, and postdecrement operators are special: they also change the value of the variable, by adding or subtracting one. The only difference is that preincrement/decrement returns the new value of the variable; postincrement returns the original value of the variable.
Test your knowledge
Question 3.8: Consider the following code:
Question 3.8: Question8.java public class Question8 { public static void main[String[] args] { int x = 10; x = x + 10; x = 2 * x; x = x - 19; x = x / 3; System.out.println[x]; } } |
What will be printed in the standard output?
Answer
Output for Question 3.87 |
int x = 10; => 10
x = x + 10; => 20
x = 2 * x; => 40
x = x - 19; => 21
x = x / 3; => 7
When using several operators in the same expression, one must consider Java's order of precedence. Java uses the standard PEMDAS [Parenthesis, Exponents, Multiplication and Division, Addition and Subtraction] order. When there are multiple instances of the same precedence, Java reads from left to right. Consider what the output of the following code would be:
The following chart shows how Java would compute this expression:
Figure 3.1: Computation of an arithmetic expression in the Java programming language |
Besides performing mathematical functions, there are also operators to assign numbers to variables [each example again uses the variable initialized as x = 5]:
Using bitwise operators within Java[edit | edit source]
Java has besides arithmetic operators a set of bit operators to manipulate the bits in a number, and a set of logical operators. The bitwise logical operators are
& | Bitwise AND | 7 | x&27 | 3 | 7 |
| | Bitwise OR | 7 | x|27 | 31 | 7 |
^ | Bitwise XOR | 7 | x^27 | 28 | 7 |
~ | Bitwise inversion | 7 | ~x | -8 | 7 |
Besides these logical bitwise functions, there are also operators to assign numbers to variables [x = -5]:
&= | Assign x bitwisely ANDed with another value to itself | x &= 3 | 3 |
|= | Assign x bitwisely ORed with another value to itself | x |= 3 | -5 |
^= | Assign x bitwisely XORed with another value to itself | x ^= 3 | -8 |
= 1 | -3 | ||
>>>= | Assign x bitwisely negated with another value to itself | x >>>= 1 | 2,305,843,009,213,693,949 [64 bit] |
The shift operators are used to shift the bits to the left or right, which is also a quick way to multiply/divide by two:
Arithmetic shift right | -15 | x >> 3 | -2 | -15 | |
>>> | Logical shift right | -15 | x >>> 3 | 2,305,843,009,213,693,937 [64 bit] | -15 |