Opentextbooks
Introduction to Programming Using Java, Version 7
David J. Eck
Computers & Technology
Introduction to Programming Using Java, Version 7
Free
The publisher has enabled DRM protection, which means that you need to use the BookFusion iOS, Android or Web app to read this eBook. This eBook cannot be used outside of the BookFusion platform.
Description
Contents
Reviews

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

Language
Unknown
ISBN
Unknown
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
The book hasn't received reviews yet.