april 6, 1998cs102-02lecture 2-1 java operators cs 102-02 lecture 2-1 being a smooth operator

30
April 6, 1998 CS102-02 Lecture 2-1 Java Operators CS 102-02 Lecture 2-1 Being a Smooth Operator

Upload: evangeline-james

Post on 03-Jan-2016

217 views

Category:

Documents


4 download

TRANSCRIPT

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 OperatorsCategory What it does… ExamplesArithmetic 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 division7%3 = 1198%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 thingX++ * 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 typeint * int intfloat * 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 logicExpression One Expression Two One AND Two One OR Two One XOR TwoFalse False False False FalseFalse True False True TrueTrue False False True TrueTrue 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 0if (y = 7) then …

• In Java result of a comparison is Boolean8 != 9 ??8 != 8 ??

April 6, 1998 CS102-02 Lecture 2-1

Logical Operators in Java

• Translating logic into JavaAND &&

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 relationsOne 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

• ExamplesX++;

– 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 evaluatedAND &

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 10 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

extensionShift the bits right and preserve the sign

>>> Right shift with zeroextension

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 178 0 1 0 0 1 1 1 034 0 0 1 0 0 0 1 02 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