Saniya Ansari

Ranch Hand

Posts: 48

posted 14 years ago

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)

instead of some other arrangement.

So someone can help?!

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)

instead of some other arrangement.

So someone can help?!

SCJP 2

Dan Chisholm

Ranch Hand

Posts: 1865

posted 14 years ago

Please see the following tutorial and operator precedence chart.

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/expressions.html

I hope that helps.

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/expressions.html

I hope that helps.

Dan Chisholm<br />SCJP 1.4<br /> <br /><a href="http://www.danchisholm.net/" target="_blank" rel="nofollow">Try my mock exam.</a>

Wena Dollison

Greenhorn

Posts: 7

posted 14 years ago

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

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