Book review
INTRODUCTION OF JAVA
Introduction to Programming Using Java is a free introductory computer programming
textbook that uses Java as the language of instruction. It is suitable for use in an introductory
programming course and for people who are trying to learn programming on their own. There
are no prerequisites beyo...
[Show more]
Preview 4 out of 697 pages
Uploaded on
May 8, 2023
Number of pages
697
Written in
2022/2023
Type
Book review
Unknown
Institution
Secondary school
Computer
School year
1
All documents for this subject (210)
$10.49
Added
Add to cart
Add to wishlist
100% satisfaction guarantee
Immediately available after payment
Both online and in PDF
No strings attached
Contents
Preface xiii
1 The Mental Landscape 1
1.1 Machine Language . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 Asynchronous Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3 The Java Virtual Machine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Building Blocks of Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Object-oriented Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 The Modern User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.7 The Internet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Quiz on Chapter 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2 Names and Things 19
2.1 The Basic Java Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.2 Variables and Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.2.1 Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.2.2 Types and Literals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.3 Variables in Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3 Objects and Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3.1 Built-in Subroutines and Functions . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2 Operations on Strings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3.3 Introduction to Enums . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.4 Text Input and Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.4.1 A First Text Input Example . . . . . . . . . . . . . . . . . . . . . . . . . . 37
2.4.2 Text Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
2.4.3 TextIO Input Functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.4 Formatted Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.5 Introduction to File I/O . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5 Details of Expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
2.5.1 Arithmetic Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.5.2 Increment and Decrement . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5.3 Relational Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
2.5.4 Boolean Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
2.5.5 Conditional Operator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
2.5.6 Assignment Operators and Type-Casts . . . . . . . . . . . . . . . . . . . . 48
2.5.7 Type Conversion of Strings . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.5.8 Precedence Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
2.6 Programming Environments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
iii
,iv CONTENTS
2.6.1 Java Development Kit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
2.6.2 Command Line Environment . . . . . . . . . . . . . . . . . . . . . . . . . 52
2.6.3 IDEs and Eclipse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
2.6.4 The Problem of Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Exercises for Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Quiz on Chapter 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
3 Control 61
3.1 Blocks, Loops, and Branches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.1.1 Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
3.1.2 The Basic While Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
3.1.3 The Basic If Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
3.2 Algorithm Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
3.2.1 Pseudocode and Stepwise Refinement . . . . . . . . . . . . . . . . . . . . 66
3.2.2 The 3N+1 Problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
3.2.3 Coding, Testing, Debugging . . . . . . . . . . . . . . . . . . . . . . . . . . 72
3.3 while and do..while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
3.3.1 The while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
3.3.2 The do..while Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.3.3 break and continue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
3.4 The for Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3.4.1 For Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
3.4.2 Example: Counting Divisors . . . . . . . . . . . . . . . . . . . . . . . . . . 83
3.4.3 Nested for Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
3.4.4 Enums and for-each Loops . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
3.5 The if Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.1 The Dangling else Problem . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.2 The if...else if Construction . . . . . . . . . . . . . . . . . . . . . . . . . . 89
3.5.3 If Statement Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
3.5.4 The Empty Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
3.6 The switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.6.1 The Basic switch Statement . . . . . . . . . . . . . . . . . . . . . . . . . . 96
3.6.2 Menus and switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 97
3.6.3 Enums in switch Statements . . . . . . . . . . . . . . . . . . . . . . . . . 98
3.6.4 Definite Assignment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.7 Exceptions and try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.7.1 Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
3.7.2 try..catch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
3.7.3 Exceptions in TextIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
3.8 GUI Programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Exercises for Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
Quiz on Chapter 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
4 Subroutines 117
4.1 Black Boxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
4.2 Static Subroutines and Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.2.1 Subroutine Definitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119
4.2.2 Calling Subroutines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
,CONTENTS v
4.2.3 Subroutines in Programs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
4.2.4 Member Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
4.3 Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.3.1 Using Parameters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
4.3.2 Formal and Actual Parameters . . . . . . . . . . . . . . . . . . . . . . . . 128
4.3.3 Overloading . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
4.3.4 Subroutine Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
4.3.5 Throwing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
4.3.6 Global and Local Variables . . . . . . . . . . . . . . . . . . . . . . . . . . 133
4.4 Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.4.1 The return statement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
4.4.2 Function Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.4.3 3N+1 Revisited . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
4.5 APIs, Packages, and Javadoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.5.1 Toolboxes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140
4.5.2 Java’s Standard Packages . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
4.5.3 Using Classes from Packages . . . . . . . . . . . . . . . . . . . . . . . . . 142
4.5.4 Javadoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144
4.6 More on Program Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
4.6.1 Preconditions and Postconditions . . . . . . . . . . . . . . . . . . . . . . . 146
4.6.2 A Design Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
4.6.3 The Program . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
4.7 The Truth About Declarations . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153
4.7.1 Initialization in Declarations . . . . . . . . . . . . . . . . . . . . . . . . . 154
4.7.2 Named Constants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
4.7.3 Naming and Scope Rules . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
Exercises for Chapter 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Quiz on Chapter 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
5 Objects and Classes 165
5.1 Objects and Instance Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
5.1.1 Objects, Classes, and Instances . . . . . . . . . . . . . . . . . . . . . . . . 166
5.1.2 Fundamentals of Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . 167
5.1.3 Getters and Setters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
5.2 Constructors and Object Initialization . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.1 Initializing Instance Variables . . . . . . . . . . . . . . . . . . . . . . . . . 173
5.2.2 Constructors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
5.2.3 Garbage Collection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.3 Programming with Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
5.3.1 Some Built-in Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
5.3.2 Wrapper Classes and Autoboxing . . . . . . . . . . . . . . . . . . . . . . . 181
5.3.3 The class “Object” . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
5.3.4 Object-oriented Analysis and Design . . . . . . . . . . . . . . . . . . . . . 183
5.4 Programming Example: Card, Hand, Deck . . . . . . . . . . . . . . . . . . . . . . 185
5.4.1 Designing the classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
5.4.2 The Card Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
5.4.3 Example: A Simple Card Game . . . . . . . . . . . . . . . . . . . . . . . . 191
, vi CONTENTS
5.5 Inheritance and Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.5.1 Extending Existing Classes . . . . . . . . . . . . . . . . . . . . . . . . . . 194
5.5.2 Inheritance and Class Hierarchy . . . . . . . . . . . . . . . . . . . . . . . 196
5.5.3 Example: Vehicles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
5.5.4 Polymorphism . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
5.5.5 Abstract Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
5.6 this and super . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
5.6.1 The Special Variable this . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
5.6.2 The Special Variable super . . . . . . . . . . . . . . . . . . . . . . . . . . 206
5.6.3 Constructors in Subclasses . . . . . . . . . . . . . . . . . . . . . . . . . . 208
5.7 Interfaces, Nested Classes, and Other Details . . . . . . . . . . . . . . . . . . . . 209
5.7.1 Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
5.7.2 Nested Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
5.7.3 Anonymous Inner Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.7.4 Mixing Static and Non-static . . . . . . . . . . . . . . . . . . . . . . . . . 214
5.7.5 Static Import . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216
5.7.6 Enums as Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
Exercises for Chapter 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Quiz on Chapter 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
6 Introduction to GUI Programming 225
6.1 The Basic GUI Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225
6.1.1 JFrame and JPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
6.1.2 Components and Layout . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
6.1.3 Events and Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230
6.2 Applets and HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.2.1 JApplet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
6.2.2 Reusing Your JPanels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
6.2.3 Basic HTML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235
6.2.4 Applets on Web Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
6.3 Graphics and Painting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240
6.3.1 Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242
6.3.2 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243
6.3.3 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244
6.3.4 Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245
6.3.5 Graphics2D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246
6.3.6 An Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247
6.4 Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251
6.4.1 Event Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
6.4.2 MouseEvent and MouseListener . . . . . . . . . . . . . . . . . . . . . . . . 253
6.4.3 Mouse Coordinates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
6.4.4 MouseMotionListeners and Dragging . . . . . . . . . . . . . . . . . . . . . 258
6.4.5 Anonymous Event Handlers . . . . . . . . . . . . . . . . . . . . . . . . . . 262
6.5 Timer and Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
6.5.1 Timers and Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264
6.5.2 Keyboard Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266
6.5.3 Focus Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269