Java Operators Being a Smooth Operator CS 102
Java Operators Being a Smooth Operator CS 102 -02 Lecture 2 -1 April 6, 1998 CS 102 -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; April 6, 1998 CS 102 -02 // Add item to list Lecture 2 -1
Kinds of Operators April 6, 1998 CS 102 -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 April 6, 1998 CS 102 -02 Lecture 2 -1
Arithmetic Operators • The usual suspects: plus, minus, blah, blah • Modulo/remainder operator April 6, 1998 CS 102 -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 5 pm everyday – Baking 217 cakes: step 3 of 7 same as 24 of 28 April 6, 1998 CS 102 -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 April 6, 1998 CS 102 -02 Lecture 2 -1
Testing Out Short-Hand Suppose we start with: X = 7; Y = 9; What’s the difference between: X++; ++X; April 6, 1998 CS 102 -02 Lecture 2 -1
Are You My Type? • What’s the type of a result? Expression Result type int * int float * float int / int ? ? ? • Conversion & promotion April 6, 1998 CS 102 -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; April 6, 1998 CS 102 -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. ”; April 6, 1998 CS 102 -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… April 6, 1998 CS 102 -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) April 6, 1998 CS 102 -02 Lecture 2 -1
And, But and Or will get you pretty far. . • Logical operators combine simple expressions to form complex ones • Boolean logic April 6, 1998 CS 102 -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 April 6, 1998 ? ? CS 102 -02 Lecture 2 -1
Logical Operators in Java • Translating logic into Java AND OR XOR NOT April 6, 1998 && || ^ ! CS 102 -02 Lecture 2 -1
Boolean Expressions • De Morgan’s Laws with Expressions One & Two One OR Two == One AND Two == One OR Two • Some handy relations One XOR One == False One OR One == True April 6, 1998 CS 102 -02 Lecture 2 -1
Short-Circuit • Remember: False AND Anything == True OR Anything == False True • Sometimes compiler can short-circuit and skip evaluation of second expression • What if there are side effects? April 6, 1998 CS 102 -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!”); April 6, 1998 CS 102 -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? April 6, 1998 CS 102 -02 Lecture 2 -1
No Short-Circuit Here • Guarantee that the second expression is evaluated AND & OR | XOR ^ (Why is ^ listed here? ) April 6, 1998 CS 102 -02 Lecture 2 -1
Relational Operators • Determine the relationship between values • Equality & inequality • Less than, greater than April 6, 1998 CS 102 -02 Lecture 2 -1
(In)Equality • Equality is different from assignment == != = • Most keyboards just have = – Use == for equality – And != for inequality April 6, 1998 CS 102 -02 Lecture 2 -1
Bitwise Operators • Computers are binary creatures: everything’s on or off • For example, computers can’t store decimal numbers so April 6, 1998 CS 102 -02 Lecture 2 -1
Binary Arithmetic • Everything’s in powers of two • Turn 78 into: April 6, 1998 CS 102 -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: 0 if positive: April 6, 1998 -5 is 11111101 +5 is 00000011 CS 102 -02 Lecture 2 -1
Bitwise is Binary • Work with the bits inside the values • Only good for integral values (integer numbers, bytes and characters) April 6, 1998 CS 102 -02 Lecture 2 -1
And Shift Your Bits ‘Round and ‘Round • Bitwise AND of 78 and 34 April 6, 1998 CS 102 -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 April 6, 1998 CS 102 -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 April 6, 1998 CS 102 -02 Lecture 2 -1
- Slides: 30