This week's book giveaway is in the Testing forum.We're giving away four copies of The Way of the Web Tester: A Beginner's Guide to Automating Tests and have Jonathan Rasmusson on-line!See this thread for details.
Win a copy of The Way of the Web Tester: A Beginner's Guide to Automating Tests this week in the Testing forum!

# Operator Associativity

Saniya Ansari
Ranch Hand
Posts: 48
Hi Dan (specially coz i'm doign ur mock exams), I tried this question in Exam D:
class L {
public static void main (String s[]) {
int i = 1 | 2 ^ 3 * 2 & 13 | 2;
System.out.println(i%5);
}
}
The answer is 2. Your explanation is also helpful.. i'm wondering are there any rules to follow when we evaluate such an expression. It is left associative but how shoudl we group them.. i.e how do we get (1 | (2 ^ ((3 * 2) & 13)) | 2)
So someone can help?!

Dan Chisholm
Ranch Hand
Posts: 1865
Please see the following tutorial and operator precedence chart.
http://java.sun.com/docs/books/tutorial/java/nutsandbolts/expressions.html
I hope that helps.

Wena Dollison
Greenhorn
Posts: 7
Just remember these abbreviation:
U - Unary
A - Arithmetic
S - Shift
C - Comparison
B - Bitwise
S - Short-Circuit
C - Conditional
A - Assignment
So unary operators come first, then arithmetic operators, and so on. * always come first in the arithmetic operators (if not grouped or within parentheses or associated) and & then ^ then | is the order for the Bitwise operators
You can also read this in RHE Java Certification book