Introduction to Programming Using Java, Version 7
Free

Introduction to Programming Using Java, Version 7

By David J. Eck
Free
Book Description

A free introductory programming textbook using Java as the programming language, version 7.0.2.

Table of Contents
  • Title Page
  • 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 on Chapter 1
  • 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
      • Subsection 2.2.1: Variables
      • Subsection 2.2.2: Types
      • Subsection 2.2.3: Literals
      • Subsection 2.2.4: Strings and String Literals
      • Subsection 2.2.5: Variables in Programs
    • Section 2.3: Strings, Classes, Objects, and Subroutines
      • Subsection 2.3.1: Built-in Subroutines and Functions
      • Subsection 2.3.2: Classes and Objects
      • Subsection 2.3.3: Operations on Strings
      • Subsection 2.3.4: Introduction to Enums
    • Section 2.4: Text Input and Output
      • Subsection 2.4.1: Basic Output and Formatted Output
      • Subsection 2.4.2: A First Text Input Example
      • Subsection 2.4.3: Basic TextIO Input Functions
      • Subsection 2.4.4: Introduction to File I/O
      • Subsection 2.4.5: Other TextIO Features
      • Subsection 2.4.6: Using Scanner for Input
    • Section 2.5: Details of Expressions
      • Subsection 2.5.1: Arithmetic Operators
      • Subsection 2.5.2: Increment and Decrement
      • Subsection 2.5.3: Relational Operators
      • Subsection 2.5.4: Boolean Operators
      • Subsection 2.5.5: Conditional Operator
      • Subsection 2.5.6: Assignment Operators and Type Conversion
      • Subsection 2.5.7: Precedence Rules
    • Section 2.6: Programming Environments
      • Subsection 2.6.1: Java Development Kit
      • Subsection 2.6.2: Command Line Environment
      • Subsection 2.6.3: Eclipse
      • Subsection 2.6.4: NetBeans
      • Subsection 2.6.5: BlueJ
      • Subsection 2.6.6: The Problem of Packages
    • Exercises for Chapter 2
    • Quiz on Chapter 2
  • Chapter 3: Programming in the Small II: Control
    • Section 3.1: Blocks, Loops, and Branches
      • Subsection 3.1.1: Blocks
      • Subsection 3.1.2: The Basic While Loop
      • Subsection 3.1.3: The Basic If Statement
      • Subsection 3.1.4: Definite Assignment
    • Section 3.2: Algorithm Development
      • Subsection 3.2.1: Pseudocode and Stepwise Refinement
      • Subsection 3.2.2: The 3N+1 Problem
      • Subsection 3.2.3: Coding, Testing, Debugging
    • Section 3.3: The while and do..while Statements
      • Subsection 3.3.1: The while Statement
      • Subsection 3.3.2: The do..while Statement
      • Subsection 3.3.3: break and continue
    • Section 3.4: The for Statement
      • Subsection 3.4.1: For Loops
      • Subsection 3.4.2: Example: Counting Divisors
      • Subsection 3.4.3: Nested for Loops
    • Section 3.5: The if Statement
      • Subsection 3.5.1: The Dangling else Problem
      • Subsection 3.5.2: Multiway Branching
      • Subsection 3.5.3: If Statement Examples
      • Subsection 3.5.4: The Empty Statement
    • Section 3.6: The switch Statement
      • Subsection 3.6.1: The Basic switch Statement
      • Subsection 3.6.2: Menus and switch Statements
      • Subsection 3.6.3: Enums in switch Statements
      • Subsection 3.6.4: Definite Assignment and switch Statements
    • Section 3.7: Introduction to Exceptions and try..catch
      • Subsection 3.7.1: Exceptions
      • Subsection 3.7.2: try..catch
      • Subsection 3.7.3: Exceptions in TextIO
    • Section 3.8: Introduction to Arrays
      • Subsection 3.8.1: Creating and Using Arrays
      • Subsection 3.8.2: Arrays and For Loops
      • Subsection 3.8.3: Random Access
      • Subsection 3.8.4: Partially Full Arrays
      • Subsection 3.8.5: Two-dimensional Arrays
    • Section 3.9: Introduction to GUI Programming
      • Subsection 3.9.1: Drawing Shapes
      • Subsection 3.9.2: Drawing in a Program
      • Subsection 3.9.3: Animation
    • Exercises for Chapter 3
    • Quiz on Chapter 3
  • Chapter 4: Programming in the Large I: Subroutines
    • Section 4.1: Black Boxes
    • Section 4.2: Static Subroutines and Static Variables
      • Subsection 4.2.1: Subroutine Definitions
      • Subsection 4.2.2: Calling Subroutines
      • Subsection 4.2.3: Subroutines in Programs
      • Subsection 4.2.4: Member Variables
    • Section 4.3: Parameters
      • Subsection 4.3.1: Using Parameters
      • Subsection 4.3.2: Formal and Actual Parameters
      • Subsection 4.3.3: Overloading
      • Subsection 4.3.4: Subroutine Examples
      • Subsection 4.3.5: Array Parameters
      • Subsection 4.3.6: Command-line Arguments
      • Subsection 4.3.7: Throwing Exceptions
      • Subsection 4.3.8: Global and Local Variables
    • Section 4.4: Return Values
      • Subsection 4.4.1: The return statement
      • Subsection 4.4.2: Function Examples
      • Subsection 4.4.3: 3N+1 Revisited
    • Section 4.5: APIs, Packages, and Javadoc
      • Subsection 4.5.1: Toolboxes
      • Subsection 4.5.2: Java's Standard Packages
      • Subsection 4.5.3: Using Classes from Packages
      • Subsection 4.5.4: Javadoc
      • Subsection 4.5.5: Static Import
    • Section 4.6: More on Program Design
      • Subsection 4.6.1: Preconditions and Postconditions
      • Subsection 4.6.2: A Design Example
      • Subsection 4.6.3: The Program
    • Section 4.7: The Truth About Declarations
      • Subsection 4.7.1: Initialization in Declarations
      • Subsection 4.7.2: Named Constants
      • Subsection 4.7.3: Naming and Scope Rules
    • Exercises for Chapter 4
    • Quiz on Chapter 4
  • Chapter 5: Programming in the Large II: Objects and Classes
    • Section 5.1: Objects, Instance Methods, and Instance Variables
      • Subsection 5.1.1: Objects, Classes, and Instances
      • Subsection 5.1.2: Fundamentals of Objects
      • Subsection 5.1.3: Getters and Setters
      • Subsection 5.1.4: Arrays and Objects
    • Section 5.2: Constructors and Object Initialization
      • Subsection 5.2.1: Initializing Instance Variables
      • Subsection 5.2.2: Constructors
      • Subsection 5.2.3: Garbage Collection
    • Section 5.3: Programming with Objects
      • Subsection 5.3.1: Some Built-in Classes
      • Subsection 5.3.2: The class "Object"
      • Subsection 5.3.3: Writing and Using a Class
      • Subsection 5.3.4: Object-oriented Analysis and Design
    • Section 5.4: Programming Example: Card, Hand, Deck
      • Subsection 5.4.1: Designing the classes
      • Subsection 5.4.2: The Card Class
      • Subsection 5.4.3: Example: A Simple Card Game
    • Section 5.5: Inheritance, Polymorphism, and Abstract Classes
      • Subsection 5.5.1: Extending Existing Classes
      • Subsection 5.5.2: Inheritance and Class Hierarchy
      • Subsection 5.5.3: Example: Vehicles
      • Subsection 5.5.4: Polymorphism
      • Subsection 5.5.5: Abstract Classes
    • Section 5.6: this and super
      • Subsection 5.6.1: The Special Variable this
      • Subsection 5.6.2: The Special Variable super
      • Subsection 5.6.3: super and this As Constructors
    • Section 5.7: Interfaces
      • Subsection 5.7.1: Defining and Implementing Interfaces
      • Subsection 5.7.2: Interfaces as Types
      • Subsection 5.7.3: Interfaces in Java 8
    • Section 5.8: Nested Classes
      • Subsection 5.8.1: Static Nested Classes
      • Subsection 5.8.2: Inner Classes
      • Subsection 5.8.3: Anonymous Inner Classes
      • Subsection 5.8.4: Java 8 Lambda Expressions
    • Exercises for Chapter 5
    • Quiz on Chapter 5
  • Chapter 6: Introduction to GUI Programming
    • Section 6.1: The Basic GUI Application
      • Subsection 6.1.1: JFrame and JPanel
      • Subsection 6.1.2: Components and Layout
      • Subsection 6.1.3: Events and Listeners
      • Subsection 6.1.4: Some Java GUI History
    • Section 6.2: Graphics and Painting
      • Subsection 6.2.1: Coordinates
      • Subsection 6.2.2: Colors
      • Subsection 6.2.3: Fonts
      • Subsection 6.2.4: Shapes
      • Subsection 6.2.5: Graphics2D
      • Subsection 6.2.6: An Example
      • Subsection 6.2.7: Where is main()?
    • Section 6.3: Mouse Events
      • Subsection 6.3.1: Event Handling
      • Subsection 6.3.2: MouseEvent and MouseListener
      • Subsection 6.3.3: MouseEvent Data
      • Subsection 6.3.4: MouseMotionListeners and Dragging
      • Subsection 6.3.5: Anonymous Event Handlers and Adapter Classes
    • Section 6.4: Timers, KeyEvents, and State Machines
      • Subsection 6.4.1: Timers and Animation
      • Subsection 6.4.2: Keyboard Events
      • Subsection 6.4.3: Focus Events
      • Subsection 6.4.4: State Machines
    • Section 6.5: Basic Components
      • Subsection 6.5.1: JButton
      • Subsection 6.5.2: JLabel
      • Subsection 6.5.3: JCheckBox
      • Subsection 6.5.4: JTextField and JTextArea
      • Subsection 6.5.5: JSlider
    • Section 6.6: Basic Layout
      • Subsection 6.6.1: Basic Layout Managers
      • Subsection 6.6.2: Borders
      • Subsection 6.6.3: SliderAndButtonDemo
      • Subsection 6.6.4: A Simple Calculator
      • Subsection 6.6.5: Using a null Layout
      • Subsection 6.6.6: A Little Card Game
    • Section 6.7: Menus and Dialogs
      • Subsection 6.7.1: Menus and Menubars
      • Subsection 6.7.2: Dialogs
      • Subsection 6.7.3: Fine Points of Frames
      • Subsection 6.7.4: Creating Jar Files
    • Exercises for Chapter 6
    • Quiz on Chapter 6
  • Chapter 7: Arrays and ArrayLists
    • Section 7.1: Array Details
      • Subsection 7.1.1: For-each Loops
      • Subsection 7.1.2: Variable Arity Methods
      • Subsection 7.1.3: Array Literals
    • Section 7.2: Array Processing
      • Subsection 7.2.1: Some Processing Examples
      • Subsection 7.2.2: Some Standard Array Methods
      • Subsection 7.2.3: RandomStrings Revisited
      • Subsection 7.2.4: Dynamic Arrays
    • Section 7.3: ArrayList
      • Subsection 7.3.1: ArrayList and Parameterized Types
      • Subsection 7.3.2: Wrapper Classes
      • Subsection 7.3.3: Programming With ArrayList
      • Subsection 7.3.4: Vectors
    • Section 7.4: Searching and Sorting
      • Subsection 7.4.1: Searching
      • Subsection 7.4.2: Association Lists
      • Subsection 7.4.3: Insertion Sort
      • Subsection 7.4.4: Selection Sort
      • Subsection 7.4.5: Unsorting
    • Section 7.5: Two-dimensional Arrays
      • Subsection 7.5.1: The Truth About 2D Arrays
      • Subsection 7.5.2: Conway's Game Of Life
      • Subsection 7.5.3: Checkers
    • Exercises for Chapter 7
    • Quiz on Chapter 7
  • Chapter 8: Correctness, Robustness, Efficiency
    • Section 8.1: Introduction to Correctness and Robustness
      • Subsection 8.1.1: Horror Stories
      • Subsection 8.1.2: Java to the Rescue
      • Subsection 8.1.3: Problems Remain in Java
    • Section 8.2: Writing Correct Programs
      • Subsection 8.2.1: Provably Correct Programs
      • Subsection 8.2.2: Robust Handling of Input
    • Section 8.3: Exceptions and try..catch
      • Subsection 8.3.1: Exceptions and Exception Classes
      • Subsection 8.3.2: The try Statement
      • Subsection 8.3.3: Throwing Exceptions
      • Subsection 8.3.4: Mandatory Exception Handling
      • Subsection 8.3.5: Programming with Exceptions
    • Section 8.4: Assertions and Annotations
      • Subsection 8.4.1: Assertions
      • Subsection 8.4.2: Annotations
    • Section 8.5: Analysis of Algorithms
    • Exercises for Chapter 8
    • Quiz on Chapter 8
  • Chapter 9: Linked Data Structures and Recursion
    • Section 9.1: Recursion
      • Subsection 9.1.1: Recursive Binary Search
      • Subsection 9.1.2: Towers of Hanoi
      • Subsection 9.1.3: A Recursive Sorting Algorithm
      • Subsection 9.1.4: Blob Counting
    • Section 9.2: Linked Data Structures
      • Subsection 9.2.1: Recursive Linking
      • Subsection 9.2.2: Linked Lists
      • Subsection 9.2.3: Basic Linked List Processing
      • Subsection 9.2.4: Inserting into a Linked List
      • Subsection 9.2.5: Deleting from a Linked List
    • Section 9.3: Stacks, Queues, and ADTs
      • Subsection 9.3.1: Stacks
      • Subsection 9.3.2: Queues
      • Subsection 9.3.3: Postfix Expressions
    • Section 9.4: Binary Trees
      • Subsection 9.4.1: Tree Traversal
      • Subsection 9.4.2: Binary Sort Trees
      • Subsection 9.4.3: Expression Trees
    • Section 9.5: A Simple Recursive Descent Parser
      • Subsection 9.5.1: Backus-Naur Form
      • Subsection 9.5.2: Recursive Descent Parsing
      • Subsection 9.5.3: Building an Expression Tree
    • Exercises for Chapter 9
    • Quiz on Chapter 9
  • Chapter 10: Generic Programming and Collection Classes
    • Section 10.1: Generic Programming
      • Subsection 10.1.1: Generic Programming in Smalltalk
      • Subsection 10.1.2: Generic Programming in C++
      • Subsection 10.1.3: Generic Programming in Java
      • Subsection 10.1.4: The Java Collection Framework
      • Subsection 10.1.5: Iterators and for-each Loops
      • Subsection 10.1.6: Equality and Comparison
      • Subsection 10.1.7: Generics and Wrapper Classes
    • Section 10.2: Lists and Sets
      • Subsection 10.2.1: ArrayList and LinkedList
      • Subsection 10.2.2: Sorting
      • Subsection 10.2.3: TreeSet and HashSet
      • Subsection 10.2.4: EnumSet
      • Subsection 10.2.5: Priority Queues
    • Section 10.3: Maps
      • Subsection 10.3.1: The Map Interface
      • Subsection 10.3.2: Views, SubSets, and SubMaps
      • Subsection 10.3.3: Hash Tables and Hash Codes
    • Section 10.4: Programming with the Java Collection Framework
      • Subsection 10.4.1: Symbol Tables
      • Subsection 10.4.2: Sets Inside a Map
      • Subsection 10.4.3: Using a Comparator
      • Subsection 10.4.4: Word Counting
    • Section 10.5: Writing Generic Classes and Methods
      • Subsection 10.5.1: Simple Generic Classes
      • Subsection 10.5.2: Simple Generic Methods
      • Subsection 10.5.3: Type Wildcards
      • Subsection 10.5.4: Bounded Types
    • Exercises for Chapter 10
    • Quiz on Chapter 10
  • Chapter 11: Advanced Input/Output: Streams, Files, and Networking
    • Section 11.1: Streams, Readers, and Writers
      • Subsection 11.1.1: Character and Byte Streams
      • Subsection 11.1.2: PrintWriter
      • Subsection 11.1.3: Data Streams
      • Subsection 11.1.4: Reading Text
      • Subsection 11.1.5: The Scanner Class
      • Subsection 11.1.6: Serialized Object I/O
    • Section 11.2: Files
      • Subsection 11.2.1: Reading and Writing Files
      • Subsection 11.2.2: Files and Directories
      • Subsection 11.2.3: File Dialog Boxes
    • Section 11.3: Programming With Files
      • Subsection 11.3.1: Copying a File
      • Subsection 11.3.2: Persistent Data
      • Subsection 11.3.3: Files in GUI Programs
      • Subsection 11.3.4: Storing Objects in Files
    • Section 11.4: Networking
      • Subsection 11.4.1: URLs and URLConnections
      • Subsection 11.4.2: TCP/IP and Client/Server
      • Subsection 11.4.3: Sockets in Java
      • Subsection 11.4.4: A Trivial Client/Server
      • Subsection 11.4.5: A Simple Network Chat
    • Section 11.5: A Brief Introduction to XML
      • Subsection 11.5.1: Basic XML Syntax
      • Subsection 11.5.2: Working With the DOM
    • Exercises for Chapter 11
    • Quiz on Chapter 11
  • Chapter 12: Threads and Multiprocessing
    • Section 12.1: Introduction to Threads
      • Subsection 12.1.1: Creating and Running Threads
      • Subsection 12.1.2: Operations on Threads
      • Subsection 12.1.3: Mutual Exclusion with "synchronized"
      • Subsection 12.1.4: Volatile Variables
    • Section 12.2: Programming with Threads
      • Subsection 12.2.1: Threads Versus Timers
      • Subsection 12.2.2: Recursion in a Thread
      • Subsection 12.2.3: Threads for Background Computation
      • Subsection 12.2.4: Threads for Multiprocessing
      • Subsection 12.2.5: The SwingUtilities Approach
    • Section 12.3: Threads and Parallel Processing
      • Subsection 12.3.1: Problem Decomposition
      • Subsection 12.3.2: Thread Pools and Task Queues
      • Subsection 12.3.3: Producer/Consumer and Blocking Queues
      • Subsection 12.3.4: Wait and Notify
    • Section 12.4: Threads and Networking
      • Subsection 12.4.1: The Blocking I/O Problem
      • Subsection 12.4.2: An Asynchronous Network Chat Program
      • Subsection 12.4.3: A Threaded Network Server
      • Subsection 12.4.4: Using a Thread Pool
      • Subsection 12.4.5: Distributed Computing
    • Section 12.5: Network Programming Example: A Networked Game Framework
      • Subsection 12.5.1: The Netgame Framework
      • Subsection 12.5.2: A Simple Chat Room
      • Subsection 12.5.3: A Networked TicTacToe Game
      • Subsection 12.5.4: A Networked Poker Game
    • Exercises for Chapter 12
    • Quiz on Chapter 12
  • Chapter 13: Advanced GUI Programming
    • Section 13.1: Images and Resources
      • Subsection 13.1.1: Images and BufferedImages
      • Subsection 13.1.2: Working With Pixels
      • Subsection 13.1.3: Resources
      • Subsection 13.1.4: Cursors and Icons
      • Subsection 13.1.5: Image File I/O
    • Section 13.2: Fancier Graphics
      • Subsection 13.2.1: Measuring Text
      • Subsection 13.2.2: Transparency
      • Subsection 13.2.3: Antialiasing
      • Subsection 13.2.4: Strokes and Paints
      • Subsection 13.2.5: Transforms and Shapes
    • Section 13.3: Actions and Buttons
      • Subsection 13.3.1: Action and AbstractAction
      • Subsection 13.3.2: Icons on Buttons
      • Subsection 13.3.3: Making Choices
      • Subsection 13.3.4: Toolbars
      • Subsection 13.3.5: Keyboard Accelerators
      • Subsection 13.3.6: HTML on Buttons
    • Section 13.4: Complex Components and MVC
      • Subsection 13.4.1: Model-View-Controller
      • Subsection 13.4.2: Lists and ListModels
      • Subsection 13.4.3: Tables and TableModels
      • Subsection 13.4.4: Documents and Editors
      • Subsection 13.4.5: Custom Components
    • Section 13.5: Finishing Touches
      • Subsection 13.5.1: The Mandelbrot Set
      • Subsection 13.5.2: Design of the Program
      • Subsection 13.5.3: Internationalization
      • Subsection 13.5.4: Events, Events, Events
      • Subsection 13.5.5: Custom Dialogs
      • Subsection 13.5.6: Preferences
    • Exercises for Chapter 13
    • Quiz on Chapter 13
  • Glossary
  • Answers To End-of-Chapter Quizzes
    • Chapter 1 Quiz Answers
    • Chapter 2 Quiz Answers
    • Chapter 3 Quiz Answers
    • Chapter 4 Quiz Answers
    • Chapter 5 Quiz Answers
    • Chapter 6 Quiz Answers
    • Chapter 7 Quiz Answers
    • Chapter 8 Quiz Answers
    • Chapter 9 Quiz Answers
    • Chapter 10 Quiz Answers
    • Chapter 11 Quiz Answers
    • Chapter 12 Quiz Answers
    • Chapter 13 Quiz Answers
  • Answers to End-of-Chapter Exercises
    • Exercise 2.1 Answer
    • Exercise 2.2 Answer
    • Exercise 2.3 Answer
    • Exercise 2.4 Answer
    • Exercise 2.5 Answer
    • Exercise 2.6 Answer
    • Exercise 2.7 Answer
    • Exercise 3.1 Answer
    • Exercise 3.2 Answer
    • Exercise 3.3 Answer
    • Exercise 3.4 Answer
    • Exercise 3.5 Answer
    • Exercise 3.6 Answer
    • Exercise 3.7 Answer
    • Exercise 3.8 Answer
    • Exercise 3.9 Answer
    • Exercise 4.1 Answer
    • Exercise 4.2 Answer
    • Exercise 4.3 Answer
    • Exercise 4.4 Answer
    • Exercise 4.5 Answer
    • Exercise 4.6 Answer
    • Exercise 4.7 Answer
    • Exercise 5.1 Answer
    • Exercise 5.2 Answer
    • Exercise 5.3 Answer
    • Exercise 5.4 Answer
    • Exercise 5.5 Answer
    • Exercise 5.6 Answer
    • Exercise 5.7 Answer
    • Exercise 6.1 Answer
    • Exercise 6.2 Answer
    • Exercise 6.3 Answer
    • Exercise 6.4 Answer
    • Exercise 6.5 Answer
    • Exercise 6.6 Answer
    • Exercise 6.7 Answer
    • Exercise 6.8 Answer
    • Exercise 6.9 Answer
    • Exercise 6.10 Answer
    • Exercise 6.11 Answer
    • Exercise 7.1 Answer
    • Exercise 7.2 Answer
    • Exercise 7.3 Answer
    • Exercise 7.4 Answer
    • Exercise 7.5 Answer
    • Exercise 7.6 Answer
    • Exercise 7.7 Answer
    • Exercise 7.8 Answer
    • Exercise 8.1 Answer
    • Exercise 8.2 Answer
    • Exercise 8.3 Answer
    • Exercise 8.4 Answer
    • Exercise 8.5 Answer
    • Exercise 9.1 Answer
    • Exercise 9.2 Answer
    • Exercise 9.3 Answer
    • Exercise 9.4 Answer
    • Exercise 9.5 Answer
    • Exercise 9.6 Answer
    • Exercise 9.7 Answer
    • Exercise 10.1 Answer
    • Exercise 10.2 Answer
    • Exercise 10.3 Answer
    • Exercise 10.4 Answer
    • Exercise 10.5 Answer
    • Exercise 10.6 Answer
    • Exercise 11.1 Answer
    • Exercise 11.2 Answer
    • Exercise 11.3 Answer
    • Exercise 11.4 Answer
    • Exercise 11.5 Answer
    • Exercise 11.6 Answer
    • Exercise 12.1 Answer
    • Exercise 12.2 Answer
    • Exercise 12.3 Answer
    • Exercise 12.4 Answer
    • Exercise 12.5 Answer
    • Exercise 12.6 Answer
    • Exercise 13.1 Answer
    • Exercise 13.2 Answer
    • Exercise 13.3 Answer
    • Exercise 13.4 Answer
    • Exercise 13.5 Answer
    No review for this book yet, be the first to review.
      No comment for this book yet, be the first to comment
      You May Also Like