- •CONTENTS
- •1.1 Introduction
- •1.2 What Is a Computer?
- •1.3 Programs
- •1.4 Operating Systems
- •1.5 Java, World Wide Web, and Beyond
- •1.6 The Java Language Specification, API, JDK, and IDE
- •1.7 A Simple Java Program
- •1.8 Creating, Compiling, and Executing a Java Program
- •1.9 (GUI) Displaying Text in a Message Dialog Box
- •2.1 Introduction
- •2.2 Writing Simple Programs
- •2.3 Reading Input from the Console
- •2.4 Identifiers
- •2.5 Variables
- •2.7 Named Constants
- •2.8 Numeric Data Types and Operations
- •2.9 Problem: Displaying the Current Time
- •2.10 Shorthand Operators
- •2.11 Numeric Type Conversions
- •2.12 Problem: Computing Loan Payments
- •2.13 Character Data Type and Operations
- •2.14 Problem: Counting Monetary Units
- •2.15 The String Type
- •2.16 Programming Style and Documentation
- •2.17 Programming Errors
- •2.18 (GUI) Getting Input from Input Dialogs
- •3.1 Introduction
- •3.2 boolean Data Type
- •3.3 Problem: A Simple Math Learning Tool
- •3.4 if Statements
- •3.5 Problem: Guessing Birthdays
- •3.6 Two-Way if Statements
- •3.7 Nested if Statements
- •3.8 Common Errors in Selection Statements
- •3.9 Problem: An Improved Math Learning Tool
- •3.10 Problem: Computing Body Mass Index
- •3.11 Problem: Computing Taxes
- •3.12 Logical Operators
- •3.13 Problem: Determining Leap Year
- •3.14 Problem: Lottery
- •3.15 switch Statements
- •3.16 Conditional Expressions
- •3.17 Formatting Console Output
- •3.18 Operator Precedence and Associativity
- •3.19 (GUI) Confirmation Dialogs
- •4.1 Introduction
- •4.2 The while Loop
- •4.3 The do-while Loop
- •4.4 The for Loop
- •4.5 Which Loop to Use?
- •4.6 Nested Loops
- •4.7 Minimizing Numeric Errors
- •4.8 Case Studies
- •4.9 Keywords break and continue
- •4.10 (GUI) Controlling a Loop with a Confirmation Dialog
- •5.1 Introduction
- •5.2 Defining a Method
- •5.3 Calling a Method
- •5.4 void Method Example
- •5.5 Passing Parameters by Values
- •5.6 Modularizing Code
- •5.7 Problem: Converting Decimals to Hexadecimals
- •5.8 Overloading Methods
- •5.9 The Scope of Variables
- •5.10 The Math Class
- •5.11 Case Study: Generating Random Characters
- •5.12 Method Abstraction and Stepwise Refinement
- •6.1 Introduction
- •6.2 Array Basics
- •6.3 Problem: Lotto Numbers
- •6.4 Problem: Deck of Cards
- •6.5 Copying Arrays
- •6.6 Passing Arrays to Methods
- •6.7 Returning an Array from a Method
- •6.8 Variable-Length Argument Lists
- •6.9 Searching Arrays
- •6.10 Sorting Arrays
- •6.11 The Arrays Class
- •7.1 Introduction
- •7.2 Two-Dimensional Array Basics
- •7.3 Processing Two-Dimensional Arrays
- •7.4 Passing Two-Dimensional Arrays to Methods
- •7.5 Problem: Grading a Multiple-Choice Test
- •7.6 Problem: Finding a Closest Pair
- •7.7 Problem: Sudoku
- •7.8 Multidimensional Arrays
- •8.1 Introduction
- •8.2 Defining Classes for Objects
- •8.3 Example: Defining Classes and Creating Objects
- •8.4 Constructing Objects Using Constructors
- •8.5 Accessing Objects via Reference Variables
- •8.6 Using Classes from the Java Library
- •8.7 Static Variables, Constants, and Methods
- •8.8 Visibility Modifiers
- •8.9 Data Field Encapsulation
- •8.10 Passing Objects to Methods
- •8.11 Array of Objects
- •9.1 Introduction
- •9.2 The String Class
- •9.3 The Character Class
- •9.4 The StringBuilder/StringBuffer Class
- •9.5 Command-Line Arguments
- •9.6 The File Class
- •9.7 File Input and Output
- •9.8 (GUI) File Dialogs
- •10.1 Introduction
- •10.2 Immutable Objects and Classes
- •10.3 The Scope of Variables
- •10.4 The this Reference
- •10.5 Class Abstraction and Encapsulation
- •10.6 Object-Oriented Thinking
- •10.7 Object Composition
- •10.8 Designing the Course Class
- •10.9 Designing a Class for Stacks
- •10.10 Designing the GuessDate Class
- •10.11 Class Design Guidelines
- •11.1 Introduction
- •11.2 Superclasses and Subclasses
- •11.3 Using the super Keyword
- •11.4 Overriding Methods
- •11.5 Overriding vs. Overloading
- •11.6 The Object Class and Its toString() Method
- •11.7 Polymorphism
- •11.8 Dynamic Binding
- •11.9 Casting Objects and the instanceof Operator
- •11.11 The ArrayList Class
- •11.12 A Custom Stack Class
- •11.13 The protected Data and Methods
- •11.14 Preventing Extending and Overriding
- •12.1 Introduction
- •12.2 Swing vs. AWT
- •12.3 The Java GUI API
- •12.4 Frames
- •12.5 Layout Managers
- •12.6 Using Panels as Subcontainers
- •12.7 The Color Class
- •12.8 The Font Class
- •12.9 Common Features of Swing GUI Components
- •12.10 Image Icons
- •13.1 Introduction
- •13.2 Exception-Handling Overview
- •13.3 Exception-Handling Advantages
- •13.4 Exception Types
- •13.5 More on Exception Handling
- •13.6 The finally Clause
- •13.7 When to Use Exceptions
- •13.8 Rethrowing Exceptions
- •13.9 Chained Exceptions
- •13.10 Creating Custom Exception Classes
- •14.1 Introduction
- •14.2 Abstract Classes
- •14.3 Example: Calendar and GregorianCalendar
- •14.4 Interfaces
- •14.5 Example: The Comparable Interface
- •14.6 Example: The ActionListener Interface
- •14.7 Example: The Cloneable Interface
- •14.8 Interfaces vs. Abstract Classes
- •14.9 Processing Primitive Data Type Values as Objects
- •14.10 Sorting an Array of Objects
- •14.11 Automatic Conversion between Primitive Types and Wrapper Class Types
- •14.12 The BigInteger and BigDecimal Classes
- •14.13 Case Study: The Rational Class
- •15.1 Introduction
- •15.2 Graphical Coordinate Systems
- •15.3 The Graphics Class
- •15.4 Drawing Strings, Lines, Rectangles, and Ovals
- •15.5 Case Study: The FigurePanel Class
- •15.6 Drawing Arcs
- •15.7 Drawing Polygons and Polylines
- •15.8 Centering a String Using the FontMetrics Class
- •15.9 Case Study: The MessagePanel Class
- •15.10 Case Study: The StillClock Class
- •15.11 Displaying Images
- •15.12 Case Study: The ImageViewer Class
- •16.1 Introduction
- •16.2 Event and Event Source
- •16.3 Listeners, Registrations, and Handling Events
- •16.4 Inner Classes
- •16.5 Anonymous Class Listeners
- •16.6 Alternative Ways of Defining Listener Classes
- •16.7 Problem: Loan Calculator
- •16.8 Window Events
- •16.9 Listener Interface Adapters
- •16.10 Mouse Events
- •16.11 Key Events
- •16.12 Animation Using the Timer Class
- •17.1 Introduction
- •17.2 Buttons
- •17.3 Check Boxes
- •17.4 Radio Buttons
- •17.5 Labels
- •17.6 Text Fields
- •17.7 Text Areas
- •17.8 Combo Boxes
- •17.9 Lists
- •17.10 Scroll Bars
- •17.11 Sliders
- •17.12 Creating Multiple Windows
- •18.1 Introduction
- •18.2 Developing Applets
- •18.3 The HTML File and the <applet> Tag
- •18.4 Applet Security Restrictions
- •18.5 Enabling Applets to Run as Applications
- •18.6 Applet Life-Cycle Methods
- •18.7 Passing Strings to Applets
- •18.8 Case Study: Bouncing Ball
- •18.9 Case Study: TicTacToe
- •18.10 Locating Resources Using the URL Class
- •18.11 Playing Audio in Any Java Program
- •18.12 Case Study: Multimedia Animations
- •19.1 Introduction
- •19.2 How is I/O Handled in Java?
- •19.3 Text I/O vs. Binary I/O
- •19.4 Binary I/O Classes
- •19.5 Problem: Copying Files
- •19.6 Object I/O
- •19.7 Random-Access Files
- •20.1 Introduction
- •20.2 Problem: Computing Factorials
- •20.3 Problem: Computing Fibonacci Numbers
- •20.4 Problem Solving Using Recursion
- •20.5 Recursive Helper Methods
- •20.6 Problem: Finding the Directory Size
- •20.7 Problem: Towers of Hanoi
- •20.8 Problem: Fractals
- •20.9 Problem: Eight Queens
- •20.10 Recursion vs. Iteration
- •20.11 Tail Recursion
- •APPENDIXES
- •INDEX
1.4 Operating Systems 7
A program written in a high-level language is called a source program or source code. source program Since a computer cannot understand a source program, a program called a compiler is used to compiler translate it into a machine-language program. The machine-language program is then linked
with other supporting library code to form an executable file, which can be run on the machine, as shown in Figure 1.4. On Windows, executable files have extension .exe.
Source File |
Compiler |
Machine-language |
Linker |
Executable |
|
|
File |
|
File |
Library Code
FIGURE 1.4 A source program is compiled into a machine-language file, which is then linked with the system library to form an executable file.
1.4 Operating Systems
The operating system (OS) is the most important program that runs on a computer, which OS manages and controls a computer’s activities. The popular operating systems are Microsoft Windows, Mac OS, and Linux. Application programs, such as a Web browser or a word processor, cannot run without an operating system. The interrelationship of hardware, operat-
ing system, application software, and the user is shown in Figure 1.5.
FIGURE 1.5 The operating system is the software that controls and manages the system.
The major tasks of an operating system are:
■Controlling and monitoring system activities
■Allocating and assigning system resources
■Scheduling operations
1.4.1Controlling and Monitoring System Activities
Operating systems perform basic tasks, such as recognizing input from the keyboard, sending output to the monitor, keeping track of files and directories on the disk, and controlling peripheral devices, such as disk drives and printers. They also make sure that different programs and users running at the same time do not interfere with each other, and they are responsible for security, ensuring that unauthorized users do not access the system.
8 Chapter 1 Introduction to Computers, Programs, and Java
1.4.2Allocating and Assigning System Resources
The operating system is responsible for determining what computer resources a program needs (e.g., CPU, memory, disks, input and output devices) and for allocating and assigning them to run the program.
|
1.4.3 Scheduling Operations |
|
The OS is responsible for scheduling programs to make efficient use of system resources. Many |
|
of today’s operating systems support such techniques as multiprogramming, multithreading, or |
|
multiprocessing to increase system performance. |
multiprogramming |
Multiprogramming allows multiple programs to run simultaneously by sharing the CPU. |
|
The CPU is much faster than the computer’s other components. As a result, it is idle most of |
|
the time—for example, while waiting for data to be transferred from the disk or from other |
|
sources. A multiprogramming OS takes advantage of this situation by allowing multiple pro- |
|
grams to use the CPU when it would otherwise be idle. For example, you may use a word |
|
processor to edit a file at the same time as the Web browser is downloading a file. |
multithreading |
Multithreading allows concurrency within a program, so that its subtasks can run at the |
|
same time. For example, a word-processing program allows users to simultaneously edit text |
|
and save it to a file. In this example, editing and saving are two tasks within the same applica- |
|
tion. These two tasks may run on separate threads concurrently. |
multiprocessing |
Multiprocessing, or parallel processing, uses two or more processors together to perform a |
|
task. It is like a surgical operation where several doctors work together on one patient. |
1.5 Java, World Wide Web, and Beyond
This book introduces Java programming. Java was developed by a team led by James Gosling at Sun Microsystems. Originally called Oak, it was designed in 1991 for use in embedded chips in consumer electronic appliances. In 1995, renamed Java, it was redesigned for developing Internet applications. For the history of Java, see java.sun.com/features/1998/05/birthday.html.
Java has become enormously popular. Its rapid rise and wide acceptance can be traced to its design characteristics, particularly its promise that you can write a program once and run it anywhere. As stated by Sun, Java is simple, object oriented, distributed, interpreted, robust, secure, architecture neutral, portable, high performance, multithreaded, and dynamic. For the
|
anatomy of Java characteristics, see www.cs.armstrong.edu/liang/JavaCharacteristics.pdf. |
|
Java is a full-featured, general-purpose programming language that can be used to develop |
|
robust mission-critical applications. Today, it is employed not only for Web programming, but |
|
also for developing standalone applications across platforms on servers, desktops, and mobile |
|
devices. It was used to develop the code to communicate with and control the robotic rover on |
|
Mars. Many companies that once considered Java to be more hype than substance are now |
|
using it to create distributed applications accessed by customers and partners across the Inter- |
|
net. For every new project being developed today, companies are asking how they can use |
|
Java to make their work easier. |
|
The World Wide Web is an electronic information repository that can be accessed on the |
|
Internet from anywhere in the world. The Internet, the Web’s infrastructure, has been around |
|
for more than thirty years. The colorful World Wide Web and sophisticated Web browsers are |
|
the major reason for the Internet’s popularity. |
|
The primary authoring language for the Web is the Hypertext Markup Language (HTML). |
|
HTML is a simple language for laying out documents, linking documents on the Internet, and |
|
bringing images, sound, and video alive on the Web. However, it cannot interact with the user |
|
except through simple forms. Web pages in HTML are essentially static and flat. |
|
Java initially became attractive because Java programs can be run from a Web browser. |
applet |
Such programs are called applets. Applets employ a modern graphical interface with buttons, |
1.5 Java, World Wide Web, and Beyond 9
text fields, text areas, radio buttons, and so on, to interact with users on the Web and process their requests. Applets make the Web responsive, interactive, and fun to use. Figure 1.6 shows an applet running from a Web browser for playing a Tic Tac Toe game.
Enter this URL from a Web browser
FIGURE 1.6 A Java applet for playing TicTacToe is embedded in an HTML page.
Tip
For a demonstration of Java applets, visit java.sun.com/applets. This site provides a rich Java resource as well as links to other cool applet demo sites. java.sun.com is the official Sun Java Website.
Java can also be used to develop applications on the server side. These applications can be run from a Web server to generate dynamic Web pages. The automatic grading system for this book, as shown in Figure 1.7, was developed using Java.
Enter this URL from a Web browser
FIGURE 1.7 Java was used to develop an automatic grading system to accompany this book.
10 Chapter 1 Introduction to Computers, Programs, and Java
Java is a versatile programming language. You can use it to develop applications on your desktop and on the server. You can also use it to develop applications for small handheld devices. Figure 1.8 shows a Java-programmed calendar displayed on a BlackBerry© and on a cell phone.
|
FIGURE 1.8 Java can be used to develop applications for hand-held and wireless devices, |
|
such as a BlackBerry© (left) and a cell phone (right). |
|
1.6 The Java Language Specification, API, JDK, and IDE |
|
Computer languages have strict rules of usage. If you do not follow the rules when writing a |
|
program, the computer will be unable to understand it. The Java language specification and |
|
Java API define the Java standard. |
Java language specification |
The Java language specification is a technical definition of the language that includes the |
|
syntax and semantics of the Java programming language. The complete Java language speci- |
|
fication can be found at java.sun.com/docs/books/jls. |
API |
The application program interface (API) contains predefined classes and interfaces for |
|
developing Java programs. The Java language specification is stable, but the API is still |
|
expanding. At the Sun Java Website (java.sun.com), you can view and download the latest ver- |
|
sion of the Java API. |
|
Java is a full-fledged and powerful language that can be used in many ways. It comes in |
Java SE, EE, and ME |
three editions: Java Standard Edition (Java SE), Java Enterprise Edition (Java EE), and Java |
|
Micro Edition (Java ME). Java SE can be used to develop client-side standalone applications |
|
or applets. Java EE can be used to develop server-side applications, such as Java servlets and |
|
JavaServer Pages. Java ME can be used to develop applications for mobile devices, such as |
|
cell phones. This book uses Java SE to introduce Java programming. |
|
There are many versions of Java SE. The latest, Java SE 6, will be used in this book. Sun |
|
releases each version with a Java Development Toolkit (JDK). For Java SE 6, the Java Devel- |
JDK 1.6 = JDK 6 |
opment Toolkit is called JDK 1.6 (also known as Java 6 or JDK 6). |
|
JDK consists of a set of separate programs, each invoked from a command line, for devel- |
|
oping and testing Java programs. Besides JDK, you can use a Java development tool (e.g., Net- |
Java IDE |
Beans, Eclipse, and TextPad)—software that provides an integrated development environment |
|
(IDE) for rapidly developing Java programs. Editing, compiling, building, debugging, and |