Core Java for the Impatient, 3rd edition

Published by Addison-Wesley Professional (September 29, 2022) © 2023

  • Cay S. Horstmann San Jose State
Products list
  • Available for purchase from all major ebook resellers, including InformIT.com
Products list

Details

  • A print text
  • Free shipping
  • Also available for purchase as an ebook from all major ebook resellers, including InformIT.com

This product is expected to ship within 3-6 business days for US and 5-10 business days for Canadian customers.

Preface xxiii
Acknowledgments xxv
About the Author xxvii

Chapter 1: Fundamental Programming Structures 1
1.1 Our First Program 2
1.2 Primitive Types 11
1.3 Variables 14
1.4 Arithmetic Operations 17
1.5 Strings 25
1.6 Input and Output 35
1.7 Control Flow 38
1.8 Arrays and Array Lists 46
1.9 Functional Decomposition 56
Exercises 58

Chapter 2: Object-Oriented Programming 61
2.1 Working with Objects 62
2.2 Implementing Classes 67
2.3 Object Construction 71
2.4 Records 76
2.5 Static Variables and Methods 79
2.6 Packages 83
2.7 Nested Classes 90
2.8 Documentation Comments 95
Exercises 100

Chapter 3: Interfaces and Lambda Expressions 105
3.1 Interfaces 106
3.2 Static, Default, and Private Methods 113
3.3 Examples of Interfaces 117
3.4 Lambda Expressions 121
3.5 Method and Constructor References 124
3.6 Processing Lambda Expressions 127
3.7 Lambda Expressions and Variable Scope 131
3.8 Higher-Order Functions 135
3.9 Local and Anonymous Classes 137
Exercises 139

Chapter 4: Inheritance and Reflection 143
4.1 Extending a Class 144
4.2 Inheritance Hierarchies 150
4.3 Object: The Cosmic Superclass 157
4.4 Enumerations 166
4.5 Runtime Type Information and Resources 170
4.6 Reflection 179
Exercises 188

Chapter 5: Exceptions, Assertions, and Logging 191
5.1 Exception Handling 192
5.2 Assertions 204
5.3 Logging 206
Exercises 214

Chapter 6: Generic Programming 219
6.1 Generic Classes 220
6.2 Generic Methods 221
6.3 Type Bounds 222
6.4 Type Variance and Wildcards 223
6.5 Generics in the Java Virtual Machine 228
6.6 Restrictions on Generics 231
6.7 Reflection and Generics 238
Exercises 241

Chapter 7: Collections 247
7.1 An Overview of the Collections Framework 248
7.2 Iterators 252
7.3 Sets 254
7.4 Maps 255
7.5 Other Collections 259
7.6 Views 264
Exercises 267

Chapter 8: Streams 271
8.1 From Iterating to Stream Operations 272
8.2 Stream Creation 273
8.3 The filter, map, and flatMap Methods 276
8.4 Extracting Substreams and Combining Streams 278
8.5 Other Stream Transformations 279
8.6 Simple Reductions 280
8.7 The Optional Type 281
8.8 Collecting Results 286
8.9 Collecting into Maps 287
8.10 Grouping and Partitioning 289
8.11 Downstream Collectors 289
8.12 Reduction Operations 292
8.13 Primitive Type Streams 294
8.14 Parallel Streams 295
Exercises 298

Chapter 9: Processing Input and Output 301
9.1 Input/Output Streams, Readers, and Writers 302
9.2 Paths, Files, and Directories 312
9.3 HTTP Connections 320
9.4 Regular Expressions 323
9.5 Serialization 333
Exercises 344

Chapter 10: Concurrent Programming 347
10.1 Concurrent Tasks 348
10.2 Asynchronous Computations 353
10.3 Thread Safety 360
10.4 Parallel Algorithms 366
10.5 Threadsafe Data Structures 368
10.6 Atomic Counters and Accumulators 373
10.7 Locks and Conditions 375
10.8 Threads 381
10.9 Processes 386
Exercises 390

Chapter 11: Annotations 397
11.1 Using Annotations 398
11.2 Defining Annotations 403
11.3 Standard Annotations 406
11.4 Processing Annotations at Runtime 410
11.5 Source-Level Annotation Processing 413
Exercises 417

Chapter 12: The Date and Time API 421
12.1 The Time Line 422
12.2 Local Dates 424
12.3 Date Adjusters 428
12.4 Local Time 429
12.5 Zoned Time 430
12.6 Formatting and Parsing 433
12.7 Interoperating with Legacy Code 436
Exercises 437

Chapter 13: Internationalization 441
13.1 Locales 442
13.2 Number Formats 447
13.3 Currencies 448
13.4 Date and Time Formatting 449
13.5 Collation and Normalization 451
13.6 Message Formatting 453
13.7 Resource Bundles 455
13.8 Character Encodings 458
13.9 Preferences 459
Exercises 461

Chapter 14: Compiling and Scripting 463
14.1 The Compiler API 463
14.2 The Scripting API 467
Exercises 472

Chapter 15: The Java Platform Module System 475
15.1 The Module Concept 476
15.2 Naming Modules 478
15.3 The Modular “Hello, World!” Program 478
15.4 Requiring Modules 480
15.5 Exporting Packages 482
15.6 Modules and Reflective Access 485
15.7 Modular JARs 488
15.8 Automatic Modules 489
15.9 The Unnamed Module 491
15.10 Command-Line Flags for Migration 491
15.11 Transitive and Static Requirements 493
15.12 Qualified Exporting and Opening 495
15.13 Service Loading 496
15.14 Tools for Working with Modules 497
Exercises 499

Index 501

Need help? Get in touch