Menu Expand
Intro to Java Programming, Comprehensive Version, Global Edition

Intro to Java Programming, Comprehensive Version, Global Edition

Y Daniel Liang

(2015)

Additional Information

Book Details

Abstract

This text is intended for a 1-, 2-, or 3-semester CS1 course sequence.

 

 

Daniel Liang teaches concepts of problem-solving and object-oriented programming using a fundamentals-first approach. Beginning programmers learn critical problem-solving techniques then move on to grasp the key concepts of object-oriented, GUI programming, advanced GUI and Web programming using Java.

 

 

Teaching and Learning Experience

To provide a better teaching and learning experience, for both instructors and students, this program offers:

  • Fundamentals-First Approach: Basic programming concepts are introduced on control statements, loops, functions, and arrays before object-oriented programming is discussed.

  • Problem-Driven Motivation: The examples and exercises throughout the book emphasize problem solving and foster the concept of developing reusable components and using them to create practical projects.

  • A Superior Pedagogical Design that Fosters Student Interest: Key concepts are reinforced with objectives lists, introduction and chapter overviews, easy-to-follow examples, chapter summaries, review questions, programming exercises, and interactive self-tests.

  • The Most Extensive Instructor and Student Support Package Available

Table of Contents

Section Title Page Action Price
Cover Cover
Title Title
Copyright Copyright
Contents 12
Chapter 1 Introduction to Computers, Programs, and Java 23
1.1 Introduction 24
1.2 What Is a Computer? 24
1.3 Programming Languages 29
1.4 Operating Systems 31
1.5 Java, the World Wide Web, and Beyond 32
1.6 The Java Language Specification, API, JDK, and IDE 33
1.7 A Simple Java Program 34
1.8 Creating, Compiling, and Executing a Java Program 37
1.9 Programming Style and Documentation 40
1.10 Programming Errors 42
1.11 Developing Java Programs Using NetBeans 45
1.12 Developing Java Programs Using Eclipse 47
Chapter 2 Elementary Programming 55
2.1 Introduction 56
2.2 Writing a Simple Program 56
2.3 Reading Input from the Console 59
2.4 Identifiers 61
2.5 Variables 62
2.6 Assignment Statements and Assignment Expressions 63
2.7 Named Constants 65
2.8 Naming Conventions 66
2.9 Numeric Data Types and Operations 66
2.10 Numeric Literals 70
2.11 Evaluating Expressions and Operator Precedence 72
2.12 Case Study: Displaying the Current Time 74
2.13 Augmented Assignment Operators 76
2.14 Increment and Decrement Operators 77
2.15 Numeric Type Conversions 78
2.16 Software Development Process 81
2.17 Case Study: Counting Monetary Units 85
2.18 Common Errors and Pitfalls 87
Chapter 3 Selections 97
3.1 Introduction 98
3.2 boolean Data Type 98
3.3 if Statements 100
3.4 Two-Way if-else Statements 102
3.5 Nested if and Multi-Way if-else Statements 103
3.6 Common Errors and Pitfalls 105
3.7 Generating Random Numbers 109
3.8 Case Study: Computing Body Mass Index 111
3.9 Case Study: Computing Taxes 112
3.10 Logical Operators 115
3.11 Case Study: Determining Leap Year 119
3.12 Case Study: Lottery 120
3.13 switch Statements 122
3.14 Conditional Expressions 125
3.15 Operator Precedence and Associativity 126
3.16 Debugging 128
Chapter 4 Mathematical Functions, Characters, and Strings 141
4.1 Introduction 142
4.2 Common Mathematical Functions 142
4.3 Character Data Type and Operations 147
4.4 The String Type 152
4.5 Case Studies 161
4.6 Formatting Console Output 167
Chapter 5 Loops 179
5.1 Introduction 180
5.2 The while Loop 180
5.3 The do-while Loop 190
5.4 The for Loop 192
5.5 Which Loop to Use? 196
5.6 Nested Loops 198
5.7 Minimizing Numeric Errors 200
5.8 Case Studies 201
5.9 Keywords break and continue 206
5.10 Case Study: Checking Palindromes 209
5.11 Case Study: Displaying Prime Numbers 210
Chapter 6 Methods 225
6.1 Introduction 226
6.2 Defining a Method 226
6.3 Calling a Method 228
6.4 Void Method Example 231
6.5 Passing Arguments by Values 234
6.6 Modularizing Code 237
6.7 Case Study: Converting Hexadecimals to Decimals 239
6.8 Overloading Methods 241
6.9 The Scope of Variables 244
6.10 Case Study: Generating Random Characters 245
6.11 Method Abstraction and Stepwise Refinement 247
Chapter 7 Single-Dimensional Arrays 267
7.1 Introduction 268
7.2 Array Basics 268
7.3 Case Study: Analyzing Numbers 275
7.4 Case Study: Deck of Cards 276
7.5 Copying Arrays 278
7.6 Passing Arrays to Methods 279
7.7 Returning an Array from a Method 282
7.8 Case Study: Counting the Occurrences of Each Letter 283
7.9 Variable-Length Argument Lists 286
7.10 Searching Arrays 287
7.11 Sorting Arrays 291
7.12 The Arrays Class 292
7.13 Command-Line Arguments 294
Chapter 8 Multidimensional Arrays 309
8.1 Introduction 310
8.2 Two-Dimensional Array Basics 310
8.3 Processing Two-Dimensional Arrays 313
8.4 Passing Two-Dimensional Arrays to Methods 315
8.5 Case Study: Grading a Multiple-Choice Test 316
8.6 Case Study: Finding the Closest Pair 318
8.7 Case Study: Sudoku 320
8.8 Multidimensional Arrays 323
Chapter 9 Objects and Classes 343
9.1 Introduction 344
9.2 Defining Classes for Objects 344
9.3 Example: Defining Classes and Creating Objects 346
9.4 Constructing Objects Using Constructors 351
9.5 Accessing Objects via Reference Variables 352
9.6 Using Classes from the Java Library 356
9.7 Static Variables, Constants, and Methods 359
9.8 Visibility Modifiers 364
9.9 Data Field Encapsulation 366
9.10 Passing Objects to Methods 369
9.11 Array of Objects 373
9.12 Immutable Objects and Classes 375
9.13 The Scope of Variables 377
9.14 The this Reference 378
Chapter 10 Object-Oriented Thinking 387
10.1 Introduction 388
10.2 Class Abstraction and Encapsulation 388
10.3 Thinking in Objects 392
10.4 Class Relationships 395
10.5 Case Study: Designing the Course Class 398
10.6 Case Study: Designing a Class for Stacks 400
10.7 Processing Primitive Data Type Values as Objects 402
10.8 Automatic Conversion between Primitive Types and Wrapper Class Types\r 405
10.9 The BigInteger and BigDecimal Classes 406
10.10 The String Class 408
10.11 The StringBuilder and StringBuffer Classes 414
Chapter 11 Inheritance and Polymorphism 431
11.1 Introduction 432
11.2 Superclasses and Subclasses 432
11.3 Using the super Keyword 438
11.4 Overriding Methods 441
11.5 Overriding vs. Overloading 442
11.6 The Object Class and Its toString() Method 444
11.7 Polymorphism 445
11.8 Dynamic Binding 446
11.9 Casting Objects and the instanceof Operator 449
11.10 The Object’s equals Method 453
11.11 The ArrayList Class 454
11.12 Useful Methods for Lists 460
11.13 Case Study: A Custom Stack Class 461
11.14 The protected Data and Methods 462
11.15 Preventing Extending and Overriding 464
Chapter 12 Exception Handling and Text I/O 471
12.1 Introduction 472
12.2 Exception-Handling Overview 472
12.3 Exception Types 477
12.4 More on Exception Handling 480
12.5 The finally Clause 488
12.6 When to Use Exceptions 489
12.7 Rethrowing Exceptions 490
12.8 Chained Exceptions 491
12.9 Defining Custom Exception Classes 492
12.10 The File Class 495
12.11 File Input and Output 498
12.12 Reading Data from the Web 504
12.13 Case Study: Web Crawler 506
Chapter 13 Abstract Classes and Interfaces 517
13.1 Introduction 518
13.2 Abstract Classes 518
13.3 Case Study: the Abstract Number Class 523
13.4 Case Study: Calendar and GregorianCalendar 525
13.5 Interfaces 528
13.6 The Comparable Interface 531
13.7 The Cloneable Interface 535
13.8 Interfaces vs. Abstract Classes 539
13.9 Case Study: The Rational Class 542
13.10 Class Design Guidelines 547
Chapter 14 JavaFX Basics 557
14.1 Introduction 558
14.2 JavaFX vs Swing and AWT 558
14.3 The Basic Structure of a JavaFX Program 558
14.4 Panes, UI Controls, and Shapes 561
14.5 Property Binding 564
14.6 Common Properties and Methods for Nodes 567
14.7 The Color Class 568
14.8 The Font Class 569
14.9 The Image and ImageView Classes 571
14.10 Layout Panes 574
14.11 Shapes 582
14.12 Case Study: The ClockPane Class 594
Chapter 15 Event-Driven Programming and Animations 607
15.1 Introduction 608
15.2 Events and Event Sources 610
15.3 Registering Handlers and Handling Events 611
15.4 Inner Classes 615
15.5 Anonymous Inner Class Handlers 616
15.6 Simplifying Event Handling Using Lambda Expressions 619
15.7 Case Study: Loan Calculator 622
15.8 Mouse Events 624
15.9 Key Events 625
15.10 Listeners for Observable Objects 628
15.11 Animation 630
15.12 Case Study: Bouncing Ball 638
Chapter 16 JavaFX UI Controls and Multimedia 651
16.1 Introduction 652
16.2 Labeled and Label 652
16.3 Button 654
16.4 CheckBox 656
16.5 RadioButton 659
16.6 TextField 661
16.7 TextArea 663
16.8 ComboBox 666
16.9 ListView 669
16.10 ScrollBar 673
16.11 Slider 676
16.12 Case Study: Developing a Tic-Tac-Toe Game 679
16.13 Video and Audio 684
16.14 Case Study: National Flags and Anthems 687
Chapter 17 Binary I/O 699
17.1 Introduction 700
17.2 How Is Text I/O Handled in Java? 700
17.3 Text I/O vs. Binary I/O 701
17.4 Binary I/O Classes 702
17.5 Case Study: Copying Files 713
17.6 Object I/O 714
17.7 Random-Access Files 719
Chapter 18 Recursion 727
18.1 Introduction 728
18.2 Case Study: Computing Factorials 728
18.3 Case Study: Computing Fibonacci Numbers 731
18.4 Problem Solving Using Recursion 734
18.5 Recursive Helper Methods 736
18.6 Case Study: Finding the Directory Size 739
18.7 Case Study: Tower of Hanoi 741
18.8 Case Study: Fractals 744
18.9 Recursion vs. Iteration 748
18.10 Tail Recursion 749
Chapter 19 Generics 759
19.1 Introduction 760
19.2 Motivations and Benefits 760
19.3 Defining Generic Classes and Interfaces 762
19.4 Generic Methods 764
19.5 Case Study: Sorting an Array of Objects 766
19.6 Raw Types and Backward Compatibility 768
19.7 Wildcard Generic Types 769
19.8 Erasure and Restrictions on Generics 772
19.9 Case Study: Generic Matrix Class 774
Chapter 20 Lists, Stacks, Queues, and Priority Queues 783
20.1 Introduction 784
20.2 Collections 784
20.3 Iterators 788
20.4 Lists 789
20.5 The Comparator Interface 794
20.6 Static Methods for Lists and Collections 795
20.7 Case Study: Bouncing Balls 799
20.8 Vector and Stack Classes 803
20.9 Queues and Priority Queues 805
20.10 Case Study: Evaluating Expressions 808
Chapter 21 Sets and Maps 819
21.1 Introduction 820
21.2 Sets 820
21.3 Comparing the Performance of Sets and Lists 828
21.4 Case Study: Counting Keywords 831
21.5 Maps 832
21.6 Case Study: Occurrences of Words 837
21.7 Singleton and Unmodifiable Collections and Maps 838
Chapter 22 Developing Efficient Algorithms 843
22.1 Introduction 844
22.2 Measuring Algorithm Efficiency Using Big O Notation 844
22.3 Examples: Determining Big O 846
22.4 Analyzing Algorithm Time Complexity 850
22.5 Finding Fibonacci Numbers Using Dynamic Programming 853
22.6 Finding Greatest Common Divisors Using Euclid’s Algorithm 855
22.7 Efficient Algorithms for Finding Prime Numbers 859
22.8 Finding the Closest Pair of Points Using Divide-and-Conquer 865
22.9 Solving the Eight Queens Problem Using Backtracking 868
22.10 Computational Geometry: Finding a Convex Hull 871
Chapter 23 Sorting 883
23.1 Introduction 884
23.2 Insertion Sort 884
23.3 Bubble Sort 886
23.4 Merge Sort 889
23.5 Quick Sort 892
23.6 Heap Sort 896
23.7 Bucket Sort and Radix Sort 903
23.8 External Sort 905
Chapter 24 Implementing Lists, Stacks, Queues,and Priority Queues 917
24.1 Introduction 918
24.2 Common Features for Lists 918
24.3 Array Lists 922
24.4 Linked Lists 928
24.5 Stacks and Queues 942
24.6 Priority Queues 946
Chapter 25 Binary Search Trees 951
25.1 Introduction 952
25.2 Binary Search Trees 952
25.3 Deleting Elements from a BST 965
25.4 Tree Visualization and MVC 971
25.5 Iterators 974
25.6 Case Study: Data Compression 976
Chapter 26 AVL Trees 987
26.1 Introduction 988
26.2 Rebalancing Trees 988
26.3 Designing Classes for AVL Trees 991
26.4 Overriding the insert Method 992
26.5 Implementing Rotations 993
26.6 Implementing the delete Method 994
26.7 The AVLTree Class 994
26.8 Testing the AVLTree Class 1000
26.9 AVL Tree Time Complexity Analysis 1003
Chapter 27 Hashing 1007
27.1 Introduction 1008
27.2 What Is Hashing? 1008
27.3 Hash Functions and Hash Codes 1009
27.4 Handling Collisions Using Open Addressing 1011
27.5 Handling Collisions Using Separate Chaining 1015
27.6 Load Factor and Rehashing 1015
27.7 Implementing a Map Using Hashing 1017
27.8 Implementing Set Using Hashing 1026
Chapter 28 Graphs and Applications 1037
28.1 Introduction 1038
28.2 Basic Graph Terminologies 1039
28.3 Representing Graphs 1041
28.4 Modeling Graphs 1046
28.5 Graph Visualization 1056
28.6 Graph Traversals 1059
28.7 Depth-First Search (DFS) 1060
28.8 Case Study: The Connected Circles Problem 1064
28.9 Breadth-First Search (BFS) 1067
28.10 Case Study: The Nine Tails Problem 1070
Chapter 29 Weighted Graphs and Applications 1083
29.1 Introduction 1084
29.2 Representing Weighted Graphs 1085
29.3 The WeightedGraph Class 1087
29.4 Minimum Spanning Trees 1094
29.5 Finding Shortest Paths 1100
29.6 Case Study: The Weighted Nine Tails Problem 1108
Chapter 30 Multithreading and Parallel Programming 1119
30.1 Introduction 1120
30.2 Thread Concepts 1120
30.3 Creating Tasks and Threads 1120
30.4 The Thread Class 1124
30.5 Case Study: Flashing Text 1127
30.6 Thread Pools 1128
30.7 Thread Synchronization 1130
30.8 Synchronization Using Locks 1134
30.9 Cooperation among Threads 1136
30.10 Case Study: Producer/Consumer 1141
30.11 Blocking Queues 1144
30.12 Semaphores 1146
30.13 Avoiding Deadlocks 1148
30.14 Thread States 1148
30.15 Synchronized Collections 1149
30.16 Parallel Programming 1150
Chapter 31 Networking 1161
31.1 Introduction 1162
31.2 Client/Server Computing 1162
31.3 The InetAddress Class 1169
31.4 Serving Multiple Clients 1170
31.5 Sending and Receiving Objects 1173
31.6 Case Study: Distributed Tic-Tac-Toe Games 1178
Chapter 32 Java Database Programming 1195
32.1 Introduction 1196
32.2 Relational Database Systems 1196
32.3 SQL 1200
32.4 JDBC 1211
32.5 PreparedStatement 1219
32.6 CallableStatement 1221
32.7 Retrieving Metadata 1224
Chapter 33 JavaServer Faces 1235
33.1 Introduction 1236
33.2 Getting Started with JSF 1236
33.3 JSF GUI Components 1244
33.4 Processing the Form 1248
33.5 Case Study: Calculator 1252
33.6 Session Tracking 1255
33.7 Validating Input 1257
33.8 Binding Database with Facelets 1261
33.9 Opening New JSF Pages 1267
Appendixes 1285
Appendix A\tJava Keywords 1287
Appendix B The ASCII Character Set 1288
Appendix C Operator Precedence Chart 1290
Appendix D Java Modifiers 1292
Appendix E Special Floating-Point Values 1294
Appendix F Number Systems 1295
Appendix G Bitwise Operations 1299
Appendix H Regular Expressions 1300
Appendix I Enumerated Types 1305
Index 1311
Symbols 1311
Numbers 1311
A 1311
B 1313
C 1315
D 1318
E 1320
F 1321
G 1322
H 1323
I 1324
J 1326
K 1327
L 1328
M 1329
N 1331
O 1332
P 1333
Q 1335
R 1335
S 1336
T 1339
U 1341
V 1341
W 1342
X 1342