Contents in Brief
Chapter 1 Introduction to Computers and Java 1
Chapter 2 Java Fundamentals 27
Chapter 3 Decision Structures 111
Chapter 4 Loops and Files 189
Chapter 5 Methods 269
Chapter 6 A First Look at Classes 317
Chapter 7 Arrays and the ArrayList Class 403
Chapter 8 A Second Look at Classes and Objects 493
Chapter 9 Text Processing and More about Wrapper Classes 557
Chapter 10 Inheritance 611
Chapter 11 Exceptions and Advanced File I/O701
Chapter 12 JavaFX: GUI Programming and Basic Controls 759
Chapter 13 JavaFX: Advanced Controls 823
Chapter 14 JavaFX: Graphics, Effects, and Media 909
Chapter 15 Recursion 999
Chapter 16 Databases 1027
Index 1109
Appendices A–M Companion Website
Case Studies 1–7 Companion Website
Chapters 17–20 Companion Website
Chapter 1 Introduction to Computers and Java 1
1 1 Introduction 1
1.2 WhyProgram? 1
1.3 Computer Systems: Hardware and Software 2
Hardware 2
Software 5
1.4 Programming Languages 6
What Is a Program? 6 A Historyof Java 8
1 5 What Is a Program Made Of? 8 Language Elements 8
Lines and Statements 11
Variables 11
The Compiler and the Java Virtual Machine 12
Java Software Editions 13
Compiling and Running a Java Program 14
1 6 The Programming Process 16 Software Engineering 18
1 7 Object-Oriented Programming 19
Review Questions and Exercises 21
Programming Challenge 25 Chapter 2 Java Fundamentals 27
2 1 The Parts of a Java Program 27
2.2 The print and println Methods, and the Java API 33
2 3 Variables and Literals 39
Displaying Multiple Items with the Operator 40
Be Careful with Quotation Marks 41
More about Literals 42
Identifiers 42 Class Names 44
2 4 Primitive Data Types 44 The Integer Data Types 46 Floating-Point Data Types
Variable Assignment and Initialization 52
Variables Hold OnlyOne Value at a Time 53
2 5 Arithmetic Operators 54 Integer Division 57
Operator Precedence 57
Grouping with Parentheses 59
The Math Class 62
2 6 Combined Assignment Operators 63
2 7 Conversion between Primitive Data Types 65 Mixed Integer Operations 67
Other Mixed Mathematical Expressions 68
2 8 Creating Named Constants with final 69
2.9 The String Class 70 Objects Are Created from Classes 71
The String Class 71
Primitive Type Variables and Class Type Variables 71
Creating a String Object 72
2.10 Scope 76
2 11 Comments 78
2 12 Programming Style 83
2.13 Reading Keyboard Input 85
Reading a Character 89
Mixing Calls to nextLine with Calls to Other Scanner Methods 89
2.14 Dialog Boxes 93
Displaying Message Dialogs 93
Displaying Input Dialogs 94
An Example Program 94
Converting String Input to Numbers 96
2.15 Common Errors to Avoid 99
Review Questions and Exercises 100
Programming Challenges 106
Chapter 3 Decision Structures 111
3.1 The if Statement 111
Using Relational Operators to Form Conditions 113
Putting It All Together 114
Programming
and
Be Careful with Semicolons 117
Having Multiple ConditionallyExecuted Statements 118
Flags 118
Comparing Characters 119
3.2 The if-else Statement 120
3 3 Nested if Statements 122
3.4 The if-else-if Statement 128
3 5 Logical Operators 134
The Precedence of Logical Operators 139
Checking Numeric Ranges with Logical Operators 140
3.6 Comparing String Objects 142
Ignoring Case in String Comparisons 146
3 7 More about Variable Declaration and Scope 147
3.8 The Conditional Operator (Optional) 149
3 9 The switch Statement 150
3 10 Displaying Formatted Output with System out printf and String format 160
Format Specifier Syntax 163
Precision 164
Specifying a Minimum Field Width 164
Flags 167
Formatting String Arguments 170
The String format Method 172
3.11 Common Errors to Avoid 174
Review Questions and Exercises 175
Programming Challenges 181
Chapter 4 Loops and Files 189
4.1 The Increment and Decrement Operators 189
The Difference between Postfix and Prefix Modes 192
4 2 The while Loop 193
The while Loop Is a Pretest Loop 196 Infinite Loops 196
Don’t Forget the Braces with a Block of Statements 197
Programming Style and the while Loop 198
4 3 Using the while Loop for Input Validation 200
4.4 The do-while Loop 204
4 5 The for Loop 207
The for Loop Is a Pretest Loop 210
Avoid Modifying the Control Variable in the Bodyof the for Loop 211
Other Forms of the Update Expression 211
Declaring a Variable in the for Loop’s Initialization Expression 211
Creating a User Controlled for Loop 212
Using Multiple Statements in the Initialization and Update Expressions 213
4.6 Running Totals and Sentinel Values 216
Using a Sentinel Value 219
4.7 Nested Loops 221
4 8 The break and continue Statements (Optional) 229
4.9 Deciding Which Loop to Use 229
4.10 Introduction to File Input and Output 230
Using the PrintWriter Class to Write Data to a File 230
Appending Data to a File 236
Specifying the File Location 237
Reading Data from a File 237
Reading Lines from a File with the nextLine Method 238
Adding a throws Clause to the Method Header 241
Checking for a File’s Existence 245
4 11 Generating Random Numbers with the Random Class 249
4 12 Common Errors to Avoid 255
Review Questions and Exercises 256
Programming Challenges 262
Chapter 5 Methods 269
5.1 Introduction to Methods 269
void Methods and Value-Returning Methods 270
Defining a void Method 271
Calling a Method 272
Layered Method Calls 276
Using Documentation Comments with Methods 277
5.2 Passing Arguments to a Method 279
Argument and Parameter Data Type Compatibility281
Parameter Variable Scope 282
Passing Multiple Arguments 282
Arguments Are Passed byValue 284
Passing Object References to a Method 285
Using the @param Tag in Documentation
5 3 More about Local Variables
Local Variable Lifetime 292
Initializing Local Variables with Parameter Values 292
5.4 Returning a Value from a Method 293
Defining a Value-Returning Method 293
Calling a Value-Returning Method 294
Using the @return Tag in Documentation Comments 296
Returning a boolean Value 300
Returning a Reference to an Object 300
5 5 Problem Solving with Methods 302
Calling Methods That Throw Exceptions 305
5 6 Common Errors to Avoid 305
Review Questions and Exercises 306
Programming Challenges 311
Chapter 6 A First Look at Classes 317
6 1 Objects and Classes 317
Classes: Where Objects Come From 318
Classes in the Java API 319
Primitive Variables vs Objects 321
6 2 Writing a Simple Class, Step byStep 324
Accessor and Mutator Methods 338
The Importance of Data Hiding 338
Avoiding Stale Data 339
Showing Access Specification in UML Diagrams 339
Data Type and Parameter Notation in UML Diagrams 339
Layout of Class Members 340
6 3 Instance Fields and Methods 341
6.4 Constructors 346
Showing Constructors in a UML Diagram 348
Uninitialized Local Reference Variables 348
The Default Constructor 348
Writing Your Own No-Arg Constructor 349
The String Class Constructor 350
6 5 Passing Objects as Arguments 358
6.6 Overloading Methods and Constructors 370
The BankAccount Class 372
Overloaded Methods Make Classes More Useful 378
6.7 Scope of Instance Fields 378 Shadowing 379
6 8 Packages and import Statements 380
Explicit and Wildcard import Statements 380
The java lang Package 381
Other API Packages 381
6 9 Focus on Object-Oriented Design: Finding the Classes and Their Responsibilities 382
Finding the Classes 382
Identifying a Class’s Responsibilities 385
This Is Onlythe Beginning 388
6 10 Common Errors to Avoid 388
Review Questions and Exercises 389
Programming Challenges 394
Chapter 7 Arrays and the ArrayList Class 403
7.1 Introduction to Arrays 403
Accessing ArrayElements 405
Inputting and Outputting ArrayContents 406
Java Performs Bounds Checking 409
Watch Out for Off-by-One Errors 410
ArrayInitialization 411
Alternate ArrayDeclaration Notation 412
7 2 Processing ArrayElements 413
ArrayLength 415
The Enhanced for Loop 416
Letting the User Specifyan Array’s Size 417
Reassigning ArrayReference Variables 419
Copying Arrays 420
7.3 Passing Arrays as Arguments to Methods 422
7 4 Some Useful ArrayAlgorithms and Operations 426
Comparing Arrays 426
Summing the Values in a Numeric Array427
Getting the Average of the Values in a Numeric Array428
Finding the Highest and Lowest Values in a Numeric Array428
The SalesData Class 429
PartiallyFilled Arrays 437
Working with Arrays and Files 438
7.5 Returning Arrays from Methods 439
7.6 String Arrays 441
Calling String Methods from an ArrayElement
7 8 The Sequential Search Algorithm 447
7.9 Two-Dimensional Arrays 450
Initializing a Two-Dimensional Array454
The length Field in a Two-Dimensional Array455
Displaying All the Elements of a Two-Dimensional Array457
Summing All the Elements of a Two-Dimensional Array457
Summing the Rows of a Two-Dimensional Array458
Summing the Columns of a Two-Dimensional Array458
Passing Two-Dimensional Arrays to Methods 459
Ragged Arrays 461
7.10 Arrays with Three or More Dimensions 462
7.11 The Selection Sort and the BinarySearch Algorithms 463
The Selection Sort Algorithm 463
The BinarySearch Algorithm 466
7.12 Command-Line Arguments and Variable-Length Argument Lists 468
Command-Line Arguments 469
Variable-Length Argument Lists 470
7 13 The ArrayList Class 472
Creating and Using an ArrayList Object 473
Using the Enhanced for Loop with an ArrayList 474
The ArrayList Class’s toString method 475
Removing an Item from an ArrayList 476
Inserting an Item 477
Replacing an Item 478
Capacity479
Storing Your Own Objects in an ArrayList 479
Using the Diamond Operator for Type Inference 480
7.14 Common Errors to Avoid 481
Review Questions and Exercises 481
Programming Challenges 486
Chapter 8 A Second Look at Classes and Objects 493
8 1 Static Class Members 493
A Quick Review of Instance Fields and Instance Methods 493
Static Members 494
Static Fields 494
Static Methods
8 2 Passing Objects as Arguments to Methods 500
8 3 Returning Objects from Methods 503
8.4 The toString Method 505
8 5 Writing an equals Method 509
8 6 Methods That CopyObjects 512
CopyConstructors 514
8 7 Aggregation 515
Aggregation in UML Diagrams 523
SecurityIssues with Aggregate Classes 523
Avoid Using null References 525
8.8 The this Reference Variable 528
Using this to Overcome Shadowing 529
Using this to Call an Overloaded Constructor from Another Constructor 530
8 9 Enumerated Types 531
Enumerated Types Are Specialized Classes 532
Switching On an Enumerated Type 538
8 10 Garbage Collection 540
The finalize Method 542
8 11 Focus on Object-Oriented Design: Class Collaboration 542
Determining Class Collaborations with CRC Cards 545
8.12 Common Errors to Avoid 546
Review Questions and Exercises 547
Programming Challenges 551
Chapter 9 Text Processing and More about Wrapper Classes 557
9.1 Introduction to Wrapper Classes 557
9 2 Character Testing and Conversion with the Character Class 558
Character Case Conversion 563
9.3 More String Methods 566
Searching for Substrings 566
Extracting Substrings 572
Methods That Return a Modified String 576
The Static valueOf Methods 577
9 4 The StringBuilder Class 579
The StringBuilder Constructors 580
Other StringBuilder Methods 581
The toString Method 584
9.5 Tokenizing Strings 589
9 6 Wrapper Classes for the Numeric
The Static toString Methods 594
The toBinaryString , toHexString , and toOctalString Methods 594
The MIN VALUE and MAX VALUE Constants 595
Autoboxing and Unboxing 595
9 7 Focus on Problem Solving: The TestScoreReader Class 597
9 8 Common Errors to Avoid 601
Review Questions and Exercises 601
Programming Challenges 605
Chapter 10 Inheritance 611
10.1 What Is Inheritance? 611
Generalization and Specialization 611
Inheritance and the “Is a ” Relationship 612
Inheritance in UML Diagrams 620
The Superclass’s Constructor 621
Inheritance Does Not Work in Reverse 623
10 2 Calling the Superclass Constructor 624
When the Superclass Has No Default or No-Arg Constructors 630
Summaryof Constructor Issues in Inheritance 631
10 3 Overriding Superclass Methods 632
Overloading versus Overriding 637
Preventing a Method from Being Overridden 640
10.4 Protected Members 641
Package Access 646
10 5 Chains of Inheritance 647 Class Hierarchies 653
10 6 The Object Class 653
10 7 Polymorphism 655
Polymorphism and Dynamic Binding 656
The “Is-a” Relationship Does Not Work in Reverse 658
The instanceof Operator 659
10 8 Abstract Classes and Abstract Methods 660
Abstract Classes in UML 666
10.9 Interfaces 667
An Interface is a Contract 669
Fields in Interfaces 673
Implementing Multiple Interfaces 673
Interfaces in UML 673
Default Methods 674
Polymorphism and Interfaces 676
10 10 Anonymous Inner Classes 681
10.11 Functional Interfaces and Lambda Expressions 684
10 12 Common Errors to Avoid 689
Review Questions and Exercises 690
Programming Challenges 696
Chapter 11 Exceptions and Advanced File I/O 701
11 1 Handling Exceptions 701
Exception Classes 702
Handling an Exception 703
Retrieving the Default Error Message 707
Polymorphic References to Exceptions 710
Using Multiple catch Clauses to Handle Multiple Exceptions 710
The finally Clause 718
The Stack Trace 720
Handling Multiple Exceptions with One catch Clause 721
When an Exception Is Not Caught 723
Checked and Unchecked Exceptions 724
11 2 Throwing Exceptions 725
Creating Your Own Exception Classes 728
Using the @exception Tag in Documentation Comments 731
11 3 Advanced Topics: BinaryFiles, Random Access Files, and Object Serialization 732 BinaryFiles 732
Random Access Files 739
Object Serialization 744
Serializing Aggregate Objects 748
11 4 Common Errors to Avoid 749
Review Questions and Exercises 749
Programming Challenges 755
Chapter 12 JavaFX: GUI Programming and Basic Controls 759
12 1 Graphical User Interfaces 759
Event-Driven GUI Programs 761
12.2 Introduction to JavaFX 762 Controls 762
Stages and Scenes 763
The Application Class 763
12 3 Creating Scenes 765
Creating Controls 766
Creating Layout Containers 766
Creating a Scene Object 767
Adding the Scene Object to the Stage 768
Setting the Size of the Scene 770
Aligning Controls in an HBox Layout Container 770
12.4 Displaying Images 772
Loading Images from an Internet Location 775
Setting the Size of an Image 775
Preserving the Image’s Aspect Ratio 775
Changing an ImageView’s Image 776
12.5 More about the HBox, VBox , and GridPane Layout Containers 776
The HBox Layout Container 777
The VBox Layout Container 782
The GridPane Layout Container 784
Using Multiple Layout Containers in the Same Screen 791
12 6 Button Controls and Events 792
Handling Events 794
Writing Event Handlers 794
Registering an Event Handler 795
12.7 Reading Input with TextField Controls 799
12 8 Using Anonymous Inner Classes and Lambda Expressions to Handle Events 803
Using Anonymous Inner Classes to Create Event Handlers 803
Using Lambda Expressions to Create Event Handlers 806
12.9 The BorderPane Layout Container 808
12.10 The ObservableList Interface 812
12 11 Common Errors to Avoid 814
Review Questions and Exercises 814
Programming Challenges 818
Chapter 13 JavaFX: Advanced Controls 823
13 1 Styling JavaFX Applications with CSS 823
Type Selector Names 824
Style Properties 825
Applying a Stylesheet to a JavaFX Application 826
Applying Styles to the Root Node 830
Specifying Multiple Selectors in the Same Style Definition 832
Working with Colors 832
Creating a Custom Style Class Name 834
836
Inline Style Rules 837
13.2 RadioButton Controls 838
Determining in Code Whether a RadioButton Is Selected 839
Selecting a RadioButton in Code 839
Responding to RadioButton Clicks 844
13 3 CheckBox Controls 848
Determining in Code Whether a CheckBox Is Selected 848
Selecting a CheckBox in Code 849
Responding to CheckBox Clicks 853
13 4 ListView Controls 853
Retrieving the Selected Item 855
Retrieving the Index of the Selected Item 856
Responding to Item Selection with an Event Handler 859
Adding Items versus Setting Items 860
Initializing a ListView with an Arrayor an ArrayList 861
Selection Modes 862
Retrieving Multiple Selected Items 863
Working With the Elements of an ObservableList 866
Converting an ObservableList to an Array867
Using Code to Select an Item in a ListView 868
ListView Orientation 868
Creating ListViews of Objects Other Than String 869
13.5 ComboBox Controls 874
Retrieving the Selected Item 875
Responding to ComboBox Item Selection with an Event Handler 877
Editable ComboBoxes 879
13 6 Slider Controls 880
13.7 TextArea Controls 885
13 8 Menus 887
Assigning Mnemonics to Menu Items 895
13.9 The FileChooser Class 897
Displaying a FileChooser Dialog Box 898
13.10 Using Console Output to Debug a GUI Application 898
13 11 Common Errors to Avoid 902
Review Questions 902
14 1 Drawing Shapes 909
The Screen Coordinate System 909
The Shape Class and Its Subclasses 910
The Line Class 911
Changing the Stroke Color 914
The Circle Class 914
The Rectangle Class 918
The Ellipse Class 921
The Arc Class 924
The Polygon Class 928
The Polyline Class 931
The Text Class 933
Rotating Nodes 936
Scaling Nodes 938
14 2 Animation 940
The TranslateTransition Class 941
The RotateTransition Class 944
The ScaleTransition Class 949
The StrokeTransition Class 952
The FillTransition Class 953
The FadeTransition Class 954
Controlling the Animation 956
Specifying an Interpolator 956
14 3 Effects 958
The DropShadow Class 958
The InnerShadow Class 961
The ColorAdjust Class 962
The BoxBlur , GaussianBlur , and MotionBlur Classes 962
The SepiaTone Class 965
The Glow Class 966
The Reflection Class 967
Combining Effects 967
14.4 Playing Sound Files 969
14 6 Handling KeyEvents 979
Using an Anonymous Inner Class to Register a KeyEvent Handler to the Scene 980
Using a Lambda Expression to Register a KeyEvent Handler to the Scene 981
14 7 Handling Mouse Events 986
14 8 Common Errors to Avoid 992
Review Questions 992
Programming Challenges 995
Chapter 15 Recursion 999
15 1 Introduction to Recursion 999
15.2 Solving Problems with Recursion 1002
Direct and Indirect Recursion 1006
15.3 Examples of Recursive Methods 1007
Summing a Range of ArrayElements with Recursion 1007
Drawing Concentric Circles 1008
The Fibonacci Series 1011
Finding the Greatest Common Divisor 1012
15 4 A Recursive BinarySearch Method 1014
15 5 The Towers of Hanoi 1017
15.6 Common Errors to Avoid 1021
Review Questions and Exercises 1022
Programming Challenges 1025
Chapter 16 Databases 1027
16.1 Introduction to Database Management Systems 1027
JDBC 1028
SQL 1029
Using a DBMS 1029
Java DB and Apache Derby1030
Creating the CoffeeDB Database 1030
Connecting to the CoffeeDB Database 1030
Connecting to a Password-Protected Database 1032
16 2 Tables, Rows, and Columns 1033
Column Data Types 1035
PrimaryKeys 1035
16 3 Introduction to the SQL SELECT Statement 1036
Passing an SQL Statement to the DBMS 1038
Specifying Search Criteria with the WHERE Clause 1048
Sorting the Results of a SELECT Query1054
Mathematical Functions 1055
16 4
Inserting Rows 1058
Inserting Rows with JDBC 1060
16 5 Updating and Deleting Existing Rows 1062
Updating Rows with JDBC 1063
Deleting Rows with the DELETE Statement 1067
Deleting Rows with JDBC 1067
16.6 Creating and Deleting Tables 1071
Removing a Table with the DROP TABLE Statement 1074
16 7 Creating a New Database with JDBC 1074
16 8 Scrollable Result Sets 1076
16.9 Result Set Metadata 1077
16.10 Relational Data 1084
Joining Data from Multiple Tables 1086
An Order EntrySystem 1087
16.11 Advanced Topics 1100
Transactions 1100
Stored Procedures 1101
16 12 Common Errors to Avoid 1102
Review Questions and Exercises 1102
Programming Challenges 1107
Index 1109
The following appendices, online chapters, and online case studies are available on the book’s online resource page at www.pearson.com/cs-resources.
Online Appendices: Online Appendices:
Appendix A: The ASCII/Unicode Characters
Appendix B: Operator Precedence and Associativity
Appendix C: Java KeyWords
Appendix D: Installing the JDK and Using the JDK Documentation
Appendix E: Using the javadoc Utility
Appendix F: More about the Math Class
Appendix G: Packages
Appendix H: Working with Records and Random - Access Files
Appendix I: Configuring Java DB and Installing Apache Derby
Appendix J: The QuickSort Algorithm
Appendix K: Named Colors
Appendix L: Answers to Checkpoints
Appendix M: Answers to Odd-Numbered Review Questions
Online Chapters: Online Chapters:
Chapter 17: A First look at GUI Applications
Chapter 18: Advanced GUI Applications
Chapter 19: Applets and More
Chapter 20: Creating GUI Applications with JavaFX and Scene Builder
Online Case Studies: Online Case Studies:
Case Study1: Calculating Sales Commission
Case Study2: The Amortization Class
Case Study3: The PinTester Class
Case Study4: Parallel Arrays
Case Study5: The FeetInches Class
Case Study6: The SerialNumber Class
Case Study7: A Simple Text Editor Application
Location of videonotes in the text
Chapter 1 Compiling and Running a Java Program, p 14
Using an IDE, p 14
Your First Java Program, p 25
Chapter 2 Displaying Console Output, p 33
Declaring Variables, p 39
Simple Math Expressions, p 55
The Miles-per-Gallon Problem, p. 107
Chapter 3 The if Statement, p 111
The if-else Statement, p 120
The if-else-if Statement, p. 129
The Time Calculator Problem, p 182
Chapter 4 The while Loop, p 193
The Pennies for Pay Problem, p 263
Chapter 5 Passing Arguments to a Method, p 279
Returning a Value from a Method, p 293
The Retail Price Calculator Problem, p. 311
Chapter 6 Writing Classes and Creating Objects, p 325
Initializing an Object with a Constructor, p 346
The Personal Information Class Problem, p 395
Chapter 7 Accessing Array Elements in a Loop, p 407
Passing an Array to a Method, p 422
The Charge Account Validation Problem, p 487
Chapter 8 Returning Objects from Methods, p 503
Aggregation, p 515
The BankAccount , Class Copy Constructor Problem, p 552
Chapter 9 The Sentence Capitalizer Problem, p 605
Chapter 10 Inheritance, p 611
Polymorphism, p 655
The Employee and Productionworker Classes Problem, p 696
Chapter 11 Handling Exceptions, p 701
The Exception Project Problem, p 757
Chapter 12 Introduction to JavaFX, p 762
Creating Scenes, p 765
Displaying Images, p 772
The HBox Layout Container, p 777
The VBox Layout Container, p 782
The GridPane Layout Container, p 784
Button Controls and Events, p. 792
The TextField Control, p 799
Using Anonymous Inner Classes as Event Handlers, p 803
Using Lambda Expressions as Event Handlers, p 806
The Latin Translator Problem, p 818
Chapter 13 JavaFX and CSS, p 823
RadioButton Controls, p 838
CheckBox Controls, p 848
ListView Controls, p 853
ComboBox Controls, p 874
Slider Controls, p 880
The Dorm and Meal Plan Calculator Problem, p 906
Chapter 14 Drawing Shapes with JavaFX, p 909
JavaFX Animation, p 940
JavaFX Effects, p 958
Playing Sound Files with JavaFX, p 970
Playing Videos with JavaFX, p. 974
Handling Key Events in JavaFX, p. 979
Handling Mouse Events in JavaFX, p. 986
The Coin Toss Problem, p 996
Chapter 15 Reducing a Problem with Recursion, p 1003
The Recursive Power Problem, p. 1026
Chapter 16 The Customer Inserter Problem, p 1107
Organization of the Text
The text teaches Java step-by-step Each chapter covers a major set of topics and builds knowledge as students progress through the book Although the chapters can be easilytaught in their existing sequence, there is some flexibility. Figure P-1 shows chapter dependencies. Each box represents a chapter or a group of chapters. An arrow points from a chapter to the chapter that must be previouslycovered.
igurePP-1 -1 Chapter dependencies Chapter dependencies
Brief Overview of Each Chapter
Chapter
1
: Introduction to Computers and Java
This chapter provides an introduction to the field of computer science and covers the fundamentals of hardware, software, and programming languages. The elements of a program, such as keywords, variables, operators, and punctuation, are discussed byexamining a simple program. An overview of entering source code, compiling, and executing a program is presented. A brief historyof Java is also given.
FFigure
Chapter 2 : Java Fundamentals.
This chapter gets students started in Java byintroducing data types, identifiers, variable declarations, constants, comments, program output, and simple arithmetic operations The conventions of programming style are also introduced Students learn to read console input with the Scanner class and with dialog boxes using JOptionPane .
Chapter 3 : Decision Structures.
In this chapter students explore relational operators and relational expressions and are shown how to control the flow of a program with the if , if-else , and if-else-if statements Nested if statements, logical operators, the conditional operator, and the switch statement are also covered The chapter discusses how to compare String objects with the equals , compareTo , equalsIgnoreCase , and compareToIgnoreCase methods Formatting numeric output with the System.out.printf method and the String.format method is discussed
Chapter 4 : Loops and Files.
This chapter covers Java’s repetition control structures. The while loop , do-while loop , and for loop are taught, along with common uses for these devices Counters, accumulators, running totals, sentinels, and other application-related topics are discussed Simple file operations for reading and writing text files are included
Chapter 5 : Methods.
In this chapter students learn how to write void methods, value-returning methods, and methods that do and do not accept arguments The concept of functional decomposition is discussed
Chapter 6 : A First Look at Classes.
This chapter introduces students to designing classes for the purpose of instantiating objects Students learn about class fields and methods, and UML diagrams are introduced as a design tool Then constructors and overloading are discussed A BankAccount class is presented as a case study, and a section on object-oriented design is included This section leads the students through the process of identifying classes and their responsibilities within a problem domain There is also a section that brieflyexplains packages and the import statement
Chapter 7 : Arrays and the ArrayList Class
In this chapter students learn to create and work with single and multi-dimensional arrays. Numerous arrayprocessing techniques are demonstrated, such as summing the elements in an array, finding the highest and lowest values, and sequentiallysearching an array. Other topics, including ragged arrays and variable-length arguments (varargs), are also discussed The ArrayList class is introduced, and Java’s generic types are briefly discussed and demonstrated
Chapter 8 : A Second Look at Classes and Objects.
This chapter shows students how to write classes with added capabilities Static methods and fields, interaction between objects, passing objects as arguments, and returning objects from methods are discussed Aggregation and the “has a ” relationship is covered, as well as enumerated types A section on object-oriented design shows how to use CRC cards to determine the collaborations among classes
Chapter 9 : Text Processing and More about Wrapper Classes.
This chapter discusses the numeric and Character wrapper classes Methods for converting numbers to strings, testing the case of characters, and converting the case of characters are covered Autoboxing and unboxing are also discussed More String class methods are covered, including using the split method to tokenize strings The chapter also covers the StringBuilder class.
Another random document with no related content on Scribd:
Dans le poste où la Providence l’avait placé, Robert «ajouta beaucoup à l’idée qu’on avait de sa capacité; en peu de temps il donna une nouvelle face à son abbaye, dont le temporel et le spirituel avaient également souffert des derniers troubles.» De toutes parts on accourut se ranger sous sa houlette paternelle, et le nombre des religieux s’éleva bientôt à soixante: «N’ayant trouvé que quarante religieux conventuels en ce Mont, dit dom Huynes, il en receut encor une vingteine, et eust soin que ce nombre de soixante ne diminuast, afin, par ce moyen, de satisfaire aysément aux dévotions des pèlerins et que le service
Fig. 36.—Face ouest du Mont-Saint-Michel, construite par Robert de Torigni.—A droite figure un échafaudage de 62 mètres de hauteur, pour le montage des matériaux nécessaires à la restauration, commencée depuis 1872.
divin y fut faict honorablement.» En effet, de nombreux étrangers venaient chaque jour invoquer l’archange saint Michel et admirer la science de Robert. Dès la seconde année de cette prélature, l’archevêque de Rouen et
les évêques d’Avranches, de Coutances et de Bayeux visitèrent le MontSaint-Michel et y passèrent quatre jours, tant étaient grands les charmes de la conversation de Robert; dans ce voyage, Hugues, archevêque de Rouen, consacra l’autel érigé dans la crypte de l’Aquilon. Deux ans plus tard, en 1158, Henri II, dans son expédition contre la Bretagne, accomplit un pèlerinage au mont Tombe, en compagnie de l’évêque d’Avranches qui l’avait réconcilié avec son rival, Conan IV; le monarque dîna au réfectoire à côté des moines et combla Robert de ses faveurs; la même année, il retourna au Mont une deuxième fois avec le roi de France, Louis VII, quatre abbés, plusieurs personnages illustres et un grand nombre de pieux fidèles. Ce pèlerinage est un des plus imposants de tout le moyen âge. Ces deux monarques avec ces abbés et ces moines, cette foule de pèlerins qui se déroule sur les grèves, monte en spirale sur le flanc de la montagne et remplit la vaste enceinte de la basilique, présentent un spectacle que nous avons peine à nous figurer, même après les grandes manifestations de notre époque.
«La reine d’Angleterre, disent les auteurs de l’Histoire littéraire de la France, ne céda point à son époux en estime pour l’abbé du Mont-SaintMichel. Elle lui en donna un gage bien marqué;» car, ayant mis au monde, «l’an (1161), à Domfront, une fille nommée comme elle, Éléonore, elle voulut qu’il la tînt sur les fonts de baptême avec l’évêque d’Avranches.»
A l’extérieur, l’influence des religieux s’étendit au loin. Henri II choisit Robert pour conseiller intime, et lui confia la garde du château de Pontorson, dont il avait destitué le gouverneur sur les plaintes des habitants du pays; quelques années plus tard, l’illustre abbé fit le voyage d’Angleterre pour assister à la translation des reliques de saint Edouard; et, après le meurtre de Thomas Becket, il joua un rôle important au concile d’Avranches, à la suite duquel Henri II se fit relever des censures de l’Église; il prit part également au concile de Tours et contribua sans doute par ses conseils à l’extirpation du schisme d’Octavien. De son côté le seigneur de Fougères venait alors rendre hommage à l’abbé du Mont, et chaque année, le jour de la Saint-Michel, il sonnait les premiers coups de cloche pour l’office solennel. Les bénédictins n’étaient pas moins honorés à la cour de Rome, et Alexandre III leur donna plus d’une marque de sa haute protection. En un mot, la renommée du monastère ne connut point de bornes. Il en fut ainsi de la prospérité matérielle; car, d’après les anciennes archives, Robert ne reçut pas moins de cent chartes de donation.
A l’intérieur du cloître, les sciences et les arts florissaient avec un éclat jusqu’alors inconnu, et saint Michel, l’ange de la lumière, le prince éthéré, comme on disait souvent, n’avait jamais compté un plus
Fig. 37.—Moine présentant un manuscrit à saint Michel. Dessin colorié d’un ms. du Mont-SaintMichel: Sancti Clementis recognitiones. Onzième siècle. Conservé à la bibliothèque d’Avranches. D’après une photographie de MM. Maquerel et Saillard.
grand nombre de dévots serviteurs, ou plutôt d’ardents disciples. Dès le huitième et le neuvième siècle, avons-nous dit plus haut, les chanoines de Saint-Aubert s’étaient livrés à l’étude avec succès; dans les siècles suivants, le Mont-Saint-Michel possédait une école où l’on cultivait toutes les branches des connaissances humaines. L’Écriture Sainte et les principaux écrits des Pères, surtout de saint Grégoire le Grand et de saint Augustin, la physique et la philosophie d’Aristote, les œuvres de Cicéron, de Sénèque, de Marcien et de Boëce, la grammaire, l’éloquence, le calcul, l’astronomie, l’histoire, la jurisprudence, la poésie, la musique, la peinture et l’architecture, la médecine elle-même et l’art de gouverner les peuples étaient étudiés et enseignés par les
Fig. 38.—Saint Augustin écrivant sous la dictée d’un ange.
Fig. 39.—Lettre B historiée.
Fig. 40.—Saint Michel terrassant le démon. Dessins au trait coloriés d’un ms. du Mont-Saint-Michel: Sancti Augustini super psalmos. Onzième siècle. Bibliothèque d’Avranches. D’après une photographie de MM. Maquerel et Saillard. enfants de Saint-Benoît. Tous, maîtres et élèves, vénéraient l’Archange comme leur guide et leur patron. C’est ainsi que, dès la plus haute antiquité,
saint Michel exerce sa mission de protecteur des lettres et de propagateur des saines doctrines.
Parmi les moines du Mont-Saint-Michel, un grand nombre comme Hilduin, Scoliand, Gautier, Raoul et Fromond, transcrivaient et enluminaient les manuscrits précieux dont la révolution a dépouillé l’abbaye (fig. 37 à 44); d’autres composaient de pieux commentaires sur les livres saints, ou annotaient les ouvrages des Pères de l’Église et des philosophes de l’antiquité; au premier rang brillaient les Anastase, les Robert de Tombelaine, et les autres dont il a été parlé dans le cours de cette histoire. Les travaux exécutés par ces humbles religieux ont été dans ces derniers temps l’objet d’études sérieuses, et ont fixé l’attention de plusieurs érudits, en tête desquels nous pouvons placer M. l’abbé Desroches, Ravaisson, Bethmann, Taranne et Léopold Delisle. En parcourant ces vieux parchemins que le temps a épargnés, on voit revivre le moyen âge avec ses traits les plus saillants. La littérature est simple et naïve, comme il convient à son berceau; les récits historiques sont accompagnés de pieuses légendes où la poésie a une large part; la pensée a presque toujours quelque chose d’élevé, et, à chaque page, une note, une réflexion, une prière nous révèle les sentiments du copiste ou du lecteur. La méditation des saintes Lettres était la principale occupation des bénédictins; venait ensuite l’étude des Pères de l’Église et des auteurs profanes; les arts libéraux et la linguistique elle-même occupaient les moments de loisirs. Ainsi, pour en fournir des exemples, un manuscrit du dixième ou onzième siècle renferme des cantiques composés à la gloire de saint Michel et notés en musique; un autre du onzième siècle contient un passage intéressant sur les divers alphabets. Les couleurs employées pour les titres et les initiales, les miniatures dont les majuscules sont ornées, les dessins qui accompagnent les récits ou les controverses, l’écriture gothique avec ses variétés, nous fournissent des détails importants sur le progrès des arts à la fin du dixième siècle et dans le cours des deux siècles suivants. Les sujets qui sont choisis de préférence et représentés dans ces enluminures appartiennent le plus souvent à l’histoire du Mont; par exemple, c’est l’Archange saint Michel avec le dragon sous ses pieds (fig. 37 et 40). Nous trouvons aussi dans le volume des œuvres choisies de saint Jérôme, de saint Augustin et de saint Ambroise, une scène où l’évêque d’Hippone dispute avec un hérétique, pendant que Notre-Seigneur, placé audessus dans une tribune, semble assister à la discussion et y prendre un vif intérêt. Tous ces ouvrages avaient une grande valeur à une époque où les
livres étaient rares; aussi les bénédictins les regardaient comme l’une de leurs principales richesses, vouaient à l’anathème quiconque oserait les dérober et les plaçaient sous la garde de l’Archange lui-même. Le volume de l’Exposition morale de saint Grégoire contient la note suivante: «Ce livre appartient à saint Michel;..... Si quelqu’un le dérobe, qu’il soit anathème. Amen. Fiat. Fiat. Amen dans le Seigneur.»
La construction de la basilique et les travaux entrepris par les Roger avaient favorisé ce progrès des sciences et des arts en attirant au
Fig. 41.—Saint Augustin discutant contre Fauste. Miniature d’un ms. du Mont-Saint-Michel: Augustinus contra Faustum. Onzième ou douzième siècle. Bibliothèque d’Avranches. D’après une photographie de MM. Maquerel et Saillard.
Mont des artistes habiles et des savants distingués; mais Robert de Torigni contribua plus à lui seul que tous ses prédécesseurs à la gloire littéraire du Mont-Saint-Michel. En effet, quelle plume fut alors aussi féconde que la sienne? Outre les manuscrits précieux dont la bibliothèque se trouva enrichie en peu d’années, plusieurs ouvrages furent composés par les bénédictins eux-mêmes. L’abbaye mérita le beau titre de cité des livres, et Robert, le plus savant, le plus laborieux de tous les moines, reçut le nom de
grand libraire du Mont-Saint-Michel. On lui doit en particulier l’Histoire du roi d’Angleterre, Henri Iᵉʳ, qui est
Fig. 42.—Charte de donation de Gonnor
Fig. 43.—Charte de donation de Robert. Dessins à la plume d’un ms. du Mont-Saint-Michel: Cartularium monasterii montis sancti Michaelis. Douzième siècle. D’après une photographie de MM. Maquerel et Saillard.
la continuation du travail de Guillaume de Jumièges sur les ducs de Normandie, l’Appendice à la Chronique de Sigebert, moine de Gembloux, un Traité sur les ordres religieux, une Histoire du monastère du Mont-SaintMichel, un Prologue sur l’exposition des épîtres de saint Paul, d’après saint Augustin. Ces ouvrages et les autres du même auteur ont un mérite sérieux; la chronique surtout a obtenu un grand et légitime succès. Robert du Mont y corrige avantageusement les défauts de Sigebert de Gembloux; son style calme, grave, simple, naïf parfois, est plus en rapport avec la dignité de l’histoire; sa critique est plus impartiale, plus judicieuse, plus sûre, sans être pourtant à l’abri de tout reproche; il suit une méthode plus rigoureuse dans
l’arrangement des faits, ce qui le rend agréable, clair et facile à suivre. Les auteurs de l’Histoire littéraire de la France en ont porté ce jugement: «C’est, depuis la mort d’Orderic Vital, le seul historien français que nous puissions opposer au grand nombre d’historiens anglais qui, à la même époque, écrivaient leurs chroniques.»
Sous la prélature de Robert du Mont, Guillaume de Saint-Pair, nommé «le moine jovencel» ou «la kalandre de la solitude,» composait son Roman du Mont-Saint-Michel. Il ne le cède pas à l’auteur du Roman de Rou pour l’exactitude historique, et comme poète il lui est supérieur. Rien n’est plus attachant que le récit des événements accomplis au mont Tombe jusqu’au règne de Robert Courte-Heuse! Le but qu’il se propose d’atteindre, son nom et celui de l’abbé sous lequel il écrit, nous sont révélés en tête du poème:
«Molz pelerins qui vunt al Munt, «Enquierent molt, e grant dreit unt,
«Comment l’igliese fut fundée «Premierement, et estorée.
«Cil qui lor dient de l’estoire
«Que cil demandent, en memoire
«Ne l’unt pas bien, ainz vunt faillant
«En plusors leus, e mespernant.
«Por faire-la apertement
«Entendre à cels qui escient
«N’unt de clerzie, l’a tornée
«De latin tote et ordenée
«Par veirs romieus novelement
«Molt en segrei, par son convent, «Uns jovencels; moine est del Munt, «Deus en son reigne part li dunt!
«Guillelme a non de Seint-Paier, «Cen veit escrit en cest quaier.
«El tens Robeirt de Torignié
«Fut cil romanz fait e trové.»
Robert du Mont ne travailla pas avec moins d’ardeur au progrès de l’art chrétien qu’au développement des lettres et des sciences divines ou humaines. Sous sa direction, les moines copièrent plusieurs volumes dont un
certain nombre sont regardés comme des chefs-d’œuvre de calligraphie et renferment des enluminures précieuses pour l’histoire du Mont-SaintMichel. Dans le beau Cartulaire qui remonte à cette époque, on trouve la troisième apparition de saint Michel au bienheureux Aubert; l’Archange aux ailes déployées s’incline vers le pontife et le touche à la tête, tandis que des personnages mystérieux jouent de divers instruments de musique en signe de réjouissance; le lit et la chambre de l’évêque, l’édifice qui est représenté audessous, la vivacité du coloris, les différentes ornementations des dessins nous offrent autant de particularités à la fois originales et instructives (fig. 42 à 44).
L’illustre abbé joignit à son titre de libraire celui d’architecte du MontSaint-Michel. D’après les indications de M. Corroyer, on lui doit, à l’extrémité de la façade romane de la basilique, les deux anciennes tours et le porche qui servait à les unir; à l’ouest, les bâtiments adossés aux substructions primitives; et, au sud, les corps de logis que les modernes ont désignés sous les noms d’hôtellerie et d’infirmerie du Mont-Saint-Michel. Ces édifices, dont les uns ont disparu et les autres sont restés debout comme des témoins éloquents de la puissance et du génie de nos pères (fig. 45 et 46), appartiennent à cette belle époque où le roman, parvenu à son plus haut degré de perfection, s’élance, se dégage en quelque sorte des entraves du plein-cintre pour se transformer bientôt en ogive élégante et gracieuse.
La carrière de Robert était remplie. Son âme, disent les annalistes, se détacha de son corps et alla jouir de la vie bienheureuse, avec le saint Archange dont «il avait si honorablement gouverné l’abbaye;» sa dépouille mortelle reçut la sépulture sous le portique de l’église, au pied de l’une des tours qu’il avait élevée lui-même pendant sa vie. Il était âgé de quatre-vingts ans, dont trente-deux s’étaient écoulés depuis sa nomination à l’abbaye du Mont-Saint-Michel. Les religieux l’inhumèrent
Fig. 44.—Troisième apparition de saint Michel à saint Aubert. Dessin au trait colorié d’un ms. du Mont-Saint-Michel: Cartularium monasterii montis sancti Michaelis. Douzième siècle. Bibliothèque d’Avranches. D’après une photographie de MM. Maquerel et Saillard.
avec sa crosse et ses ornements pontificaux, et placèrent dans le sarcophage un disque de plomb portant les inscriptions suivantes:
✠ HIC. REQVIESCIT. ROBERTUS. DE. TORIGNEIO. ABBAS. HVIVS. LOCI.
✠ QVI. PREFVIT. HVIC. MONASTERIO. XXX. II.
✠ VIXIT. VERO. LXXX ANNIS.
Fig. 45.—Constructions de Robert de Torigni. Coupe longitudinale, de l’est à l’ouest. P D B F .
Fig. 46.—Constructions de Robert de Torigni. Coupe transversale, du nord au sud.
Ici repose Robert de Torigni, abbé de ce lieu. Il gouverna ce monastère trente-deux ans et en vécut quatre-vingts (fig. 47 et 48).
C’est au 23 ou au 24 juin 1186, qu’il faut rapporter la mort de l’illustre abbé. Le Mont-Saint-Michel perdait en lui un savant et un saint; Robert, en effet, était un théologien profond, un érudit remarquable, un historien consciencieux, un architecte habile, et par-dessus tout un moine régulier, pieux et zélé, en un mot l’une des plus belles figures du cloître à cette époque si féconde en grands hommes. Jamais cette double auréole de la science et de la vertu ne devait briller avec autant d’éclat sur le front des religieux qui portèrent la crosse dans la suite; cependant les hommes d’une telle valeur impriment à leurs œuvres une forte impulsion qui se ralentit d’ordinaire, mais ne s’arrête pas au moment où ils descendent dans la tombe; c’est pourquoi, après la mort de Robert, le Mont-Saint-Michel compta des années et même des siècles de prospérité.
Un religieux du monastère, dom Martin, désigné dans une inscription de l’époque sous le nom de Martin «de Furmendeio,» fut élu en 1187, treize mois après la mort de Robert de Torigni. Ce long délai prouve que les bénédictins, avant de procéder à une élection canonique, prirent toutes les mesures de prudence nécessaires pour ne pas éveiller les susceptibilités de Henri II. Leur choix ne pouvait tomber sur un sujet plus digne de succéder à Robert; Martin, en effet, gouverna l’abbaye avec sagesse, défendit énergiquement les droits de ses religieux et montra une grande habileté dans la gestion des biens temporels; mais sa prélature devait être de courte durée. Il mourut le 19 février 1191, et reçut la sépulture à côté de son prédécesseur; un disque de plomb fut aussi placé dans son sarcophage, avec l’inscription suivante:
✠ HIC. REQVIESCIT. DOM. MARTIN. DE. FVRMENDEIO. ABBAS. HVIVS LOCI:
Ici repose dom Martin «de Furmendeio,» abbé de ce lieu (fig. 49).
Dans cette dernière moitié du douzième siècle, le culte de l’Archange dut principalement son extension en France et chez les nations voisines à
Fig. 47.—Épitaphe de Robert de Torigni.—Face. Fig. 48.—Épitaphe de Robert de Torigni.—Revers.
l’influence du mont Tombe, et aussi à l’institution de l’ordre de Saint-Michel en Portugal, sous le règne d’Alphonse Henriquez. Cet ordre fondé en 1167,
avait pour but de combattre l’erreur et de défendre la foi; les membres devaient en outre réciter chaque jour les mêmes prières que les convers de Cîteaux, donner l’exemple de la douceur et de l’humilité,
Fig. 49.—Crosse de Robert de Torigni.
Fig. 50.—Crosse de dom Martin.
réprimer les superbes et protéger les faibles. Cette institution, si noble dans sa fin, était née sur un champ de bataille, à Santarem, où Alphonse Henriquez, à la tête d’une poignée de braves, tailla en pièces l’armée formidable d’Albrac, roi musulman de Séville, et reprit l’étendard du royaume que l’ennemi lui avait enlevé au plus fort du combat.
Robert et ses moines, en se livrant à l’étude avec ardeur, avaient honoré celui qu’ils appelaient leur maître et dont ils se disaient les disciples; leur
maison était devenue «la cité des livres,» et leur école «un phare lumineux» qui jetait un vif éclat au milieu de la société féodale. A mesure que l’Église ouvrit de nouveaux asiles aux sciences et aux lettres, et posa les fondements de ces mille universités libres qui se disputèrent l’honneur de répandre en tous lieux le bienfait de l’éducation,
Fig. 51.—Épitaphe de dom Martin.
l’Archange fut choisi pour veiller sur ces chères espérances de l’avenir; il partagea cette noble mission avec la sagesse éternelle, avec Charlemagne, sainte Barbe et sainte Catherine d’Alexandrie, avec saint Augustin, saint Louis, saint Thomas d’Aquin, le bienheureux Albert le Grand, et tant d’autres qui avaient allié le culte des lettres à l’amour et à la pratique de la vertu; les grandes villes, à l’exemple de Paris et de Bruxelles, bâtirent des collèges sous le nom et le vocable de saint Michel; dans les ordres militaires eux-mêmes, spécialement en celui de France, les dignités étaient souvent la
récompense des travaux intellectuels. En 1771, les chevaliers, au nombre de soixante-dix-sept étaient presque tous des savants distingués; c’est sous le même patronage qu’une société s’est établie de nos jours pour la diffusion des bons livres.
Porte-drapeau du Christ et vainqueur de l’Islam, protecteur des lettres et propagateur des saines doctrines; tels sont les principaux titres que la piété donnait de préférence à saint Michel à la mort de Robert de Torigni. Des circonstances ménagées par la Providence allaient resserrer les liens qui unissaient l’Archange avec la France du moyen âge.
LE MONT-SAINT-MICHEL A L’ÉPOQUE DE PHILIPPE-AUGUSTE