Date post: | 06-Jan-2018 |
Category: |
Documents |
Upload: | caroline-gray |
View: | 237 times |
Download: | 1 times |
Data Types, Variables, and Arithmetic
Java MethodsJava MethodsA & ABA & AB
Object-Oriented Programmingand Data Structures
Maria Litvin ● Gary Litvin
Copyright © 2006 by Maria Litvin, Gary Litvin, and Skylight Publishing. All rights reserved.
int chapter = 6;
6-2
Objectives:• Discuss primitive data types• Learn how to declare fields and local
variables• Learn about arithmetic operators, compound
assignment operators, and increment / decrement operators
• Discuss common mistakes in arithmetic
6-3
Variables• A variable is a “named container”
that holds a value.• q = 100 - q;
means: 1. Read the current value of q 2. Subtract it from 100 3. Move the result back into q
count5
mov ax,qmov bx,100sub bx,axmov q,bx
6-4
Variables (cont’d)• Variables can be of different data types: int,
char, double, boolean, etc.• Variables can hold objects; then the type is
the class of the object.• The programmer gives names to variables.• Names of variables usually start with a
lowercase letter.
6-5
Variables (cont’d)• A variable must be declared before it can
be used:
int count;
double x, y;
JButton go;
Walker amy;
String firstName;
Type
Name(s)
6-6
Variables (cont’d)• The assignment operator = sets the
variable’s value:
count = 5;x = 0;go = new JButton("Go");firstName = args[0];
6-7
Variables (cont’d)• A variable can be initialized in its
declaration:
int count = 5;JButton go = new JButton("Go");String firstName = args[0];
6-8
Variables: Scope• Each variable has a scope —
the area in the source code where it is “visible.”
• If you use a variable outside its scope, the compiler reports a syntax error.
• Variables can have the same name when their scopes do not overlap.
{ int k = ...; ...}
for (int k = ...){ ...}
6-9
Fields• Fields are declared outside all
constructors and methods.• Fields are usually grouped together,
either at the top or at the bottom of the class.
• The scope of a field is the whole class.
6-10
Fields (cont’d)public class SomeClass{
}
Fields
Constructors and methods
Scope
public class SomeClass{
}Fields
Constructors and methodsScope
Or:
6-11
Local Variables• Local variables are declared inside a
constructor or a method.• Local variables lose their values and are
destroyed once the constructor or the method is exited.
• The scope of a local variable is from its declaration down to the closing brace of the block in which it is declared.
6-12
Local Variables (cont’d)public class SomeClass{ ... public SomeType SomeMethod (...) {
{
} } ...}
ScopeLocal variable declared
Local variable declared
6-13
Variables (cont’d)• Use local variables whenever appropriate;
never use fields where local variables should be used.
• Give prominent names to fields, so that they are different from local variables.
• Use the same name for local variables that are used in similar ways in different methods (for example, x, y for coordinates, count for a counter, i, k for indices, etc.).
6-14
Variables (cont’d)• Common mistakes:
public void someMethod (...){ int x = 0; ... int x = 5; // should be: x = 5; ...
Variable declared twice within the same scope — syntax error
6-15
Variables (cont’d)• Common mistakes:
private double radius;...public Circle (...) // constructor{ double radius = 5; ...
Declares a local variable radius; the value of the field radius remains 0.0
6-16
Primitive Data Types
• int• double• char• boolean
• byte• short• long• float
Used inJava Methods
6-17
Strings• String is not a primitive data type• Strings work like any other objects, with two
exceptions: Strings in double quotes are recognized as literal
constants + and += concatenate strings (or a string and a
number or an object, which is converted into a string)
"Catch " + 22 "Catch 22"
6-18
Literal Constants
'A', '+', '\n', '\t'
-99, 2010, 0
0.75, -12.3, 8., .5
“coin.gif", "1776", "y", "\n"
new line
tab
char
int
double
String
6-19
Symbolic Constants• Symbolic constants are initialized final
variables:
private final int stepLength = 48;
private static final int BUFFER_SIZE = 1024;
public static final int PIXELS_PER_INCH = 6;
6-20
Why Symbolic Constants?• Easy to change the value throughout the
program, if necessary• Easy to change into a variable• More readable, self-documenting code• Additional data type checking by the compiler
6-21
Arithmetic• Operators: +, -, /, * , %• The precedence of operators and
parentheses is the same as in algebra• m % n means the remainder when m is
divided by n (for example, 17 % 5 is 2; 2 % 8 is 2)
• % has the same rank as / and *• Same-rank binary operators are performed in
order from left to right
6-22
Arithmetic (cont’d)• The type of the result is determined by the
types of the operands, not their values; this rule applies to all intermediate results in expressions.
• If one operand is an int and another is a double, the result is a double; if both operands are ints, the result is an int.
6-23
Arithmetic (cont’d)• Caution: if a and b are ints, then a / b is
truncated to an int…17 / 5 gives 3 3 / 4 gives 0
• …even if you assign the result to a double: double ratio = 2 / 3;
The double type of the result doesn’t help: ratio still gets the value 0.0.
6-24
Arithmetic (cont’d)• To get the correct double result, use double
constants or the cast operator: double ratio = 2.0 / 3; double ratio = 2 / 3.0;
int m = ..., n = ...; double factor = (double)m / (double)n; double factor = (double)m / n; double r2 = n / 2.0;
Casts
6-25
Arithmetic (cont’d)• A cast to int can be useful:
int ptsOnDie = (int)(Math.random() * 6) + 1;
int miles = (int)(km * 1.61 + 0.5);
Returns a double
Converts kilometers to miles, rounded to the nearest integer
6-26
Arithmetic (cont’d)• Caution: the range for ints is from -231 to 231-1 (about -2·109 to 2·109)
• Overflow is not detected by the Java compiler or interpreter:
n = 8 10^n = 100000000 n! = 40320n = 9 10^n = 1000000000 n! = 362880n = 10 10^n = 1410065408 n! = 3628800n = 11 10^n = 1215752192 n! = 39916800n = 12 10^n = -727379968 n! = 479001600n = 13 10^n = 1316134912 n! = 1932053504n = 14 10^n = 276447232 n! = 1278945280
6-27
Arithmetic (cont’d)• Compound assignment
operators:
a = a + b; a += b;a = a - b; a -= b;a = a * b; a *= b;a = a / b; a /= b;a = a % b; a %= b;
• Increment and decrement operators:
a = a + 1; a++;a = a - 1; a--;
Do not use these in larger expressions
6-28
From Numbers to Strings• The easiest way to convert x into a string is to
concatenate x with an empty string: String s = x + "";
• The same rules apply to System.out.print(x)
'A'123-1.13.14Math.PI
"A""123""-1""0.1""3.14""3.141592653589793"
Empty string
6-29
From Objects to Strings• The toString method is called:
public class Fraction{ private int num, denom; ... public String toString () { return num + "/" + denom; }}
Fraction f = new Fraction (2, 3);System.out. println (f) ;
Output: 2/3
f.toString() is called automatically
6-30
Review:• What is a variable? • What is the type of a variable that holds an
object?• What is meant by the scope of a variable?• What is the scope of a field?• What is the scope of a local variable?
6-31
Review (cont’d):• Is it OK to give the same name to variables in
different methods?• Is it OK to give the same name to a field and
to a local variable of the same class?• What is the range for ints?• When is a cast to double used?
6-32
Review (cont’d):• Given
double dF = 68.0;double dC = 5 / 9 * (dF - 32);
what is the value of dC?• When is a cast to int used?• Should compound assignment operators
be avoided?