Java How to Program, Early Objects, Global Edition

Höfundur Paul Deitel

Útgefandi Pearson International Content

Snið Page Fidelity

Print ISBN 9781292223858

Útgáfa 11

Höfundarréttur 2018

4.790 kr.

Description

Efnisyfirlit

  • Half Title
  • Title
  • Copyright Page
  • Contents
  • Foreword 25
  • Preface 27
  • Before You Begin 47
  • 1 Introduction to Computers, the Internet and Java 53
  • 1.1 Introduction 54
  • 1.2 Hardware and Software 56
  • 1.2.1 Moore’s Law 56
  • 1.2.2 Computer Organization 57
  • 1.3 Data Hierarchy 59
  • 1.4 Machine Languages, Assembly Languages and High-Level Languages 61
  • 1.5 Introduction to Object Technology 62
  • 1.5.1 Automobile as an Object 63
  • 1.5.2 Methods and Classes 63
  • 1.5.3 Instantiation 63
  • 1.5.4 Reuse 63
  • 1.5.5 Messages and Methopd Calls 64
  • 1.5.6 Attributes and Instance Variables 64
  • 1.5.7 Encapsulation and Information Hiding 64
  • 1.5.8 Inheritance 64
  • 1.5.9 Interfaces 65
  • 1.5.10 Object-Oriented Analysis and Design (OOAD) 65
  • 1.5.11 The UML (Unified Modeling Language) 65
  • 1.6 Operating Systems 66
  • 1.6.1 Windows—A Proprietary Operating System 66
  • 1.6.2 Linux—An Open-Source Operating System 66
  • 1.6.3 Apple’s macOS and Apple’s iOS for iPhone®, iPad® 67
  • 1.6.4 Google’s Android 67
  • 1.7 Programming Languages 68
  • 1.8 Java 70
  • 1.9 A Typical Java Development Environment 71
  • 1.10 Test-Driving a Java Application 74
  • 1.11 Internet and World Wide Web 78
  • 1.11.1 Internet: A Network of Networks 79
  • 1.11.2 World Wide Web: Making the Internet User-Friendly 79
  • 1.11.3 Web Services and Mashups 79
  • 1.11.4 Internet of Things 80
  • 1.12 Software Technologies 81
  • 1.13 Getting Your Questions Answered 83
  • 2 Introduction to Java Applications; Input/Output and Operators 87
  • 2.1 Introduction 88
  • 2.2 Your First Program in Java: Printing a Line of Text 88
  • 2.2.1 Compiling the Application 92
  • 2.2.2 Executing the Application 93
  • 2.3 Modifying Your First Java Program 94
  • 2.4 Displaying Text with printf 96
  • 2.5 Another Application: Adding Integers 97
  • 2.5.1 import Declarations 98
  • 2.5.2 Declaring and Creating a Scanner to Obtain User Input from the Keyboard 98
  • 2.5.3 Prompting the User for Input 99
  • 2.5.4 Declaring a Variable to Store an Integer and Obtaining anInteger from the Keyboard 99
  • 2.5.5 Obtaining a Second Integer 100
  • 2.5.6 Using Variables in a Calculation 100
  • 2.5.7 Displaying the Calculation Result 100
  • 2.5.8 Java API Documentation 101
  • 2.5.9 Declaring and Initializing Variables in Separate Statements 101
  • 2.6 Memory Concepts 101
  • 2.7 Arithmetic 102
  • 2.8 Decision Making: Equality and Relational Operators 106
  • 2.9 Wrap-Up 109
  • 3 Introduction to Classes, Objects, Methods and Strings 120
  • 3.1 Introduction 121
  • 3.2 Instance Variables, set Methods and get Methods 122
  • 3.2.1 Account Class with an Instance Variable, and set and get Methods 122
  • 3.2.2 AccountTest Class That Creates and Uses an Object of Class Account 125
  • 3.2.3 Compiling and Executing an App with Multiple Classes 128
  • 3.2.4 Account UML Class Diagram 128
  • 3.2.5 Additional Notes on Class AccountTest 130
  • 3.2.6 Software Engineering with private Instance Variables and public set and get Methods 130
  • 3.3 Account Class: Initializing Objects with Constructors 131
  • 3.3.1 Declaring an Account Constructor for Custom Object Initialization 132
  • 3.3.2 Class AccountTest: Initializing Account Objects When They’re Created 133
  • 3.4 Account Class with a Balance; Floating-Point Numbers 134
  • 3.4.1 Account Class with a balance Instance Variable of Type double 135
  • 3.4.2 AccountTest Class to Use Class Account 137
  • 3.5 Primitive Types vs. Reference Types 140
  • 3.6 (Optional) GUI and Graphics Case Study: A Simple GUI 140
  • 3.6.1 What Is a Graphical User Interface? 142
  • 3.6.2 JavaFX Scene Builder and FXML 142
  • 3.6.3 Welcome App—Displaying Text and an Image 142
  • 3.6.4 Opening Scene Builder and Creating the File Welcome.fxml 142
  • 3.6.5 Adding an Image to the Folder Containing Welcome.fxml 144
  • 3.6.6 Creating a VBox Layout Container 144
  • 3.6.7 Configuring the VBox 144
  • 3.6.8 Adding and Configuring a Label 144
  • 3.6.9 Adding and Configuring an ImageView 146
  • 3.6.10 Previewing the Welcome GUI 147
  • 3.7 Wrap-Up 148
  • 4 Control Statements: Part 1; Assignment, ++and — Operators 156
  • 4.1 Introduction 157
  • 4.2 Algorithms 157
  • 4.3 Pseudocode 158
  • 4.4 Control Structures 158
  • 4.4.1 Sequence Structure in Java 159
  • 4.4.2 Selection Statements in Java 160
  • 4.4.3 Iteration Statements in Java 160
  • 4.4.4 Summary of Control Statements in Java 160
  • 4.5 if Single-Selection Statement 161
  • 4.6 if…else Double-Selection Statement 162
  • 4.6.1 Nested if…else Statements 163
  • 4.6.2 Dangling-else Problem 164
  • 4.6.3 Blocks 164
  • 4.6.4 Conditional Operator (?:) 165
  • 4.7 Student Class: Nested if…else Statements 165
  • 4.8 while Iteration Statement 168
  • 4.9 Formulating Algorithms: Counter-Controlled Iteration 170
  • 4.10 Formulating Algorithms: Sentinel-Controlled Iteration 174
  • 4.11 Formulating Algorithms: Nested Control Statements 181
  • 4.12 Compound Assignment Operators 185
  • 4.13 Increment and Decrement Operators 186
  • 4.14 Primitive Types 189
  • 4.15 (Optional) GUI and Graphics Case Study: Event Handling; Drawing Lines 190
  • 4.15.1 Test-Driving the Completed Draw Lines App 190
  • 4.15.2 Building the App’s GUI 191
  • 4.15.3 Preparing to Interact with the GUI Programmatically 195
  • 4.15.4 Class DrawLinesController 197
  • 4.15.5 Class DrawLines—The Main Application Class 199
  • 4.16 Wrap-Up 201
  • 5 Control Statements: Part 2; Logical Operators 216
  • 5.1 Introduction 217
  • 5.2 Essentials of Counter-Controlled Iteration 217
  • 5.3 for Iteration Statement 218
  • 5.4 Examples Using the for Statement 222
  • 5.4.1 Application: Summing the Even Integers from 2 to 20 223
  • 5.4.2 Application: Compound-Interest Calculations 224
  • 5.5 do…while Iteration Statement 227
  • 5.6 switch Multiple-Selection Statement 228
  • 5.7 Class AutoPolicy Case Study: Strings in switch Statements 234
  • 5.8 break and continue Statements 237
  • 5.8.1 break Statement 237
  • 5.8.2 continue Statement 238
  • 5.9 Logical Operators 239
  • 5.9.1 Conditional AND (&&) Operator 239
  • 5.9.2 Conditional OR (||) Operator 240
  • 5.9.3 Short-Circuit Evaluation of Complex Conditions 241
  • 5.9.4 Boolean Logical AND (&) and Boolean Logical Inclusive OR (|)Operators 241
  • 5.9.5 Boolean Logical Exclusive OR (^) 242
  • 5.9.6 Logical Negation (!) Operator 242
  • 5.9.7 Logical Operators Example 243
  • 5.10 Structured-Programming Summary 245
  • 5.11 (Optional) GUI and Graphics Case Study: Drawing Rectangles and Ovals 250
  • 5.12 Wrap-Up 253
  • 6 Methods: A Deeper Look 264
  • 6.1 Introduction 265
  • 6.2 Program Units in Java 265
  • 6.3 static Methods, static Fields and Class Math 267
  • 6.4 Methods with Multiple Parameters 269
  • 6.5 Notes on Declaring and Using Methods 273
  • 6.6 Method-Call Stack and Activation Records 274
  • 6.6.1 Method-Call Stack 274
  • 6.6.2 Stack Frames 274
  • 6.6.3 Local Variables and Stack Frames 274
  • 6.6.4 Stack Overflow 275
  • 6.7 Argument Promotion and Casting 275
  • 6.8 Java API Packages 276
  • 6.9 Case Study: Secure Random-Number Generation 278
  • 6.10 Case Study: A Game of Chance; Introducing enum Types 283
  • 6.11 Scope of Declarations 288
  • 6.12 Method Overloading 290
  • 6.12.1 Declaring Overloaded Methods 290
  • 6.12.2 Distinguishing Between Overloaded Methods 291
  • 6.12.3 Return Types of Overloaded Methods 292
  • 6.13 (Optional) GUI and Graphics Case Study: Colors and Filled Shapes 292
  • 6.14 Wrap-Up 295
  • 7 Arrays and ArrayLists 309
  • 7.1 Introduction 310
  • 7.2 Arrays 311
  • 7.3 Declaring and Creating Arrays 312
  • 7.4 Examples Using Arrays 314
  • 7.4.1 Creating and Initializing an Array 314
  • 7.4.2 Using an Array Initializer 315
  • 7.4.3 Calculating the Values to Store in an Array 316
  • 7.4.4 Summing the Elements of an Array 317
  • 7.4.5 Using Bar Charts to Display Array Data Graphically 317
  • 7.4.6 Using the Elements of an Array as Counters 319
  • 7.4.7 Using Arrays to Analyze Survey Results 320
  • 7.5 Exception Handling: Processing the Incorrect Response 322
  • 7.5.1 The try Statement 322
  • 7.5.2 Executing the catch Block 322
  • 7.5.3 toString Method of the Exception Parameter 323
  • 7.6 Case Study: Card Shuffling and Dealing Simulation 323
  • 7.7 Enhanced for Statement 328
  • 7.8 Passing Arrays to Methods 329
  • 7.9 Pass-By-Value vs. Pass-By-Reference 331
  • 7.10 Case Study: Class GradeBook Using an Array to Store Grades 332
  • 7.11 Multidimensional Arrays 337
  • 7.11.1 Arrays of One-Dimensional Arrays 338
  • 7.11.2 Two-Dimensional Arrays with Rows of Different Lengths 338
  • 7.11.3 Creating Two-Dimensional Arrays with Array-Creation Expressions 339
  • 7.11.4 Two-Dimensional Array Example: Displaying Element Values 339
  • 7.11.5 Common Multidimensional-Array Manipulations Performed with for Statements 340
  • 7.12 Case Study: Class GradeBook Using a Two-Dimensional Array 341
  • 7.13 Variable-Length Argument Lists 347
  • 7.14 Using Command-Line Arguments 348
  • 7.15 Class Arrays 350
  • 7.16 Introduction to Collections and Class ArrayList 353
  • 7.17 (Optional) GUI and Graphics Case Study: Drawing Arcs 357
  • 7.18 Wrap-Up 360
  • 8 Classes and Objects: A Deeper Look 381
  • 8.1 Introduction 382
  • 8.2 Time Class Case Study 382
  • 8.3 Controlling Access to Members 387
  • 8.4 Referring to the Current Object’s Members with the this Reference 388
  • 8.5 Time Class Case Study: Overloaded Constructors 390
  • 8.6 Default and No-Argument Constructors 395
  • 8.7 Notes on Set and Get Methods 396
  • 8.8 Composition 397
  • 8.9 enum Types 400
  • 8.10 Garbage Collection 403
  • 8.11 static Class Members 403
  • 8.12 static Import 407
  • 8.13 final Instance Variables 408
  • 8.14 Package Access 409
  • 8.15 Using BigDecimal for Precise Monetary Calculations 410
  • 8.16 (Optional) GUI and Graphics Case Study: Using Objects with Graphics 413
  • 8.17 Wrap-Up 417
  • 9 Object-Oriented Programming: Inheritance 425
  • 9.1 Introduction 426
  • 9.2 Superclasses and Subclasses 427
  • 9.3 protected Members 429
  • 9.4 Relationship Between Superclasses and Subclasses 430
  • 9.4.1 Creating and Using a CommissionEmployee Class 430
  • 9.4.2 Creating and Using a BasePlusCommissionEmployee Class 435
  • 9.4.3 Creating a CommissionEmployee–BasePlusCommissionEmployeeInheritance Hierarchy 440
  • 9.4.4 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance
  • 9.4.5 CommissionEmployee–BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance V
  • 9.5 Constructors in Subclasses 450
  • 9.6 Class Object 451
  • 9.7 Designing with Composition vs. Inheritance 452
  • 9.8 Wrap-Up 454
  • 10 Object-Oriented Programming: Polymorphism and Interfaces 459
  • 10.1 Introduction 460
  • 10.2 Polymorphism Examples 462
  • 10.3 Demonstrating Polymorphic Behavior 463
  • 10.4 Abstract Classes and Methods 465
  • 10.5 Case Study: Payroll System Using Polymorphism 468
  • 10.5.1 Abstract Superclass Employee 469
  • 10.5.2 Concrete Subclass SalariedEmployee 471
  • 10.5.3 Concrete Subclass HourlyEmployee 473
  • 10.5.4 Concrete Subclass CommissionEmployee 474
  • 10.5.5 Indirect Concrete Subclass BasePlusCommissionEmployee 476
  • 10.5.6 Polymorphic Processing, Operator instanceof and Downcasting 477
  • 10.6 Allowed Assignments Between Superclass and Subclass Variables 482
  • 10.7 final Methods and Classes 482
  • 10.8 A Deeper Explanation of Issues with Calling Methods from Constructors 483
  • 10.9 Creating and Using Interfaces 484
  • 10.9.1 Developing a Payable Hierarchy 486
  • 10.9.2 Interface Payable 487
  • 10.9.3 Class Invoice 487
  • 10.9.4 Modifying Class Employee to Implement Interface Payable 489
  • 10.9.5 Using Interface Payable to Process Invoices and Employees Polymorphically 491
  • 10.9.6 Some Common Interfaces of the Java API 492
  • 10.10 Java SE 8 Interface Enhancements 493
  • 10.10.1 default Interface Methods 493
  • 10.10.2 static Interface Methods 494
  • 10.10.3 Functional Interfaces 494
  • 10.11 Java SE 9 private Interface Methods 495
  • 10.12 private Constructors 495
  • 10.13 Program to an Interface, Not an Implementation 496
  • 10.13.1 Implementation Inheritance Is Best for Small Numbers of Tightly Coupled Classes 496
  • 10.13.2 Interface Inheritance Is Best for Flexibility 496
  • 10.13.3 Rethinking the Employee Hierarchy 497
  • 10.14 (Optional) GUI and Graphics Case Study: Drawing with Polymorphism 498
  • 10.15 Wrap-Up 500
  • 11 Exception Handling: A Deeper Look 507
  • 11.1 Introduction 508
  • 11.2 Example: Divide by Zero without Exception Handling 509
  • 11.3 Example: Handling ArithmeticExceptions and InputMismatchExceptions 511
  • 11.4 When to Use Exception Handling 517
  • 11.5 Java Exception Hierarchy 517
  • 11.6 finally Block 521
  • 11.7 Stack Unwinding and Obtaining Information from an Exception 525
  • 11.8 Chained Exceptions 528
  • 11.9 Declaring New Exception Types 530
  • 11.10 Preconditions and Postconditions 531
  • 11.11 Assertions 531
  • 11.12 try-with-Resources: Automatic Resource Deallocation 533
  • 11.13 Wrap-Up 534
  • 12 JavaFX Graphical User Interfaces: Part 1 540
  • 12.1 Introduction 541
  • 12.2 JavaFX Scene Builder 542
  • 12.3 JavaFX App Window Structure 543
  • 12.4 Welcome App—Displaying Text and an Image 544
  • 12.4.1 Opening Scene Builder and Creating the File Welcome.fxml 544
  • 12.4.2 Adding an Image to the Folder Containing Welcome.fxml 545
  • 12.4.3 Creating a VBox Layout Container 545
  • 12.4.4 Configuring the VBox Layout Container 546
  • 12.4.5 Adding and Configuring a Label 546
  • 12.4.6 Adding and Configuring an ImageView 547
  • 12.4.7 Previewing the Welcome GUI 549
  • 12.5 Tip Calculator App—Introduction to Event Handling 549
  • 12.5.1 Test-Driving the Tip Calculator App 550
  • 12.5.2 Technologies Overview 551
  • 12.5.3 Building the App’s GUI 553
  • 12.5.4 TipCalculator Class 560
  • 12.5.5 TipCalculatorController Class 562
  • 12.6 Features Covered in the Other JavaFX Chapters 567
  • 12.7 Wrap-Up 567
  • 13 JavaFX GUI: Part 2 575
  • 13.1 Introduction 576
  • 13.2 Laying Out Nodes in a Scene Graph 576
  • 13.3 Painter App: RadioButtons, Mouse Events and Shapes 578
  • 13.3.1 Technologies Overview 578
  • 13.3.2 Creating the Painter.fxml File 580
  • 13.3.3 Building the GUI 580
  • 13.3.4 Painter Subclass of Application 583
  • 13.3.5 PainterController Class 584
  • 13.4 Color Chooser App: Property Bindings and Property Listeners 588
  • 13.4.1 Technologies Overview 588
  • 13.4.2 Building the GUI 589
  • 13.4.3 ColorChooser Subclass of Application 591
  • 13.4.4 ColorChooserController Class 592
  • 13.5 Cover Viewer App: Data-Driven GUIs with JavaFX Collections 594
  • 13.5.1 Technologies Overview 595
  • 13.5.2 Adding Images to the App’s Folder 595
  • 13.5.3 Building the GUI 595
  • 13.5.4 CoverViewer Subclass of Application 597
  • 13.5.5 CoverViewerController Class 597
  • 13.6 Cover Viewer App: Customizing ListView Cells 599
  • 13.6.1 Technologies Overview 600
  • 13.6.2 Copying the CoverViewer App 600
  • 13.6.3 ImageTextCell Custom Cell Factory Class 601
  • 13.6.4 CoverViewerController Class 602
  • 13.7 Additional JavaFX Capabilities 603
  • 13.8 JavaFX 9: Java SE 9 JavaFX Updates 605
  • 13.9 Wrap-Up 607
  • 14 Strings, Characters and Regular Expressions 616
  • 14.1 Introduction 617
  • 14.2 Fundamentals of Characters and Strings 617
  • 14.3 Class String 618
  • 14.3.1 String Constructors 618
  • 14.3.2 String Methods length, charAt and getChars 619
  • 14.3.3 Comparing Strings 621
  • 14.3.4 Locating Characters and Substrings in Strings 625
  • 14.3.5 Extracting Substrings from Strings 627
  • 14.3.6 Concatenating Strings 628
  • 14.3.7 Miscellaneous String Methods 629
  • 14.3.8 String Method valueOf 630
  • 14.4 Class StringBuilder 631
  • 14.4.1 StringBuilder Constructors 632
  • 14.4.2 StringBuilder Methods length, capacity, setLength and
  • 14.4.3 StringBuilder Methods charAt, setCharAt, getChars and
  • 14.4.4 StringBuilder append Methods 635
  • 14.4.5 StringBuilder Insertion and Deletion Methods 637
  • 14.5 Class Character 638
  • 14.6 Tokenizing Strings 643
  • 14.7 Regular Expressions, Class Pattern and Class Matcher 644
  • 14.7.1 Replacing Substrings and Splitting Strings 649
  • 14.7.2 Classes Pattern and Matcher 651
  • 14.8 Wrap-Up 653
  • 15 Files, Input/Output Streams, NIO and XML Serialization 664
  • 15.1 Introduction 665
  • 15.2 Files and Streams 665
  • 15.3 Using NIO Classes and Interfaces to Get File and Directory Information 667
  • 15.4 Sequential Text Files 671
  • 15.4.1 Creating a Sequential Text File 671
  • 15.4.2 Reading Data from a Sequential Text File 674
  • 15.4.3 Case Study: A Credit-Inquiry Program 675
  • 15.4.4 Updating Sequential Files 680
  • 15.5 XML Serialization 680
  • 15.5.1 Creating a Sequential File Using XML Serialization 680
  • 15.5.2 Reading and Deserializing Data from a Sequential File 686
  • 15.6 FileChooser and DirectoryChooser Dialogs 687
  • 15.7 (Optional) Additional java.io Classes 693
  • 15.7.1 Interfaces and Classes for Byte-Based Input and Output 693
  • 15.7.2 Interfaces and Classes for Character-Based Input and Output 695
  • 15.8 Wrap-Up 696
  • 16 Generic Collections 704
  • 16.1 Introduction 705
  • 16.2 Collections Overview 705
  • 16.3 Type-Wrapper Classes 707
  • 16.4 Autoboxing and Auto-Unboxing 707
  • 16.5 Interface Collection and Class Collections 707
  • 16.6 Lists 708
  • 16.6.1 ArrayList and Iterator 709
  • 16.6.2 LinkedList 711
  • 16.7 Collections Methods 716
  • 16.7.1 Method sort 716
  • 16.7.2 Method shuffle 720
  • 16.7.3 Methods reverse, fill, copy, max and min 722
  • 16.7.4 Method binarySearch 724
  • 16.7.5 Methods addAll, frequency and disjoint 725
  • 16.8 Class PriorityQueue and Interface Queue 727
  • 16.9 Sets 728
  • 16.10 Maps 731
  • 16.11 Synchronized Collections 735
  • 16.12 Unmodifiable Collections 735
  • 16.13 Abstract Implementations 736
  • 16.14 Java SE 9: Convenience Factory Methods for Immutable Collections 736
  • 16.15 Wrap-Up 740
  • 17 Lambdas and Streams 746
  • 17.1 Introduction 747
  • 17.2 Streams and Reduction 749
  • 17.2.1 Summing the Integers from 1 through 10 with a for Loop 749
  • 17.2.2 External Iteration with for Is Error Prone 750
  • 17.2.3 Summing with a Stream and Reduction 750
  • 17.2.4 Internal Iteration 751
  • 17.3 Mapping and Lambdas 752
  • 17.3.1 Lambda Expressions 753
  • 17.3.2 Lambda Syntax 754
  • 17.3.3 Intermediate and Terminal Operations 755
  • 17.4 Filtering 756
  • 17.5 How Elements Move Through Stream Pipelines 758
  • 17.6 Method References 759
  • 17.6.1 Creating an IntStream of Random Values 760
  • 17.6.2 Performing a Task on Each Stream Element with forEach and a Method Reference 760
  • 17.6.3 Mapping Integers to String Objects with mapToObj 761
  • 17.6.4 Concatenating Strings with collect 761
  • 17.7 IntStream Operations 762
  • 17.7.1 Creating an IntStream and Displaying Its Values 763
  • 17.7.2 Terminal Operations count, min, max, sum and average 763
  • 17.7.3 Terminal Operation reduce 764
  • 17.7.4 Sorting IntStream Values 766
  • 17.8 Functional Interfaces 767
  • 17.9 Lambdas: A Deeper Look 768
  • 17.10 Stream Manipulations 769
  • 17.10.1 Creating a Stream 770
  • 17.10.2 Sorting a Stream and Collecting the Results 771
  • 17.10.3 Filtering a Stream and Storing the Results for Later Use 771
  • 17.10.4 Filtering and Sorting a Stream and Collecting the Results 772
  • 17.10.5 Sorting Previously Collected Results 772
  • 17.11 Stream Manipulations 772
  • 17.11.1 Mapping Strings to Uppercase 773
  • 17.11.2 Filtering Strings Then Sorting Them in Case-Insensitive Ascending Order 774
  • 17.11.3 Filtering Strings Then Sorting Them in Case-Insensitive Descending Order 774
  • 17.12 Stream Manipulations 775
  • 17.12.1 Creating and Displaying a List 776
  • 17.12.2 Filtering Employees with Salaries in a Specified Range 777
  • 17.12.3 Sorting Employees By Multiple Fields 780
  • 17.12.4 Mapping Employees to Unique-Last-Name Strings 782
  • 17.12.5 Grouping Employees By Department 783
  • 17.12.6 Counting the Number of Employees in Each Department 784
  • 17.12.7 Summing and Averaging Employee Salaries 785
  • 17.13 Creating a Stream from a File 786
  • 17.14 Streams of Random Values 789
  • 17.15 Infinite Streams 791
  • 17.16 Lambda Event Handlers 793
  • 17.17 Additional Notes on Java SE 8 Interfaces 793
  • 17.18 Wrap-Up 794
  • 18 Recursion 808
  • 18.1 Introduction 809
  • 18.2 Recursion Concepts 810
  • 18.3 Example Using Recursion: Factorials 811
  • 18.4 Reimplementing Class FactorialCalculator Using BigInteger 813
  • 18.5 Example Using Recursion: Fibonacci Series 815
  • 18.6 Recursion and the Method-Call Stack 818
  • 18.7 Recursion vs. Iteration 819
  • 18.8 Towers of Hanoi 821
  • 18.9 Fractals 823
  • 18.9.1 Koch Curve Fractal 824
  • 18.9.2 (Optional) Case Study: Lo Feather Fractal 825
  • 18.9.3 (Optional) Fractal App GUI 827
  • 18.9.4 (Optional) FractalController Class 829
  • 18.10 Recursive Backtracking 834
  • 18.11 Wrap-Up 834
  • 19 Searching, Sorting and Big O 843
  • 19.1 Introduction 844
  • 19.2 Linear Search 845
  • 19.3 Big O Notation 848
  • 19.3.1 O(1) Algorithms 848
  • 19.3.2 O(n) Algorithms 848
  • 19.3.3 O(n2) Algorithms 848
  • 19.3.4 Big O of the Linear Search 849
  • 19.4 Binary Search 849
  • 19.4.1 Binary Search Implementation 850
  • 19.4.2 Efficiency of the Binary Search 853
  • 19.5 Sorting Algorithms 854
  • 19.6 Selection Sort 854
  • 19.6.1 Selection Sort Implementation 855
  • 19.6.2 Efficiency of the Selection Sort 857
  • 19.7 Insertion Sort 857
  • 19.7.1 Insertion Sort Implementation 858
  • 19.7.2 Efficiency of the Insertion Sort 860
  • 19.8 Merge Sort 861
  • 19.8.1 Merge Sort Implementation 861
  • 19.8.2 Efficiency of the Merge Sort 866
  • 19.9 Big O Summary for This Chapter’s Searching and Sorting Algorithms 866
  • 19.10 Massive Parallelism and Parallel Algorithms 867
  • 19.11 Wrap-Up 867
  • 20 Generic Classes and Methods: A Deeper Look 873
  • 20.1 Introduction 874
  • 20.2 Motivation for Generic Methods 874
  • 20.3 Generic Methods: Implementation and Compile-Time Translation 876
  • 20.4 Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Typ
  • 20.5 Overloading Generic Methods 882
  • 20.6 Generic Classes 883
  • 20.7 Wildcards in Methods That Accept Type Parameters 890
  • 20.8 Wrap-Up 894
  • 21 Custom Generic Data Structures 898
  • 21.1 Introduction 899
  • 21.2 Self-Referential Classes 900
  • 21.3 Dynamic Memory Allocation 900
  • 21.4 Linked Lists 901
  • 21.4.1 Singly Linked Lists 901
  • 21.4.2 Implementing a Generic List Class 902
  • 21.4.3 Generic Classes ListNode and List 905
  • 21.4.4 Class ListTest 905
  • 21.4.5 List Method insertAtFront 907
  • 21.4.6 List Method insertAtBack 908
  • 21.4.7 List Method removeFromFront 908
  • 21.4.8 List Method removeFromBack 909
  • 21.4.9 List Method print 910
  • 21.4.10 Creating Your Own Packages 910
  • 21.5 Stacks 915
  • 21.6 Queues 918
  • 21.7 Trees 920
  • 21.8 Wrap-Up 927
  • 22 JavaFX Graphics and Multimedia 952
  • 22.1 Introduction 953
  • 22.2 Controlling Fonts with Cascading Style Sheets (CSS) 954
  • 22.2.1 CSS That Styles the GUI 954
  • 22.2.2 FXML That Defines the GUI—Introduction to XML Markup 957
  • 22.2.3 Referencing the CSS File from FXML 960
  • 22.2.4 Specifying the VBox’s Style Class 960
  • 22.2.5 Programmatically Loading CSS 960
  • 22.3 Displaying Two-Dimensional Shapes 961
  • 22.3.1 Defining Two-Dimensional Shapes with FXML 961
  • 22.3.2 CSS That Styles the Two-Dimensional Shapes 964
  • 22.4 Polylines, Polygons and Paths 966
  • 22.4.1 GUI and CSS 967
  • 22.4.2 PolyShapesController Class 968
  • 22.5 Transforms 971
  • 22.6 Playing Video with Media, MediaPlayer and MediaViewer 973
  • 22.6.1 VideoPlayer GUI 974
  • 22.6.2 VideoPlayerController Class 976
  • 22.7 Transition Animations 980
  • 22.7.1 TransitionAnimations.fxml 980
  • 22.7.2 TransitionAnimationsController Class 982
  • 22.8 Timeline Animations 986
  • 22.9 Frame-by-Frame Animation with AnimationTimer 989
  • 22.10 Drawing on a Canvas 991
  • 22.11 Three-Dimensional Shapes 996
  • 22.12 Wrap-Up 999
  • 23Concurrency 1015
  • 23.1 Introduction 1016
  • 23.2 Thread States and Life Cycle 1018
  • 23.2.1 New and Runnable States 1019
  • 23.2.2 Waiting State 1019
  • 23.2.3 Timed Waiting State 1019
  • 23.2.4 Blocked State 1019
  • 23.2.5 Terminated State 1019
  • 23.2.6 Operating-System View of the Runnable State 1020
  • 23.2.7 Thread Priorities and Thread Scheduling 1020
  • 23.2.8 Indefinite Postponement and Deadlock 1021
  • 23.3 Creating and Executing Threads with the Executor Framework 1021
  • 23.4 Thread Synchronization 1025
  • 23.4.1 Immutable Data 1026
  • 23.4.2 Monitors 1026
  • 23.4.3 Unsynchronized Mutable Data Sharing 1027
  • 23.4.4 Synchronized Mutable Data Sharing—Making Operations Atomic 1031
  • 23.5 Producer/Consumer Relationship without Synchronization 1034
  • 23.6 Producer/Consumer Relationship: ArrayBlockingQueue 1042
  • 23.7 (Advanced) Producer/Consumer Relationship with synchronized, wait, notify and notifyAll 1045
  • 23.8 (Advanced) Producer/Consumer Relationship: Bounded Buffers 1051
  • 23.9 (Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces 1059
  • 23.10 Concurrent Collections 1066
  • 23.11 Multithreading in JavaFX 1068
  • 23.11.1 Performing Computations in a Worker Thread: Fibonacci Numbers 1069
  • 23.11.2 Processing Intermediate Results: Sieve of Eratosthenes 1074
  • 23.12 sort/parallelSort Timings with the Java SE 8 Date/Time API 1080
  • 23.13 Java SE 8: Sequential vs. Parallel Streams 1083
  • 23.14 (Advanced) Interfaces Callable and Future 1085
  • 23.15 (Advanced) Fork/Join Framework 1090
  • 23.16 Wrap-Up 1090
  • 24 Accessing Databases with JDBC 1102
  • 24.1 Introduction 1103
  • 24.3 A books Database 1105
  • 24.4 SQL 1109
  • 24.4.1 Basic SELECT Query 1110
  • 24.4.2 WHERE Clause 1110
  • 24.4.4 Merging Data from Multiple Tables: INNER JOIN 1114
  • 24.4.5 INSERT Statement 1115
  • 24.4.6 UPDATE Statement 1116
  • 24.4.7 DELETE Statement 1117
  • 24.5 Setting Up a Java DB Database 1118
  • 24.5.1 Creating the Chapter’s Databases on Windows 1119
  • 24.5.2 Creating the Chapter’s Databases on macOS 1120
  • 24.5.3 Creating the Chapter’s Databases on Linux 1120
  • 24.6 Connecting to and Querying a Database 1120
  • 24.6.1 Automatic Driver Discovery 1122
  • 24.6.2 Connecting to the Database 1122
  • 24.6.3 Creating a Statement for Executing Queries 1123
  • 24.6.4 Executing a Query 1123
  • 24.6.5 Processing a Query’s ResultSet 1124
  • 24.7 Querying the books Database 1125
  • 24.7.1 ResultSetTableModel Class 1125
  • 24.7.2 DisplayQueryResults App’s GUI 1132
  • 24.7.3 DisplayQueryResultsController Class 1132
  • 24.8 RowSet Interface 1137
  • 24.9 PreparedStatements 1140
  • 24.9.1 AddressBook App That Uses PreparedStatements 1141
  • 24.9.2 Class Person 1141
  • 24.9.3 Class PersonQueries 1143
  • 24.9.4 AddressBook GUI 1146
  • 24.9.5 Class AddressBookController 1147
  • 24.10 Stored Procedures 1152
  • 24.11 Transaction Processing 1152
  • 24.12 Wrap-Up 1153
  • 25 Introduction to JShell: Java 9’s REPL 1161
  • 25.1 Introduction 1162
  • 25.2 Installing JDK 9 1164
  • 25.3 Introduction to JShell 1164
  • 25.3.1 Starting a JShell Session 1165
  • 25.3.2 Executing Statements 1165
  • 25.3.3 Declaring Variables Explicitly 1166
  • 25.3.4 Listing and Executing Prior Snippets 1168
  • 25.3.5 Evaluating Expressions and Declaring Variables Implicitly 1170
  • 25.3.6 Using Implicitly Declared Variables 1170
  • 25.3.7 Viewing a Variable’s Value 1171
  • 25.3.8 Resetting a JShell Session 1171
  • 25.3.9 Writing Multiline Statements 1171
  • 25.3.10 Editing Code Snippets 1172
  • 25.3.11 Exiting JShell 1175
  • 25.4 Command-Line Input in JShell 1175
  • 25.5 Declaring and Using Classes 1176
  • 25.5.1 Creating a Class in JShell 1177
  • 25.5.2 Explicitly Declaring Reference-Type Variables 1177
  • 25.5.3 Creating Objects 1178
  • 25.5.4 Manipulating Objects 1178
  • 25.5.5 Creating a Meaningful Variable Name for an Expression 1179
  • 25.5.6 Saving and Opening Code-Snippet Files 1180
  • 25.6 Discovery with JShell Auto-Completion 1180
  • 25.6.1 Auto-Completing Identifiers 1181
  • 25.6.2 Auto-Completing JShell Commands 1182
  • 25.7 Exploring a Class’s Members and Viewing Documentation 1182
  • 25.7.1 Listing Class Math’s static Members 1183
  • 25.7.2 Viewing a Method’s Parameters 1183
  • 25.7.3 Viewing a Method’s Documentation 1184
  • 25.7.4 Viewing a public Field’s Documentation 1184
  • 25.7.5 Viewing a Class’s Documentation 1185
  • 25.7.6 Viewing Method Overloads 1185
  • 25.7.7 Exploring Members of a Specific Object 1186
  • 25.8 Declaring Methods 1188
  • 25.8.1 Forward Referencing an Undeclared Method—Declaring Method displayCubes 1188
  • 25.8.2 Declaring a Previously Undeclared Method 1188
  • 25.8.3 Testing cube and Replacing Its Declaration 1189
  • 25.8.4 Testing Updated Method cube and Method displayCubes 1189
  • 25.9 Exceptions 1190
  • 25.10 Importing Classes and Adding Packages to the CLASSPATH 1191
  • 25.11 Using an External Editor 1193
  • 25.12 Summary of JShell Commands 1195
  • 25.12.1 Getting Help in JShell 1196
  • 25.12.2 /edit Command: Additional Features 1197
  • 25.12.3 /reload Command 1197
  • 25.12.4 /drop Command 1198
  • 25.12.5 Feedback Modes 1198
  • 25.12.6 Other JShell Features Configurable with /set 1200
  • 25.13 Keyboard Shortcuts for Snippet Editing 1201
  • 25.14 How JShell Reinterprets Java for Interactive Use 1201
  • 25.15 IDE JShell Support 1202
  • 25.16 Wrap-Up 1202
  • Chapters on the Web 1218
  • A Operator Precedence Chart 1219
  • B ASCII Character Set 1221
  • C Keywords and Reserved Words 1222
  • D Primitive Types 1223
  • E Using the Debugger 1224
  • E.1 Introduction 1225
  • E.2 Breakpoints and the run, stop, cont and print Commands 1225
  • E.3 The print and set Commands 1229
  • E.4 Controlling Execution Using the step, step up and next Commands 1231
  • E.5 The watch Command 1233
  • E.6 The clear Command 1235
  • E.7 Wrap-Up 1238
  • Appendices on the Web 1239
  • Index 1241
  • Symbols
  • Numerics
  • A
  • B
  • C
  • D
  • E
  • F
  • G
  • H
  • I
  • J
  • K
  • L
  • M
  • N
  • O
  • P
  • Q
  • R
  • S
  • T
  • U
  • V
  • W
  • X
  • Y
  • Z
Show More

Additional information

Veldu vöru

Rafbók til eignar, Leiga á rafbók í 365 daga, Leiga á rafbók í 180 daga, Leiga á rafbók í 90 daga

Aðrar vörur

0
    0
    Karfan þín
    Karfan þín er tómAftur í búð