Тable of contents
Preface
Acknowledgments
1. Fundamental Programming Structures
1.1. Our First Program
1.2. Primitive Types
1.3. Variables
1.4. Arithmetic Operations
1.5. Strings
1.6. Input and Output
1.7. Control Flow
1.8. Arrays and Array Lists
1.9. Functional Decomposition
Exercises
2. Object-Oriented Programming
2.1. Working with Objects
2.2. Implementing Classes
2.3. Object Construction
2.4. Records
2.5. Static Variables and Methods
2.6. Packages
2.7. Nested Classes
2.8. Documentation Comments
Exercises
3. Interfaces and Lambda Expressions
3.1. Interfaces
3.2. Static, Default, and Private Methods
3.3. Examples of Interfaces
3.4. Lambda Expressions
3.5. Method and Constructor References
3.6. Processing Lambda Expressions
3.7. Lambda Expressions and Variable Scope
3.8. Higher-Order Functions
3.9. Local and Anonymous Classes
Exercises
4. Inheritance and Reflection
4.1. Extending a Class
4.2. Inheritance Hierarchies
4.3. Object: The Cosmic Superclass
4.4. Enumerations
4.5. Pattern Matching
4.6. Runtime Type Information and Resources
4.7. Reflection
Exercises
5. Exceptions, Assertions, and Logging
5.1. Exception Handling
5.2. Assertions
5.3. Logging
Exercises
6. Generic Programming
6.1. Generic Classes
6.2. Generic Methods
6.3. Type Bounds
6.4. Type Variance and Wildcards
6.5. Generics in the Java Virtual Machine
6.6. Restrictions on Generics
6.7. Reflection and Generics
Exercises
7. Collections
7.1. An Overview of the Collections Framework
7.2. Iterators
7.3. Sets
7.4. Maps
7.5. Other Collections
7.6. Views
Exercises
8. Streams
8.1. From Iterating to Stream Operations
8.2. Stream Creation
8.3. The filter, map, and flatMap Methods
8.4. Extracting Substreams and Combining Streams
8.5. Other Stream Transformations
8.6. Simple Reductions
8.7. The Optional Type
8.8. Collecting Results
8.9. Collecting into Maps
8.10. Grouping and Partitioning
8.11. Downstream Collectors
8.12. Reduction Operations
8.13. Primitive Type Streams
8.14. Parallel Streams
Exercises
9. Processing Input and Output
9.1. Input/Output Streams, Readers, and Writers
9.2. Paths, Files, and Directories
9.3. HTTP Connections
9.4. Regular Expressions
9.5. Serialization
Exercises
10. Concurrent Programming
10.1. Concurrent Tasks
10.2. Thread Safety
10.3. Threadsafe Data Structures
10.4. Parallel Algorithms
10.5. Asynchronous Computations
10.6. Atomic Counters and Accumulators
10.7. Locks and Conditions
10.8. Threads
10.9. Processes
Exercises
11. Annotations
11.1. Using Annotations
11.2. Defining Annotations
11.3. Annotations in the Java API
11.4. Processing Annotations at Runtime
11.5. Source-Level Annotation Processing
Exercises
12. The Java Platform Module System
12.1. The Module Concept
12.2. Naming Modules
12.3. The Modular “Hello, World!” Program
12.4. Requiring Modules
12.5. Exporting Packages
12.6. Modules and Reflective Access
12.7. Modular JARs
12.8. Automatic Modules
12.9. The Unnamed Module
12.10. Command-Line Flags for Migration
12.11. Transitive and Static Requirements
12.12. Qualified Exporting and Opening
12.13. Service Loading
12.14. Tools for Working with Modules
Exercises
Index
Відгуки про Core Java for the Impatient, 4th Edition