Think Java

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

Author(s): Allen B. Downey, Chris Mayfield
Edition: 2
Publisher: O’Reilly Media
Year: 2020

Language: English
Pages: 414
City: Sebastopol
Tags: java, programming, object-oriented

Preface
The Philosophy Behind the Book
Object-Oriented Programming
Changes to the Second Edition
About the Appendixes
Using the Code Examples
Conventions Used in This Book
O’Reilly Online Learning
How to Contact Us
Acknowledgments
1. Computer Programming
What Is a Computer?
What Is Programming?
The Hello World Program
Compiling Java Programs
Displaying Two Messages
Formatting Source Code
Using Escape Sequences
What Is Computer Science?
Debugging Programs
Vocabulary
Exercises
2. Variables and Operators
Declaring Variables
Assigning Variables
Memory Diagrams
Printing Variables
Arithmetic Operators
Floating-Point Numbers
Rounding Errors
Operators for Strings
Compiler Error Messages
Other Types of Errors
Vocabulary
Exercises
3. Input and Output
The System Class
The Scanner Class
Language Elements
Literals and Constants
Formatting Output
Reading Error Messages
Type Cast Operators
Remainder Operator
Putting It All Together
The Scanner Bug
Vocabulary
Exercises
4. Methods and Testing
Defining New Methods
Flow of Execution
Parameters and Arguments
Multiple Parameters
Stack Diagrams
Math Methods
Composition
Return Values
Incremental Development
Vocabulary
Exercises
5. Conditionals and Logic
Relational Operators
The if-else Statement
Chaining and Nesting
The switch Statement
Logical Operators
De Morgan’s Laws
Boolean Variables
Boolean Methods
Validating Input
Example Program
Vocabulary
Exercises
6. Loops and Strings
The while Statement
Increment and Decrement
The for Statement
Nested Loops
Characters
Which Loop to Use
String Iteration
The indexOf Method
Substrings
String Comparison
String Formatting
Vocabulary
Exercises
7. Arrays and References
Creating Arrays
Accessing Elements
Displaying Arrays
Copying Arrays
Traversing Arrays
Generating Random Numbers
Building a Histogram
The Enhanced for Loop
Counting Characters
Vocabulary
Exercises
8. Recursive Methods
Recursive Void Methods
Recursive Stack Diagrams
Value-Returning Methods
The Leap of Faith
Counting Up Recursively
Binary Number System
Recursive Binary Method
CodingBat Problems
Vocabulary
Exercises
9. Immutable Objects
Primitives Versus Objects
The null Keyword
Strings Are Immutable
Wrapper Classes
Command-Line Arguments
Argument Validation
BigInteger Arithmetic
Incremental Design
More Generalization
Vocabulary
Exercises
10. Mutable Objects
Point Objects
Objects as Parameters
Objects as Return Values
Rectangles Are Mutable
Aliasing Revisited
Java Library Source
Class Diagrams
Scope Revisited
Garbage Collection
Mutable Versus Immutable
StringBuilder Objects
Vocabulary
Exercises
11. Designing Classes
The Time Class
Constructors
Value Constructors
Getters and Setters
Displaying Objects
The toString Method
The equals Method
Adding Times
Vocabulary
Exercises
12. Arrays of Objects
Card Objects
Card toString
Class Variables
The compareTo Method
Cards Are Immutable
Arrays of Cards
Sequential Search
Binary Search
Tracing the Code
Vocabulary
Exercises
13. Objects of Arrays
Decks of Cards
Shuffling Decks
Selection Sort
Merge Sort
Subdecks
Merging Decks
Adding Recursion
Static Context
Piles of Cards
Playing War
Vocabulary
Exercises
14. Extending Classes
CardCollection
Inheritance
Dealing Cards
The Player Class
The Eights Class
Class Relationships
Vocabulary
Exercises
15. Arrays of Arrays
Conway’s Game of Life
The Cell Class
Two-Dimensional Arrays
The GridCanvas Class
Other Grid Methods
Starting the Game
The Simulation Loop
Exception Handling
Counting Neighbors
Updating the Grid
Vocabulary
Exercises
16. Reusing Classes
Langton’s Ant
Refactoring
Abstract Classes
UML Diagram
Vocabulary
Exercises
17. Advanced Topics
Polygon Objects
Adding Color
Regular Polygons
More Constructors
An Initial Drawing
Blinking Polygons
Interfaces
Event Listeners
Timers
Vocabulary
Exercises
A. Tools
Installing DrJava
DrJava Interactions
Command-Line Interface
Command-Line Testing
Running Checkstyle
Tracing with a Debugger
Testing with JUnit
Vocabulary
B. Javadoc
Reading Documentation
Writing Documentation
Javadoc Tags
Example Source File
Vocabulary
C. Graphics
Creating Graphics
Graphics Methods
Example Drawing
Vocabulary
Exercises
D. Debugging
Compile-Time Errors
The compiler is spewing error messages.
I’m getting a weird compiler message, and it won’t go away.
I can’t get my program to compile no matter what I do.
I did what the compiler told me to do, but it still doesn’t work.
Run-Time Errors
My program hangs.
When I run the program, I get an exception.
I added so many print statements I get inundated with output.
Logic Errors
My program doesn’t work.
I’ve got a big, hairy expression and it doesn’t do what I expect.
My method doesn’t return what I expect.
My print statement isn’t doing anything.
I’m really, really stuck and I need help.
No, I really need help.
I found the bug!
Index