Table of Contents
1. Introduction to Java
1.1 Programming (general)
1.2 Programming basics
1.3 Comments and whitespace
1.4 Errors and warnings
1.5 Computers and programs (general)
1.6 Computer tour
1.7 Language history
1.8 Problem solving
1.9 Why programming
1.10 Why whitespace matters
1.11 Java example: Married-couple names
2. Variables / Assignments
2.1 Variables and assignments (general)
2.2 Variables (int)
2.3 Identifiers
2.4 Arithmetic expressions (general)
2.5 Arithmetic expressions (int)
2.6 Example: Health data
2.7 Floating-point numbers (double)
2.8 Scientific notation for floating-point literals
2.9 Constant variables
2.10 Using math methods
2.11 Integer division and modulo
2.12 Type conversions
2.13 Binary
2.14 Characters
2.15 Strings
2.16 Integer overflow
2.17 Numeric data types
2.18 Random numbers
2.19 Reading API documentation
2.20 Debugging
2.21 Style guidelines
2.22 Java example: Salary calculation with variables
2.23 Java example: Married-couple names with variables
4. Loops
4.1 Loops (general)
4.2 While loops
4.3 More while examples
4.4 For loops
4.5 More for loop examples
4.6 Loops and strings
4.7 Nested loops
4.8 Developing programs incrementally
4.9 Break and continue
4.10 Variable name scope
4.11 Java example: Salary calculation with loops
4.12 Java example: Domain name validation with loops
4. Data Types
4.1 Constant variables
4.2 Using math methods
4.3 Integer division and modulo
4.4 Type conversions
4.5 Binary
4.6 Characters
4.7 Strings
4.8 Integer overflow
4.9 Numeric data types
4.10 Random numbers
4.11 Java example: Married-couple names with variables
5. Arrays
5.1 Array concept (general)
5.2 Arrays
5.3 Array iteration drill
5.4 Iterating through arrays
5.5 Multiple arrays
5.6 Swapping two variables (General)
5.7 Loop-modifying or copying/comparing arrays
5.8 Debugging example: Reversing an array
5.9 Two-dimensional arrays
5.10 Enhanced for loop: Arrays
5.11 Java example: Annual salary tax rate calculation with arrays
5.12 Java example: Domain name validation with arrays
6. User-Defined Methods
6.1 User-defined method basics
6.2 Return
6.3 Reasons for defining methods
6.4 Methods with branches/loops
6.5 Unit testing (methods)
6.6 How methods work
6.7 Methods: Common errors
6.8 Array parameters
6.9 Scope of variable/method definitions
6.10 Method name overloading
6.11 Parameter error checking
6.12 Using Scanner in methods
6.13 Perfect size arrays
6.14 Oversize arrays
6.15 Methods with oversize arrays
6.16 Comparing perfect size and oversize arrays
6.17 Using references in methods
6.18 Returning arrays from methods
6.19 Common errors: Methods and arrays
6.20 Java example: Salary calculation with methods
6.21 Java example: Domain name validation with methods
7. Objects and Classes
7.1 Objects: Introduction
7.2 Using a class
7.3 Defining a class
7.4 Mutators, accessors, and private helpers
7.5 Initialization and constructors
7.6 Choosing classes to create
7.7 Defining main() in a programmer-defined class
7.8 Unit testing (classes)
7.9 Constructor overloading
7.10 Objects and references
7.11 The ‘this’ implicit parameter
7.12 Primitive and reference types
7.13 Wrapper class conversions
7.14 ArrayList
7.15 Classes and ArrayLists
7.16 ArrayList ADT
7.17 Parameters of reference types
7.18 Static fields and methods
7.19 Using packages
7.20 Java example: Salary calculation with classes
7.21 Java example: Domain name availability with classes
8. Inheritance
8.1 Derived classes
8.2 Access by members of derived classes
8.3 Overriding member methods
8.4 The Object class
8.5 Polymorphism
8.6 ArrayLists of Objects
8.7 Abstract classes: Introduction (generic)
8.8 Abstract classes
8.9 Is-a versus has-a relationships
8.10 UML
8.11 Interfaces
8.12 Java example: Employees and instantiating from an abstract class
8.13 Java example: Employees and overriding class methods
9. Recursion
9.1 Recursion: Introduction
9.2 Recursive methods
9.3 Recursive algorithm: Search
9.4 Adding output statements for debugging
9.5 Creating a recursive method
9.6 Recursive math methods
9.7 Recursive exploration of all possibilities
9.8 Stack overflow
9.9 Java example: Recursively output permutations
10. Exceptions
10.1 Exception basics
10.2 Exceptions with methods
10.3 Multiple handlers
10.4 Exception handling in file input/output
10.5 Java example: Generate number format exception
11. Searching and Sorting Alg.
11.1 Searching and algorithms
11.2 Binary search
11.3 O notation
11.4 Algorithm analysis
11.5 Sorting: Introduction
11.6 Selection sort
11.7 Insertion sort
11.8 Quicksort
11.9 Merge sort
12. AP Java: Strings
12.1 String operations problem
12.2 Black and white problem
12.3 String search problem
12.4 Palindrome problem
12.5 Sentence splitter problem
12.6 Sentence manager problem
13. AP Java: Arrays
13.1 Array madness problem
13.2 Encryption problem
13.3 Number changer problem
13.4 Daily quizzes problem
14. AP Java: 2D Arrays
14.1 Array checker problem
14.2 Array words problem
14.3 Dice game problem
14.4 FillerUp problem
14.5 Map reader problem
15. AP Java: ArrayList
15.1 Baseball player problem
15.2 Flight schedule problem
15.3 Friends problem
15.4 The office problem
15.5 Help, I’m trapped! problem
15.6 Phone contacts problem
15.7 Gamer bug problem
16. AP Java: Numbers
16.1 Flip flop problem
16.2 Array MinMax problem
16.3 Number properties problem
16.4 Nuts and bolts problem
16.5 Time gaps problem
16.6 Random dice problem
17. AP Java: Classes
17.1 Magazine problem
17.2 Map problem
17.3 Music song problem
17.4 Rectangle problem
18. AP Java: Inheritence
18.1 Cat problem
18.2 Shapes problem
18.3 Secrets problem
19. Memory Management
19.1 Introduction to memory management
19.2 A first linked list
19.3 Memory regions: Heap/Stack
19.4 Basic garbage collection
19.5 Garbage collection and variable scope
19.6 Java example: Employee list using ArrayLists
20. Input / Output
20.1 Output and input streams
20.2 Output formatting
20.3 Streams using Strings
20.4 File input
20.5 File output
21. Generics
21.1 Comparable Interface: Sorting an ArrayList
21.2 Generic methods
21.3 Class generics
21.4 Java example: Map values using a generic method
22. Collections
22.1 Enhanced for loop
22.2 List: LinkedList
22.3 Map: HashMap
22.4 Set: HashSet
22.5 Queue interface
22.6 Deque interface
23. GUI
23.1 Basic graphics
23.2 Introduction to graphical user interfaces
23.3 Positioning GUI components using a GridBagLayout
23.4 GUI input and ActionListeners
23.5 GUI input with formatted text fields
23.6 GUI input with JSpinners
23.7 Displaying multi-line text in a JTextArea
23.8 Using tables in GUIs
23.9 Using sliders in GUIs
23.10 GUI tables, fields, and buttons: A seat reservation example
23.11 Reading files with a GUI
24. JavaFX
24.1 Introduction to graphical user interfaces with JavaFX
24.2 Positioning GUI components using a GridPane
24.3 Input and event handlers
24.4 Basic graphics with JavaFX
25. Additional Material
25.1 Switch statements
25.2 Conditional expressions
25.3 Do-while loops
25.4 Enumerations
25.5 Engineering examples
25.6 Engineering examples using methods
25.7 Command-line arguments
25.8 Command-line arguments and files
25.9 Java documentation for methods
25.10 Java documentation for classes
25.11 Additional practice: Output art
25.12 Additional practice: Grade calculation
25.13 Additional practice: Tweet decoder
25.14 Additional practice: Dice statistics
25.15 zyBooks built-in programming window
Teach Java with this hands-on, interactive zyBook
AP Computer Science A (Java) is an introduction to programming foundations and Java, based on the AP curriculum and exam.
- Auto-graded challenge activities using an integrated programming environment
- Packed with over 600 interactive coding exercises and learning activities to help students master the material
- Dozens of problems for practicing APCSA exam questions
- Configurable sections support early/late introduction to methods and objects
- Additional material includes engineering examples and Javadocs
- Adopters have access to a test bank with questions for every chapter
What is a zyBook?
AP Computer Science A (Java) is a web-native, interactive zyBook that helps students visualize concepts to learn faster and more effectively than with a traditional textbook. (Check out our research.)
Since 2012, over 1,700 academic institutions have adopted digital zyBooks to transform their STEM education.
zyBooks utilize the “Say, Show, Ask” approach
Say. We use concise text as a jumping board for our animations and learning questions.
Show. Much of a traditional textbook is replaced with animations to help students visualize key concepts.
Ask. Learning questions and auto-graded homework problems encouraged more student participation.
Authors
Roman Lysecky
Professor Emeritus of Electrical and Computer Engineering, Univ. of Arizona
Adrian Lizarraga
Electrical and Computer Engineering PhD, Univ. of Arizona / zyBooks