Assignment and Precedence
Download
Report
Transcript Assignment and Precedence
Assignment Statements
Operator Precedence
Assignment, not Equals
An assignment statement changes the value of a
variable
The assignment operator is the = sign
total = 55;
The expression on the right is evaluated and the result is
stored in the variable on the left The value that was in total
is overwritten
You can only assign a value to a variable that is consistent
with the variable's declared type.
ICS111-Java Programming
2
Constants
A constant is an identifier that is similar to a variable
except that it holds the same value during its entire
existence
As the name implies, it is constant, not variable
The compiler will issue an error if you try to change
the value of a constant
In Java, we use the final modifier to declare a
constant
final int MIN_HEIGHT = 62;
ICS111-Java Programming
3
Constants
Constants are useful for three important reasons
First, they give meaning to otherwise unclear literal
values
• For example, MAX_LOAD means more than the
literal 250
Second, they facilitate program maintenance
• If a constant is used in multiple places, its value need
only be updated in one place
Third, they formally establish that a value should not
change, avoiding inadvertent errors by other
programmers
ICS111-Java Programming
4
No Magic Numbers
ICS111-Java Programming
5
Expressions
An expression is a combination of one or more
operators and operands
Arithmetic expressions compute numeric results and
make use of the arithmetic operators:
Addition
Subtraction
Multiplication
Division
Remainder
+
*
/
%
If either or both operands used by an arithmetic operator are
floating point, then the result is a floating point
ICS111-Java Programming
6
Division and Remainder
If both operands to the division operator
are integers, the result is an integer
(the fractional part is discarded)
14 / 3
equals
4
8 / 12
equals
0
The remainder operator (%) returns the remainder
after dividing the second operand into the first
14 % 3
equals
2
8 % 12
equals
8
ICS111-Java Programming
7
Division with Double numbers
If both operands to the division operator
are doubles, the result is double number
14.2 / 3.1 equals 4.58064516129
8.6 / 12.7 equals 0.67716535433
•The remainder operator (%) should not be used with double
numbers.
•In Java 1.5 it is allowed but it is unpredictable.
ICS111-Java Programming
8
Mixing double and int numbers
We will go over this in our next class.
ICS111-Java Programming
9
Operator Precedence
Operators can be combined into complex expressions
result
=
total + count / max - offset;
Operators have a well-defined precedence which
determines the order in which they are evaluated
ICS111-Java Programming
10
Operator Precedence
precedence
level
1
2
3
4
operator
+
*
/
%
+
-
operation
unary plus
unary minus
multiplication
division
remainder
addition
subtraction
+
=
string
concatenation
assignment
associates
R to L
L to R
L to R
R to L
Arithmetic operators with the same precedence are
evaluated from left to right, but parentheses can be
used to force the evaluation order
ICS111-Java Programming
11
Assignment Revisited
The assignment operator has a lower precedence
than the arithmetic operators
First the expression on the right hand
side of the = operator is evaluated
answer
=
4
sum / 4 + MAX * lowest;
1
3
Then the result is stored in the
variable on the left hand side
2
precedence
level
1
2
3
4
ICS111-Java Programming
operator
+
*
/
%
+
-
operation
unary plus
unary minus
multiplication
division
remainder
addition
subtraction
+
=
string
concatenation
assignment
associates
R to L
L to R
L to R
R to L
12
Assignment Revisited
The right and left hand sides of an
assignment statement can contain the same
variable
First, one is added to the
original value of count
count
=
count + 1;
Then the result is stored back into count
(overwriting the original value)
ICS111-Java Programming
13
How does this work?
JAVA works the right side of the assignment
first
It then stores the result in a temporary
memory space
Now it assigns that value into the left side
count
=
Assigning the value
to the left side
count + 1;
Into a temporary
memory space
ICS111-Java Programming
14
Increment and Decrement
The increment and decrement operators use only
one operand
The increment operator (++) adds one to its
operand
The decrement operator (--) subtracts one from its
operand
The statement
count++
is functionally equivalent to
count = count + 1;
ICS111-Java Programming
15
Increment and Decrement
The increment and decrement operators can
be applied in postfix form:
count++
or prefix form:
++count
When used alone it, the postfix is the form
used
ICS111-Java Programming
16
Increment and Decrement
When used as part of a larger expression, the two
forms can have different effects so be careful.
int total;
int count = 2;
total = count++;
Postfix increments after the assignment:
•Assigns the value of count(2) to total making total =2
•Increments count by making count = 3
•At the end total is 2 and count is 3.
total = count;
count=count+1;
ICS111-Java Programming
17
Increment and Decrement
int total;
int count = 2;
Total = ++ count;
Prefix increments before the assignment:
•Increments count by one making count = 3
•Assigns count (3) to total making total =3
•At the end both total and count are 3.
count = count+1;
count = total;
ICS111-Java Programming
18
Assignment Operators
Often we perform an operation on a variable, and
then store the result back into that variable
Java provides assignment operators to simplify that
process
For example, the statement
num += count;
is equivalent to
num = num + count;
ICS111-Java Programming
19
Assignment Operators –
shortcuts
There are many assignment operators in Java,
including the following:
Operator
+=
-=
*=
/=
%=
Example
x
x
x
x
x
+=
-=
*=
/=
%=
y
y
y
y
y
Equivalent To
x
x
x
x
x
=
=
=
=
=
x
x
x
x
x
+
*
/
%
y
y
y
y
y
No need to use shortcuts just take the long way. It works!!!
ICS111-Java Programming
20
ICS111-Java Programming
22