Java Overview
Java Overview
CSE 422
Michigan State University
prepared by Philip K. McKinley
presented by SeyedMasoud Sadjadi
These materials are excerpted from a course created by Arthur Ryman
of IBM Toronto, and used at the University of Toronto. Thanks!
Agenda
CSE 422
09/16/2003
What is Java?
CSE 422
09/16/2003
Smalltalk
CSE 422
09/16/2003
javac
Environment
Java
Byte-code
.java
Java Overview by SeyedMasoud Sadjadi
Java VM
.class
CSE 422
09/16/2003
.class
files
interpret
load
Java Runtime
loaded classes
(byte-codes)
call
Native
.dll
Native
.dll
CSE 422
09/16/2003
Windowed GUIs
Full set of standard window-based GUI classes
Extremely easy to build GUI clients
Networking
Library supports retrieving files, images, etc. via URL
Clean support for sockets providing access to Internetbased services
VM can dynamically load classes over the Internet
CSE 422
09/16/2003
Agenda
CSE 422
09/16/2003
JDK Tools
CSE 422
09/16/2003
JIT Compiler
JVM running
Applet or
Application
.class
machine
code
J.I.T.
Compiler
CSE 422
09/16/2003
10
Eclipse
CSE 422
09/16/2003
11
Agenda
CSE 422
09/16/2003
12
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
13
Java Programs
Application
a
CSE 422
09/16/2003
CSE 422
09/16/2003
Analysis
import java.io.*;
/** File: Count.java*/
public class Count {`
public static void main (String[] s) throws IOException {
int count = 0;
while (System.in.read() != -1)
count++;
System.out.println("Input has "+count+" chars");
}
}
CSE 422
09/16/2003
Comments
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
18
CSE 422
09/16/2003
Primitive Type
Precision
Default Value
byte
8 bits
0
short
16 bits
0
int
32 bits
0
long
64 bits
0
char
16 bits
'\u0000'
float
32 bits
+0.0f
double
64 bits
+0.0d
boolean
false
No variable can have an undefined value
Class variables are implicitly initialized to the default
unless set explicitly
Local variables are not implicitly initialized to a default
CSE 422
09/16/2003
Scope of a Variable
i
f
class MyClass {
float myMethod( float f ) {
f1
float f1;
f2
{ // define a block inside a method just for fun
float f2 = 10F;
f1 = f2;
}
f3
float f3 = f1;
return f*f3+i;
}
int i = 0;
}
CSE 422
09/16/2003
Access Specifiers
protected
available only to the current class and its subclasses
private
available only to the class in which it is declared. This is
applied at the class not the object level.
package
If no access specifier is explicitly, available only within
the current package
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
23
CSE 422
09/16/2003
do {
statements;
} while (condition);
goto // reserved word that does nothing!
break label;
continue label;
restart:
for (int i = start; i < a.length ; ++i) {
// mess with start
if (a[i] == ';')
continue restart;
}
CSE 422
Java Overview by SeyedMasoud
Sadjadi
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
26
Creating Objects
CSE 422
09/16/2003
CSE 422
09/16/2003
o1
MyClass
Object
o2
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
30
Arrays
Object Array
Date dArray[]
for (int i=0;
// Must now
dArray[i] =
CSE 422
09/16/2003
Multidimensional Arrays
CSE 422
09/16/2003
Initializing Arrays
This is equivalent to
int lookup_table[] = new int[8];
lookup_table[0] = 1;
String param_info[][] = {
{"fps", "1-10", "frames per second"},
{"repeat", "boolean", "repeat image loop"},
{"imgs","url","images directory"}
};
CSE 422
09/16/2003
Strings
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
35
Declaring Methods
CSE 422
09/16/2003
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
38
Declaring Classes
CSE 422
09/16/2003
Constructors
CSE 422
09/16/2003
Default Constructor
CSE 422
09/16/2003
CSE 422
09/16/2003
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
44
Inheritance
CSE 422
09/16/2003
Every class you define has a super class. There is a special class
called Object which is the implicit super class of any class which does
not explicitly descend from a class, so
class MyClass
is equivalent to
class MyClass extends Object
CSE 422
09/16/2003
What's Inherited?
When one class extends from another, the sub class inherits those
variables and methods that:
are declared with the public or protected access specifiers.
have no access specifier
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
48
CSE 422
09/16/2003
CSE 422
09/16/2003
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
52
Abstract Classes
CSE 422
09/16/2003
CSE 422
09/16/2003
Interfaces
All interfaces are public. All methods of interfaces are implicitly public
and abstract
Also permitted as part of an interface are public static final fields.
public interface myInterface {
public static final aConstant=100;
}
CSE 422
09/16/2003
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
57
Garbage Collection
CSE 422
09/16/2003
Finalize
Note that this method may NOT have any other method
modifiers associated with it.
When an object is first detected to be unreferenced, the
finalize method is invoked (if present). If it is subsequently
determined to be unreferenced, the object is reclaimed.
All uncaught exceptions occurring during finalization are
ignored.
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
60
CSE 422
09/16/2003
Class Loading
CSE 422
09/16/2003
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
64
Compilation Units
CSE 422
09/16/2003
Packages
CSE 422
09/16/2003
The CLASSPATH
CSE 422
09/16/2003
Language Overview
Java Programs
Variables
Flow Control
Objects
Arrays
Methods
Classes
Inheritance
Polymorphism
Abstract Classes
Garbage Collection
Reflection
Packaging
Java vs. C++
CSE 422
09/16/2003
68
have templates
garbage collection
synchronous destructors
CSE 422
09/16/2003
Agenda
CSE 422
09/16/2003
70
Summary
CSE 422
09/16/2003