George Blank
University Lecturer
CS 602
Java and the Web
Object Oriented Software Development
Using Java
Chapter 4
Elements of Java
• This chapter is a catalog of the Java
language. It contains a lot of information in a
highly compressed format. Some students
may wish to use another supplementary Java
textbook that has a lot of exercises to practice
different features of the language instead of
having so many at once. There are lots of
such texts in bookstores.
Java Uniqueness
•
•
•
•
•
•
•
•
Purely object-oriented—no compromises!
Primitive types are not objects
No multiple inheritance (simulate with interfaces)
No GOTO statement
16 bit international characters only (Unicode)
Exception handling
Automatic memory management (garbage collection)
Multithreaded programming.
Standardization
• In many computer languages, there are
differences between implementations of the
language on different platforms or with
different compilers. For example, C long
integers might have different maximum and
minimum values. It is a strength of Java that
everything is standardized on all platforms.
Variables and Types
• A variable is a location in memory where values can
be stored and referenced.
• Variables are associated with types, which have
particular data sizes and a restricted set of valid
operations that can be performed on them.
• Variable declarations assign an identifier, a type, and
may declare an initial value. Many types have a
default value. For example, an uninitialized integer
defaults to 0.
Variable (a memory location)
a value
(a default value)
a type
address
a name
The address or value may be passed as a parameter
Constructors
• A constructor is a special form of method that has only
one purpose—to create an instance of a class. This is
different from other methods, which add behavior to a
class.
• It is good Java practice to supply a no-arguments
constructor in addition to any that take parameters to
allow the Java Virtual Machine to create instances of the
class dynamically at run time. The text shows two
constructors for Point (next slide).
Point example (text, p. 104)
public class Point {
public double x, y;
public Point() { //no-arg constructor
x = 0.0; y = 0.0;
}
public Point(double init_x, double init_y) {
x = init_x; y = init_y;
}
…
}
• Here, the no-arg constructor supplies default values for the
point location.
Singleton Classes
• Classes that are not supposed to have more
than one instance at a time, such as a toplevel window or a system timer, can be limited
as a singleton class, an instance of the
Singleton design pattern that will be
discussed in a future lecture.
• The following slide shows a singleton class.
Singleton Class
Note the private static constructor that prevents multiple instances.
Reference Types
• References to classes, interfaces and arrays
are implemented in Java as 32 bit pointers
and are called reference types.
• While C and C++ pointers can be cast to
other types, that is forbidden in Java. No
direct manipulation of reference types is
permitted. This reduces errors and increases
security.
Variable Scope
• Local variables are only valid within the block
in which they are declared. Blocks in Java
open with { and close with } and can have
other blocks embedded in them. Local
variables are not automatically initialized.
Variable declarations must be terminated with
a;
Flow Control
•
•
•
•
return ends a method and returns control to the caller
if and else are used for selection
while, do-while and for are used for loops
break and continue expand flow control
Class Declarations
• Class declarations define classes, which can
be instantiated as objects and are assigned
to a reference type.
• A class declaration includes a class name
and fields, methods, and nested class
declarations. The fields are known as the
variables or attributes of a class.
Class and Method Modifiers
•
•
•
•
•
<none> –Field is accessible by all others within a package
public –Field is accessible by any class
private –Field is accessible only by itself
static –Field is shared by all instances of a class
abstract –Class contains only abstract methods, method
defers implementation to subclasses
• final –Field may not be extended with subclasses
A field may be a class or method.
Specialized Method Modifiers
• synchronized – an atomic thread in a
multithread environment
• native –implemented in C and C++
main Method
• Every program must have a main method, declared
as
public static void main(String [] args) {
…
}
• The array of String arguments allows initialization
values to be passed to the class at start up time. Only
one class in the program requires a main method.
Print Command args (NetBeans)
Things to understand
• Here are some of the features of Java that
students have had trouble with in the past,
with page numbers from the text:
• String concatenation p. 84
• Assignment p. 87
• Casts p. 89
• Initialization p. 91
More things to understand
•
•
•
•
•
•
•
Multidimensional arrays p. 93
Expressions for object creation p. 94
Local variables and scope p. 95
The return statement p. 95
Break and continue p. 99
Class and method modifiers pp. 101-102
Accessibility p. 103
More things to understand
•
•
•
•
•
•
•
Constructors p. 104
Accessors p. 106
Parameter Passing pp. 107-109
Class fields pp. 110-111
Singletons p. 114
This pp.114-115
Interfaces pp. 117-118
More things to understand
•
•
•
•
•
•
String methods p. 119
Standard input, output and error pp. 123ff
Wrappers pp. 128-129
Packages pp. 134-136
Exceptions pp. 139-148
The chapter summary contains many
references to key concepts.
Code Examples from text
• Note: All the code that follows contains the
following header which has been removed to
fit on the screen:
• /*
• * Copyright (c) 1999-2002, Xiaoping Jia.
• * All Rights Reserved.
• */
• Respect the author’s copyright!
Break
Records
Bubble
Sort
Copy
Copy Text File
Digital
Clock
page 1
Digital
Clock
page 2
MaxMin
Maximum (with try-catch)
String
Compare
An Interned String
is a copy of a String
that has the same
content but is a
different String.
Word:
String
Tokenizer
String Handling
• Understand the difference between the
immutable String class and the mutable
StringBuffer class.
• Strings have special privileges not shared by
ordinary classes including the creation of
string literals and the use of concatenation
operators.
Garbage collection
• Garbage collection, especially remote
garbage collection, is a big deal in Java. See
the explanation on page 90.
• One reason that garbage collection is so
important is that C does not have it, and a
substantial number of problems in Microsoft
Windows come from the failure to free
resources no longer in use.
Bibliography
• Jia, Xiaoping, Object Oriented Software
Development Using Java. Addison Wesley,
2003