Title: Short Summary
1 Short Summary
Java Types
float, double long, int, short byte char boolean
Objects
Objects are created by Declaring a
reference and calling a constructor. Basic types
are created by Declaring a variable.
2Tirgul no. 5
- Topics covered
- Memory sharing, aliasing
- Complex class example
- Arrays in java
- Command line arguments in java
3Summary (cont.)
A java program
Object0 has a main method
Basic Type1
Object1
Basic TypeN
ObjectN
- A java program is a set of objects, where at
least - one of the objects has a method called main.
- Running a program means executing the
- commands which appear in the main method.
- The main method is usually comprised of
- calls to constructors, creating a set of
objects - and then sending them messages.
4Keyword Summary (cont.)
- public -
- method any method/object has access to this
- method.
- field DO NOT CREATE FIELDS WITH PUBLIC
- ACCESS , the only place where this
is acceptable - is if the field is final .
- private -
- method only other methods inside this
class may use this - method .
- field this is the common access specifier
for fields and - is most likely to be acomponied with
public - methods that allow supervised access
to it.
5Keyword Summary (cont.)
- final -
- method ---
- field, local variable this specifier means
that once this - field/variable is
given a value there - is no way to
change it (this is why - fields that have
this specifier may - sometimes be
declared as public). - return -
- method if the keyword return is followed by
a - variable/value this value is
returned as a result . - Return without any following
variable means to - exit the method.
6Memory (to share or not to share)
Date d1,d2 d1 new Date(1,1,1999) d2 new
Date(1,1,1999)
Date d1,d2 d1 new Date(1,1,1999) d2 d1
d1
d1
1,1,1999
1,1,1999
d2
d2
1,1,1999
7Memory (cont.)
Date d1,d2 d1 new Date(1,1,1999) d2
d1 if(d1 d2) System.out.println(same
date)
Date d1,d2 d1 new Date(1,1,1999) d2 new
Date(1,1,1999) if(d1 d2) System.out.println(
same date)
Which program prints same date ? Why? Is this
what we really want?
8Class Complex Example
- public class Complex
- private double real
- private double imaginary
- public Complex(double real,double imaginary)
- this.real real
- this.imaginary imaginary
-
- public Complex(Complex other)
- this.real other.real
- this.imaginary other.imaginary
-
- public double getReal()
- return real
-
-
- public double getImaginary()
9Class Complex (contd.)
- public Complex add(Complex right)
- double r,i
- r real right.getReal()
- i imaginary right.getImaginary()
- return (new Complex(r,i))
-
- public Complex add(double val)
- double r
- r real val
- return (new Complex(r,imaginary))
-
10Class Complex (contd.)
- public Complex multiply(Complex right)
- double r,i
- r (real right.getReal()) -
- (imaginary right.getImaginary())
- i (imaginary right.getReal())
- (real right.getImaginary())
- return(new Complex(r,i))
-
- public Complex multiply(double scale)
- double r,i
-
- r real scale
- i imaginary scale
- return(new Complex(r,i))
-
11Class ComplexPair
- public class ComplexPair
- private Complex first
- private Complex second
-
- public ComplexPair(Complex first,
- Complex
second) - if(first ! null)
- this.first new Complex(first)
- if(second ! null)
- this.second new Complex(second)
-
- public Complex getFirst()
- if(first ! null)
- return (new Complex(first))
- return (null)
-
- public Complex getSecond()
12public class QuadSolution private int
numberOfSolutions private Complex solution1
private Complex solution2 public
QuadSolution(int solNum,Complex solution1,Complex
solution2) numberOfSolutions solNum
this.solution1 solution1 this.solution2
solution2 public int numSolutions()
return numberOfSolutions public String
toString() String result new
String(solution1.toString())
if(numberOfSolutions 2) result
result.concat("\n" solution2.toString()
"\n") return result
13public Complex getSolution(int solution)
switch(solution) case 1 return
solution1 case 2 if(numberOfSolutions
1) System.err.println("QuadSolution Error
trying to access non" "existant
solution") return null else
return solution2 default
System.err.println("QuadSolution Error trying
to access illegal" "solution number (legal
values are 1,2).") return null
A problem here? (Aliasing)
14public class MyMath
//Assumption only one coefficient a or b may
be zero . public QuadSolution
solveQuadratic(double a,double b,double c)
int solNum Complex solution1null
Complex solution2null double disc
if(a0) solNum1 solution1 new
Complex(-c/b,0.0) else disc
bb - 4ac if(disc0) solNum1 solut
ion1 new Complex(-b/(2a),0) else
if(disclt0) disc Math.sqrt(-disc) solution1
new Complex(-b/(2a),disc/(2a)) solution2
new Complex(-b/(2a),-disc/(2a)) solNum2
else disc Math.sqrt(disc) solution1
new Complex((-bdisc)/(2a),0) solution2 new
Complex((-b-disc)/(2a),0) solNum2
return new QuadSolution(solNum,solution1,so
lution2)
15Arrays
- An array is an ordered list of values
0 1 2 3 4 5 6 7 8
9
An array of size N is indexed from zero to N-1
This array holds 10 values that are indexed from
0 to 9
16Arrays
- A particular value in an array is referenced
using the array name followed by the index in
brackets - For example, the expression
- scores2
- refers to the value 94 (which is the 3rd value
in the array) - That expression represents a place to store a
single integer, and can be used wherever an
integer variable can - For example, it can be assigned a value, printed,
or used in a calculation
17Arrays
- An array stores multiple values of the same type
- That type can be primitive types or objects
- Therefore, we can create an array of integers, or
an array of characters, or an array of String
objects, etc. - In Java, the array itself is an object
- Therefore the name of the array is a object
reference variable, and the array itself is
instantiated separately
18Declaring Arrays
- The scores array could be declared as follows
- int scores new int10
- Note that the type of the array does not specify
its size, but each object of that type has a
specific size - The type of the variable scores is int (an
array of integers) - It is set to a new array object that can hold 10
integers
19Declaring Arrays
- Some examples of array declarations
- float prices new float500
- boolean flags
- flags new boolean20
- char codes new char1750
20Bounds Checking
- Once an array is created, it has a fixed size
- An index used in an array reference must specify
a valid element - That is, the index value must be in bounds (0 to
N-1) - The Java interpreter will throw an exception if
an array index is out of bounds - This is called automatic bounds checking
21Bounds Checking
- For example, if the array codes can hold 100
values, it can only be indexed using the numbers
0 to 99 - If count has the value 100, then the following
reference will cause an ArrayIndexOutOfBoundsExcep
tion - System.out.println (codescount)
- Its common to introduce off-by-one errors when
using arrays
for (int index0 index lt 100
index) codesindex index50 epsilon
22Bounds Checking
- Each array object has a public constant called
length that stores the size of the array - It is referenced using the array name (just like
any other object) - scores.length
- Note that length holds the number of elements,
not the largest index
23First example
public class ReverseNumbers public static
void main (String args) double
numbers new double10
System.out.println ("The size of the array "
numbers.length) for (int index 0 index
lt numbers.length index)
System.out.print ("Enter number " (index1)
" ") numbersindex
EasyInput.readDouble()
System.out.println ("The numbers in reverse")
for (int index numbers.length-1 index gt
0 index--) System.out.print
(numbersindex " ")
System.out.println ()
24Second example
public class LetterCount public
static void main (String args) final
int NUMCHARS 26 int upper new
intNUMCHARS int lower new intNUMCHARS
char current // the current character being
processed int other 0 // counter for
non-alphabetics System.out.println ("Enter a
sentence") String line EasyInput.readString(
) // Count the number of each letter occurance
for (int ch 0 ch lt line.length() ch)
current line.charAt(ch) if
(current gt 'A' current lt 'Z')
uppercurrent-'A' else if
(current gt 'a' current lt 'z')
lowercurrent-'a' else
other
25Second example (continued)
// Print the results
System.out.println () for (int letter0
letter lt upper.length letter)
System.out.print ( (char) (letter 'A') )
System.out.print (" " upperletter)
System.out.print ("\t\t" (char) (letter
'a') ) System.out.println (" "
lowerletter) System.out.println
() System.out.println ("Non-alphabetic
characters " other)
26Array Declarations Revisited
- The brackets of the array type can be associated
with the element type or with the name of the
array - Therefore the following declarations are
equivalent - float prices
- float prices
- The first format is generally more readable
27Initializer Lists
- An initializer list can be used to instantiate
and initialize an array in one step - The values are delimited by braces and separated
by commas - Examples
- int units 147, 323, 89, 933, 540,
- 269, 97, 114, 298, 476
- char letterGrades 'A', 'B', 'C', 'D',
'F'
28Initializer Lists
- Note that when an initializer list is used
- the new operator is not used
- no size value is specified
- The size of the array is determined by the number
of items in the initializer list - An initializer list can only be used in the
declaration of an array
29Arrays of Objects
- The elements of an array can be object references
- The following declaration reserves space to store
25 references to String objects - String words new String25
- It does NOT create the String objects themselves
- Each object stored in an array must be
instantiated separately
30Two-Dimensional Arrays
- A one-dimensional array stores a simple list of
values - A two-dimensional array can be thought of as a
table of values, with rows and columns - A two-dimensional array element is referenced
using two index values - To be precise, a two-dimensional array in Java is
an array of arrays
31Multiplication table
int table new int 1010 for (int i0
ilt10 i) for (int j0 jlt10
j) tableij i j System.out.println(ta
ble43) System.out.println(table21)
32Multidimensional Arrays
- An array can have as many dimensions as needed,
creating a multidimensional array - Each dimension subdivides the previous one into
the specified number of elements - Each array dimension has its own length constant
- Because each dimension is an array of array
references, the arrays within one dimension could
be of different lengths
33Command-Line Arguments
- The signature of the main method indicates that
it takes an array of String objects as a
parameter - These values come from command-line arguments
that are provided when the interpreter is invoked - For example, the following invocation of the
interpreter passes an array of three String
objects into main - gt java DoIt pennsylvania texas california
- These strings are stored at indexes 0-2 of the
parameter