April 6, 1998 CS102-02 Lecture 2-1
Java Operators
CS 102-02
Lecture 2-1
Being a Smooth Operator
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
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 <<, >>
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
April 6, 1998 CS102-02 Lecture 2-1
Arithmetic Operators
• The usual suspects: plus, minus, blah, blah,
blah
• Modulo/remainder operator
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
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
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;
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
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;
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.”;
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…
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)
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
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 ??
April 6, 1998 CS102-02 Lecture 2-1
Logical Operators in Java
• Translating logic into Java
AND &&
OR ||
XOR ^
NOT !
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
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?
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!”);
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?
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?)
April 6, 1998 CS102-02 Lecture 2-1
Relational Operators
• Determine the relationship between values
• Equality & inequality
• Less than, greater than
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
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
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
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
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
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
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
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

Java-operators.ppt

  • 1.
    April 6, 1998CS102-02 Lecture 2-1 Java Operators CS 102-02 Lecture 2-1 Being a Smooth Operator
  • 2.
    April 6, 1998CS102-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, 1998CS102-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, 1998CS102-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
  • 5.
    April 6, 1998CS102-02 Lecture 2-1 Arithmetic Operators • The usual suspects: plus, minus, blah, blah, blah • Modulo/remainder operator
  • 6.
    April 6, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-02 Lecture 2-1 Logical Operators in Java • Translating logic into Java AND && OR || XOR ^ NOT !
  • 17.
    April 6, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-02 Lecture 2-1 Relational Operators • Determine the relationship between values • Equality & inequality • Less than, greater than
  • 23.
    April 6, 1998CS102-02 Lecture 2-1 (In)Equality • Equality is different from assignment == != = • Most keyboards just have = – Use == for equality – And != for inequality
  • 24.
    April 6, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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, 1998CS102-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

Editor's Notes