推荐序 前言 阅读本书之前的准备 1 Introduction to Java and Test-Driving a Java Application 1.1 Introduction 1.2 Object Technology Concepts 1.2.1 The Automobile as an Object 1.2.2 Methods and Classes 1.2.3 Instantiation 1.2.4 Reuse 1.2.5 Messages and Method Calls 1.2.6 Attributes and Instance Variables 1.2.7 Encapsulation and Information Hiding 1.2.8 Inheritance 1.2.9 Interfaces 1.2.10 Object-Oriented Analysis and Design (OOAD) 1.2.11 The UML (Unified Modeling Language) 1.3 Open Source Software 1.4 Java 1.5 A Typical Java Development Environment 1.6 Test-Driving a Java Application 1.7 Software Technologies 1.8 Keeping Up-to-Date with Information Technologies 2 Introduction to Java Applications; Input/Output and Operators 2.1 Introduction 2.2 Your First Program in Java: Printing a Line of Text 2.3 Modifying Your First Java Program 2.4 Displaying Text with printf 2.5 Another Application: Adding Integers 2.6 Arithmetic 2.7 Decision Making: Equality and Relational Operators 2.8 Wrap-Up 3 Introduction to Classes, Objects, Methods and Strings 3.1 Introduction 3.2 Instance Variables, set Methods and get Methods 3.2.1 Account Class with an Instance Variable, a set Method and a get Method 3.2.2 AccountTest Class That Creates and Uses an Object of Class Account 3.2.3 Compiling and Executing an App with Multiple Classes 3.2.4 Account UML Class Diagram with an Instance Variable and set and get Methods 3.2.5 Additional Notes on Class AccountTest 3.2.6 Software Engineering with private Instance Variables and public set and get Methods 3.3 Primitive Types vs. Reference Types 3.4 Account Class: Initializing Objects with Constructors 3.4.1 Declaring an Account Constructor for Custom Object Initialization 3.4.2 Class AccountTest : Initializing Account Objects When They’re Created 3.5 Account Class with a Balance; Floating-Point Numbers 3.5.1 Account Class with a balance Instance Variable of Type double 3.5.2 AccountTest Class to Use Class Account 3.6 Wrap-Up 4 Control Statements: Part 1; Assignment, ++ and -- Operators 4.1 Introduction 4.2 Control Structures 4.3 if Single-Selection Statement 4.4 if … else Double-Selection Statement 4.5 Student Class: Nested if … else Statements 4.6 while Repetition Statement 4.7 Counter-Controlled Repetition 4.8 Sentinel-Controlled Repetition 4.9 Nested Control Statements 4.10 Compound Assignment Operators 4.11 Increment and Decrement Operators 4.12 Primitive Types 4.13 Wrap-Up 5 Control Statements: Part 2; Logical Operators 5.1 Introduction 5.2 Essentials of Counter-Controlled Repetition 5.3 for Repetition Statement 5.4 Examples Using the for Statement 5.5 do … while Repetition Statement 5.6 switch Multiple-Selection Statement 5.7 Class AutoPolicy Case Study: String s in switch Statements 5.8 break and continue Statements 5.9 Logical Operators 5.10 Wrap-Up 6 Methods: A Deeper Look 6.1 Introduction 6.2 Program Modules in Java 6.3 static Methods, static Fields and Class Math 6.4 Declaring Methods with Multiple Parameters 6.5 Notes on Declaring and Using Methods 6.6 Argument Promotion and Casting 6.7 Java API Packages 6.8 Case Study: Secure Random-Number Generation 6.9 Case Study: A Game of Chance; Introducing enum Types 6.10 Scope of Declarations 6.11 Method Overloading 6.12 Wrap-Up 7 Arrays and ArrayLists 7.1 Introduction 7.2 Arrays 7.3 Declaring and Creating Arrays 7.4 Examples Using Arrays 7.4.1 Creating and Initializing an Array 7.4.2 Using an Array Initializer 7.4.3 Calculating the Values to Store in an Array 7.4.4 Summing the Elements of an Array 7.4.5 Using Bar Charts to Display Array Data Graphically 7.4.6 Using the Elements of an Array as Counters 7.4.7 Using Arrays to Analyze Survey Results 7.5 Exception Handling: Processing the Incorrect Response 7.5.1 The try Statement 7.5.2 Executing the catch Block 7.5.3 toString Method of the Exception Parameter 7.6 Case Study: Card Shuffling and Dealing Simulation 7.7 Enhanced for Statement 7.8 Passing Arrays to Methods 7.9 Pass-By-Value vs. Pass-By-Reference 7.10 Case Study: Class GradeBook Using an Array to Store Grades 7.11 Multidimensional Arrays 7.12 Case Study: Class GradeBook Using a Two-Dimensional Array 7.13 Variable-Length Argument Lists 7.14 Using Command-Line Arguments 7.15 Class Arrays 7.16 Introduction to Collections and Class ArrayList 7.17 Wrap-Up 8 Classes and Objects: A Deeper Look 8.1 Introduction 8.2 Time Class Case Study 8.3 Controlling Access to Members 8.4 Referring to the Current Object’s Members with the this Reference 8.5 Time Class Case Study: Overloaded Constructors 8.6 Default and No-Argument Constructors 8.7 Notes on Set and Get Methods 8.8 Composition 8.9 enum Types 8.10 Garbage Collection 8.11 static Class Members 8.12 static Import 8.13 final Instance Variables 8.14 Time Class Case Study: Creating Packages 8.15 Package Access 8.16 Using BigDecimal for Precise Monetary Calculations 8.17 Wrap-Up 9 Object-Oriented Programming: Inheritance 9.1 Introduction 9.2 Superclasses and Subclasses 9.3 protected Members 9.4 Relationship Between Superclasses and Subclasses 9.4.1 Creating and Using a CommissionEmployee Class 9.4.2 Creating and Using a BasePlusCommissionEmployee Class 9.4.3 Creating a CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy 9.4.4 CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy Using protected Instance Variables 9.4.5 CommissionEmployee ? BasePlusCommissionEmployee Inheritance Hierarchy Using private Instance Variables 9.5 Constructors in Subclasses 9.6 Class Object 9.7 Wrap-Up 10 Object-Oriented Programming: Polymorphism and Interfaces 10.1 Introduction 10.2 Polymorphism Examples 10.3 Demonstrating Polymorphic Behavior 10.4 Abstract Classes and Methods 10.5 Case Study: Payroll System Using Polymorphism 10.5.1 Abstract Superclass Employee 10.5.2 Concrete Subclass SalariedEmployee 10.5.3 Concrete Subclass HourlyEmployee 10.5.4 Concrete Subclass CommissionEmployee 10.5.5 Indirect Concrete Subclass BasePlusCommissionEmployee 10.5.6 Polymorphic Processing, Operator instanceof and Downcasting 10.6 Allowed Assignments Between Superclass and Subclass Variables 10.7 final Methods and Classes 10.8 A Deeper Explanation of Issues with Calling Methods from Constructors 10.9 Creating and Using Interfaces 10.9.1 Developing a Payable Hierarchy 10.9.2 Interface Payable 10.9.3 Class Invoice 10.9.4 Modifying Class Employee to Implement Interface Payable 10.9.5 Modifying Class SalariedEmployee for Use in the Payable Hierarchy 10.9.6 Using Interface Payable to Process Invoice s and Employees Polymorphically 10.9.7 Some Common Interfaces of the Java API 10.10 Java SE 8 Interface Enhancements 10.10.1 default Interface Methods 10.10.2 static Interface Methods 10.10.3 Functional Interfaces 10.11 Wrap-Up 11 Exception Handling: A Deeper Look 11.1 Introduction 11.2 Example: Divide by Zero without Exception Handling 11.3 Exception Handling: ArithmeticExceptions and InputMismatchExceptions 11.4 When to Use Exception Handling 11.5 Java Exception Hierarchy 11.6 finally Block 11.7 Stack Unwinding and Obtaining Information from an Exception Object 322 11.8 Chained Exceptions 11.9 Declaring New Exception Types 11.10 Preconditions and Postconditions 11.11 Assertions 11.12 try -with-Resources: Automatic Resource Deallocation 11.13 Wrap-Up 12 Swing GUI Components: Part 12.1 Introduction 12.2 Java’s Nimbus Look-and-Feel 12.3 Simple GUI-Based Input/Output with JOptionPane 12.4 Overview of Swing Components 12.5 Displaying Text and Images in a Window 12.6 Text Fields and an Introduction to Event Handling with Nested Classes 12.7 Common GUI Event Types and Listener Interfaces 12.8 How Event Handling Works 12.9 JButton 12.10 Buttons That Maintain State 12.10.1 JCheckBox 12.10.2 JRadioButton 12.11 JComboBox ; Using an Anonymous Inner Class for Event Handling 12.12 JList 12.13 Multiple-Selection Lists 12.14 Mouse Event Handling 12.15 Adapter Classes 12.16 JPanel Subclass for Drawing with the Mouse 12.17 Key Event Handling 12.18 Introduction to Layout Managers 12.18.1 FlowLayout 12.18.2 BorderLayout 12.18.3 GridLayout 12.19 Using Panels to Manage More Complex Layouts 12.20 JTextArea 12.21 Wrap-Up 13 Graphics and Java 2D 13.1 Introduction 13.2 Graphics Contexts and Graphics Objects 13.3 Color Control 13.4 Manipulating Fonts 13.5 Drawing Lines, Rectangles and Ovals 13.6 Drawing Arcs 13.7 Drawing Polygons and Polylines 13.8 Java 2D API 13.9 Wrap-Up 14 Strings, Characters and Regular Expressions 14.1 Introduction 14.2 Fundamentals of Characters and Strings 14.3 Class String 14.3.1 String Constructors 14.3.2 String Methods length , charAt and getChars 14.3.3 Comparing Strings 14.3.4 Locating Characters and Substrings in Strings 14.3.5 Extracting Substrings from Strings 14.3.6 Concatenating Strings 14.3.7 Miscellaneous String Methods 14.3.8 String Method valueOf 14.4 Class StringBuilder 14.4.1 StringBuilder Constructors 14.4.2 StringBuilder Methods length , capacity , setLength and ensureCapacity 14.4.3 StringBuilder Methods charAt , setCharAt , getChars and reverse 14.4.4 StringBuilder append Methods 14.4.5 StringBuilder Insertion and Deletion Methods 14.5 Class Character 14.6 Tokenizing String s 14.7 Regular Expressions, Class Pattern and Class Matcher 14.8 Wrap-Up 15 Files, Streams and Object Serialization 15.1 Introduction 15.2 Files and Streams 15.3 Using NIO Classes and Interfaces to Get File and Directory Information 15.4 Sequential-Access Text Files 15.4.1 Creating a Sequential-Access Text File 15.4.2 Reading Data from a Sequential-Access Text File 15.4.3 Case Study: A Credit-Inquiry Program 15.4.4 Updating Sequential-Access Files 15.5 Object Serialization 15.5.1 Creating a Sequential-Access File Using Object Serialization 15.5.2 Reading and Deserializing Data from a Sequential-Access File 15.6 Opening Files with JFileChooser 15.7 (Optional) Additional java.io Classes 15.7.1 Interfaces and Classes for Byte-Based Input and Output 15.7.2 Interfaces and Classes for Character-Based Input and Output 15.8 Wrap-Up 16 Generic Collections 16.1 Introduction 16.2 Collections Overview 16.3 Type-Wrapper Classes 16.4 Autoboxing and Auto-Unboxing 16.5 Interface Collection and Class Collections 16.6 Lists 16.6.1 ArrayList and Iterator 16.6.2 LinkedList 16.7 Collections Methods 16.7.1 Method sort 16.7.2 Method shuffle 16.7.3 Methods reverse , fill , copy , max and min 16.7.4 Method binarySearch 16.7.5 Methods addAll , frequency and disjoint 16.8 Stack Class of Package java.util 16.9 Class PriorityQueue and Interface Queue 16.10 Sets 16.11 Maps 16.12 Properties Class 16.13 Synchronized Collections 16.14 Unmodifiable Collections 16.15 Abstract Implementations 16.16 Wrap-Up 17 Java SE 8 Lambdas and Streams 17.1 Introduction 17.2 Functional Programming Technologies Overview 17.2.1 Functional Interfaces 17.2.2 Lambda Expressions 17.2.3 Streams 17.3 IntStream Operations 17.3.1 Creating an IntStream and Displaying Its Values with the forEach Terminal Operation 17.3.2 Terminal Operations count , min , max , sum and average 17.3.3 Terminal Operation reduce 17.3.4 Intermediate Operations: Filtering and Sorting IntStream Values 17.3.5 Intermediate Operation: Mapping 17.3.6 Creating Streams of int s with IntStream Methods range and rangeClosed 17.4 Stream<Integer> Manipulations 17.4.1 Creating a Stream<Integer> 17.4.2 Sorting a Stream and Collecting the Results 17.4.3 Filtering a Stream and Storing the Results for Later Use 17.4.4 Filtering and Sorting a Stream and Collecting the Results 17.4.5 Sorting Previously Collected Results 17.5 Stream<String> Manipulations 17.5.1 Mapping String s to Uppercase Using a Method Reference 17.5.2 Filtering String s Then Sorting Them in Case-Insensitive Ascending Order 17.5.3 Filtering String s Then Sorting Them in Case-Insensitive Descending Order 17.6 Stream<Employee> Manipulations 17.6.1 Creating and Displaying a List<Employee> 17.6.2 Filtering Employee s with Salaries in a Specified Range 17.6.3 Sorting Employee s By Multiple Fields 17.6.4 Mapping Employee s to Unique Last Name String s 17.6.5 Grouping Employee s By Department 17.6.6 Counting the Number of Employee s in Each Department 17.6.7 Summing and Averaging Employee Salaries 17.7 Creating a Stream<String> from a File 17.8 Generating Streams of Random Values 17.9 Lambda Event Handlers 17.10 Additional Notes on Java SE 8 Interfaces 17.11 Java SE 8 and Functional Programming Resources 17.12 Wrap-Up 18 Generic Classes and Methods 18.1 Introduction 18.2 Motivation for Generic Methods 18.3 Generic Methods: Implementation and Compile-Time Translation 18.4 Additional Compile-Time Translation Issues: Methods That Use a Type Parameter as the Return Type 18.5 Overloading Generic Methods 18.6 Generic Classes 18.7 Raw Types 18.8 Wildcards in Methods That Accept Type Parameters 18.9 Wrap-Up 19 Swing GUI Components: Part 19.1 Introduction 19.2 JSlider 19.3 Understanding Windows in Java 19.4 Using Menus with Frames 19.5 JPopupMenu 19.6 Pluggable Look-and-Feel 19.7 JDesktopPane and JInternalFrame 19.8 JTabbedPane 19.9 BoxLayout Layout Manager 19.10 GridBagLayout Layout Manager 19.11 Wrap-Up 20 Concurrency 20.1 Introduction 20.2 Thread States and Life Cycle 20.2.1 New and Runnable States 20.2.2 Waiting State 20.2.3 Timed Waiting State 20.2.4 Blocked State 20.2.5 Terminated State 20.2.6 Operating-System View of the Runnable State 20.2.7 Thread Priorities and Thread Scheduling 20.2.8 Indefinite Postponement and Deadlock 20.3 Creating and Executing Threads with the Executor Framework 20.4 Thread Synchronization 20.4.1 Immutable Data 20.4.2 Monitors 20.4.3 Unsynchronized Mutable Data Sharing 20.4.4 Synchronized Mutable Data Sharing―Making Operations Atomic 20.5 Producer/Consumer Relationship without Synchronization 20.6 Producer/Consumer Relationship: ArrayBlockingQueue 20.7 (Advanced) Producer/Consumer Relationship with synchronized , wait , notify and notifyAll 20.8 (Advanced) Producer/Consumer Relationship: Bounded Buffers 20.9 (Advanced) Producer/Consumer Relationship: The Lock and Condition Interfaces 20.10 Concurrent Collections 20.11 Multithreading with GUI: SwingWorker 20.11.1 Performing Computations in a Worker Thread: Fibonacci Numbers 20.11.2 Processing Intermediate Results: Sieve of Eratosthenes 20.12 sort / parallelSort Timings with the Java SE 8 Date/Time API 20.13 Java SE 8: Sequential vs. Parallel Streams 20.14 (Advanced) Interfaces Callable and Future 20.15 (Advanced) Fork/Join Framework 20.16 Wrap-Up 21 Accessing Databases with JDBC 21.1 Introduction 21.2 Relational Databases 21.3 A books Database 21.4 SQL 21.4.1 Basic SELECT Query 21.4.2 WHERE Clause 21.4.3 ORDER BY Clause 21.4.4 Merging Data from Multiple Tables: INNER JOIN 21.4.5 INSERT Statement 21.4.6 UPDATE Statement 21.4.7 DELETE Statement 21.5 Setting up a Java DB Database 21.5.1 Creating the Chapter’s Databases on Windows 21.5.2 Creating the Chapter’s Databases on Mac OS X 21.5.3 Creating the Chapter’s Databases on Linux 21.6 Manipulating Databases with JDBC 21.6.1 Connecting to and Querying a Database 21.6.2 Querying the books Database 21.7 RowSet Interface 21.8 PreparedStatement s 21.9 Stored Procedures 21.10 Transaction Processing 21.11 Wrap-Up 22 JavaFX GUI 22.1 Introduction 22.2 JavaFX Scene Builder and the NetBeans IDE 22.3 JavaFX App Window Structure 22.4 Welcome App―Displaying Text and an Image 22.4.1 Creating the App’s Project 22.4.2 NetBeans Projects Window―Viewing the Project Contents 22.4.3 Adding an Image to the Project 22.4.4 Opening JavaFX Scene Builder from NetBeans 22.4.5 Changing to a VBox Layout Container 22.4.6 Configuring the VBox Layout Container 22.4.7 Adding and Configuring a Label 22.4.8 Adding and Configuring an ImageView 22.4.9 Running the Welcome App 22.5 Tip Calculator App―Introduction to Event Handling 22.5.1 Test-Driving the Tip Calculator App 22.5.2 Technologies Overview 22.5.3 Building the App’s GUI 22.5.4 TipCalculator Class 22.5.5 TipCalculatorController Class 22.6 Wrap-Up 23 ATM Case Study, Part 1: Object-Oriented Design with the UML 23.1 Case Study Introduction 23.2 Examining the Requirements Document 23.3 Identifying the Classes in a Requirements Document 23.4 Identifying Class Attributes 23.5 Identifying Objects’ States and Activities 23.6 Identifying Class Operations 23.7 Indicating Collaboration Among Objects 23.8 Wrap-Up 24 ATM Case Study Part 2: Implementing an Object-Oriented Design 24.1 Introduction 24.2 Starting to Program the Classes of the ATM System 24.3 Incorporating Inheritance and Polymorphism into the ATM System 24.4 ATM Case Study Implementation 24.4.1 Class ATM 24.4.2 Class Screen 24.4.3 Class Keypad 24.4.4 Class CashDispenser 24.4.5 Class DepositSlot 24.4.6 Class Account 24.4.7 Class BankDatabase 24.4.8 Class Transaction 24.4.9 Class BalanceInquiry 24.4.10 Class Withdrawal 24.4.11 Class Deposit 24.4.12 Class ATMCaseStudy 24.5 Wrap-Up A Operator Precedence Chart B ASCII Character Set C Keywords and Reserved Words D Primitive Types E Using the Debugger E.1 Introduction E.2 Breakpoints and the run , stop , cont and print Commands E.3 The print and set Commands E.4 Controlling Execution Using the step , step up and next Commands E.5 The watch Command E.6 The clear Command E.7 Wrap-Up F Using the Java API Documentation F.1 Introduction F.2 Navigating the Java API G Creating Documentation with javadoc G.1 Introduction G.2 Documentation Comments G.3 Documenting Java Source Code G.4 javadoc G.5 Files Produced by javadoc H Unicode? H.1 Introduction H.2 Unicode Transformation Formats H.3 Characters and Glyphs H.4 Advantages/Disadvantages of Unicode H.5 Using Unicode H.6 Character Ranges I Formatted Output I.1 Introduction I.2 Streams I.3 Formatting Output with printf I.4 Printing Integers I.5 Printing Floating-Point Numbers I.6 Printing Strings and Characters I.7 Printing Dates and Times I.8 Other Conversion Characters I.9 Printing with Field Widths and Precisions I.10 Using Flags in the printf Format String I.11 Printing with Argument Indices I.12 Printing Literals and Escape Sequences I.13 Formatting Output with Class Formatter I.14 Wrap-Up J Number Systems J.1 Introduction J.2 Abbreviating Binary Numbers as Octal and Hexadecimal Numbers J.3 Converting Octal and Hexadecimal Numbers to Binary Numbers J.4 Converting from Binary, Octal or Hexadecimal to Decimal J.5 Converting from Decimal to Binary, Octal or Hexadecimal J.6 Negative Binary Numbers: Two’s Complement Notation K Bit Manipulation K.1 Introduction K.2 Bit Manipulation and the Bitwise Operators K.3 BitSet Class L Labeled break and continue Statements L.1 Introduction L.2 Labeled break Statement L.3 Labeled continue Statement M UML 2: Additional Diagram Types M.1 Introduction M.2 Additional Diagram Types N Design Patterns N.1 Introduction N.2 Creational, Structural and Behavioral Design Patterns N.2.1 Creational Design Patterns N.2.2 Structural Design Patterns N.2.3 Behavioral Design Patterns N.2.4 Conclusion N.3 Design Patterns in Packages java.awt and javax.swing N.3.1 Creational Design Patterns N.3.2 Structural Design Patterns N.3.3 Behavioral Design Patterns N.3.4 Conclusion N.4 Concurrency Design Patterns N.5 Design Patterns Used in Packages java.io and java.net N.5.1 Creational Design Patterns N.5.2 Structural Design Patterns N.5.3 Architectural Patterns N.5.4 Conclusion N.6 Design Patterns Used in Package java.util N.6.1 Creational Design Patterns N.6.2 Behavioral Design Patterns N.7 Wrap-Up Index
以下为对购买帮助不大的评价