- Home
- Computers & IT
- Introduction to Programming Using Java
Introduction to Programming Using Java

Publisher: Ebookdb.org/Unknown
Keywords: java, using, programming, introduction
Number of Pages: 734
Published: 2011-01-31
eBookDB-ID: EBDB135010

Book Description:
ntroduction to Programming Using Java is a free textbook on programming in the Java programming language. It can be used on line or downloaded at http://math.hws.edu/javanotes/. More information is available there. This printed version is for the convenience of people who would like a nicely bound copy. It does not include some features that are available on-line: answers to exercises and quizzes, source code files, and a glossary.
Contents
Preface
Chapter 1: Overview: The Mental Landscape
•Section 1.1 The Fetch and Execute Cycle: Machine Language
•Section 1.2 Asynchronous Events: Polling Loops and Interrupts
•Section 1.3 The Java Virtual Machine
•Section 1.4 Fundamental Building Blocks of Programs
•Section 1.5 Objects and Object-oriented Programming
•Section 1.6 The Modern User Interface
•Section 1.7 The Internet and Beyond
•Quiz
Chapter 2: Programming in the Small I: Names and Things
•Section 2.1 The Basic Java Application
•Section 2.2 Variables and the Primitive Types ◦2.2.1 Variables
◦2.2.2 Types and Literals
◦2.2.3 Variables in Programs
•Section 2.3 Strings, Objects, Enums, and Subroutines ◦2.3.1 Built-in Subroutines and Functions
◦2.3.2 Operations on Strings
◦2.3.3 Introduction to Enums
•Section 2.4 Text Input and Output ◦2.4.1 A First Text Input Example
◦2.4.2 Text Output
◦2.4.3 TextIO Input Functions
◦2.4.4 Formatted Output
◦2.4.5 Introduction to File I/O
◦2.4.6 Using Scanner for Input
•Section 2.5 Details of Expressions ◦2.5.1 Arithmetic Operators
◦2.5.2 Increment and Decrement
◦2.5.3 Relational Operators
◦2.5.4 Boolean Operators
◦2.5.5 Conditional Operator
◦2.5.6 Assignment Operators and Type-Casts
◦2.5.7 Type Conversion of Strings
◦2.5.8 Precedence Rules
•Section 2.6 Programming Environments ◦2.6.1 Java Development Kit
◦2.6.2 Command Line Environment
◦2.6.3 IDEs and Eclipse
◦2.6.4 The Problem of Packages
•Programming Exercises
•Quiz
Chapter 3: Programming in the Small II: Control
•Section 3.1 Blocks, Loops, and Branches ◦3.1.1 Blocks
◦3.1.2 The Basic While Loop
◦3.1.3 The Basic If Statement
•Section 3.2 Algorithm Development ◦3.2.1 Pseudocode and Stepwise Refinement
◦3.2.2 The 3N+1 Problem
◦3.2.3 Coding, Testing, Debugging
•Section 3.3 The while and do..while Statements ◦3.3.1 The while Statement
◦3.3.2 The do..while Statement
◦3.3.3 break and continue
•Section 3.4 The for Statement ◦3.4.1 For Loops
◦3.4.2 Example: Counting Divisors
◦3.4.3 Nested for Loops
◦3.4.4 Enums and for-each Loops
•Section 3.5 The if Statement ◦3.5.1 The Dangling else Problem
◦3.5.2 The if...else if Construction
◦3.5.3 If Statement Examples
◦3.5.4 The Empty Statement
•Section 3.6 The switch Statement ◦3.6.1 The Basic switch Statement
◦3.6.2 Menus and switch Statements
◦3.6.3 Enums in switch Statements
◦3.6.4 Definite Assignment
•Section 3.7 Introduction to Exceptions and try..catch ◦3.7.1 Exceptions
◦3.7.2 try..catch
◦3.7.3 Exceptions in TextIO
•Section 3.8 Introduction to GUI Programming
•Programming Exercises
•Quiz
Chapter 4: Programming in the Large I: Subroutines
•Section 4.1 Black Boxes
•Section 4.2 Static Subroutines and Static Variables ◦4.2.1 Subroutine Definitions
◦4.2.2 Calling Subroutines
◦4.2.3 Subroutines in Programs
◦4.2.4 Member Variables
•Section 4.3 Parameters ◦4.3.1 Using Parameters
◦4.3.2 Formal and Actual Parameters
◦4.3.3 Overloading
◦4.3.4 Subroutine Examples
◦4.3.5 Throwing Exceptions
◦4.3.6 Global and Local Variables
•Section 4.4 Return Values ◦4.4.1 The return statement
◦4.4.2 Function Examples
◦4.4.3 3N+1 Revisited
•Section 4.5 APIs, Packages, and Javadoc ◦4.5.1 Toolboxes
◦4.5.2 Java's Standard Packages
◦4.5.3 Using Classes from Packages
◦4.5.4 Javadoc
•Section 4.6 More on Program Design ◦4.6.1 Preconditions and Postconditions
◦4.6.2 A Design Example
◦4.6.3 The Program
•Section 4.7 The Truth About Declarations ◦4.7.1 Initialization in Declarations
◦4.7.2 Named Constants
◦4.7.3 Naming and Scope Rules
•Programming Exercises
•Quiz
Chapter 5: Programming in the Large II: Objects and Classes
•Section 5.1 Objects, Instance Methods, and Instance Variables ◦5.1.1 Objects, Classes, and Instances
◦5.1.2 Fundamentals of Objects
◦5.1.3 Getters and Setters
•Section 5.2 Constructors and Object Initialization ◦5.2.1 Initializing Instance Variables
◦5.2.2 Constructors
◦5.2.3 Garbage Collection
•Section 5.3 Programming with Objects ◦5.3.1 Some Built-in Classes
◦5.3.2 Wrapper Classes and Autoboxing
◦5.3.3 The class "Object"
◦5.3.4 Object-oriented Analysis and Design
•Section 5.4 Programming Example: Card, Hand, Deck ◦5.4.1 Designing the classes
◦5.4.2 The Card Class
◦5.4.3 Example: A Simple Card Game
•Section 5.5 Inheritance, Polymorphism, and Abstract Classes ◦5.5.1 Extending Existing Classes
◦5.5.2 Inheritance and Class Hierarchy
◦5.5.3 Example: Vehicles
◦5.5.4 Polymorphism
◦5.5.5 Abstract Classes
•Section 5.6 this and super ◦5.6.1 The Special Variable this
◦5.6.2 The Special Variable super
◦5.6.3 Constructors in Subclasses
•Section 5.7 Interfaces, Nested Classes, and Other Details ◦5.7.1 Interfaces
◦5.7.2 Nested Classes
◦5.7.3 Anonymous Inner Classes
◦5.7.4 Mixing Static and Non-static
◦5.7.5 Static Import
◦5.7.6 Enums as Classes
•Programming Exercises
•Quiz
Chapter 6: Introduction to GUI Programming
•Section 6.1 The Basic GUI Application ◦6.1.1 JFrame and JPanel
◦6.1.2 Components and Layout
◦6.1.3 Events and Listeners
•Section 6.2 Applets and HTML ◦6.2.1 JApplet
◦6.2.2 Reusing Your JPanels
◦6.2.3 Basic HTML
◦6.2.4 Applets on Web Pages
•Section 6.3 Graphics and Painting ◦6.3.1 Coordinates
◦6.3.2 Colors
◦6.3.3 Fonts
◦6.3.4 Shapes
◦6.3.5 Graphics2D
◦6.3.6 An Example
•Section 6.4 Mouse Events ◦6.4.1 Event Handling
◦6.4.2 MouseEvent and MouseListener
◦6.4.3 Mouse Coordinates
◦6.4.4 MouseMotionListeners and Dragging
◦6.4.5 Anonymous Event Handlers and Adapter Classes
•Section 6.5 Timers, KeyEvents, and State Machines ◦6.5.1 Timers and Animation
◦6.5.2 Keyboard Events
◦6.5.3 Focus Events
◦6.5.4 State Machines
•Section 6.6 Basic Components ◦6.6.1 JButton
◦6.6.2 JLabel
◦6.6.3 JCheckBox
◦6.6.4 JTextField and JTextArea
◦6.6.5 JComboBox
◦6.6.6 JSlider
•Section 6.7 Basic Layout ◦6.7.1 Basic Layout Managers
◦6.7.2 Borders
◦6.7.3 SliderAndComboBoxDemo
◦6.7.4 A Simple Calculator
◦6.7.5 Using a null Layout
◦6.7.6 A Little Card Game
•Section 6.8 Menus and Dialogs ◦6.8.1 Menus and Menubars
◦6.8.2 Dialogs
◦6.8.3 Fine Points of Frames
◦6.8.4 Creating Jar Files
•Programming Exercises
•Quiz
Chapter 7: Arrays
•Section 7.1 Creating and Using Arrays ◦7.1.1 Arrays
◦7.1.2 Using Arrays
◦7.1.3 Array Initialization
•Section 7.2 Programming With Arrays ◦7.2.1 Arrays and for Loops
◦7.2.2 Arrays and for-each Loops
◦7.2.3 Array Types in Subroutines
◦7.2.4 Random Access
◦7.2.5 Arrays of Objects
◦7.2.6 Variable Arity Methods
•Section 7.3 Dynamic Arrays and ArrayLists ◦7.3.1 Partially Full Arrays
◦7.3.2 Dynamic Arrays
◦7.3.3 ArrrayLists
◦7.3.4 Parameterized Types
◦7.3.5 Vectors
•Section 7.4 Searching and Sorting ◦7.4.1 Searching
◦7.4.2 Association Lists
◦7.4.3 Insertion Sort
◦7.4.4 Selection Sort
◦7.4.5 Unsorting
•Section 7.5 Multi-dimensional Arrays ◦7.5.1 Creating Two-dimensional Arrays
◦7.5.2 Using Two-dimensional Arrays
◦7.5.3 Example: Checkers
•Programming Exercises
•Quiz
Chapter 8: Correctness, Robustness, Efficiency
•Section 8.1 Introduction to Correctness and Robustness ◦8.1.1 Horror Stories
◦8.1.2 Java to the Rescue
◦8.1.3 Problems Remain in Java
•Section 8.2 Writing Correct Programs ◦8.2.1 Provably Correct Programs
◦8.2.2 Robust Handling of Input
•Section 8.3 Exceptions and try..catch ◦8.3.1 Exceptions and Exception Classes
◦8.3.2 The try Statement
◦8.3.3 Throwing Exceptions
◦8.3.4 Mandatory Exception Handling
◦8.3.5 Programming with Exceptions
•Section 8.4 Assertions and Annotations ◦8.4.1 Assertions
◦8.4.2 Annotations
•Section 8.5 Analysis of Algorithms
•Programming Exercises
•Quiz
Chapter 9: Linked Data Structures and Recursion
•Section 9.1 Recursion ◦9.1.1 Recursive Binary Search
◦9.1.2 Towers of Hanoi
◦9.1.3 A Recursive Sorting Algorithm
◦9.1.4 Blob Counting
•Section 9.2 Linked Data Structures ◦9.2.1 Recursive Linking
◦9.2.2 Linked Lists
◦9.2.3 Basic Linked List Processing
◦9.2.4 Inserting into a Linked List
◦9.2.5 Deleting from a Linked List
•Section 9.3 Stacks, Queues, and ADTs ◦9.3.1 Stacks
◦9.3.2 Queues
◦9.3.3 Postfix Expressions
•Section 9.4 Binary Trees ◦9.4.1 Tree Traversal
◦9.4.2 Binary Sort Trees
◦9.4.3 Expression Trees
•Section 9.5 A Simple Recursive Descent Parser ◦9.5.1 Backus-Naur Form
◦9.5.2 Recursive Descent Parsing
◦9.5.3 Building an Expression Tree
•Programming Exercises
•Quiz
Chapter 10: Generic Programming and Collection Classes
•Section 10.1 Generic Programming ◦10.1.1 Generic Programming in Smalltalk
◦10.1.2 Generic Programming in C++
◦10.1.3 Generic Programming in Java
◦10.1.4 The Java Collection Framework
◦10.1.5 Iterators and for-each Loops
◦10.1.6 Equality and Comparison
◦10.1.7 Generics and Wrapper Classes
•Section 10.2 Lists and Sets ◦10.2.1 ArrayList and LinkedList
◦10.2.2 Sorting
◦10.2.3 TreeSet and HashSet
◦10.2.4 EnumSet
•Section 10.3 Maps ◦10.3.1 The Map Interface
◦10.3.2 Views, SubSets, and SubMaps
◦10.3.3 Hash Tables and Hash Codes
•Section 10.4 Programming with the Java Collection Framework ◦10.4.1 Symbol Tables
◦10.4.2 Sets Inside a Map
◦10.4.3 Using a Comparator
◦10.4.4 Word Counting
•Section 10.5 Writing Generic Classes and Methods ◦10.5.1 Simple Generic Classes
◦10.5.2 Simple Generic Methods
◦10.5.3 Type Wildcards
◦10.5.4 Bounded Types
•Programming Exercises
•Quiz
Chapter 11: Advanced Input/Output: Streams, Files, and Networking
•Section 11.1 Streams, Readers, and Writers ◦11.1.1 Character and Byte Streams
◦11.1.2 PrintWriter
◦11.1.3 Data Streams
◦11.1.4 Reading Text
◦11.1.5 The Scanner Class
◦11.1.6 Serialized Object I/O
•Section 11.2 Files ◦11.2.1 Reading and Writing Files
◦11.2.2 Files and Directories
◦11.2.3 File Dialog Boxes
•Section 11.3 Programming With Files ◦11.3.1 Copying a File
◦11.3.2 Persistent Data
◦11.3.3 Files in GUI Programs
◦11.3.4 Storing Objects in Files
•Section 11.4 Networking ◦11.4.1 URLs and URLConnections
◦11.4.2 TCP/IP and Client/Server
◦11.4.3 Sockets in Java
◦11.4.4 A Trivial Client/Server
◦11.4.5 A Simple Network Chat
•Section 11.5 A Brief Introduction to XML ◦11.5.1 Basic XML Syntax
◦11.5.2 XMLEncoder and XMLDecoder
◦11.5.3 Working With the DOM
•Programming Exercises
•Quiz
Chapter 12: Threads and Multiprocessing
•Section 12.1 Introduction to Threads ◦12.1.1 Creating and Running Threads
◦12.1.2 Operations on Threads
◦12.1.3 Mutual Exclusion with "synchronized"
◦12.1.4 Volatile Variables
•Section 12.2 Programming with Threads ◦12.2.1 Threads Versus Timers
◦12.2.2 Recursion in a Thread
◦12.2.3 Threads for Background Computation
◦12.2.4 Threads for Multiprocessing
•Section 12.3 Threads and Parallel Processing ◦12.3.1 Problem Decompostion
◦12.3.2 Thread Pools and Task Queues
◦12.3.3 Producer/Consumer and Blocking Queues
◦12.3.4 Wait and Notify
•Section 12.4 Threads and Networking ◦12.4.1 The Blocking I/O Problem
◦12.4.2 An Asynchronous Network Chat Program
◦12.4.3 A Threaded Network Server
◦12.4.4 Using a Thread Pool
◦12.4.5 Distributed Computing
•Section 12.5 Network Programming Example: A Networked Game Framework ◦12.5.1 The Netgame Framework
◦12.5.2 A Simple Chat Room
◦12.5.3 A Networked TicTacToe Game
◦12.5.4 A Networked Poker Game
•Programming Exercises
•Quiz
Chapter 13: Advanced GUI Programming
•Section 13.1 Images and Resources ◦13.1.1 Images and BufferedImages
◦13.1.2 Working With Pixels
◦13.1.3 Resources
◦13.1.4 Cursors and Icons
◦13.1.5 Image File I/O
•Section 13.2 Fancier Graphics ◦13.2.1 Measuring Text
◦13.2.2 Transparency
◦13.2.3 Antialiasing
◦13.2.4 Strokes and Paints
◦13.2.5 Transforms
•Section 13.3 Actions and Buttons ◦13.3.1 Action and AbstractAction
◦13.3.2 Icons on Buttons
◦13.3.3 Radio Buttons
◦13.3.4 Toolbars
◦13.3.5 Keyboard Accelerators
◦13.3.6 HTML on Buttons
•Section 13.4 Complex Components and MVC ◦13.4.1 Model-View-Controller
◦13.4.2 Lists and ListModels
◦13.4.3 Tables and TableModels
◦13.4.4 Documents and Editors
◦13.4.5 Custom Components
•Section 13.5 Finishing Touches ◦13.5.1 The Mandelbrot Set
◦13.5.2 Design of the Program
◦13.5.3 Internationalization
◦13.5.4 Events, Events, Events
◦13.5.5 Custom Dialogs
◦13.5.6 Preferences
•Programming Exercises
•Quiz
Appendix: Source Code for the Examples in this Book
Appendix: Glossary