1. April 6, 1998 CS102-02 Lecture 2-1
Java Operators
CS 102-02
Lecture 2-1
Being a Smooth Operator
2. April 6, 1998 CS102-02 Lecture 2-1
Operating with Java
• Most programming languages have
operators
– Operators are short-hand symbols for actions
= Assign right to left
+ Add two numbers (or concatenate two strings)
– Operators in Java have fixed meaning
• No operator overloading
• Can’t say:
List = List + Item; // Add item to list
3. April 6, 1998 CS102-02 Lecture 2-1
Kinds of Operators
Category What it does… Examples
Arithmetic Addition, subtraction +, -, /
Assignment Set a value to an expression =, +=, &=
Conditional Choose one of two values ? :
Logical Logical comparisons &&, ||
Relational Compare values ==, >=
Bitwise Move bits within a number <<, >>
4. April 6, 1998 CS102-02 Lecture 2-1
Operator Precedence
• Usually things go left-to-right, but there are
precedence rules
• Nutshell reading lists operators by
precedence
• Override precedence with ()’s
6. April 6, 1998 CS102-02 Lecture 2-1
Modulo Operator
• Modulo (or remainder) operator: what’s left
over after division
7%3 = 1
198%3 = ??
6.0%4.0 = 2
• Is it odd or even?
• Looping with clock arithmetic
– Appointment at 5pm everyday
– Baking 217 cakes: step 3 of 7 same as 24 of 28
7. April 6, 1998 CS102-02 Lecture 2-1
Short-Hand Operators
• Increment and decrement: ++ and --
– Often need to add or subtract 1
– Pre: Add (subtract) first
– Post: Add (subtract) afterwards
• Compiler can sometimes optimize
8. April 6, 1998 CS102-02 Lecture 2-1
Testing Out Short-Hand
After X Y Whole thing
X++ * Y
++X + Y
++X / Y++
Suppose we start with:
X = 7;
Y = 9;
What’s the difference between:
X++;
++X;
9. April 6, 1998 CS102-02 Lecture 2-1
Are You My Type?
• What’s the type of a result?
Expression Result type
int * int int
float * float ??
int * float ??
int / int ??
• Conversion & promotion
10. April 6, 1998 CS102-02 Lecture 2-1
Assignment Operators
• Change the value on the left to the value of
the expression on the right
If you want to: Try:
Assign 8 to Y Y = 8;
Add 1 to Y Y++;
Assign Y+10 to Y X += 10;
11. April 6, 1998 CS102-02 Lecture 2-1
Works for Strings Too
• Strings are “added” (concatenated) with +
What is Name after the third line?
Name = “Simpson”;
First = “Lisa”;
Name += First;
What’s the result here?
Age = 11;
Message = “He’s “ + Age + “ years old.”;
12. April 6, 1998 CS102-02 Lecture 2-1
Conditional Operator
• Instead of If..Then..Else, use ?:
• Takes three arguments in the form:
Boolean condition ? If-true : If-false
If (Simpson == “Lisa”) {
Message = “She’s our favorite!”;
} else {
Message= “Doh!”;
}
System.out.println(Message);
is the same as…
13. April 6, 1998 CS102-02 Lecture 2-1
Using the Conditional Operator
System.out.println(Simpson==“Lisa”
? ”She’s our favorite” :“Doh!”);
(The above should be on one line in a real program)
14. April 6, 1998 CS102-02 Lecture 2-1
And, But and Or will get you
pretty far..
• Logical operators combine simple
expressions to form complex ones
• Boolean logic
Expression One Expression Two One AND Two One OR Two One XOR Two
False False False False False
False True False True True
True False False True True
True True True True False
15. April 6, 1998 CS102-02 Lecture 2-1
Boolean Types
• True or false are real values in Java
• Some languages just use 0 and not 0
if (y = 7) then …
• In Java result of a comparison is Boolean
8 != 9 ??
8 != 8 ??
16. April 6, 1998 CS102-02 Lecture 2-1
Logical Operators in Java
• Translating logic into Java
AND &&
OR ||
XOR ^
NOT !
17. April 6, 1998 CS102-02 Lecture 2-1
Boolean Expressions
• De Morgan’s Laws with Expressions One & Two
One OR Two == One AND Two
One AND Two == One OR Two
• Some handy relations
One XOR One == False
One OR One == True
18. April 6, 1998 CS102-02 Lecture 2-1
Short-Circuit
• Remember:
False AND Anything == False
True OR Anything == True
• Sometimes compiler can short-circuit and
skip evaluation of second expression
• What if there are side effects?
19. April 6, 1998 CS102-02 Lecture 2-1
Sideline on Side Effects
• Side effects are results of expression
evaluation other than the expression’s value
• Examples
X++;
– Output:
System.out.println(“Howdy!”);
20. April 6, 1998 CS102-02 Lecture 2-1
Short-Circuiting Side Effects
• Short-circuiting could prevent a side effect
• How do you force the compiler to evaluate
a second expression?
21. April 6, 1998 CS102-02 Lecture 2-1
No Short-Circuit Here
• Guarantee that the second expression is
evaluated
AND &
OR |
XOR ^
(Why is ^ listed here?)
22. April 6, 1998 CS102-02 Lecture 2-1
Relational Operators
• Determine the relationship between values
• Equality & inequality
• Less than, greater than
23. April 6, 1998 CS102-02 Lecture 2-1
(In)Equality
• Equality is different from assignment
== != =
• Most keyboards just have =
– Use == for equality
– And != for inequality
24. April 6, 1998 CS102-02 Lecture 2-1
Bitwise Operators
• Computers are binary creatures:
everything’s on or off
• For example, computers can’t store decimal
numbers so
25. April 6, 1998 CS102-02 Lecture 2-1
Binary Arithmetic
• Everything’s in powers of two
• Turn 78 into:
128 64 32 16 8 4 2 1
0 1 0 0 1 1 1 0
64 8 4 2
26. April 6, 1998 CS102-02 Lecture 2-1
Accentuate the positive
• Computers don’t know about negative
numbers
• Use the first (leftmost) bit as a sign bit:
1 if negative: -5 is 11111101
0 if positive: +5 is 00000011
27. April 6, 1998 CS102-02 Lecture 2-1
Bitwise is Binary
• Work with the bits inside the values
• Only good for integral values (integer
numbers, bytes and characters)
Operator Name Description
& AND AND the corresponding bits in the two
operands
| OR OR the corresponding bits in the two
operands
^ XOR XOR the corresponding bits in the two
operands
<< Left shift Shift the bits from right to left
>> Right shift with sign
extension
Shift the bits right and preserve the sign
>>> Right shift with zero
extension
Shift the bits right and always fill in 0’s
~ Complement Switch 0’s and 1’s
28. April 6, 1998 CS102-02 Lecture 2-1
And Shift Your Bits ‘Round and
‘Round
• Bitwise AND of 78 and 34
128 64 32 16 8 4 2 1
78 0 1 0 0 1 1 1 0
34 0 0 1 0 0 0 1 0
2 0 0 0 0 0 0 1 0
29. April 6, 1998 CS102-02 Lecture 2-1
Why Bother with Bitwise?
• Use numbers not for themselves but for
their internal representations
• Example: A tic-tac-toe grid might have 0’s
for O’s and 1’s for X’s
• Just need 9 bits to do the whole table and
only 27 bits for 3-D tic-tac-toe
30. April 6, 1998 CS102-02 Lecture 2-1
That’s It for Operators
• Operators are key to building large
expressions in Java
• Know operator precedence (or at least
where to look it up)
• Next time: Use operators to build
expressions for control structures