Sunteți pe pagina 1din 701

Table of Contents

Dedication.............................................................................................................................. 2
What they're saying about Head First..................................................................................... 3
Praise for Head First Java............................................................................................................................................................................................................... 3
Praise for other Head First books co-authored by Kathy and Bert................................................................................................................................................ 3
Other related books from O'Reilly.................................................................................................................................................................................................. 3
Intro....................................................................................................................................... 7
Who is this book for?....................................................................................................................................................................................................................... 7
We know what you're thinking........................................................................................................................................................................................................ 7
And we know what your brain is thinking...................................................................................................................................................................................... 7
Metacognition: thinking about thinking......................................................................................................................................................................................... 7
Here's what WE did:........................................................................................................................................................................................................................ 7
Here's what YOU can do to bend your brain into submission........................................................................................................................................................ 7
What you need for this book:.......................................................................................................................................................................................................... 7
Last-minute things you need to know:............................................................................................................................................................................................ 7
Technical Editors............................................................................................................................................................................................................................. 7
Other people to credit:..................................................................................................................................................................................................................... 7
Just when you thought there wouldn't be any more acknowledgements....................................................................................................................................... 7
Chapter 1. Breaking the Surface............................................................................................ 19
Section 1.1. The Way Java Works.................................................................................................................................................................................................. 20
Section 1.2. What you'll do in Java................................................................................................................................................................................................ 21
Section 1.3. A very brief history of Java........................................................................................................................................................................................ 22
Section 1.4. Sharpen your pencil................................................................................................................................................................................................... 23
Section 1.5. Sharpen your pencil answers..................................................................................................................................................................................... 24
Section 1.6. Code structure in Java............................................................................................................................................................................................... 25
Section 1.7. Anatomy of a class...................................................................................................................................................................................................... 26
Section 1.8. Writing a class with a main........................................................................................................................................................................................ 27
Section 1.9. What can you say in the main method?.................................................................................................................................................................... 28
Section 1.10. Looping and looping and......................................................................................................................................................................................... 29
Section 1.11. there are no Dumb Questions.................................................................................................................................................................................. 30
Section 1.12. Conditional branching.............................................................................................................................................................................................. 31
Section 1.13. Coding a Serious Business Application.................................................................................................................................................................... 32
Section 1.14. Monday morning at Bob's........................................................................................................................................................................................ 33
Section 1.15. Phrase-O-Matic........................................................................................................................................................................................................ 35
Section 1.16. Fireside Chats........................................................................................................................................................................................................... 36
Section 1.17. Exercise: Code Magnets........................................................................................................................................................................................... 38
Section 1.18. Exercise: BE The compiler....................................................................................................................................................................................... 39
Section 1.19. JavaCross 7.0........................................................................................................................................................................................................... 40
Section 1.20. Mixed Messages....................................................................................................................................................................................................... 41
Section 1.21. Pool Puzzle................................................................................................................................................................................................................ 42
Section 1.22. Exercise Solutins: Code Magnets:........................................................................................................................................................................... 43
Chapter 2. A Trip to Objectville............................................................................................. 45
Section 2.1. Chair Wars................................................................................................................................................................................................................. 46
Section 2.2. Brain Power................................................................................................................................................................................................................ 51
Section 2.3. Making your first object............................................................................................................................................................................................ 54
Section 2.4. Making and testing Movie objects............................................................................................................................................................................. 55
Section 2.5. Quick! Get out of main!............................................................................................................................................................................................. 56
Section 2.6. Running the Guessing Game..................................................................................................................................................................................... 58
Section 2.7. Who am I?.................................................................................................................................................................................................................. 63
Chapter 3. Know Your Variables........................................................................................... 67
Section 3.1. Declaring a variable................................................................................................................................................................................................... 68
Section 3.2. "I'd like a double mocha, no, make it an int."........................................................................................................................................................... 69
Section 3.3. You really don't want to spill that............................................................................................................................................................................. 70
Section 3.4. Back away from that keyword!.................................................................................................................................................................................. 71
Section 3.5. This table reserved..................................................................................................................................................................................................... 71
Section 3.6. Controlling your Dog object...................................................................................................................................................................................... 72
Section 3.7. An object reference is just another variable value.................................................................................................................................................... 73
Section 3.8. There are no Dumb Question.................................................................................................................................................................................... 74
Section 3.9. Java Exposed............................................................................................................................................................................................................. 74
Section 3.10. Life on the garbage-collectible heap........................................................................................................................................................................ 75
Section 3.11. Life and death on the heap....................................................................................................................................................................................... 76
Section 3.12. An array is like a tray of cups................................................................................................................................................................................... 77
Section 3.13. Arrays are objects too............................................................................................................................................................................................... 77
Section 3.14. Make an array of Dogs............................................................................................................................................................................................. 78
Section 3.15. Control your Dog...................................................................................................................................................................................................... 79
Section 3.16. A Dog example......................................................................................................................................................................................................... 80
Section 3.17. Exercise: BE the compiler........................................................................................................................................................................................ 81
Section 3.18. Exercise: Code Magnets........................................................................................................................................................................................... 82
Section 3.19. Pool Puzzle............................................................................................................................................................................................................... 83
Section 3.20. A Heap o' Trouble................................................................................................................................................................................................... 84
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 3.21. Five-Minute Mystery............................................................................................................................................................................................... 85
Section 3.22. Exercise Solutions: Code Magnets.......................................................................................................................................................................... 86
Section 3.23. Puzzle Solutions....................................................................................................................................................................................................... 87
Chapter 4. How Objects Behave............................................................................................ 89
Section 4.1. Remember: a class describes what an object knows and what an object does........................................................................................................ 90
Section 4.2. The size affects the bark............................................................................................................................................................................................. 91
Section 4.3. You can send things to a method.............................................................................................................................................................................. 92
Section 4.4. You can get things back from a method.................................................................................................................................................................... 93
Section 4.5. You can send more than one thing to a method....................................................................................................................................................... 94
Section 4.6. there are no Dumb Questions................................................................................................................................................................................... 96
Section 4.7. Reminder: Java cares about type!............................................................................................................................................................................. 96
Section 4.8. Cool things you can do with parameters and return types....................................................................................................................................... 97
Section 4.9. Encapsulation............................................................................................................................................................................................................ 98
Section 4.10. Encapsulating the GoodDog class......................................................................................................................................................................... 100
Section 4.11. How do objects in an array behave?....................................................................................................................................................................... 101
Section 4.12. Declaring and initializing instance variables........................................................................................................................................................ 102
Section 4.13. The difference between instance and local variables............................................................................................................................................ 103
Section 4.14. there are no Dumb Questions................................................................................................................................................................................ 103
Section 4.15. Comparing variables (primitives or references).................................................................................................................................................... 104
Section 4.16. Exercise: BE the compiler...................................................................................................................................................................................... 106
Section 4.17. Who am I?............................................................................................................................................................................................................... 107
Section 4.18. Mixed Messages..................................................................................................................................................................................................... 108
Section 4.19. Pool Puzzle............................................................................................................................................................................................................. 109
Section 4.20. Five Minute Mystery.............................................................................................................................................................................................. 110
Section 4.21. Puzzle Solutions...................................................................................................................................................................................................... 112
Chapter 5. Extra-Strength Methods..................................................................................... 113
Section 5.1. Let's build a Battleship-style game: "Sink a Dot Com"............................................................................................................................................ 114
Section 5.2. First, a high-level design.......................................................................................................................................................................................... 115
Section 5.3. The "Simple Dot Com Game" a gentler introduction.............................................................................................................................................. 116
Section 5.4. Developing a Class.................................................................................................................................................................................................... 117
Section 5.5. BRAIN POWER........................................................................................................................................................................................................ 117
Section 5.6. There are no Dumb Questions................................................................................................................................................................................. 121
Section 5.7. There are no Dumb Questions................................................................................................................................................................................. 124
Section 5.8. Exercise: BE the JVM.............................................................................................................................................................................................. 136
Section 5.9. Exercise: Code Magnets........................................................................................................................................................................................... 137
Section 5.10. Java Cross............................................................................................................................................................................................................... 138
Section 5.11. Exercise Solutions................................................................................................................................................................................................... 140
Chapter 6. Using the Java Library....................................................................................... 143
Section 6.1. In our last chapter, we left you with the cliff-hanger. A bug................................................................................................................................... 144
Section 6.2. So what happened?.................................................................................................................................................................................................. 145
Section 6.3. How do we fix it?...................................................................................................................................................................................................... 146
Section 6.4. Option one is too clunky.......................................................................................................................................................................................... 147
Section 6.5. Option two is a little better, but still pretty clunky................................................................................................................................................. 147
Section 6.6. Wake up and smell the library................................................................................................................................................................................. 150
Section 6.7. Some things you can do with ArrayList................................................................................................................................................................... 151
Section 6.8. there are no Dumb Questions.................................................................................................................................................................................. 153
Section 6.9. Java Exposed............................................................................................................................................................................................................ 153
Section 6.10. Comparing ArrayList to a regular array................................................................................................................................................................ 154
Section 6.11. Comparing ArrayList to a regular array................................................................................................................................................................. 155
Section 6.12. Let's fix the DotCom code...................................................................................................................................................................................... 156
Section 6.13. New and improved DotCom class.......................................................................................................................................................................... 157
Section 6.14. Let's build the REAL game: "Sink a Dot Com"...................................................................................................................................................... 158
Section 6.15. What needs to change?........................................................................................................................................................................................... 159
Section 6.16. Who does what in the DotComBust game (and when)......................................................................................................................................... 160
Section 6.17. Prep code for the real DotComBust class............................................................................................................................................................... 162
Section 6.18. The final version of the Dotcom class.................................................................................................................................................................... 168
Section 6.19. Super Powerful Boolean Expressions.................................................................................................................................................................... 169
Section 6.20. Ready-bake Code................................................................................................................................................................................................... 170
Section 6.21. Ready-bake Code.................................................................................................................................................................................................... 171
Section 6.22. Using the Library (the Java API)........................................................................................................................................................................... 172
Section 6.23. You have to know the full name of the class you want to use in your code.......................................................................................................... 173
Section 6.24. there are no Dumb Questions................................................................................................................................................................................ 173
Section 6.25. there are no Dumb Questions................................................................................................................................................................................ 175
Section 6.26. How to play with the API....................................................................................................................................................................................... 176
Section 6.27. Code Magnets......................................................................................................................................................................................................... 179
Section 6.28. JavaCross 7.0......................................................................................................................................................................................................... 180
Section 6.29. Exercise Solutions.................................................................................................................................................................................................. 181
Section 6.30. JavaCross answers................................................................................................................................................................................................. 182
Chapter 7. Better Living in Objectville................................................................................. 183
Section 7.1. Chair Wars Revisited................................................................................................................................................................................................ 184
Section 7.2. BRAIN POWER........................................................................................................................................................................................................ 185
Section 7.3. there are no Dumb Questions.................................................................................................................................................................................. 194

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 7.4. there are no Dumb Questions.................................................................................................................................................................................. 198
Section 7.5. brain power.............................................................................................................................................................................................................. 206
Section 7.6. there are no Dumb Questions................................................................................................................................................................................. 207
Section 7.7. Exercise: Mixed Messages....................................................................................................................................................................................... 210
Section 7.8. Exercise BE the Compiler......................................................................................................................................................................................... 211
Section 7.9. Exercise Solutions: BE the Compiler....................................................................................................................................................................... 213
Chapter 8. Serious Polymorphism....................................................................................... 215
Section 8.1. Did we forget about something when we designed this?........................................................................................................................................ 216
Section 8.2. BRAIN POWER....................................................................................................................................................................................................... 220
Section 8.3. there are no Dumb Questions................................................................................................................................................................................. 243
Section 8.4. Pool Puzzle.............................................................................................................................................................................................................. 250
Section 8.5. Exercise Solutions.................................................................................................................................................................................................... 251
Chapter 9. Life and Death of an Object................................................................................ 253
Section 9.1. The Stack and the Heap: where things live............................................................................................................................................................. 254
Section 9.2. Methods are stacked................................................................................................................................................................................................ 255
Section 9.3. What about local variables that are objects?.......................................................................................................................................................... 256
Section 9.4. there are no Dumb Questions................................................................................................................................................................................. 256
Section 9.5. If local variables live on the stack, where do instance variables live?.................................................................................................................... 257
Section 9.6. The miracle of object creation................................................................................................................................................................................. 258
Section 9.7. Construct a Duck..................................................................................................................................................................................................... 260
Section 9.8. Initializing the state of a new Duck......................................................................................................................................................................... 261
Section 9.9. there are no Dumb Questions.................................................................................................................................................................................. 261
Section 9.10. Using the constructor to initialize important Duck state..................................................................................................................................... 262
Section 9.11. Make it easy to make a Duck.................................................................................................................................................................................. 263
Section 9.12. Doesn't the compiler always make a no-arg constructor for you? No!................................................................................................................. 264
Section 9.13. there are no Dumb Questions................................................................................................................................................................................ 266
Section 9.14. there are no Dumb Questions................................................................................................................................................................................ 267
Section 9.15. Wait a minute... we never DID talk about superclasses and inheritance and how that all fits in with constructors.......................................... 268
Section 9.16. Making a Hippo means making the Animal and Object parts too....................................................................................................................... 270
Section 9.17. How do you invoke a superclass constructor?....................................................................................................................................................... 271
Section 9.18. Can the child exist before the parents?................................................................................................................................................................. 272
Section 9.19. Superclass constructors with arguments............................................................................................................................................................... 273
Section 9.20. Invoking one overloaded constructor from another............................................................................................................................................ 274
Section 9.21. Now we know how an object is born, but how long does an object live?............................................................................................................. 276
Section 9.22. What about reference variables?........................................................................................................................................................................... 278
Chapter 10. Numbers Matter............................................................................................... 291
Section 10.1. MATH methods: as close as you'll ever get to a global method............................................................................................................................ 292
Section 10.2. The difference between regular (non-static) and static methods......................................................................................................................... 293
Section 10.3. What it means to have a class with static methods............................................................................................................................................... 294
Section 10.4. Static methods can't use non-static (instance) variables!.................................................................................................................................... 295
Section 10.5. Static methods can't use non-static methods, either!........................................................................................................................................... 296
Section 10.6. Static variable: value is the same for ALL instances of the class.......................................................................................................................... 297
Section 10.7. Initializing a static variable................................................................................................................................................................................... 299
Section 10.8. static final variables are constants........................................................................................................................................................................ 300
Section 10.9. final isn't just for static variables........................................................................................................................................................................... 301
Section 10.10. there are no Dumb Questions............................................................................................................................................................................. 302
Section 10.11. Math methods...................................................................................................................................................................................................... 304
Section 10.12. Wrapping a primitive........................................................................................................................................................................................... 305
Section 10.13. Before Java 5.0, YOU had to do the work........................................................................................................................................................... 306
Section 10.14. Autoboxing: blurring the line bet ween primitive and object............................................................................................................................. 307
Section 10.15. Autoboxing works almost everywhere................................................................................................................................................................ 308
Section 10.16. But wait! There's more! Wrappers have static utility methods too!................................................................................................................... 310
Section 10.17. And now in reverse... turning a primitive number into a String.......................................................................................................................... 311
Section 10.18. Number formatting.............................................................................................................................................................................................. 312
Section 10.19. Formatting deconstructed.................................................................................................................................................................................... 313
Section 10.20. The percent (%) says, "insert argument here" (and format it using these instructions)................................................................................... 314
Section 10.21. The format String uses its own little language syntax......................................................................................................................................... 315
Section 10.22. The format specifier............................................................................................................................................................................................. 316
Section 10.23. The only required specifier is for TYPE............................................................................................................................................................... 317
Section 10.24. What happens if I have more than one argument?............................................................................................................................................. 318
Section 10.25. So much for numbers, what about dates?........................................................................................................................................................... 319
Section 10.26. Working with Dates............................................................................................................................................................................................. 320
Section 10.27. Moving backward and for ward in time............................................................................................................................................................... 321
Section 10.28. Getting an object that extends Calendar............................................................................................................................................................. 322
Section 10.29. Working with Calendar objects........................................................................................................................................................................... 323
Section 10.30. Highlights of the Calendar API........................................................................................................................................................................... 324
Section 10.31. Even more Statics!... static imports..................................................................................................................................................................... 325
Section 10.32. Lunar Code Magnets........................................................................................................................................................................................... 330
Chapter 11. Risky Behavior.................................................................................................. 333
Section 11.1. Let's make a Music Machine................................................................................................................................................................................... 334
Section 11.2. We'll start with the basics....................................................................................................................................................................................... 335
Section 11.3. First we need a Sequencer...................................................................................................................................................................................... 336

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 11.4. Something's wrong!................................................................................................................................................................................................ 336
Section 11.5. What happens when a method you want to call (probably in a class you didn't write) is risky?......................................................................... 337
Section 11.6. Methods in Java use exceptions to tell the calling code, "Some thing Bad Happened. I failed."......................................................................... 338
Section 11.7. The compiler needs to know that YOU know you're calling a risky method........................................................................................................ 339
Section 11.8. An exception is an object… of type Exception....................................................................................................................................................... 340
Section 11.9. If it's your code that catches the exception, then whose code throws it?.............................................................................................................. 341
Section 11.10. there are no Dumb Questions.............................................................................................................................................................................. 342
Section 11.11. Flow control in try/catch blocks........................................................................................................................................................................... 344
Section 11.12. Finally: for the things you want to do no matter what........................................................................................................................................ 345
Section 11.13. Sharpen your pencil:Flow Control....................................................................................................................................................................... 346
Section 11.14. Did we mention that a method can throw more than one exception?................................................................................................................ 347
Section 11.15. Exceptions are polymorphic................................................................................................................................................................................. 348
Section 11.16. Multiple catch blocks must be ordered from smallest to biggest........................................................................................................................ 350
Section 11.17. You can't put bigger baskets above smaller baskets............................................................................................................................................. 351
Section 11.18. Sharpen your pencil.............................................................................................................................................................................................. 352
Section 11.19. When you don't want to handle an exception…................................................................................................................................................... 353
Section 11.20. Ducking (by declaring) only delays the inevitable.............................................................................................................................................. 354
Section 11.21. Getting back to our music code…......................................................................................................................................................................... 356
Section 11.22. Code Kitchen......................................................................................................................................................................................................... 357
Section 11.23. Making actual sound............................................................................................................................................................................................ 358
Section 11.24. Your very first sound player app.......................................................................................................................................................................... 360
Section 11.25. Making a MidiEvent (song data).......................................................................................................................................................................... 361
Section 11.26. MIDI message: the heart of a MidiEvent............................................................................................................................................................. 362
Section 11.27. Anatomy of a message.......................................................................................................................................................................................... 362
Section 11.28. Version 2: Using command-line args to experiment with sounds...................................................................................................................... 364
Section 11.29. Exercise: True or False......................................................................................................................................................................................... 366
Section 11.30. Exercise: Code Magnets....................................................................................................................................................................................... 367
Section 11.31. JavaCross 7.0........................................................................................................................................................................................................ 368
Section 11.32. Exercise Solutions: True or False........................................................................................................................................................................ 369
Section 11.33. Code Magnets....................................................................................................................................................................................................... 369
Section 11.34. JavaCross Answers............................................................................................................................................................................................... 370
Chapter 12. A Very Graphic.................................................................................................. 371
Section 12.1. It all starts with a window...................................................................................................................................................................................... 372
Section 12.2. Your first GUI: a button on a frame...................................................................................................................................................................... 373
Section 12.3. Getting a user event............................................................................................................................................................................................... 375
Section 12.4. Getting a button's ActionEvent............................................................................................................................................................................. 378
Section 12.5. There are no Dumb Questions.............................................................................................................................................................................. 380
Section 12.6. Make your own drawing widget............................................................................................................................................................................ 382
Section 12.7. Because life's too short to paint the circle a solid color when there's a gradient blend waiting for you.............................................................. 385
Section 12.8. BULLET POINTS.................................................................................................................................................................................................. 386
Section 12.9. We can get an event............................................................................................................................................................................................... 387
Section 12.10. Let's try it with TWO buttons.............................................................................................................................................................................. 390
Section 12.11. Java Exposed: This weeks interview: Instance of an Inner Class....................................................................................................................... 398
Section 12.12. There are no Dumb Questions............................................................................................................................................................................. 400
Section 12.13. Code Kitchen........................................................................................................................................................................................................ 404
Section 12.14. Exercise: Who am I?............................................................................................................................................................................................. 412
Section 12.15. Exercise: BE the compiler..................................................................................................................................................................................... 413
Section 12.16. Pool Puzzle............................................................................................................................................................................................................ 414
Section 12.17. Exercise Solutions: Who am I?............................................................................................................................................................................. 415
Section 12.18. Pool Puzzle............................................................................................................................................................................................................ 416
Chapter 13. Work on Your Swing......................................................................................... 417
Section 13.1. Swing components.................................................................................................................................................................................................. 418
Section 13.2. Layout Managers.................................................................................................................................................................................................... 419
Section 13.3. How does the layout manager decide?.................................................................................................................................................................. 420
Section 13.4. The Big Three layout managers: border, flow, and box........................................................................................................................................ 421
Section 13.5. there are no Dumb Questions................................................................................................................................................................................ 430
Section 13.6. Playing with Swing components............................................................................................................................................................................ 431
Section 13.7. there are no Dumb Questions................................................................................................................................................................................ 434
Section 13.8. Code Kitchen.......................................................................................................................................................................................................... 436
Section 13.9. Making the BeatBox............................................................................................................................................................................................... 437
Section 13.10. Exercise: Which code goes with which layout?................................................................................................................................................... 442
Section 13.11. Code Fragments.................................................................................................................................................................................................... 443
Chapter 14. Saving Objects.................................................................................................. 447
Section 14.1. Capture the Beat..................................................................................................................................................................................................... 448
Section 14.2. Saving State............................................................................................................................................................................................................ 449
Section 14.3. Writing a serialized object to a file........................................................................................................................................................................ 450
Section 14.4. Data moves in streams from one place to another................................................................................................................................................ 451
Section 14.5. What really happens to an object when it's serialized?......................................................................................................................................... 452
Section 14.6. But what exactly IS an object's state? What needs to be saved?........................................................................................................................... 453
Section 14.7. If you want your class to be serializable, implement Serializable......................................................................................................................... 455
Section 14.8. There are no Dumb Questions.............................................................................................................................................................................. 458
Section 14.9. Deserialization: restoring an object...................................................................................................................................................................... 459
Section 14.10. What happens during deserialization?............................................................................................................................................................... 460
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 14.11. There are no Dumb Questions.............................................................................................................................................................................. 461
Section 14.12. Saving and restoring the game characters........................................................................................................................................................... 462
Section 14.13. The GameCharacter class..................................................................................................................................................................................... 463
Section 14.14. Object Serialization.............................................................................................................................................................................................. 464
Section 14.15. Writing a String to a Text File.............................................................................................................................................................................. 465
Section 14.16. Text File Example: e-Flashcards.......................................................................................................................................................................... 466
Section 14.17. Quiz Card Builder (code outline)......................................................................................................................................................................... 467
Section 14.18. The java.io.File class............................................................................................................................................................................................ 470
Section 14.19. The beauty of buffers............................................................................................................................................................................................ 471
Section 14.20. Reading from a Text File..................................................................................................................................................................................... 472
Section 14.21. Quiz Card Player (code outline)........................................................................................................................................................................... 473
Section 14.22. Parsing with String split()................................................................................................................................................................................... 476
Section 14.23. There are no Dumb Questions............................................................................................................................................................................. 477
Section 14.24. Version ID: A Big Serialization Gotcha............................................................................................................................................................... 478
Section 14.25. Using the serialVersionUID................................................................................................................................................................................. 479
Section 14.26. Code Kitchen....................................................................................................................................................................................................... 480
Section 14.27. Saving a BeatBox pattern..................................................................................................................................................................................... 481
Section 14.28. Restoring a BeatBox pattern............................................................................................................................................................................... 482
Section 14.29. Sharpen your pencil: Can they be saved?........................................................................................................................................................... 483
Section 14.30. Exercise: True or False........................................................................................................................................................................................ 484
Section 14.31. Code Magnets....................................................................................................................................................................................................... 485
Section 14.32. Exercise Solutions............................................................................................................................................................................................... 486
Chapter 15. Make a Connection........................................................................................... 488
Section 15.1. Real-time Beat Box Chat........................................................................................................................................................................................ 489
Section 15.2. Connecting, Sending, and Receiving..................................................................................................................................................................... 491
Section 15.3. Make a network Socket connection....................................................................................................................................................................... 492
Section 15.4. A TCP port is just a number: A 16-bit number that identifies a specific program on the server......................................................................... 493
Section 15.5. To read data from a Socket, use a BufferedReader............................................................................................................................................... 495
Section 15.6. To write data to a Socket, use a PrintWriter......................................................................................................................................................... 496
Section 15.7. DailyAdviceClient code.......................................................................................................................................................................................... 498
Section 15.8. Writing a simple server......................................................................................................................................................................................... 500
Section 15.9. DailyAdviceServer code.......................................................................................................................................................................................... 501
Section 15.10. Writing a Chat Client........................................................................................................................................................................................... 503
Section 15.11. Java has multiple threads but only one Thread class.......................................................................................................................................... 507
Section 15.12. What does it mean to have more than one call stack?........................................................................................................................................ 508
Section 15.13. Every Thread needs a job to do: A method to put on the new thread stack........................................................................................................ 510
Section 15.14. To make a job for your thread, implement the Runnable interface..................................................................................................................... 511
Section 15.15. The Thread Scheduler........................................................................................................................................................................................... 514
Section 15.16. there are no Dumb Questions............................................................................................................................................................................... 517
Section 15.17. Putting a thread to sleep....................................................................................................................................................................................... 518
Section 15.18. Using sleep to make our program more predictable........................................................................................................................................... 519
Section 15.19. Making and starting two threads......................................................................................................................................................................... 520
Section 15.20. What will happen?............................................................................................................................................................................................... 520
Section 15.21. Um, yes. There IS a dark side. Threads can lead to concurrency 'issues'............................................................................................................ 521
Section 15.22. The Ryan and Monica problem, in code.............................................................................................................................................................. 523
Section 15.23. The Ryan and Monica example........................................................................................................................................................................... 524
Section 15.24. We need the makeWithdrawal ( ) method to run as one atomic thing............................................................................................................... 527
Section 15.25. Using an object's lock........................................................................................................................................................................................... 528
Section 15.26. The dreaded "Lost Update" problem................................................................................................................................................................... 529
Section 15.27. Let's run this code................................................................................................................................................................................................ 530
Section 15.28. Make the increment() method atomic. Synchronize it!...................................................................................................................................... 531
Section 15.29. there are no Dumb Questions.............................................................................................................................................................................. 531
Section 15.30. The deadly side of synchronization..................................................................................................................................................................... 533
Section 15.31. New and improved SimpleChatClient.................................................................................................................................................................. 535
Section 15.32. Ready-bake Code: The really really simple Chat Server..................................................................................................................................... 537
Section 15.33. there are no Dumb Questions.............................................................................................................................................................................. 539
Section 15.34. Code Kitchen........................................................................................................................................................................................................ 540
Section 15.35. Exercise: Code Magnets....................................................................................................................................................................................... 541
Section 15.36. Exercise Solutions................................................................................................................................................................................................ 543
Section 15.37. Five-Minute Mystery............................................................................................................................................................................................ 544
Chapter 16. Data structures................................................................................................ 546
Section 16.1. Tracking song popularity on your jukebox............................................................................................................................................................ 547
Section 16.2. Here's what you have so far, without the sort:...................................................................................................................................................... 548
Section 16.3. But the ArrayList class does NOT have a sort() method!..................................................................................................................................... 549
Section 16.4. ArrayList is not the only collection........................................................................................................................................................................ 550
Section 16.5. You could use a TreeSet... Or you could use the Collections.sort() method......................................................................................................... 551
Section 16.6. Adding Collections.sort() to the Jukebox code..................................................................................................................................................... 552
Section 16.7. But now you need Song objects, not just simple Strings....................................................................................................................................... 553
Section 16.8. Changing the Jukebox code to use Songs instead of Strings................................................................................................................................ 554
Section 16.9. It won't compile!.................................................................................................................................................................................................... 555
Section 16.10. The sort() method declaration............................................................................................................................................................................. 555
Section 16.11. Generics means more type-safety......................................................................................................................................................................... 557
Section 16.12. Learning generics................................................................................................................................................................................................. 558

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 16.13. Using generic CLASSES....................................................................................................................................................................................... 559
Section 16.14. Using type parameters with ArrayList................................................................................................................................................................. 560
Section 16.15. Using generic METHODS..................................................................................................................................................................................... 561
Section 16.16. Here's where it gets weird.................................................................................................................................................................................... 562
Section 16.17. Revisiting the sort() method................................................................................................................................................................................ 564
Section 16.18. In generics, "extends" means "extends or implements"...................................................................................................................................... 565
Section 16.19. Finally we know what's wrong............................................................................................................................................................................. 566
Section 16.20. The new, improved, comparable Song class....................................................................................................................................................... 567
Section 16.21. We can sort the list, but....................................................................................................................................................................................... 568
Section 16.22. Using a custom comparator................................................................................................................................................................................. 569
Section 16.23. Updating the Jukebox to use a Comparator........................................................................................................................................................ 570
Section 16.24. Sharpen your pencil: Reverse Engineer.............................................................................................................................................................. 570
Section 16.25. Sharpen your pencil: Fill-in-the-blanks.............................................................................................................................................................. 572
Section 16.26. Uh-oh. The sorting all works, but now we have duplicates................................................................................................................................ 573
Section 16.27. We need a Set instead of a List............................................................................................................................................................................ 574
Section 16.28. The Collection API (part of it)............................................................................................................................................................................. 575
Section 16.29. Using a HashSet instead of ArrayList.................................................................................................................................................................. 576
Section 16.30. What makes two objects equal?........................................................................................................................................................................... 577
Section 16.31. How a HashSet checks for duplicates: hashCode() and equals()........................................................................................................................ 578
Section 16.32. The Song class with overridden hashCode() and equals().................................................................................................................................. 579
Section 16.33. there are no Dumb Questions............................................................................................................................................................................. 580
Section 16.34. And if we want the set to stay sorted, we've got TreeSet..................................................................................................................................... 581
Section 16.35. What you MUST know about TreeSet................................................................................................................................................................. 582
Section 16.36. TreeSet elements MUST be comparable............................................................................................................................................................. 583
Section 16.37. We've seen Lists and Sets, now we'll use a Map.................................................................................................................................................. 584
Section 16.38. Finally, back to generics...................................................................................................................................................................................... 585
Section 16.39. Using polymorphic arguments and generics...................................................................................................................................................... 586
Section 16.40. But will it work with ArrayList<Dog> ?.............................................................................................................................................................. 587
Section 16.41. What could happen if it were allowed................................................................................................................................................................. 588
Section 16.42. Wildcards to the rescue........................................................................................................................................................................................ 591
Section 16.43. Alternate syntax for doing the same thing.......................................................................................................................................................... 592
Section 16.44. there are no Dumb Questions.............................................................................................................................................................................. 592
Section 16.45. Exercise: BE the compiler, advanced.................................................................................................................................................................. 593
Section 16.46. Solution to the "Reverse Engineer" sharpen exercise......................................................................................................................................... 594
Section 16.47. Exercise Solution.................................................................................................................................................................................................. 595
Section 16.48. BE the compiler solution..................................................................................................................................................................................... 596
Chapter 17. Release Your Code............................................................................................ 598
Section 17.1. Deploying your application.................................................................................................................................................................................... 599
Section 17.2. Imagine this scenario............................................................................................................................................................................................ 600
Section 17.3. Separate source code and class files...................................................................................................................................................................... 601
Section 17.4. Put your Java in a JAR.......................................................................................................................................................................................... 602
Section 17.5. Running (executing) the JAR................................................................................................................................................................................ 603
Section 17.6. Put your classes in packages!................................................................................................................................................................................ 604
Section 17.7. Preventing package name conflicts....................................................................................................................................................................... 605
Section 17.8. Compiling and running with packages.................................................................................................................................................................. 607
Section 17.9. The -d flag is even cooler then we said.................................................................................................................................................................. 608
Section 17.10. Making an executable JAR with packages.......................................................................................................................................................... 609
Section 17.11. So where did the manifest file go?........................................................................................................................................................................ 610
Section 17.12. Java Web Start...................................................................................................................................................................................................... 614
Section 17.13. The .jnlp file.......................................................................................................................................................................................................... 616
Section 17.14. Steps for making and deploying a Java Web Start app........................................................................................................................................ 617
Section 17.15. What's First?......................................................................................................................................................................................................... 618
Section 17.16. True or False......................................................................................................................................................................................................... 619
Section 17.17. Summary-Cross 7.0.............................................................................................................................................................................................. 620
Chapter 18. Distributed Computing.................................................................................... 624
Section 18.1. Method calls are always bet ween two objects on the same heap......................................................................................................................... 625
Section 18.2. What if you want to invoke a method on an object running on another machine?............................................................................................. 626
Section 18.3. Object A, running on Little, wants to call a method on Object B, running on Big............................................................................................... 627
Section 18.4. But you can't do that.............................................................................................................................................................................................. 627
Section 18.5. The role of the 'helpers'......................................................................................................................................................................................... 629
Section 18.6. Java RMI gives you the client and service helper objects!.................................................................................................................................... 631
Section 18.7. How does the client get the stub object?............................................................................................................................................................... 637
Section 18.8. How does the client get the stub class?................................................................................................................................................................. 638
Section 18.9. Be sure each machine has the class files it needs................................................................................................................................................. 639
Section 18.10. Sharpen your pencil: What's First?..................................................................................................................................................................... 640
Section 18.11. Yeah, but who really uses RMI?........................................................................................................................................................................... 641
Section 18.12. What about Servlets?........................................................................................................................................................................................... 642
Section 18.13. A very simple Ser vlet........................................................................................................................................................................................... 644
Section 18.14. HTML page with a link to this servlet................................................................................................................................................................. 644
Section 18.15. There are no Dumb Questions............................................................................................................................................................................. 645
Section 18.16. Just for fun, let's make the Phrase-O-Matic work as a servlet............................................................................................................................ 646
Section 18.17. Phrase-O-Matic code, servlet-friendly................................................................................................................................................................. 647
Section 18.18. Enterprise JavaBeans: RMI on steroids.............................................................................................................................................................. 648

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Section 18.19. For our final trick... a little Jini........................................................................................................................................................................... 649
Section 18.20. Adaptive discovery in action............................................................................................................................................................................... 650
Section 18.21. Self-healing net work in action............................................................................................................................................................................ 652
Section 18.22. Final Project: the Universal Service browser...................................................................................................................................................... 653
Section 18.23. How it works:....................................................................................................................................................................................................... 654
Section 18.24. The classes and interfaces:.................................................................................................................................................................................. 656
Section 18.25. Sharpen your pencil............................................................................................................................................................................................. 661
Section 18.26. Congratulations!.................................................................................................................................................................................................. 665
Appendix A. Final Code Kitchen.......................................................................................... 666
Section A.1. Final BeatBox client program.................................................................................................................................................................................. 667
Appendix B. The Top Ten Topics that almost made it into the Real Book............................. 676
Section B.1. #10 Bit Manipulation............................................................................................................................................................................................... 677
Section B.2. #9 Immutability...................................................................................................................................................................................................... 678
Section B.3. #8 Assertions........................................................................................................................................................................................................... 679
Section B.4. #7 Block Scope........................................................................................................................................................................................................ 680
Section B.5. #6 Linked Invocations............................................................................................................................................................................................. 681
Section B.6. #5 Anonymous and Static Nested Classes............................................................................................................................................................. 682
Section B.7. #5 Anonymous and Static Nested Classes, continued........................................................................................................................................... 683
Section B.8. #4 Access Levels and Access Modifiers (Who Sees What).................................................................................................................................... 684
Section B.9. #4 Access Levels and Access Modifiers, cont......................................................................................................................................................... 684
Section B.10. #3 String and StringBuffer/StringBuilder Methods............................................................................................................................................ 686
Section B.11. #2 Multidimensional Arrays.................................................................................................................................................................................. 687
Section B.12. And the number one topic that didn't quite make it in... #1 Enumerations (also called Enumerated Types or Enums).................................. 688
Section B.13. Using "if" and "switch" with Enums..................................................................................................................................................................... 689
Section B.14. #1 Enumerations, completed................................................................................................................................................................................ 690
Section B.15. Five-Minute Mystery: A Long Trip Home............................................................................................................................................................. 691
Section B.16. Five-Minute Mystery Solution.............................................................................................................................................................................. 692

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
+HDG)LUVW-DYDŒ
6HFRQG(GLWLRQ

BY+ATHY3IERRAAND"ERT"ATES

#OPYRIGHT¥ BY/2EILLY-EDIA )NC!LLRIGHTSRESERVED


0RINTEDINTHE5NITED3TATESOF!MERICA

0UBLISHEDBY/2EILLY-EDIA )NC 'RAVENSTEIN(IGHWAY.ORTH 3EBASTOPOL #!


/2EILLY-EDIABOOKSMAYBEPURCHASEDFOREDUCATIONAL BUSINESS ORSALESPROMOTIONALUSE
/NLINEEDITIONSAREALSOAVAILABLEFORMOSTTITLESSAFARIOREILLYCOM &ORMOREINFORMATION
CONTACTOURCORPORATEINSTITUTIONALSALESDEPARTMENT  ORCORPORATE OREILLYCOM

(GLWRU -IKE,OUKIDES
&RYHU'HVLJQHU %DIE&REEDMAN
,QWHULRU'HVLJQHUV+ATHY3IERRAAND"ERT"ATES
3ULQWLQJ+LVWRU\
-AY &IRST%DITION
&EBRUARY 3ECOND%DITION
9OUMIGHTWANTTOPICKUPACOPYOFBOTHEDITIONSFORYOURKIDS4HINKE"AY©

4HE/2EILLYLOGOISAREGISTEREDTRADEMARKOF/2EILLY-EDIA )NC*AVAANDALL*AVA BASED


TRADEMARKSANDLOGOSARETRADEMARKSORREGISTEREDTRADEMARKSOF3UN-ICROSYSTEMS )NC INTHE
5NITED3TATESANDOTHERCOUNTRIES/2EILLY-EDIA )NCISINDEPENDENTOF3UN-ICROSYSTEMS
-ANYOFTHEDESIGNATIONSUSEDBYMANUFACTURERSANDSELLERSTODISTINGUISHTHEIRPRODUCTSARE
CLAIMEDASTRADEMARKS
7HERETHOSEDESIGNATIONSAPPEARINTHISBOOK AND/2EILLY-EDIA )NCWASAWAREOFATRADEMARK
CLAIM THEDESIGNATIONSHAVEBEENPRINTEDINCAPSORINITIALCAPS
7HILEEVERYPRECAUTIONHASBEENTAKENINTHEPREPARATIONOFTHISBOOK THEPUBLISHERANDTHE
AUTHORSASSUMENORESPONSIBILITYFORERRORSOROMISSIONS ORFORDAMAGESRESULTINGFROMTHEUSEOF
THEINFORMATIONCONTAINEDHEREIN
)NOTHERWORDS IFYOUUSEANYTHINGIN(EAD&IRST*AVA©TO SAY RUNANUCLEARPOWERPLANTORAIR
TRAFlCCONTROLSYSTEM YOUREONYOUROWN

)3".
;-=

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
4OOURBRAINS FORALWAYSBEINGTHERE

Licensed by
DESPITESHAKYEVIDENCE

Eduard Simons
104038

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
:KDWWKH\·UHVD\LQJDERXW+HDG)LUVW

!MAZONNAMED(EAD&IRST*AVA 3OFTWARE$EVELOPMENT-AGAZINENAMED
A4OP4EN%DITORS#HOICEFOR (EAD&IRST*AVAAlNALISTFORTHETH!NNUAL
#OMPUTER"OOKSOF *OLT#OLA0RODUCT%XCELLENCE!WARDS
lRSTEDITION

h+ATHYAND"ERTS@(EAD&IRST*AVATRANSFORMSTHEPRINTEDPAGEINTOTHECLOSESTTHINGTOA'5)YOUVE
EVERSEEN)NAWRY HIPMANNER THEAUTHORSMAKELEARNING*AVAANENGAGING@WHATRETHEYGONNADO
NEXTEXPERIENCEv
ˆ7ARREN+EUFFEL 3OFTWARE$EVELOPMENT-AGAZINE

hTHEONLYWAYTODECIDETHEWORTHOFATUTORIALISTODECIDEHOWWELLITTEACHES(EAD&IRST*AVAEXCELSAT
TEACHING/+ )THOUGHTITWASSILLYTHEN)REALIZEDTHAT)WASTHOROUGHLYLEARNINGTHETOPICSAS)WENT
THROUGHTHEBOOKv
h4HESTYLEOF(EAD&IRST*AVAMADELEARNING WELL EASIERv
ˆSLASHDOTHONESTPUCKSREVIEW

h"EYONDTHEENGAGINGSTYLETHATDRAGSYOUFORWARDFROMKNOW NOTHINGINTOEXALTED*AVAWARRIORSTATUS
(EAD&IRST*AVACOVERSAHUGEAMOUNTOFPRACTICALMATTERSTHATOTHERTEXTSLEAVEASTHEDREADEDhEXERCISE
FORTHEREADERv)TSCLEVER WRY HIPANDPRACTICALˆTHEREARENTALOTOFTEXTBOOKSTHATCANMAKETHATCLAIM
ANDLIVEUPTOITWHILEALSOTEACHINGYOUABOUTOBJECTSERIALIZATIONANDNETWORKLAUNCHPROTOCOLSv
ˆ$R$AN2USSELL $IRECTOROF5SER3CIENCESAND%XPERIENCE2ESEARCH
)"-!LMADEN2ESEARCH#ENTERANDTEACHES!RTIlCIAL)NTELLIGENCEAT3TANFORD5NIVERSITY

h)TSFAST IRREVERENT FUN ANDENGAGING"ECAREFULˆYOUMIGHTACTUALLYLEARNSOMETHINGv


ˆ+EN!RNOLD FORMER3ENIOR%NGINEERAT3UN-ICROSYSTEMS
#O AUTHORWITH*AMES'OSLING CREATOROF*AVA h4HE*AVA0ROGRAMMING,ANGUAGEv

h*AVATECHNOLOGYISEVERYWHEREˆ)FYOUDEVELOPSOFTWAREANDHAVENTLEARNED*AVA ITSDElNITELY
TIMETODIVEINˆ(EAD&IRSTv
ˆ3COTT-C.EALY 3UN-ICROSYSTEMS#HAIRMAN 0RESIDENTAND#%/

h(EAD&IRST*AVAISLIKE-ONTY0YTHONMEETSTHEGANGOFFOURTHETEXTISBROKENUPSOWELLBYPUZZLES
ANDSTORIES QUIZZESANDEXAMPLES THATYOUCOVERGROUNDLIKENOCOMPUTERBOOKBEFOREv
ˆ$OUGLAS2OWE #OLUMBIA*AVA5SERS'ROUP

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
3UDLVHIRU+HDG)LUVW-DYD
h2EAD(EAD&IRST*AVAANDYOUWILLONCEAGAINEXPERIENCEFUNINLEARNING&ORPEOPLEWHOLIKETOLEARN
NEWPROGRAMMINGLANGUAGES ANDDONOTCOMEFROMACOMPUTERSCIENCEORPROGRAMMINGBACKGROUND
THISBOOKISAGEM4HISISONEBOOKTHATMAKESLEARNINGACOMPLEXCOMPUTERLANGUAGEFUN)HOPE
THATTHEREAREMOREAUTHORSWHOAREWILLINGTOBREAKOUTOFTHESAMEOLDMOLDOF@TRADITIONALWRITING
STYLES,EARNINGCOMPUTERLANGUAGESSHOULDBEFUN NOTONEROUSv
ˆ*UDITH4AYLOR 3OUTHEAST/HIO-ACROMEDIA5SER'ROUP

h)FYOUWANTTOLEARN*AVA LOOKNOFURTHERWELCOMETOTHElRST'5) BASEDTECHNICALBOOK4HIS


PERFECTLY EXECUTED GROUND BREAKINGFORMATDELIVERSBENElTSOTHER*AVATEXTSSIMPLYCANT
0REPAREYOURSELFFORATRULYREMARKABLERIDETHROUGH*AVALANDv
ˆ.EIL2"AUMAN #APTAIN#%/ 'EEK#RUISESWWW'EEK#RUISESCOM

h)FYOURERELATIVELYNEWTOPROGRAMMINGANDYOUAREINTERESTEDIN*AVA HERESYOURBOOK#OVERING
EVERYTHINGFROMOBJECTSTOCREATINGGRAPHICALUSERINTERFACES'5) EXCEPTIONERROR HANDLINGTONET
WORKINGSOCKETS ANDMULTITHREADING EVENPACKAGINGUPYOURPILEOFCLASSESINTOONEINSTALLATIONlLE
THISBOOKISQUITECOMPLETE)FYOULIKETHESTYLE)MCERTAINYOULLLOVETHEBOOKAND LIKEME HOPE
THATTHE(EAD&IRSTSERIESWILLEXPANDTOMANYOTHERSUBJECTSv
ˆ,INUX1UESTIONSORG

h)WAS!$$)#4%$TOTHEBOOKSSHORTSTORIES ANNOTATEDCODE MOCKINTERVIEWS ANDBRAINEXERCISESv


ˆ-ICHAEL9UAN AUTHOR %NTERPRISE*-%

h@(EAD&IRST*AVAGIVESNEWMEANINGTOTHEIRMARKETINGPHRASE{4HERESAN/2EILLYFORTHAT{)
PICKEDTHISUPBECAUSESEVERALOTHERS)RESPECTHADDESCRIBEDITINTERMSLIKE@REVOLUTIONARYANDA
DESCRIBEDARADICALLYDIFFERENTAPPROACHTOTHETEXTBOOK4HEYWEREARE RIGHT)NTYPICAL/2EILLY
FASHION THEYVETAKENASCIENTIlCANDWELLCONSIDEREDAPPROACH4HERESULTISFUNNY IRREVERENT TOPICAL
INTERACTIVE ANDBRILLIANT2EADINGTHISBOOKISLIKESITTINGINTHESPEAKERSLOUNGEATAVIEWCONFERENCE
LEARNINGFROMnANDLAUGHINGWITHnPEERS)FYOUWANTTO5.$%234!.$*AVA GOBUYTHISBOOKv
ˆ!NDREW0OLLACK WWWTHENORTHCOM

h)FANYONEINTHEWORLDISFAMILIARWITHTHECONCEPTOF@(EAD&IRST ITWOULDBEME4HIS
BOOKISSOGOOD )DMARRYITON46v
ˆ2ICK2OCKWELL #OMEDIAN
4HEORIGINAL&/84ELEVISIONh7HO7ANTSTO-ARRYA-ILLIONAIREvGROOM

h4HISSTUFFISSOFRICKINGGOODITMAKESMEWANNA7%%0)MSTUNNEDv
ˆ&LOYD*ONES 3ENIOR4ECHNICAL7RITER0OOLBOY "%!

h!FEWDAYSAGO)RECEIVEDMYCOPYOF(EAD&IRST*AVABY+ATHY3IERRAAND"ERT"ATES)MONLYPARTWAY
THROUGHTHEBOOK BUTWHATSAMAZEDMEISTHATEVENINMYSLEEP DEPRIVEDSTATETHATlRSTEVENING )FOUND
MYSELFTHINKING @/+ JUSTONEMOREPAGE THEN)LLGOTOBEDh
ˆ*OE,ITTON

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
3UDLVHIRURWKHU+HDG)LUVWERRNVFRDXWKRUHGE\.DWK\DQG%HUW

!MAZONNAMED(EAD&IRST3ERVLETS 3OFTWARE$EVELOPMENT-AGAZINENAMED
A4OP4EN%DITORS#HOICEFOR (EAD&IRST3ERVLETSAND(EAD&IRST$ESIGN
#OMPUTER"OOKSOF 0ATTERNSlNALISTSFORTHETH!NNUAL
lRSTEDITION 0RODUCT%XCELLENCE!WARDS

h)FEELLIKEATHOUSANDPOUNDSOFBOOKSHAVEJUSTBEENLIFTEDOFFOFMYHEADv
ˆ7ARD#UNNINGHAM INVENTOROFTHE7IKI
ANDFOUNDEROFTHE(ILLSIDE'ROUP

h)LAUGHED )CRIED ITMOVEDMEv


ˆ$AN3TEINBERG %DITOR IN #HIEF JAVANET

h-YlRSTREACTIONWASTOROLLONTHEmOORLAUGHING!FTER)PICKEDMYSELFUP )REALIZEDTHATNOTONLYISTHE
BOOKTECHNICALLYACCURATE ITISTHEEASIESTTOUNDERSTANDINTRODUCTIONTODESIGNPATTERNSTHAT)HAVESEENv
ˆ$R4IMOTHY!"UDD !SSOCIATE0ROFESSOROF#OMPUTER3CIENCEAT/REGON3TATE5NIVERSITY
AUTHOROFMORETHANADOZENBOOKSINCLUDING# FOR*AVA0ROGRAMMERS

h*USTTHERIGHTTONEFORTHEGEEKED OUT CASUAL COOLGURUCODERINALLOFUS4HERIGHTREFERENCEFORPRAC


TICALDEVELOPMENTSTRATEGIESˆGETSMYBRAINGOINGWITHOUTHAVINGTOSLOGTHROUGHABUNCHOFTIRED
STALEPROFESSOR SPEAKv
ˆ4RAVIS+ALANICK &OUNDEROF3COURAND2ED3WOOSH
-EMBEROFTHE-)442

h&).!,,9 A*AVABOOKWRITTENTHEWAY)WOULDAWROTEITIF)WEREME
3ERIOUSLYTHOUGH THISBOOKABSOLUTELYBLOWSAWAYEVERYOTHERSOFTWAREBOOK)VEEVERREAD
!GOODBOOKISVERYDIFlCULTTOWRITEYOUHAVETOTAKEALOTOFTIMETOMAKETHINGSUNFOLDINA
NATURAL hREADERORIENTEDvSEQUENCE)TSALOTOFWORK-OSTAUTHORSCLEARLYARENTUPTOTHECHALLENGE
#ONGRATULATIONSTOTHE(EAD&IRST%*"TEAMFORAlRSTCLASSJOB
ˆ7ALLY&LINT

h)COULDNOTHAVEIMAGINEDAPERSONSMILINGWHILESTUDYINGAN)4BOOK5SING(EAD&IRST%*"
MATERIALS )GOTAGREATSCORE ANDSETAWORLDRECORDASTHEYOUNGEST3#"#$ YEARSv
ˆ!FSAH3HAFQUATWORLDSYOUNGEST3#"#$

h4HIS(EAD&IRST3ERVLETSBOOKISASGOODASTHE(EAD&IRST%*"BOOK WHICHMADEMELAUGH
!.$GAVEMEONTHEEXAMv
ˆ*EF#UMPS *%%CONSULTANT #RONOS

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Other related books from O’Reilly
$QW7KH'H¿QLWLYH*XLGH
%HWWHU)DVWHU/LJKWHU-DYDŒ
(QWHUSULVH-DYD%HDQVŒ
+LEHUQDWH$'HYHORSHU¶V1RWHERRN
-DYDŒ7LJHU$'HYHORSHU¶V1RWHERRN
-DYDŒ&RRNERRN
-DYDŒLQD1XWVKHOO
-DYDŒ1HWZRUN3URJUDPPLQJ
-DYDŒ6HUYOHW -63&RRNERRN
-DYDŒ6ZLQJ
-DYD6HUYHUŒ)DFHV
-DYD6HUYHU3DJHVŒ
3URJUDPPLQJ-DNDUWD6WUXWV
7RPFDW7KH'HILQLWLYH*XLGH

Other books in O’Reilly’s Head First series


+HDG)LUVW-DYDŒ
+HDG)LUVW2EMHFW2ULHQWHG$QDO\VLVDQG'HVLJQ 22$ '
+HDG5XVK$MD[
+HDG)LUVW+70/ZLWK&66DQG;+70/
+HDG)LUVW'HVLJQ3DWWHUQV
+HDG)LUVW(-%Œ
+HDG)LUVW303
+HDG)LUVW64/
+HDG)LUVW6RIWZDUH'HYHORSPHQW
+HDG)LUVW&
+HDG)LUVW-DYD6FULSW
+HDG)LUVW3URJUDPPLQJ 
+HDG)LUVW$MD[ 
+HDG)LUVW3K\VLFV 
+HDG)LUVW6WDWLVWLFV 
+HDG)LUVW5XE\RQ5DLOV 
+HDG)LUVW3+3 0\64/ 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZWRXVHWKLVERRN

,QWUR
,FDQ·WEHOLHYHWKH\
SXWWKDWLQD-DYD
SURJUDPPLQJERRN


DQ VZ HU W KH E XU QLQJTXHVWLRQPP
LQ J ERRN"µ
H UD
,QWKLVVHFWLRQWZKH\SXWWKDWLQD-DYDSURJ
´6RZK\','

[[L

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZWRXVHWKLVERRN

?PWQ[\PQ[JWWSNWZ'
)FYOUCANANSWERhYESvTOALLOFTHESE
7KLVLV127DUHIHUHQFH
 +DYH\RXGRQHVRPHSURJUDPPLQJ" ERRN+HDG)LUVW-DYDLVD
ERRNGHVLJQHGIRUOHDUQLQJ
 'R\RXZDQWWROHDUQ-DYD" QRWDQHQF\FORSHGLDRI
-DYDIDFWV
 'R\RXSUHIHUVWLPXODWLQJGLQQHUSDUW\
FRQYHUVDWLRQWRGU\GXOOWHFKQLFDO
OHFWXUHV"
THISBOOKISFORYOU

?PW[PW]TLXZWJIJTaJIKSI_IaNZWU\PQ[JWWS'
)FYOUCANANSWERhYESvTOANYONEOFTHESE

 ,V\RXUSURJUDPPLQJEDFNJURXQGOLPLWHG
WR+70/RQO\ZLWKQRVFULSWLQJODQJXDJH
H[SHULHQFH"
)FYOUVEDONEANYTHINGWITHLOOPING ORIFTHEN
LOGIC YOULLDOlNEWITHTHISBOOK BUT(4-,
TAGGINGALONEMIGHTNOTBEENOUGH

 $UH\RXDNLFNEXWW&SURJUDPPHU
ORRNLQJIRUDUHIHUHQFHERRN"

 $UH\RXDIUDLGWRWU\VRPHWKLQJGLIIHUHQW"
:RXOG\RXUDWKHUKDYHDURRWFDQDOWKDQ
PL[VWULSHVZLWKSODLG"'R\RXEHOLHYH
WKDQDWHFKQLFDOERRNFDQ·WEHVHULRXVLI
WKHUH·VDSLFWXUHRIDGXFNLQWKHPHPRU\
PDQDJHPHQWVHFWLRQ"

THISBOOKISNOTFORYOU

>QRWHIURPPDUNHWLQJZKRWRRNRXW
WKHSDUWDERXWKRZ
WKLVERRNLVIRUDQ\RQHZLW YDOLGFUHGLWFDUG"$QGZKD W
DERXWWKDW´*LYHWKH*LIWRKDI-
GLVFXVVHG)UHG@ DYDµKROLGD\SURPRWLRQZH

[[LL LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHLQWUR

?MSVW__PI\aW]¼ZM\PQVSQVO
h(OWCANTHISBEASERIOUS*AVAPROGRAMMINGBOOKv
h7HATSWITHALLTHEGRAPHICSv
h#AN)ACTUALLYLEARNITTHISWAYv
h$O)SMELLPIZZAv
\RXUEUDLQ
7+,6LVLP WKLQNV
SRUWDQW
)VL_MSVW__PI\aW]ZJZIQVQ[\PQVSQVO
9OURBRAINCRAVESNOVELTY)TSALWAYSSEARCHING SCANNING WAITINGFOR
SOMETHINGUNUSUAL)TWASBUILTTHATWAY ANDITHELPSYOUSTAYALIVE
4ODAY YOURELESSLIKELYTOBEATIGERSNACK"UTYOURBRAINSSTILL
LOOKING9OUJUSTNEVERKNOW
3OWHATDOESYOURBRAINDOWITHALLTHEROUTINE ORDINARY NORMAL
THINGSYOUENCOUNTER%VERYTHINGITCANTOSTOPTHEMFROM
INTERFERINGWITHTHEBRAINSREALJOBˆRECORDINGTHINGSTHATMATTER)T
DOESNTBOTHERSAVINGTHEBORINGTHINGSTHEYNEVERMAKEITPASTTHE
hTHISISOBVIOUSLYNOTIMPORTANTvlLTER
(OWDOESYOURBRAINKNOWWHATSIMPORTANT3UPPOSEYOUREOUTFOR
ADAYHIKEANDATIGERJUMPSINFRONTOFYOU WHATHAPPENSINSIDEYOUR
HEAD
*UHDW2QO\
.EURONSlRE%MOTIONSCRANKUP#HEMICALSSURGE PRUHGXOOGU\
ERULQJSDJHV
!NDTHATSHOWYOURBRAINKNOWS
WKLQNV
7KLVPXVWEHLPSRUWDQW'RQ·WIRUJHWLW
\RXUEUDQLQ·WZRUWK
"UTIMAGINEYOUREATHOME ORINALIBRARY)TSASAFE WARM TIGER FREE 7+,6LQJLV
ZONE9OURESTUDYING'ETTINGREADYFORANEXAM/RTRYINGTOLEARN VDY
SOMETOUGHTECHNICALTOPICYOURBOSSTHINKSWILLTAKEAWEEK TENDAYS
ATTHEMOST
*USTONEPROBLEM9OURBRAINSTRYINGTODOYOUABIGFAVOR)TS
TRYINGTOMAKESURETHATTHISOBVIOUSLYNON IMPORTANTCONTENT
DOESNTCLUTTERUPSCARCERESOURCES2ESOURCESTHATAREBETTER
SPENTSTORINGTHEREALLYBIGTHINGS,IKETIGERS,IKETHEDANGEROF
lRE,IKEHOWYOUSHOULDNEVERAGAINSNOWBOARDINSHORTS
!NDTHERESNOSIMPLEWAYTOTELLYOURBRAIN h(EYBRAIN THANK
YOUVERYMUCH BUTNOMATTERHOWDULLTHISBOOKIS ANDHOW
LITTLE)MREGISTERINGONTHEEMOTIONALRICHTERSCALERIGHTNOW )
REALLYDOWANTYOUTOKEEPTHISSTUFFAROUNDv

\RXDUHKHUH [[LLL

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZWRXVHWKLVERRN

W-DYDµ UHDGHUDVDOHDUQHU
:HWKLQNRID´+HDG)LUV
HVXUH
YHWRJHWLWWKHQPDN
WDN HW R OHD UQ VR PH WKLQJ")LUVW\RXKD QW KH 
6RZKDWGRHVLW RXUKHDG%DVH GR
W LW ,W ·VQ RWDE RX WSXVKLQJIDFWVLQWR\ SV \F KR ORJ \
\RXGRQ·WIRUJH QGHGXFDWLRQDO
KL QF RJ QLW LYH VF LHQFHQHXURELRORJ\D \R XU EUD LQ RQ 
ODWHVWUHVHDUF QRZZKDWWXUQV
HV D ORW P RUH WK DQ WH[WRQDSDJH:HN
OHDUQLQJWDN
LQFLSOHV
G)LUVWOHDUQLQJSU QHHGVWRFDOOD
6RPHRI WKH+HD PHWKRGRQWKH
VHUYHU 50,UHPRWH
MORABLETHANWORDS VHUYLFH
AGESAREFARMOREME
0DNHLWYLVXDO)M FFEC TIVE 5 PTO  
GMUCHMOREE
ALONE ANDMAKELEARNIN ALSOMAKES
GR&DOF
ANDTRANSFERSTUDIES )T

Licensed by
IMPROVEM ENT IN REC ALL
VZ LWK LQ
NDABLE3XWWKHZRUG
THINGSMOREUNDERSTA THANONTHE UHWXUQYDOXH
DS KLF VTHEYRELATETO RATHER
RUQHDUWKHJU WI LLB EU PTO TWICE
RPAGE ANDLE ARN ERS
BOTTOMORONANOTHE NT
LYT OS OLV EP ROB LEM SRELATEDTOTHECONTE
ASLIKE

Eduard Simons
TSTUDIES
DOL]HGVW\OH)NRECEN
RQDODQGSHUVRQ ECONTENTSPOKE
8VHDFRQYHUVDWL RNIN GTE STS IFTH
TSP ERFO RME DU PTO BETTERONPOST LEA ERTHAN
STUDEN ONVERSATIONALSTYLERATH
,WUHDOO\VXFNVWREHD
Q USINGAFIRST PERSON C UAGE$ONT
DIRECTLYTOTHEREADER SECASU ALL ANG
DEVWUDFWPHWKRG<RX
 SINSTEADOFLECTURING5
TAK ING AFORMALTONE4ELLSTORIE REA TTE NTIO NTO AS TIMULATING
GRQ·WKDYHDERG\ ICHWOULDYOUPAYMO

104038
SELF TOO SER IOU SLY7H
TAKEYOUR
ON ORALECTURE
DINNERPARTYCOMPANI
SS R
O\)NOTHERWORDS UNLE 'RHVLWPDNHVHQVHW
WW KH OH DUQ HU WR WKLQNPRUHGHHS AD VD\ 7XE, 6$ %DWKURRP"
*H HAPPENSINYOUR HE 2ULV
EURONS NOTHINGMUCH %DWKURRP,6$7XE"
YOUAC TIVELYFLEXYOURN RIOU S A NDINSPIREDTO 6$ UHODWLRQVKLS"
ATED E NGA GED CU LWD +$
!READERHASTOBEMOTIV RATENEWK NOWLEDGE
PRO BLE MS DR AW CONCLUSIONS ANDGENE
SOL VE DTHOUGHT
CHALLENGES ERCISES AN
EX
!NDFORTHAT YOUNEED VOLVEBOTHSIDES
S ANDACTIVITIESTHATIN
DEVWUDFWYRLGURDP  PROVOK INGQUESTION
LESENSES
OFTHEBRAIN ANDMULTIP

ERG\  LFRORQ
WKRG P DGHU·VDWWHQWLRQ7
EVEALL
1RPH ZLWKDVH *H W³ DQGNHHS³WKHUH PAST
(QG LW HISBUT)CANTSTAY AW AKE
HADTHE h)REALLYWANTTOLEARNT UT
NTOTHINGSTHATAREO
9OURBRAINPAYSATTENTIO
PAGEONEvEXPERIENCE ECT ED,E ARN ING AN EW
NG UNEXP
TING STRANGE EYE CATCHI CHMOREQUICKLYIFITSN
OT
OFTHEORDINARY INTERES BO RING 9OURBRAINWILLLEARNMU
OES NT HAV ETO BE
TOUGH TECHNICALTOPICD
INGISLARGELY
TYTOREMEMBERSOMETH
PR WLR QV 7 EN OWKNOWTHATYOURABILI URE MEMBERWHEN
7RXFKWKHLUH OUT9O
MBERWHATYOUCAREAB
ENT ON ITS EM OTIO NALCONTENT9OUREME OUT AB OY AND HISDOG
DEPEND
TTA LKIN GH EAR T WRENCHINGSTORIESAB
OW ERE NO )2ULEv
YOUFEELSOMETHING. ANDTHEFEELINGOFh
NS LIKE SU RPR ISE CU RIOSITY FUN hWHATTHEv ARD OR REALIZE
7ERETALK INGEMOTIO SH
EVERYBODYELSETHINKSI
HEN YO US OLV EA PU ZZLE LEARNSOMETHING RING DO ESN T
THATCOMESW NGI NEE
HANTHOUv"OBFROME
ATh)MMORETECHNICALT
YOUKNOWSOMETHINGTH

[[LY LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHLQWUR

5M\IKWOVQ\QWV"\PQVSQVOIJW]\\PQVSQVO
)FYOUREALLYWANTTOLEARN ANDYOUWANTTOLEARNMOREQUICKLYANDMOREDEEPLY ,ZRQGHUKRZ,
PAYATTENTIONTOHOWYOUPAYATTENTION4HINKABOUTHOWYOUTHINK,EARNHOW FDQWULFNP\EUDLQ
YOULEARN LQWRUHPHPEHULQJ
WKLVVWXII
-OSTOFUSDIDNOTTAKECOURSESONMETACOGNITIONORLEARNINGTHEORYWHENWEWERE
GROWINGUP7EWEREEXPECTEDTOLEARN BUTRARELYTAUGHTTOLEARN
"UTWEASSUMETHATIFYOUREHOLDINGTHISBOOK YOUWANTTOLEARN*AVA!NDYOU
PROBABLYDONTWANTTOSPENDALOTOFTIME
4OGETTHEMOSTFROMTHISBOOK ORANYBOOKORLEARNINGEXPERIENCE TAKE
RESPONSIBILITYFORYOURBRAIN9OURBRAINONTHATCONTENT
4HETRICKISTOGETYOURBRAINTOSEETHENEWMATERIALYOURELEARNING
AS2EALLY)MPORTANT#RUCIALTOYOURWELL BEING!SIMPORTANTAS
ATIGER/THERWISE YOUREINFORACONSTANTBATTLE WITHYOURBRAIN
DOINGITSBESTTOKEEPTHENEWCONTENTFROMSTICKING

6RMXVWKRZ'2\RXJHW\RXUEUDLQWRWUHDW-DYDOLNHLW
ZDVDKXQJU\WLJHU"
4HERESTHESLOW TEDIOUSWAY ORTHEFASTER MOREEFFECTIVEWAY4HE
SLOWWAYISABOUTSHEERREPETITION9OUOBVIOUSLYKNOWTHATYOUARE
ABLETOLEARNANDREMEMBEREVENTHEDULLESTOFTOPICS IFYOUKEEPPOUNDING
ONTHESAMETHING7ITHENOUGHREPETITION YOURBRAINSAYS h4HISDOESNTFEEL
IMPORTANTTOHIM BUTHEKEEPSLOOKINGATTHESAMETHINGOVERANDOVERANDOVER SO
)SUPPOSEITMUSTBEv
4HEFASTERWAYISTODOANYTHINGTHATINCREASESBRAINACTIVITY ESPECIALLYDIFFERENTTYPES
OFBRAINACTIVITY4HETHINGSONTHEPREVIOUSPAGEAREABIGPARTOFTHESOLUTION
ANDTHEYREALLTHINGSTHATHAVEBEENPROVENTOHELPYOURBRAINWORKINYOURFAVOR
&OREXAMPLE STUDIESSHOWTHATPUTTINGWORDSWITHINTHEPICTURESTHEYDESCRIBEAS
OPPOSEDTOSOMEWHEREELSEINTHEPAGE LIKEACAPTIONORINTHEBODYTEXT CAUSES
YOURBRAINTOTRYTOMAKESSENSEOFHOWTHEWORDSANDPICTURERELATE ANDTHIS
CAUSESMORENEURONSTOlRE-ORENEURONSlRINGMORECHANCESFORYOURBRAIN
TOGETTHATTHISISSOMETHINGWORTHPAYINGATTENTIONTO ANDPOSSIBLYRECORDING
!CONVERSATIONALSTYLEHELPSBECAUSEPEOPLETENDTOPAYMOREATTENTIONWHENTHEY
PERCEIVETHATTHEYREINACONVERSATION SINCETHEYREEXPECTEDTOFOLLOWALONGAND
HOLDUPTHEIREND4HEAMAZINGTHINGIS YOURBRAINDOESNTNECESSARILYCARETHAT
THEhCONVERSATIONvISBETWEENYOUANDABOOK/NTHEOTHERHAND IFTHEWRITING
STYLEISFORMALANDDRY YOURBRAINPERCEIVESITTHESAMEWAYYOUEXPERIENCEBEING
LECTUREDTOWHILESITTINGINAROOMFULOFPASSIVEATTENDEES.ONEEDTOSTAYAWAKE
"UTPICTURESANDCONVERSATIONALSTYLEAREJUSTTHEBEGINNING

\RXDUHKHUH [[Y

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZWRXVHWKLVERRN

0MZM¼[_PI\?-LQL" 
kar]
7EUSEDPICTURES BECAUSEYOURBRAINISTUNEDFORVISUALS NOTTEXT!SFARASYOUR
BRAINSCONCERNED APICTUREREALLYISWORTHWORDS!NDWHENTEXTANDPICTURES LQW
^a\g FW


WORKTOGETHER WEEMBEDDEDTHETEXTINTHEPICTURESBECAUSEYOURBRAINWORKS 'RJREMH
MOREEFFECTIVELYWHENTHETEXTISWITHINTHETHINGTHETEXTREFERSTO ASOPPOSEDTOIN 'RJ
'RJ
ACAPTIONORBURIEDINTHETEXTSOMEWHERE
7EUSEDREPETITION SAYINGTHESAMETHINGINDIFFERENTWAYSANDWITHDIFFERENTMEDIA
TYPES ANDMULTIPLESENSES TOINCREASETHECHANCETHATTHECONTENTGETSCODEDCODED
INTOMORETHANONEAREAOFYOURBRAIN "%THECOMPILER
7EUSEDCONCEPTSANDPICTURESINUNEXPECTEDWAYSBECAUSEYOURBRAINISTUNEDFOR
NOVELTY ANDWEUSEDPICTURESANDIDEASWITHATLEASTSOMEEMOTIONALCONTENT BECAUSE
YOURBRAINISTUNEDTOPAYATTENTIONTOTHEBIOCHEMISTRYOFEMOTIONS4HATWHICH
CAUSESYOUTOFEELSOMETHINGISMORELIKELYTOBEREMEMBERED EVENIFTHATFEELINGIS
NOTHINGMORETHANALITTLEHUMOR SURPRISE ORINTEREST
7EUSEDAPERSONALIZED CONVERSATIONALSTYLE BECAUSEYOURBRAINISTUNEDTOPAYMORE
ATTENTIONWHENITBELIEVESYOUREINACONVERSATIONTHANIFITTHINKSYOUREPASSIVELY
7KLV LV OOH
3X]]OH9L
LISTENINGTOAPRESENTATION9OURBRAINDOESTHISEVENWHENYOUREREADING
7EINCLUDEDMORETHANEXERCISES BECAUSEYOURBRAINISTUNEDTOLEARNAND
REMEMBERMOREWHENYOUDOTHINGSTHANWHENYOUREADABOUTTHINGS!NDWE
MADETHEEXERCISESCHALLENGING YET DO ABLE BECAUSETHATSWHATMOSTPEOPLEPREFER
7EUSEDMULTIPLELEARNINGSTYLES BECAUSEYOUMIGHTPREFERSTEP BY STEPPROCEDURES
WHILESOMEONEELSEWANTSTOUNDERSTANDTHEBIGPICTURElRST WHILESOMEONEELSE
JUSTWANTSTOSEEACODEEXAMPLE"UTREGARDLESSOFYOUROWNLEARNINGPREFERENCE :MDD=LHGAFLK
EVERYONEBENElTSFROMSEEINGTHESAMECONTENTREPRESENTEDINMULTIPLEWAYS
7EINCLUDECONTENTFORBOTHSIDESOFYOURBRAIN BECAUSETHEMOREOFYOURBRAINYOU
ENGAGE THEMORELIKELYYOUARETOLEARNANDREMEMBER ANDTHELONGERYOUCAN
STAYFOCUSED3INCEWORKINGONESIDEOFTHEBRAINOFTENMEANSGIVINGTHEOTHERSIDE ,CXC
ACHANCETOREST YOUCANBEMOREPRODUCTIVEATLEARNINGFORALONGERPERIODOF 'ZRQUGF
TIME
!NDWEINCLUDEDSTORIESANDEXERCISESTHATPRESENTMORETHANONEPOINTOFVIEW
BECAUSEYOURBRAINISTUNEDTOLEARNMOREDEEPLYWHENITSFORCEDTOMAKE
OO
%UDLQ%DUEH
EVALUATIONSANDJUDGEMENTS
DUEHOO
EUDLQ E
7EINCLUDEDCHALLENGES WITHEXERCISES ANDBYASKINGQUESTIONSTHATDONTALWAYSHAVE
ASTRAIGHTANSWER BECAUSEYOURBRAINISTUNEDTOLEARNANDREMEMBERWHENITHAS
TOWORKATSOMETHINGJUSTASYOUCANTGETYOURBODYINSHAPEBYWATCHINGPEOPLE
ATTHEGYM "UTWEDIDOURBESTTOMAKESURETHATWHENYOUREWORKINGHARD ITS
ONTHERIGHTTHINGS4HATYOURENOTSPENDINGONEEXTRADENDRITEPROCESSINGAHARD TO
UNDERSTANDEXAMPLE ORPARSINGDIFlCULT JARGON LADEN OREXTREMELYTERSETEXT
7EUSEDANAPPROACH7EASSUMETHATIFYOUREGOINGFORA0H$IN*AVA
THISWONTBEYOURONLYBOOK3OWEDONTTALKABOUTEVERYTHING*USTTHESTUFFYOULL
ACTUALLYUSE

[[YL LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHLQWUR
0MZM¼[_PI\A7=KIVLW\WJMVLaW]Z
JZIQVQV\W[]JUQ[[QWV
3O WEDIDOURPART4HERESTISUPTOYOU4HESETIPSAREA
STARTINGPOINT,ISTENTOYOURBRAINANDlGUREOUTWHATWORKS
FORYOUANDWHATDOESNT4RYNEWTHINGS
FXWWKLVRXW
RQ\RXUUHIULGDQJHGUDVWLFNLW
WRU

 6ORZGRZQ7KHPRUH\RXXQGHUVWDQG  'ULQNZDWHU/RWVRILW
WKHOHVV\RXKDYHWRPHPRUL]H 9OURBRAINWORKSBESTINANICEBATHOFmUID
$ONTJUSTREAD3TOPANDTHINK7HENTHE $EHYDRATIONWHICHCANHAPPENBEFOREYOU
BOOKASKSYOUAQUESTION DONTJUSTSKIPTO EVERFEELTHIRSTY DECREASESCOGNITIVEFUNCTION
THEANSWER)MAGINETHATSOMEONEREALLYIS
ASKINGTHEQUESTION4HEMOREDEEPLYYOU  7DONDERXWLW2XWORXG
FORCEYOURBRAINTOTHINK THEBETTERCHANCE 3PEAKINGACTIVATESADIFFERENTPARTOF
YOUHAVEOFLEARNINGANDREMEMBERING THEBRAIN)FYOURETRYINGTOUNDERSTAND
SOMETHING ORINCREASEYOURCHANCEOF
 'RWKHH[HUFLVHV:ULWH\RXURZQQRWHV REMEMBERINGITLATER SAYITOUTLOUD"ETTER
7EPUTTHEMIN BUTIFWEDIDTHEMFORYOU STILL TRYTOEXPLAINITOUTLOUDTOSOMEONE
THATWOULDBELIKEHAVINGSOMEONEELSE ELSE9OULLLEARNMOREQUICKLY ANDYOUMIGHT
DOYOURWORKOUTSFORYOU!NDDONTJUST UNCOVERIDEASYOUHADNTKNOWNWERETHERE
LOOKATTHEEXERCISES5SEAPENCIL4HERES WHENYOUWEREREADINGABOUTIT
PLENTYOFEVIDENCETHATPHYSICALACTIVITY
WHILELEARNINGCANINCREASETHELEARNING  /LVWHQWR\RXUEUDLQ
0AYATTENTIONTOWHETHERYOURBRAINISGETTING
 5HDGWKH´7KHUHDUH1R'XPE4XHVWLRQVµ OVERLOADED)FYOUlNDYOURSELFSTARTINGTOSKIM
4HATMEANSALLOFTHEM4HEYRENOT THESURFACEORFORGETWHATYOUJUSTREAD ITS
OPTIONALSIDE BARSˆTHEYREPARTOFTHECORE TIMEFORABREAK/NCEYOUGOPASTACERTAIN
CONTENT3OMETIMESTHEQUESTIONSAREMORE POINT YOUWONTLEARNFASTERBYTRYINGTOSHOVE
USEFULTHANTHEANSWERS MOREIN ANDYOUMIGHTEVENHURTTHEPROCESS

 'RQ·WGRDOO\RXUUHDGLQJLQRQHSODFH  )HHOVRPHWKLQJ
3TAND UP STRETCH MOVEAROUND CHANGE 9OURBRAINNEEDSTOKNOWTHATTHISMATTERS'ET
CHAIRS CHANGEROOMS)TLLHELPYOURBRAIN INVOLVEDWITHTHESTORIES-AKEUPYOUROWN
FEELSOMETHING ANDKEEPSYOURLEARNINGFROM CAPTIONSFORTHEPHOTOS'ROANINGOVERABAD
BEINGTOOCONNECTEDTOAPARTICULARPLACE JOKEISSTILLBETTERTHANFEELINGNOTHINGATALL

 0DNHWKLVWKHODVWWKLQJ\RXUHDGEHIRUH  7\SHDQGUXQWKHFRGH
EHG2UDWOHDVWWKHODVWFKDOOHQJLQJWKLQJ 4YPEANDRUNTHECODEEXAMPLES4HENYOU
0ARTOFTHELEARNINGESPECIALLYTHETRANSFER CANEXPERIMENTWITHCHANGINGANDIMPROVING
TOLONG TERMMEMORY HAPPENSAFTERYOUPUT THECODEORBREAKINGIT WHICHISSOMETIMES
THEBOOKDOWN9OURBRAINNEEDSTIMEON THEBESTWAYTOlGUREOUTWHATSREALLY
ITSOWN TODOMOREPROCESSING)FYOUPUTIN HAPPENING &ORLONGEXAMPLESOR2EADY BAKE
SOMETHINGNEWDURINGTHATPROCESSING TIME CODE YOUCANDOWNLOADTHESOURCElLESFROM
SOMEOFWHATYOUJUSTLEARNEDWILLBELOST HEADlRSTJAVACOM

\RXDUHKHUH [[YLL

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZWRXVHWKLVERRN

?PI\aW]VMMLNWZ\PQ[JWWS"
9OUDONOTNEEDANYOTHERDEVELOPMENTTOOL SUCHASAN)NTEGRATED
$EVELOPMENT%NVIRONMENT)$% 7ESTRONGLYRECOMMENDTHATYOUNOT
USEANYTHINGBUTABASICTEXTEDITORUNTILYOUCOMPLETETHISBOOKAND
ESPECIALLYNOTUNTILAFTERCHAPTER !N)$%CANPROTECTYOUFROMSOMEOF
THEDETAILSTHATREALLYMATTER SOYOUREMUCHBETTEROFFLEARNINGFROMTHE
COMMAND LINEANDTHEN ONCEYOUREALLYUNDERSTANDWHATSHAPPENING
MOVETOATOOLTHATAUTOMATESSOMEOFTHEPROCESS

K=LLAF?MHB9N9
ƒ ,I\RXGRQ·WDOUHDG\KDYHDRUJUHDWHU-DYD6WDQGDUG(GLWLRQ6'. 6RIWZDUH
'HYHORSPHQW.LW \RXQHHGLW,I\RX·UHRQ/LQX[:LQGRZVRU6RODULV\RXFDQJHWLWIRUIUHH
IURPMDYDVXQFRP 6XQ·VZHEVLWHIRU-DYDGHYHORSHUV ,WXVXDOO\WDNHVQRPRUHWKDQWZRFOLFNV
IURPWKHPDLQSDJHWRJHWWRWKH-6(GRZQORDGVSDJH*HWWKHODWHVWQRQEHWDYHUVLRQSRVWHG
7KH6'.LQFOXGHVHYHU\WKLQJ\RXQHHGWRFRPSLOHDQGUXQ-DYD
,I\RX·UHUXQQLQJ0DF26;WKH-DYD6'.LVDOUHDG\LQVWDOOHG,W·VSDUWRI26;DQG\RX
GRQ·WKDYHWRGRDQ\WKLQJHOVH,I\RX·UHRQDQHDUOLHUYHUVLRQRI26;\RXKDYHDQHDUOLHU
YHUVLRQRI-DYDWKDWZLOOZRUNIRURIWKHFRGHLQWKLVERRN
1RWH7KLVERRNLVEDVHGRQ-DYDEXWIRUVWXQQLQJO\XQFOHDUPDUNHWLQJUHDVRQVVKRUWO\
EHIRUHUHOHDVH6XQUHQDPHGLW-DYDZKLOHVWLOONHHSLQJ´µDVWKHYHUVLRQQXPEHUIRUWKH
GHYHORSHU·VNLW6RLI\RXVHH-DYDRU-DYDRU-DYDRU7LJHU YHUVLRQ·VRULJLQDO
FRGHQDPH WKH\DOOPHDQWKHVDPHWKLQJ7KHUHZDVQHYHUD-DYDRU³LWMXPSHGIURP
YHUVLRQWREXW\RXZLOOVWLOOILQGSODFHVZKHUHLW·VFDOOHGLQVWHDGRI'RQ
WDVN
2KDQGMXVWWRPDNHLWPRUHHQWHUWDLQLQJ-DYDDQGWKH0DF26;ZHUHERWKJLYHQWKH
VDPHFRGHQDPHRI´7LJHUµDQGVLQFH26;LVWKHYHUVLRQRIWKH0DF26\RXQHHGWRUXQ
-DYD\RX·OOKHDUSHRSOHWDONDERXW´7LJHURQ7LJHUµ,WMXVWPHDQV-DYDRQ26; 
ƒ 7KH6'.GRHVQRWLQFOXGHWKH$3,GRFXPHQWDWLRQDQG\RXQHHGWKDW*REDFNWRMDYDVXQ
FRPDQGJHWWKH-6($3,GRFXPHQWDWLRQ<RXFDQDOVRDFFHVVWKH$3,GRFVRQOLQHZLWKRXW
GRZQORDGLQJWKHPEXWWKDW·VDSDLQ7UXVWXVLW·VZRUWKWKHGRZQORDG
ƒ <RXQHHGDWH[WHGLWRU9LUWXDOO\DQ\WH[WHGLWRUZLOOGR YLHPDFVSLFR LQFOXGLQJWKH*8,RQHV
WKDWFRPHZLWKPRVWRSHUDWLQJV\VWHPV1RWHSDG:RUGSDG7H[W(GLWHWFDOOZRUNDVORQJDV
\RXPDNHVXUHWKH\GRQ·WDSSHQGD´W[WµRQWRWKHHQGRI\RXUVRXUFHFRGH
ƒ 2QFH\RX·YHGRZQORDGHGDQGXQSDFNHG]LSSHGZKDWHYHU GHSHQGVRQZKLFKYHUVLRQDQGIRU
ZKLFK26 \RXQHHGWRDGGDQHQWU\WR\RXU3$7+HQYLURQPHQWYDULDEOHWKDWSRLQWVWRWKHELQ
GLUHFWRU\LQVLGHWKHPDLQ-DYDGLUHFWRU\)RUH[DPSOHLIWKH-6'.SXWVDGLUHFWRU\RQ\RXU
GULYHFDOOHG´MVGNµORRNLQVLGHWKDWGLUHFWRU\DQG\RX·OOILQGWKH´ELQµGLUHFWRU\ZKHUHWKH
-DYDELQDULHV WKHWRROV OLYH7KDELQGLUHFWRU\LVWKHRQH\RXQHHGD3$7+WRVRWKDWZKHQ\RX
W\SH
MDYDF
DWWKHFRPPDQGOLQH\RXUWHUPLQDOZLOONQRZKRZWRILQGWKHMDYDFFRPSLOHU
1RWHLI\RXKDYHWURXEOHZLWK\RXLQVWDOODWLRQZHUHFRPPHQG\RXJRWRMDYDUDQFKFRPDQGMRLQ
WKH-DYD%HJLQQLQJIRUXP$FWXDOO\\RXVKRXOGGRWKDWZKHWKHU\RXKDYHWURXEOHRUQRW
1RWHPXFKRIWKHFRGHIURPWKLVERRNLVDYDLODEOHDWZLFNHGO\VPDUWFRP

[[YLLL LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHLQWUR

4I[\UQV]\M\PQVO[aW]VMML\WSVW_"
4HISISALEARNINGEXPERIENCE NOTAREFERENCEBOOK7EDELIBERATELY
STRIPPEDOUTEVERYTHINGTHATMIGHTGETINTHEWAYOFLEARNINGWHATEVERIT
ISWEREWORKINGONATTHATPOINTINTHEBOOK!NDTHElRSTTIMETHROUGH
YOUNEEDTOBEGINATTHEBEGINNING BECAUSETHEBOOKMAKESASSUMPTIONS
PSOHU
ABOUTWHATYOUVEALREADYSEENANDLEARNED :HXVHDGVLIDX[80/
PRGLILH
:HXVHVLPSOH80/OLNHGLDJUDPV 'RJ
)FWEDUSEDPURE5-, YOUDBESEEINGSOMETHINGTHATLOOKSLIKE*AVA BUT
WITHSYNTAXTHATSJUSTPLAINWRONG3OWEUSEASIMPLIlEDVERSIONOF5-, VL]H
THATDOESNTCONmICTWITH*AVASYNTAX)FYOUDONTALREADYKNOW5-, YOU
WONTHAVETOWORRYABOUTLEARNING*AVAAND5-,ATTHESAMETIME EDUN
HDW
FKDVH&DW
:HGRQ·WZRUU\DERXWRUJDQL]LQJDQGSDFNDJLQJ\RXURZQ
FRGHXQWLOWKHHQGRIWKHERRN
)NTHISBOOK YOUCANGETONWITHTHEBUSINESSOFLEARNING*AVA WITHOUT
STRESSINGOVERSOMEOFTHEORGANIZATIONALORADMINISTRATIVEDETAILSOF
DEVELOPING*AVAPROGRAMS9OUWILL INTHEREALWORLD NEEDTOKNOWˆAND <RXVKRXOGGRSH$//
XU
USEˆTHESEDETAILS SOWECOVERTHEMINDEPTH"UTWESAVETHEMFORTHEEND RIWKH´6K WLHVQ\R
DU
OFTHEBOOKCHAPTER 2ELAXWHILEYOUEASEINTO*AVA GENTLY SHQFLOµDFWLYL
6KDUSHQ \RXU SHQFLO
7KHHQGRIFKDSWHUH[HUFLVHVDUHPDQGDWRU\SX]]OHVDUH
RSWLRQDO$QVZHUVIRUERWKDUHDWWKHHQGRIHDFKFKDSWHU
/NETHINGYOUNEEDTOKNOWABOUTTHEPUZZLESˆTHEYREPUZZLES!SINLOGIC
PUZZLES BRAINTEASERS CROSSWORDPUZZLES ETC4HEEXERCISESAREHERETOHELP $FWLYLWLH
YOUPRACTICEWHATYOUVELEARNED ANDYOUSHOULDDOTHEMALL4HEPUZZLES ([HUFLVHV UPXQDUNHGZLWKWKH
AREADIFFERENTSTORY ANDSOMEOFTHEMAREQUITECHALLENGINGINAPUZZLE DUHPDQGDWR QLQJVKRH ORJR
WKHPLI\ X·UU\'RQ·WVNLS
WAY4HESEPUZZLESAREMEANTFORPUZZLERS ANDYOUPROBABLYALREADYKNOWIF
OHDUQLQJ-DRYD HVHULRXVDER
XW
YOUAREONE)FYOURENOTSURE WESUGGESTYOUGIVESOMEOFTHEMATRY BUT 
WHATEVERHAPPENS DONTBEDISCOURAGEDIFYOUCANTSOLVEAPUZZLEORIFYOU
SIMPLYCANTBEBOTHEREDTOTAKETHETIMETOWORKTHEMOUT

7KH¶6KDUSHQ<RXU3HQFLO·H[HUFLVHVGRQ·WKDYHDQVZHUV
.OTPRINTEDINTHEBOOK ANYWAY&ORSOMEOFTHEM THEREISNORIGHT 1dQ^OU_Q
ANSWER ANDFORTHEOTHERS PARTOFTHELEARNINGEXPERIENCEFORTHE3HARPEN
ACTIVITIESISFORYOUTODECIDEIFANDWHENYOURANSWERSARERIGHT3OMEOF
OURSUGGESTEDANSWERSAREAVAILABLEONWICKEDLYSMARTCOM WKH
V H HW K H3 X]]OHORJRI\RX
,I\RX LVRSWLRQDODQGL URVV
7KHFRGHH[DPSOHVDUHDVOHDQDVSRVVLEOH DFWLYLW\ HWZLVW\ORJLFRUF HWKHVH
)TSFRUSTRATINGTOWADETHROUGHLINESOFCODELOOKINGFORTHETWOLINES GRQ·WOLN]]OHV\RXZRQ·WOLN
YOUNEEDTOUNDERSTAND-OSTEXAMPLESINTHISBOOKARESHOWNWITHINTHE ZRUGSX
SMALLESTPOSSIBLECONTEXT SOTHATTHEPARTYOURETRYINGTOLEARNISCLEARAND HLWKHU
SIMPLE3ODONTEXPECTTHECODETOBEROBUST OREVENCOMPLETE4HATS
YOURASSIGNMENTFORAFTERYOUlNISHTHEBOOK4HEBOOKEXAMPLESARE
WRITTENSPECIlCALLYFORLEARNING ANDARENTALWAYSFULLY FUNCTIONAL
\RXDUHKHUH [[L[

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WHFKHGLWLQJ-HVVLFDDQG9DOHQWLQ

<MKPVQKIT-LQ\WZ[
h#REDITGOESTOALL BUTMISTAKESARETHESOLEREPONSIBILITYOFTHE
AUTHORv$OESANYONEREALLYBELIEVETHAT3EETHETWOPEOPLEON
THISPAGE)FYOUlNDTECHNICALPROBLEMS ITSPROBABLYTHEIRFAULT
9DOHQWLQ&UHWWD]

,
-HVVLFD·V0,1 -HVVLFD6DQW

9DOHQWLQ·VWLH
6ALENTIN6ALENTIN#RETTAZHASA-ASTERSDEGREE
IN)NFORMATIONAND#OMPUTER3CIENCEFROM
*ESSWORKSAT(EWLETT 0ACKARDONTHE3ELF THE3WISS&EDERAL)NSTITUTEOF4ECHNOLOGYIN
(EALING3ERVICES4EAM3HEHASA"ACHELORS ,AUSANNE%0&, (EHASWORKEDASASOFTWARE
IN#OMPUTER%NGINEERINGFROM6ILLANOVA ENGINEERWITH32))NTERNATIONAL-ENLO0ARK
5NIVERSITY HASHER3#0*AND3#7#$ #! ANDASAPRINCIPALENGINEERINTHE3OFTWARE
CERTIlCATIONS ANDISLITERALLYMONTHSAWAY %NGINEERING,ABORATORYOF%0&,
FROMRECEIVINGHER-ASTERSIN3OFTWARE 6ALENTINISTHECO FOUNDERAND#4/OF#ONDRIS
%NGINEERINGAT$REXEL5NIVERSITYWHEW 4ECHNOLOGIES ACOMPANYSPECIALIZINGINTHE
7HENSHESNOTWORKING STUDYINGOR DEVELOPMENTOFSOFTWAREARCHITECTURESOLUTIONS
MOTORINGINHER-).)#OOPER3 *ESSCAN (ISRESEARCHANDDEVELOPMENTINTERESTS
BEFOUNDlGHTINGHERCATFORYARNASSHE INCLUDEASPECT ORIENTEDTECHNOLOGIES DESIGN
COMPLETESHERLATESTKNITTINGORCROCHET ANDARCHITECTURALPATTERNS WEBSERVICES AND
PROJECTANYBODYWANTAHAT 3HEIS SOFTWAREARCHITECTURE"ESIDESTAKINGCAREOF
ORIGINALLYFROM3ALT,AKE#ITY 5TAHNO HISWIFE GARDENING READING ANDDOINGSOME
SHESNOT-ORMONYES YOUWERETOO SPORT 6ALENTINMODERATESTHE3#"#$AND
GOINGTOASK ANDISCURRENTLYLIVINGNEAR 3#$*73FORUMSAT*AVARANCHCOM(EHOLDS
0HILADELPHIAWITHHERHUSBAND -ENDRA AND THE3#*0 3#*$ 3#"#$ 3#7#$ AND3#$*73
TWOCATS#HAIAND3AKE CERTIlCATIONS(EHASALSOHADTHEOPPORTUNITY
9OUCANCATCHHERMODERATINGTECHNICAL TOSERVEASACO AUTHORFOR7HIZLABS3#"#$
FORUMSATJAVARANCHCOM %XAM3IMULATOR
7ERESTILLINSHOCKFROMSEEINGHIMINATIE

[[[ LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHLQWUR
FUHGLW
7\PMZXMWXTM\WJTIUM" 6RPHRIRXU-DYD 
H[SHUWUHYLHZHUV
!T/2EILLY -HI&XPSV
QH
/URBIGGESTTHANKSTO-IKE,OUKIDESAT/2EILLY FORTAKINGA &RUH\0F*OR
CHANCEONTHIS ANDHELPINGTOSHAPETHE(EAD&IRSTCONCEPTINTO
ABOOKANDSERIES !STHISSECONDEDITIONGOESTOPRINTTHERE
ARENOWlVE(EAD&IRSTBOOKS ANDHESBEENWITHUSALLTHEWAY
4O4IM/2EILLY FORHISWILLINGNESSTOLAUNCHINTOSOMETHING
COMPLETELYNEWANDDIFFERENT4HANKSTOTHECLEVER+YLE(ARTFOR
lGURINGOUTHOW(EAD&IRSTlTSINTOTHEWORLD ANDFORLAUNCHING
THESERIES&INALLY TO%DIE&REEDMANFORDESIGNINGTHE(EAD&IRST
hEMPHASIZETHEHEADvCOVER -RKDQQH
VGH-RQ
/URINTREPIDBETATESTERSANDREVIEWERTEAM J
/URTOPHONORSANDTHANKSGOTOTHEDIRECTOROFOURJAVARANCH
TECHREVIEWTEAM *OHANNESDE*ONG4HISISYOURlFTHTIMEAROUND
WITHUSONA(EAD&IRSTBOOK ANDWERETHRILLEDYOURESTILLSPEAKING
TOUS*EFF#UMPSISONHISTHIRDBOOKWITHUSNOWANDRELENTLESS
ABOUTlNDINGAREASWHEREWENEEDEDTOBEMORECLEARORCORRECT
#OREY-C'LONE YOUROCK!NDWETHINKYOUGIVETHECLEAREST
G
EXPLANATIONSONJAVARANCH9OULLPROBABLYNOTICEWESTOLEONEOR -DVRQ0HQDU
TWOOFTHEM*ASON-ENARDSAVEDOURTECHNICALBUTTSONMORE
7KRPDV3DXO
THANAFEWDETAILS AND4HOMAS0AUL ASALWAYS GAVEUSEXPERT
FEEDBACKANDFOUNDTHESUBTLE*AVAISSUESTHERESTOFUSMISSED
*ANE'RISCTIHASHER*AVACHOPSANDKNOWSATHINGORTWOABOUT
WRITING ANDITWASGREATTOHAVEHERHELPINGONTHENEWEDITION
ALONGWITHLONG TIMEJAVARANCHER"ARRY'AUNT
-ARILYNDE1UEIROZGAVEUSEXCELLENTHELPONBOTHEDITIONSOFTHE
BOOK#HRIS*ONES *OHN.YQUIST *AMES#UBETA 4ERRI#UBETA
AND)RA"ECKERGAVEUSATONOFHELPONTHElRSTEDITION
3PECIALTHANKSTOAFEWOFTHE(EAD&IRSTERSWHOVEBEENHELPING 0DULO\PGH
4XHLUR]
USFROMTHEBEGINNING!NGELO#ELESTE -IKALAI:AIKIN AND
4HOMAS$UFFTWDUFFCOM !NDTHANKSTOOURTERRIlCAGENT $AVID
2OGELBERGOF3TUDIO"BUTSERIOUSLY WHATABOUTTHEMOVIERIGHTS

7HUUL&XEHWD &KULV-RQHV
-DPHV&XEHWD ,UD%HFNHU -RKQ1\TXLVW

5RGQH\-
:RRGUXII
\RXDUHKHUH [[[L

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWLOOPRUHDFNQRZOHGJHPHQWV

2][\_PMVaW]\PW]OP\\PMZM_W]TLV¼\JMIVa
UWZMIKSVW_TMLOMUMV\[

-ORE*AVATECHNICALEXPERTSWHOHELPEDOUTONTHElRSTEDITIONINPSEUDO RANDOMORDER 
%MIKO(ORI -ICHAEL4AUPITZ -IKE'ALLIHUGH -ANISH(ATWALNE *AMES#HEGWIDDEN
3HWETA-ATHUR -OHAMED-AZAHIM *OHN0AVERD *OSEPH"IH 3KULRAT0ATANAVANICH
3UNIL0ALICHA 3UDDHASATWA'HOSH 2AMKI3RINIVASAN !LFRED2AOUF !NGELO#ELESTE
-IKALAI:AIKIN *OHN:OETEBIER *IM0LEGER "ARRY'AUNT AND-ARK$IELEN

4HElRSTEDITIONPUZZLETEAM
$IRK3CHRECKMANN -ARYh*AVA#ROSS#HAMPIONv,ENERS 2ODNEY*7OODRUFF 'AVIN"ONG
AND*ASON-ENARD*AVARANCHISLUCKYTOHAVEYOUALLHELPINGOUT

/THERCO CONSPIRATORSTOTHANK
0AUL7HEATON THEJAVARANCH4RAIL"OSSFORSUPPORTINGTHOUSANDSOF*AVALEARNERS
3OLVEIG(AUGLAND MISTRESSOF*%%ANDAUTHOROFh$ATING$ESIGN0ATTERNSv
!UTHORS$ORI3MITHAND4OM.EGRINOBACKUPBRAINCOM FORHELPINGUSNAVIGATETHE
TECHBOOKWORLD
/UR(EAD&IRSTPARTNERSINCRIME %RIC&REEMANAND"ETH&REEMANAUTHORSOF(EAD&IRST
$ESIGN0ATTERNS FORGIVINGUSTHE"AWLS©TOlNISHTHISONTIME
3HERRY$ORRIS FORTHETHINGSTHATREALLYMATTER

"RAVE%ARLY!DOPTERSOFTHE(EAD&IRSTSERIES
*OE,ITTON 2OSS0'OLDBERG $OMINIC$A3ILVA HONESTPUCK $ANNY"ROMBERG 3TEPHEN
,EPP %LTON(UGHES %RIC#HRISTENSEN 6ULINH.GUYEN -ARK2AU !BDULHAF .ATHAN
/LIPHANT -ICHAEL"RADLY !LEX$ARROW -ICHAEL&ISCHER 3ARAH.OTTINGHAM 4IM!LLEN
"OB4HOMAS AND-IKE"IBBYTHElRST 

7KHODUJHQXPEHURIDFNQRZOHGJHPHQWVLVEHFDXVHZH¶UHWHVWLQJWKHWKHRU\WKDWHYHU\RQHPHQWLRQHGLQ
DERRNDFNQRZOHGJHPHQWZLOOEX\DWOHDVWRQHFRS\SUREDEO\PRUHZKDWZLWKUHODWLYHVDQGHYHU\WKLQJ,I
\RX¶GOLNHWREHLQWKHDFNQRZOHGJHPHQWRIRXUQH[WERRNDQG\RXKDYHDODUJHIDPLO\ZULWHWRXV

[[[LL LQWUR

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYHLQ$4XLFN'LS

%UHDNLQJWKH6XU IDFH
&RPHRQWKHZDWHU·V
JUHDW:H·OOGLYHULJKWLQDQG
ZULWHVRPHFRGHWKHQFRPSLOHDQG
UXQLW:H·UHWDONLQJV\QWD[ORRSLQJ
DQGEUDQFKLQJDQGDORRNDWZKDW
PDNHV-DYDVRFRRO<RX·OOEH
FRGLQJLQQRWLPH

-DYDWDNHV\RXWRQHZSODFHV&ROMITSHUMBLERELEASETOTHEPUBLICASTHE
WIMPY VERSION *AVASEDUCEDPROGRAMMERSWITHITSFRIENDLYSYNTAX OBJECT ORIENTEDFEATURES
MEMORYMANAGEMENT ANDBESTOFALLˆTHEPROMISEOFPORTABILITY4HELUREOFZULWHRQFHUXQ
DQ\ZKHUHISJUSTTOOSTRONG!DEVOTEDFOLLOWINGEXPLODED ASPROGRAMMERSFOUGHTAGAINSTBUGS
LIMITATIONS AND OHYEAH THEFACTTHATITWASDOGSLOW"UTTHATWASAGESAGO)FYOUREJUSTSTARTINGIN
*AVA \RX·UHOXFN\3OMEOFUSHADTOWALKlVEMILESINTHESNOW UPHILLBOTHWAYSBAREFOOT TO
GETEVENTHEMOSTTRIVIALAPPLETTOWORK"UTYOU WHY YOUGETTORIDETHEVOHHNHUIDVWHUPXFK
PRUHSRZHUIXO*AVAOFTODAY

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHZD\-DYDZRUNV

<PM?Ia2I^I?WZS[
7KHJRDOLVWRZULWHRQHDSSOLFDWLRQ LQWKLV
H[DPSOHDQLQWHUDFWLYHSDUW\LQYLWDWLRQ DQGKDYH
LWZRUNRQZKDWHYHUGHYLFH\RXUIULHQGVKDYH

VRXUFHFRGHIRU
WKHLQWHUDFWLYH
SDUW\LQYLWDWLRQ
Licensed by 0HWKRG3DUW\
DORDGB
LQYRNHVSH
FLDO0HWKRG
MDYDODQJ2EMHFW !

Eduard Simons
UHWXUQ

;W]ZKM 7]\X]\
Qgm:]l

KWLM

104038
K`gglE]

 +WUXQTMZ >QZ\]IT
#REATEASOURCE  5IKPQVM[
DOCUMENT5SEAN 
4HECOMPILERCREATESA
ESTABLISHEDPROTOCOL
2UNYOURDOCUMENT NEWDOCUMENT CODED

INTHISCASE THE*AVA
THROUGHASOURCECODE INTO*AVABYTECODE
LANGUAGE  9OURFRIENDSDONTHAVE
COMPILER4HECOMPILER !NYDEVICECAPABLEOF
CHECKSFORERRORSAND RUNNING*AVAWILLBEABLE APHYSICAL*AVA-ACHINE
WONTLETYOUCOMPILE TOINTERPRETTRANSLATE BUTTHEYALLHAVEA
UNTILITSSATISlEDTHAT THISlLEINTOSOMETHING VIRTUAL*AVAMACHINE
EVERYTHINGWILLRUN ITCANRUN4HECOMPILED IMPLEMENTEDIN
CORRECTLY B
YTECODEISPLATFORM SOFTWARE RUNNINGINSIDE
INDEPENDENT THEIRELECTRONICGADGETS
4HEVIRTUALMACHINEREADS
ANDRUNSTHEBYTECODE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

?PI\aW]¼TTLWQV2I^I
<RX·OOW\SHDVRXUFHFRGHÀOHFRPSLOHLWXVLQJWKH
MDYDFFRPSLOHUWKHQUXQWKHFRPSLOHGE\WHFRGH
RQD-DYDYLUWXDOPDFKLQH

)LOH(GLW:LQGRZ+HOS3OHDG )LOH(GLW:LQGRZ+HOS6ZHDU
LPSRUWMDYDDZW  0HWKRG3DUW\
MDYDF3DUW\MDYD MDYD3DUW\
LPSRUWMDYDDZWHYHQW  DORDGB
FODVV3DUW\^
LQYRNHVSHFLDO0HWKRG
SXEOLFYRLGEXLOG,QYLWH ^ MDYDODQJ2EMHFW !
)UDPHI QHZ)UDPH 
UHWXUQ
/DEHOO QHZ/DEHO ´3DUW\DW7LP·Vµ 
%XWWRQE QHZ%XWWRQ ´<RXEHWµ  0HWKRGYRLGEXLOG,QYLWH
%XWWRQF QHZ%XWWRQ ´6KRRWPHµ  +WUXQTMZ QHZ&ODVVMDYDDZW)UDPH!
3DQHOS QHZ3DQHO  >QZ\]IT
SDGG O  GXS
`PRUHFRGHKHUH  LQYRNHVSHFLDO0HWKRG
5IKPQVM[
`
MDYDDZW)UDPH !
#OMPILETHE0ARTYJAVA 
;W]ZKM lLEBYRUNNINGMDYDF
THECOMPILERAPPLICATION  2UNTHEPROGRAMBY
 )FYOUDONTHAVEERRORS
7]\X]\ STARTINGTHE*AVA6IRTUAL
YOULLGETASECONDDOCU -ACHINE*6- WITHTHE
MENTNAMED0ARTYCLASS KWLM 0ARTYCLASSlLE4HE*6-
4YPEYOURSOURCECODE TRANSLATESTHEBYTECODE
4HECOMPILER GENERATED
3AVEAS0ARTYJAVA 0ARTYCLASSlLEISMADEUP  INTOSOMETHINGTHE
UNDERLYINGPLATFORM
OFBYTECODES
#OMPILEDCODE0ARTYCLASS UNDERSTANDS ANDRUNS
YOURPROGRAM

1RWHWKLVLVQRWPHDQWWREHDWXWRULDO\RX·OOEH
ZULWLQJUHDOFRGHLQDPRPHQWEXWIRUQRZZHMXVW
ZDQW\RXWRJHWDIHHOIRUKRZLWDOOILWVWRJHWKHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
)^MZaJZQMNPQ[\WZaWN2I^I
&ODVVHVLQWKH-DYDVWDQGDUGOLEUDU\















2I^I 2I^I 2I^I 2I^I


CLASSES CLASSES ^MZ[QWV[·  ^M Z[QWV[IVL]X

3LOW !LITTLEFASTER CLASSES CLASSES


#UTENAMEANDLOGO -ORECAPABLE FRIENDLIER -UCHFASTER -OREPOWER EASIERTO
&UNTOUSE,OTSOF "ECOMINGVERYPOPULAR #ANSOMETIMES RUNAT DEVELOPWITH
BUGS!PPLETSARE "ETTER'5)CODE NATIVESPEEDS3ERIOUS "ESIDESADDINGMORETHANA
THE"IG4HING POWERFUL#OMESINTHREE THOUSANDADDITIONALCLASSES
mAVORS-ICRO%DITION*-% *AVAKNOWNASh4IGERv
KLVWRU\RI -DYD

FKDSWHU
3TANDARD%DITION*3% AND ADDEDMAJORCHANGESTO
%NTERPRISE%DITION*%%  THELANGUAGEITSELF MAKING
"ECOMESTHELANGUAGEOF ITEASIERATLEASTINTHEORY
CHOICEFORNEWENTERPRISE FORPROGRAMMERSANDGIVING
ESPECIALLYWEB BASED AND ITNEWFEATURESTHATWERE
MOBILEAPPLICATIONS POPULARINOTHERLANGUAGES



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

6KDUSHQ \RXU SHQFLO


4WWSPW_MI[aQ\
4RYTOGUESSWHATEACHLINEOFCODEISDOING
Q[\W_ZQ\M2I^I ANSWERSAREONTHENEXTPAGE 

LQWVL]H  GHFODUHDQLQWHJHUYDULDEOHQDPHG¶VL]H·DQGJLYHLWWKHYDOXH


6WULQJQDPH ´)LGRµ
'RJP\'RJ QHZ'RJ QDPHVL]H 
[ VL]H
LI [ P\'RJEDUN  

ZKLOH [! ^
P\'RJSOD\ 
`

LQW>@QXP/LVW ^`
6\VWHPRXWSULQW ´+HOORµ 
6\VWHPRXWSULQW ´'RJ´QDPH 
6WULQJQXP ´µ
LQW] ,QWHJHUSDUVH,QW QXP 

WU\^
UHDG7KH)LOH ´P\)LOHW[Wµ 
`
FDWFK )LOH1RW)RXQG([FHSWLRQH[ ^
6\VWHPRXWSULQW ´)LOHQRWIRXQGµ 
`

Q: )SEE*AVAAND*AVA BUTWASTHEREA*AVA
ONCEAGAINTHATTHECHANGESWERESODRAMATICTHATA
NEWNAMEWASNEEDEDANDMOSTDEVELOPERSAGREED SO
AND!NDWHYISIT*AVABUTNOT*AVA THEYLOOKEDATTHEOPTIONS4HENEXTNUMBERINTHENAME
SEQUENCEWOULDBEhv BUTCALLING*AVA*AVASEEMED

A:
4HEJOYSOFMARKETINGWHENTHEVERSIONOF*AVA
SHIFTEDFROMTO THECHANGESTO*AVAWERESO
MORECONFUSING SOTHEYDECIDEDTONAMEIT*AVATO
MATCHTHEhvINVERSIONhv
3O THEORIGINAL*AVAWASVERSIONSTHEFIRSTOFFICIAL
DRAMATICTHATTHEMARKETERSDECIDEDWENEEDEDAWHOLE RELEASE THROUGHWEREJUSTh*AVAv6ERSIONS  AND
NEWhNAMEv SOTHEYSTARTEDCALLINGIT*AVA EVENTHOUGH WEREh*AVAv!NDBEGINNINGWITHVERSION *AVAIS
THEACTUALVERSIONOF*AVAWAS"UTVERSIONSAND CALLEDh*AVAv"UTYOULLALSOSEEITCALLEDh*AVAvWITHOUT
WERESTILLCONSIDERED*AVA4HERENEVERWASA*AVAOR THEhv ANDh4IGERvITSORIGINALCODE NAME 7EHAVENO
"EGINNINGWITH*AVAVERSION THEMARKETERSDECIDED IDEAWHATWILLHAPPENWITHTHENEXTRELEASE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZK\-DYDLVFRRO

6KDUSHQ \RXU SHQFLO JW\`N[\

$ONTWORRYABOUTWHETHERYOUUNDERSTANDANYOFTHISYET
4WWSPW_MI[aQ\ %VERYTHINGHEREISEXPLAINEDINGREATDETAILINTHEBOOK MOST
Q[\W_ZQ\M2I^I WITHINTHElRSTPAGES )F*AVARESEMBLESALANGUAGEYOUVE
USEDINTHEPAST SOMEOFTHISWILLBESIMPLE)FNOT DONTWORRY
ABOUTIT7ELLGETTHERE

LQWVL]H  GHFODUHDQLQWHJHUYDULDEOHQDPHG¶VL]H·DQGJLYHLWWKHYDOXH


6WULQJQDPH ´)LGRµ GHFODUHDVWULQJRIFKDUDFWHUVYDULDEOHQDPHG¶QDPH·DQGJLYHLWWKHYDOXH´)LGRµ
'RJP\'RJ QHZ'RJ QDPHVL]H  GHFODUHDQHZ'RJYDULDEOH¶P\'RJ·DQGPDNHWKHQHZ'RJXVLQJ¶QDPH·DQG¶VL]H·
[ VL]H VXEWUDFWIURP YDOXHRI¶VL]H· DQGDVVLJQLWWRDYDULDEOHQDPHG¶[·
LI [ P\'RJEDUN   LI[ YDOXHRI LVOHVVWKDQWHOOWKHGRJWREDUNWLPHV

ZKLOH [! ^ NHHSORRSLQJDVORQJDV[LVJUHDWHUWKDQ


P\'RJSOD\  WHOOWKHGRJWRSOD\ ZKDWHYHU7+$7PHDQVWRDGRJ
` WKLVORRNVOLNHWKHHQGRIWKHORRSHYHU\WKLQJLQ^`LVGRQHLQWKHORRS

LQW>@QXP/LVW ^` GHFODUHDOLVWRILQWHJHUVYDULDEOH¶QXP/LVW·DQGSXWLQWRWKHOLVW


6\VWHPRXWSULQW ´+HOORµ  SULQWRXW´+HOORµSUREDEO\DWWKHFRPPDQGOLQH
6\VWHPRXWSULQW ´'RJ´QDPH  SULQWRXW´+HOOR)LGRµ WKHYDOXHRI¶QDPH·LV´)LGRµ DWWKHFRPPDQGOLQH
6WULQJQXP ´µ GHFODUHDFKDUDFWHUVWULQJYDULDEOH¶QXP·DQGJLYHLWWKHYDOXHRI´µ
LQW] ,QWHJHUSDUVH,QW QXP  FRQYHUWWKHVWULQJRIFKDUDFWHUV´µLQWRDQDFWXDOQXPHULFYDOXH

WU\^ WU\WRGRVRPHWKLQJPD\EHWKHWKLQJZH·UHWU\LQJLVQ·WJXDUDQWHHGWRZRUN
UHDG7KH)LOH ´P\)LOHW[Wµ  UHDGDWH[WILOHQDPHG´P\)LOHW[Wµ RUDWOHDVW75<WRUHDGWKHILOH
` PXVWEHWKHHQGRIWKH´WKLQJVWRWU\µVR,JXHVV\RXFRXOGWU\PDQ\WKLQJV
FDWFK )LOH1RW)RXQG([FHSWLRQH[ ^ WKLVPXVWEHZKHUH\RXILQGRXWLIWKHWKLQJ\RXWULHGGLGQ·WZRUN
6\VWHPRXWSULQW ´)LOHQRWIRXQGµ  LIWKHWKLQJZHWULHGIDLOHGSULQW´)LOHQRWIRXQGµRXWDWWKHFRPPDQGOLQH
` ORRNVOLNHHYHU\WKLQJLQWKH^`LVZKDWWRGRLIWKH¶WU\·GLGQ·WZRUN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

+WLM[\Z]K\]ZMQV2I^I

SXEOLFFODVV'RJ^
:KDWJRHVLQD
VRXUFHILOH"
!SOURCECODElLEWITHTHEJAVA
EXTENSION HOLDSONECLASSDElNI
TION4HECLASSREPRESENTSAPIECE
OFYOURPROGRAM ALTHOUGHAVERY
TINYAPPLICATIONMIGHTNEEDJUST
ASINGLECLASS4HECLASSMUSTGO
WITHINAPAIROFCURLYBRACES ` KTI[[

3XWDFODVVLQDVRXUFHÀOH :KDWJRHVLQD SXEOLFFODVV'RJ^


FODVV" YRLGEDUN ^
3XWPHWKRGVLQDFODVV
!CLASSHASONEORMOREMETHODS
)NTHE$OGCLASS THEBARKMETHOD
3XWVWDWHPHQWVLQDPHWKRG WILLHOLDINSTRUCTIONSFORHOWTHE
$OGSHOULDBARK9OURMETHODS
`
MUSTBEDECLAREDINSIDEACLASS
INOTHERWORDS WITHINTHECURLY `
BRACESOFTHECLASS  UM\PWL

SXEOLFFODVV'RJ^
:KDWJRHVLQD
YRLGEDUN ^
PHWKRG"
VWDWHPHQW
7ITHINTHECURLYBRACESOFA
METHOD WRITEYOURINSTRUCTIONS VWDWHPHQW
FORHOWTHATMETHODSHOULDBE `
PERFORMED-ETHODCODEISBASI
CALLYASETOFSTATEMENTS ANDFOR `
NOWYOUCANTHINKOFAMETHOD [\I\MUMV\[
KINDOFLIKEAFUNCTIONORPROCE
DURE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
D-DYDFODVV

)VI\WUaWNIKTI[[
7HENTHE*6-STARTSRUNNING ITLOOKSFORTHECLASSYOUGIVEITATTHECOM
MANDLINE4HENITSTARTSLOOKINGFORASPECIALLY WRITTENMETHODTHATLOOKS
EXACTLYLIKE
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
\RXUFRGHJRHVKHUH
`
.EXT THE*6-RUNSEVERYTHINGBETWEENTHECURLYBRACES[]OFYOURMAIN
METHOD%VERY*AVAAPPLICATIONHASTOHAVEATLEASTONECLASS ANDATLEAST
ONEMAINMETHODNOTONEMAINPERCLASSJUSTONEMAINPERAPPLICATION 

WKLVLVD WKHQDPHRI RSHQLQJFXUO\EUDFH


SXEOLFVRHYHU\RQH FODVV GXK WKLVFODVV  RIWKHFODVV
FDQDFFHVVLW

SXEOLFFODVV0\)LUVW$SS^ DUJXPHQWVWRWKHPHWKRG
7KLVPHWKRGPXVWEHJLYHQ
WKHUHWXUQW\SH DQDUUD\RI LQJVDQGWKH
ZH·OOFRYHUWKLV YRLGPHDQVWKHUH·V WKHQDPHRI DUUD\ZLOOEHF6WU
DOOHG¶DUJV· RSHQ
RQHODWHU QRUHWXUQYDOXH WKLVPHWKRG LQJ
RIWKH EUDFH
PHWKRG
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6\VWHPRXWSULQW ³,5XOH´  HQW0867


HYHU\VWDWHP RQ
RO
HQGLQDVHPLF
WKLVVD\VSULQWWRVWDQGDUGRXWSXW WKH6WULQJ\RX
GHIDXOWVWRFRPPDQGOLQH
ZDQWWRSULQW
` FORVLQJEUDFHRIWKHPDLQPHWKRG
`
FORVLQJEUDFHRIWKH0\)LUVW$SSFODVV

'RQ·WZRUU\DERXWPHPRUL]LQJDQ\WKLQJULJKWQRZ
WKLVFKDSWHULVMXVWWRJHW\RXVWDUWHG
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

?ZQ\QVOIKTI[[_Q\PIUIQV
)N*AVA EVERYTHINGGOESINACLASS9OULLTYPEYOURSOURCECODElLEWITHA
JAVAEXTENSION THENCOMPILEITINTOANEWCLASSlLEWITHACLASSEXTENSION 
7HENYOURUNYOURPROGRAM YOUREREALLYRUNNINGACLASS
2UNNINGAPROGRAMMEANSTELLINGTHE*AVA6IRTUAL-ACHINE*6- TOh,OADTHE
+HOORCLASS THENSTARTEXECUTINGITSPDLQ METHOD+EEPRUNNING@TILALLTHE
CODEINMAINISlNISHEDv
)NCHAPTER WEGODEEPERINTOTHEWHOLECLASSTHING BUTFORNOW ALLYOUNEEDTO
THINKIS HOWDO)WRITE*AVACODESOTHATITWILLRUN!NDITALLBEGINSWITHMAIN 
4HEMAIN METHODISWHEREYOURPROGRAMSTARTSRUNNING
.OMATTERHOWBIGYOURPROGRAMISINOTHERWORDS NOMATTERHOWMANYCLASSES
YOURPROGRAMUSES THERESGOTTOBEAMAIN METHODTOGETTHEBALLROLLING

SXEOLFFODVV0\)LUVW$SS^ N6DYH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 0\)LUVW$SSMDYD
SXEOLFFODVV0\)LUVW$SS^
6\VWHPRXWSULQWOQ ³,5XOH´ 
SXEOLFVWDWLFYRLGPDLQ
6WULQJ>@DUJV ^ 6\VWHPRXWSULQWOQ ³7KH:RUOG´ 
`
N&RPSLOH
6\VWHPRXWSULQW ´,5XOHµ 

`

`
` MDYDF0\)LUVW$SSMDYD
0\)LUVW$SSMDYD

FRPSLOHU N5XQ

)LOH(GLW:LQGRZ+HOS6FUHDP

0HWKRG3DUW\ DORDGB
MDYD0\)LUVW$SS
LQYRNHVSHFLDO0HWKRG
MDYDODQJ2EMHFW !

UHWXUQ
,5XOH
0HWKRGYRLG
PDLQ MDYDODQJ6WULQJ>@ 7KH:RUOG
JHWVWDWLF)LHOG

0\)LUVW$SSFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWHPHQWVORRSLQJEUDQFKLQJ

ORRSV
?PI\KIVaW][IaQV\PMUIQVUM\PWL' V
H PHQW EUDQFKLQJ
/NCEYOUREINSIDEMAINORANYMETHOD THEFUN VWDW
BEGINS9OUCANSAYALLTHENORMALTHINGSTHATYOUSAY
INMOSTPROGRAMMINGLANGUAGESTOMAKETHECOMPUTER
DOSOMETHING
9OURCODECANTELLTHE*6-TO

 LW[WUM\PQVO
3TATEMENTSDECLARATIONS ASSIGNMENTS
METHODCALLS ETC
LQW[ 
6WULQJQDPH ³'LUN´
[ [ 
6\VWHPRXWSULQW ³[LV´[ 
GRXEOHG 0DWKUDQGRP  6\QWD[
WKLVLVDFRPPHQW
)XQ
 LW[WUM\PQVOIOIQVIVLIOIQV
,OOPSFORANDWHILE
ZKLOH [
! ^
[ [
`
 %ACHSTATEMENTMUSTENDINA
SEMICOLON
[ [
IRU LQW[ [[ [ ^
6\VWHPRXWSULQW ³[LVQRZ´[ 
`  !SINGLE LINECOMMENTBEGINS
WITHTWOFORWARDSLASHES
[ 
 LW[WUM\PQVO]VLMZ\PQ[KWVLQ\QWV WKLVOLQHGLVWXUEVPH
"RANCHINGIFELSETESTS
LI [  ^  -OSTWHITESPACEDOESNTMATTER
6\VWHPRXWSULQW ³[PXVWEH´  [ 
`HOVH^
6\VWHPRXWSULQW ³[LVQ¶W´   6ARIABLESAREDECLAREDWITHA
NAMEANDATYPEYOULLLEARNABOUT
`
LI [   QDPHHTXDOV ³'LUN´ ^ ALLTHE*AVATYPESINCHAPTER 
6\VWHPRXWSULQWOQ ³*HQWO\´  LQWZHLJKW
` W\SHLQWQDPHZHLJKW
6\VWHPRXWSULQW ³WKLVOLQHUXQVQRPDWWHUZKDW´ 
 #LASSESANDMETHODSMUSTBE
DEFINEDWITHINAPAIROFCURLYBRACES
SXEOLFYRLGJR ^
DPD]LQJFRGHKHUH
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

ZKLOH PRUH%DOOV WUXH ^


NHHS-XJJOLQJ 
`

;QUXTMJWWTMIV\M[\[
9OUCANDOASIMPLEBOOLEANTESTBYCHECKING
4WWXQVOIVLTWWXQVOIVL THEVALUEOFAVARIABLE USINGACOMPARISONOPERATOR
INCLUDING
*AVAHASTHREESTANDARDLOOPINGCONSTRUCTSWHILE
DO WHILE ANDFOR9OULLGETTHEFULLLOOPSCOOPLATER LESSTHAN
INTHEBOOK BUTNOTFORAWHILE SOLETSDOWHILEFOR
GREATERTHAN
NOW
4HESYNTAXNOTTOMENTIONLOGIC ISSOSIMPLE EQUALITY YES THATSTWOEQUALSSIGNS
YOUREPROBABLYASLEEPALREADY!SLONGASSOME .OTICETHEDIFFERENCEBETWEENTHEASSIGNMENT
CONDITIONISTRUE YOUDOEVERYTHINGINSIDETHE OPERATORASINGLEEQUALSSIGN ANDTHEEQUALS
LOOPBLOCK4HELOOPBLOCKISBOUNDEDBYAPAIROF OPERATORTWOEQUALSSIGNS ,OTSOFPROGRAMMERS
CURLYBRACES SOWHATEVERYOUWANTTOREPEATNEEDS ACCIDENTALLYTYPEWHENTHEYWANT"UTNOT
TOBEINSIDETHATBLOCK YOU
4HEKEYTOALOOPISTHECONDITIONALTEST)N*AVA A LQW[ DVVLJQWR[
CONDITIONALTESTISANEXPRESSIONTHATRESULTSINA ZKLOH [! ^
BOOLEANVALUEˆINOTHERWORDS SOMETHINGTHATIS ORRSFRGHZLOOUXQEHFDXVH
EITHERTRUEORFALSE
[LVJUHDWHUWKDQ
)FYOUSAYSOMETHINGLIKE h7HILEICE#REAM)N4HE4UB [ [RUZH¶GORRSIRUHYHU
ISTRUE KEEPSCOOPINGv YOUHAVEACLEARBOOLEAN `
TEST4HEREEITHERISICECREAMINTHETUBORTHERE LQW] 
ISNT"UTIFYOUWERETOSAY h7HILE"OBKEEP
ZKLOH ]  ^
SCOOPINGv YOUDONTHAVEAREALTEST4OMAKE
ORRSFRGHZLOOQRWUXQEHFDXVH
THATWORK YOUDHAVETOCHANGEITTOSOMETHING
]LVQRWHTXDOWR
LIKE h7HILE"OBISSNORINGvORh7HILE"OBISNOT
WEARINGPLAIDv `

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
-DYDEDVLFV

WKHUH DUH QR
'XPE 4XHVWLRQV -`IUXTMWNIZKLOHTWWX
Q: 7HYDOESEVERYTHINGHAVE
SXEOLFFODVV/RRS\^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
TOBEINACLASS
LQW[ 

A: *AVAISANOBJECT ORIENTED
// LANGUAGE)TSNOTLIKETHE
6\VWHPRXWSULQWOQ ³%HIRUHWKH/RRS´ 
ZKLOH [ ^
6\VWHPRXWSULQWOQ ³,QWKHORRS´ 
OLDDAYSWHENYOUHADSTEAM
6\VWHPRXWSULQWOQ ³9DOXHRI[LV´[ 
DRIVENCOMPILERSANDWROTEONE
MONOLITHICSOURCEFILEWITHAPILE [ [
OFPROCEDURES)NCHAPTERYOULL `
LEARNTHATACLASSISABLUEPRINTFOR 6\VWHPRXWSULQWOQ ³7KLVLVDIWHUWKHORRS´ 
ANOBJECT ANDTHATNEARLYEVERY

Licensed by
`
THINGIN*AVAISANOBJECT
`
WKLVLVW
Q: $O)HAVETOPUTAMAININ
EVERYCLASS)WRITE
MDYD/RRS\ KHRXWS
XW
%HIRUHWKH/RRS

Eduard Simons
,QWKHORRS
A: .OPE!*AVAPROGRAM
9DOXHRI[LV
,QWKHORRS
MIGHTUSEDOZENSOFCLASSESEVEN
HUNDREDS BUTYOUMIGHTONLY 9DOXHRI[LV

104038
HAVEONEWITHAMAINMETHODˆ ,QWKHORRS
THEONETHATSTARTSTHEPROGRAM 9DOXHRI[LV
RUNNING9OUMIGHTWRITETEST
7KLVLVDIWHUWKHORRS
CLASSES THOUGH THATHAVEMAIN
METHODSFORTESTINGYOUROTHER
CLASSES

Q: )NMYOTHERLANGUAGE)CAN
:MDD=LHGAFLK
ƒ 6WDWHPHQWVHQGLQDVHPLFRORQ
DOABOOLEANTESTONANINTEGER
)N*AVA CAN)SAYSOMETHINGLIKE
ƒ &RGHEORFNVDUHGHILQHGE\DSDLURIFXUO\EUDFHV^`
LQW[ 
ƒ 'HFODUHDQLQWYDULDEOHZLWKDQDPHDQGDW\SHLQW[
ZKLOH [ ^`
ƒ 7KHDVVLJQPHQWRSHUDWRULVRQHHTXDOVVLJQ
A: .O!BOOLEANANDAN ƒ 7KHHTXDOVRSHUDWRUXVHVWZRHTXDOVVLJQV
INTEGERARENOTCOMPATIBLETYPESIN
*AVA3INCETHERESULTOFACONDI
ƒ $ZKLOHORRSUXQVHYHU\WKLQJZLWKLQLWVEORFN GHILQHGE\FXUO\
TIONALTESTMUSTBEABOOLEAN THE
EUDFHV DVORQJDVWKHFRQGLWLRQDOWHVWLVWUXH
ONLYVARIABLEYOUCANDIRECTLYTEST ƒ ,IWKHFRQGLWLRQDOWHVWLVIDOVHWKHZKLOHORRSFRGHEORFNZRQ·W
WITHOUTUSINGACOMPARISONOP
UXQDQGH[HFXWLRQZLOOPRYHGRZQWRWKHFRGHLPPHGLDWHO\
ERATOR ISABOOLEAN&OREXAMPLE
YOUCANSAY
DIWHUWKHORRSEORFN

ERROHDQLV+RW WUXH ƒ 3XWDERROHDQWHVWLQVLGHSDUHQWKHVHV


ZKLOH LV+RW ^`
ZKLOH [  ^`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

+WVLQ\QWVITJZIVKPQVO ;a[\MUW]\XZQV\^[
)N*AVA ANIFTESTISBASICALLYTHESAMEASTHEBOOLEANTESTINA
WHILELOOPnEXCEPTINSTEADOFSAYING hWHILETHERESSTILLBEERv ;a[\MUW]\XZQV\TV
YOULLSAY hIFTHERESSTILLBEERv )FYOUVEBEENPAYINGATTENTIONOF
COURSEYOUHAVE THENYOUVENOTICEDUS
FODVV,I7HVW^ SWITCHINGBETWEENPRINTANDPRINTLN
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$IDYOUSPOTTHEDIFFERENCE
LQW[ 
3YSTEMOUTPRINTLNINSERTSANEWLINE
LI [  ^
THINKOFPRINTLNASPRINTNEWLINEWHILE
6\VWHPRXWSULQWOQ ³[PXVWEH´  3YSTEMOUTPRINTKEEPSPRINTINGTO
` THESAMELINE)FYOUWANTEACHTHING
6\VWHPRXWSULQWOQ ³7KLVUXQVQRPDWWHUZKDW´  YOUPRINTOUTTOBEONITSOWNLINE USE
` PRINTLN)FYOUWANTEVERYTHINGTOSTICK
TOGETHERONONELINE USEPRINT
`

FRGHRXW
MDYD,I7HVW SXW
[PXVWEH 6KDUSHQ \RXU SHQFLO
7KLVUXQVQRPDWWHUZKDW

'IVENTHEOUTPUT
4HECODEABOVEEXECUTESTHELINETHATPRINTShXMUSTBEvONLY
IFTHECONDITIONXISEQUALTO ISTRUE2EGARDLESSOFWHETHER MDYD'RR%HH
ITSTRUE THOUGH THELINETHATPRINTS h4HISRUNSNOMATTERWHATv 'RR%HH'RR%HH'R
WILLRUN3ODEPENDINGONTHEVALUEOFX EITHERONESTATEMENT
ORTWOWILLPRINTOUT &ILLINTHEMISSINGCODE

"UTWECANADDANELSETOTHECONDITION SOTHATWECAN PUBLICCLASS$OO"EE[


SAYSOMETHINGLIKE h)FTHERESSTILLBEER KEEPCODING ELSE
PUBLICSTATICVOIDMAIN3TRING;=ARGS [
OTHERWISE GETMOREBEER ANDTHENCONTINUEONv
INTX
FODVV,I7HVW^ WHILEX????? [
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 3YSTEMOUT?????????h$OOv 
LQW[ 
3YSTEMOUT?????????h"EEv 
LI [  ^
XX 
6\VWHPRXWSULQWOQ ³[PXVWEH´ 
`HOVH^ ]
6\VWHPRXWSULQWOQ ³[LV127´  IFX?????? [
` 3YSTEMOUTPRINTh$Ov 
6\VWHPRXWSULQWOQ ³7KLVUXQVQRPDWWHUZKDW´  ]
`
]
`
]
QHZRXWSXW
MDYD,I7HVW
[LV127
7KLVUXQVQRPDWWHUZKDW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULRXV-DYDDSS

+WLQVOI;MZQW][*][QVM[[
)XXTQKI\QWV
,ETSPUTALLYOURNEW*AVASKILLSTOGOODUSEWITH
SOMETHINGPRACTICAL7ENEEDACLASSWITHAMAIN ANINT
ANDA3TRINGVARIABLE AWHILELOOP ANDANIFTEST!LITTLE
MOREPOLISH ANDYOULLBEBUILDINGTHATBUSINESSBACK
ENDINNOTIME"UTBEFOREYOULOOKATTHECODEONTHIS
PAGE THINKFORAMOMENTABOUTHOWYOUWOULDCODETHAT
CLASSICCHILDRENSFAVORITE hBOTTLESOFBEERv

SXEOLFFODVV%HHU6RQJ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQWEHHU1XP 
6WULQJZRUG ³ERWWOHV´

ZKLOH EHHU1XP! ^

LI EHHU1XP  ^
ZRUG ³ERWWOH´VLQJXODUDVLQ21(ERWWOH
`

6\VWHPRXWSULQWOQ EHHU1XP³´ZRUG³RIEHHURQWKHZDOO´ 
6\VWHPRXWSULQWOQ EHHU1XP³´ZRUG³RIEHHU´ 
6\VWHPRXWSULQWOQ ³7DNHRQHGRZQ´ 
6\VWHPRXWSULQWOQ ³3DVVLWDURXQG´ 
EHHU1XP EHHU1XP

LI EHHU1XP! ^
6\VWHPRXWSULQWOQ EHHU1XP³´ZRUG³RIEHHURQWKHZDOO´ 
`HOVH^
6\VWHPRXWSULQWOQ ³1RPRUHERWWOHVRIEHHURQWKHZDOO´ 
`HQGHOVH
`HQGZKLOHORRS
`HQGPDLQPHWKRG
`HQGFODVV

4HERESSTILLONELITTLEFLAWINOUR
CODE)TCOMPILESANDRUNS BUTTHE
OUTPUTISNTPERFECT3EEIF
YOUCANSPOTTHEFLAW ANDFIXIT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

5WVLIaUWZVQVOI\*WJ¼[
*WJ¼[ITIZUKTWKSZQVO[I\ "5WVLIaUWZVQVOR][\TQSMM^MZaW\PMZ_MMSLIa -DYDLQVLGH
*]\*WJPILI_QTL_MMSMVLIVLZMIKPM[NWZ\PM;677B-J]\\WV
)VL\PI\¼[_PMV\PMIK\QWV[\IZ\[IVL\PM2I^IMVIJTMLIXXTQIVKM[
KWUM\WTQNM
.QZ[\\PMITIZUKTWKS[MVL[IUM[[IOM\W\PMKWNNMMUISMZ¹0Ma\PMOMMS¼[
[TMMXQVOQVIOIQVLMTIa\PMKWNNMMUQV]\M[º
<PMKWNNMMUISMZ[MVL[IUM[[IOM\W\PM5W\WZWTI‘ -DYDKHUHWRR
\WI[\MZ¹0WTL\PM\WI[\*WJ¼[[VWWbQVOº
<PMITIZUKTWKS\PMV[MVL[IUM[[IOM\W*WJ¼[
6WSQI6I^QOI\WZ‘KMTTXPWVM¹+ITT*WJ¼[!
W¼KTWKSIVL\MTTPQU_M¼ZMZ]VVQVOITQ\\TMTI\Mº
.QVITTa\PMITIZUKTWKS[MVL[IUM[[IOM\W OODU
-DYD ;IU¼[;IUQ[\PMLWO_QZMTM[[KWTTIZ_Q\P\PM\WWNIUQTQIZ[QOVIT\PI\ 6DP·VFYRD
WRDVWHU UMIV[¹/M\\PMXIXMZJ]\LWV¼\M`XMK\I_ITSº KDV-D
)NM_UQV]\M[TI\MZ\PMITIZUOWM[WNN IOIQV)VLIOIQV*WJ
PQ\[;677B-IVL\PMIXXTQIVKM[[\IZ\KPI\\MZQVO.QVITTa
\PMITIZUZQVO[I\PQZL\QUM*]\R][\I[*WJZMIKPM[NWZ\PM
[VWWbMJ]\\WV\PMKTWKS[MVL[\PM¹R]UXIVLJIZSº[QOVIT\W;IU¼[
KWTTIZ;PWKSML\WN]TTKWV[KQW][VM[[*WJZQ[M[OZI\MN]T\PI\PQ[2I^I
[SQTT[IVLITQ\\TM\ZQX\W:ILQW;PIKS‘PI^MMVPIVKML\PMLIQTa
ZW]\QVM[WN PQ[TQNM
EXWWHUKHUH
0Q[\WI[\Q[\WI[\ML
0Q[KWNNMM[\MIU[
0Q[XIXMZI_IQ\[
2][\IVW\PMZ_WVLMZN]TUWZVQVOQV<PM2I^I-VIJTML0W][M
AW]KIVPI^MI2I^IMVIJTMLPWUM;\QKS_Q\PI[MV[QJTM[WT]\QWV][QVO2I^I
-\PMZVM\IVL2QVQ\MKPVWTWOa*M_IZMWN QUQ\I\QWV[][QVOW\PMZ[WKITTML¹XT]O
IVLXTIaº_PQKPIK\]ITTaUMIV[¹XT]OIVLXTIa_Q\PQ\NWZ\PMVM`\\PZMMLIa[
\ZaQVO\WOM\Q\\W_WZSºWZ¹XWZ\IJTMºXTI\NWZU[*WJ¼[[Q[\MZ*M\\a\ZQMLWVMWN  $6 ,
) 21
\PW[MW\PMZ[IVL\PMZM[]T\[_MZM_MTTVW\^MZaIXXMITQVOWZ[INM
*Q\WN I[PIUMIJW]\PMZLWO\WW 79
#OULDTHISSTORYBETRUE9ESANDNO7HILETHEREAREVERSIONSOF*AVARUNNINGINDE
VICESINCLUDING0$!S CELLPHONESESPECIALLYCELLPHONES PAGERS RINGS SMARTCARDS
ANDMOREnYOUMIGHTNOTFINDA*AVATOASTERORDOGCOLLAR"UTEVENIFYOUCANT
FINDA*AVA ENABLEDVERSIONOFYOURFAVORITEGADGET YOUCANSTILLRUNITASIFITWEREA
*AVADEVICEBYCONTROLLINGITTHROUGHSOMEOTHERINTERFACESAY YOURLAPTOP THATIS
RUNNING*AVA4HISISKNOWNASTHE*INISURROGATEARCHITECTURE9ESYOUCANHAVETHAT
GEEKDREAMHOME


)0MULTICASTIFYOUREGONNABEALLPICKYABOUTPROTOCOL

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
OHW·VZULWHDSURJUDP

7U\P\QHZ
SKUDVHRPDWLFDQG
\RX·OOEHDVOLFNWDONHU
MXVWOLNHWKHERVVRU
WKRVHJX\VLQPDUNHWLQJ

SXEOLFFODVV3KUDVH20DWLF^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

''eYc]l`j]]k]lkg^ogj\klg[`ggk]^jge&9\\qgmjgof
 6WULQJ>@ZRUG/LVW2QH ^³´´PXOWL
7LHU´´IRRW´´%WR%´´ZLQZLQ´´IURQW
HQG´³ZHEEDVHG´´SHUYDVLYH´³VPDUW´³VL[
VLJPD´´FULWLFDOSDWK´³G\QDPLF´`

6WULQJ>@ZRUG/LVW7ZR ^³HPSRZHUHG´³VWLFN\´
³YDOXHDGGHG´³RULHQWHG´³FHQWULF´³GLVWULEXWHG´
³FOXVWHUHG´³EUDQGHG´´RXWVLGHWKHER[´³SRVLWLRQHG´
³QHWZRUNHG´³IRFXVHG´³OHYHUDJHG´³DOLJQHG´
³WDUJHWHG´³VKDUHG´³FRRSHUDWLYH´³DFFHOHUDWHG´`

6WULQJ>@ZRUG/LVW7KUHH ^³SURFHVV´³WLSSLQJ
/+ SOTHEBEERSONGWASNTREALLYASERIOUS
BUSINESSAPPLICATION3TILLNEEDSOMETHING SRLQW´³VROXWLRQ´³DUFKLWHFWXUH´³FRUHFRPSHWHQF\´
PRACTICALTOSHOWTHEBOSS#HECKOUTTHE ³VWUDWHJ\´³PLQGVKDUH´³SRUWDO´³VSDFH´³YLVLRQ´
0HRASE / -ATICCODE ³SDUDGLJP´³PLVVLRQ´`

''Úf\gml`goeYfqogj\kYj]af]Y[`dakl
 LQWRQH/HQJWK ZRUG/LVW2QHOHQJWK
LQWWZR/HQJWK ZRUG/LVW7ZROHQJWK
QRWHZKHQ\ LQWWKUHH/HQJWK ZRUG/LVW7KUHHOHQJWK
WKHFRGHGR RXW\SHWKLVLQWRDQHG
1HYHUKLWWKLWVRZQZRUGOLQHZUDSLWRUOHW ''_]f]jYl]l`j]]jYf\gefmeZ]jk
 LQWUDQG
D6WULQJ DWHUHWXUQNH\ZKHQ\RX·UHSLQJ  LQW  0DWKUDQGRP  RQH/HQJWK 
ZRQ·WFRPSLO KLQJEHWZHHQ´TXRWHVµ W\SLQJ LQWUDQG  LQW  0DWKUDQGRP  WZR/HQJWK 
WKLVSDJHDUHH6RWKHK\SKHQV\RXVHRULW LQWUDQG  LQW  0DWKUDQGRP  WKUHH/HQJWK 
EXWGRQ·WKLW UHDODQG\RXFDQW\SHHRQ
\RX·YHFORVHG WKHUHWXUQNH\XQWLO$ WKHP  ''fgoZmad\Yh`jYk]
D6WULQJ )7(5 6WULQJSKUDVH ZRUG/LVW2QH>UDQG@³³
ZRUG/LVW7ZR>UDQG@³³ZRUG/LVW7KUHH>UDQG@

 ''hjaflgmll`]h`jYk]
6\VWHPRXWSULQWOQ ³:KDWZHQHHGLVD³SKUDVH 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

8PZI[M75I\QK
0W_Q\_WZS[
)NANUTSHELL THEPROGRAMMAKESTHREELISTSOFWORDS THENRANDOMLYPICKSONEWORD
FROMEACHOFTHETHREELISTS ANDPRINTSOUTTHERESULT$ONTWORRYIFYOUDONTUNDER
STANDEXACTLYWHATSHAPPENINGINEACHLINE&ORGOSHSAKES YOUVEGOTTHEWHOLEBOOK
AHEADOFYOU SORELAX4HISISJUSTAQUICKLOOKFROMA FOOTOUTSIDE THE BOX
TARGETEDLEVERAGEDPARADIGM

1. 4HElRSTSTEPISTOCREATETHREE3TRINGARRAYSnTHECONTAINERSTHATWILLHOLDALLTHE
WORDS$ECLARINGANDCREATINGANARRAYISEASYHERESASMALLONE
6WULQJ>@SHWV ^³)LGR´³=HXV´³%LQ´`
%ACHWORDISINQUOTESASALLGOOD3TRINGSMUSTBE ANDSEPARATEDBYCOMMAS

2. &OREACHOFTHETHREELISTSARRAYS THEGOALISTOPICKARANDOMWORD SOWEHAVE


TOKNOWHOWMANYWORDSAREINEACHLIST)FTHEREAREWORDSINALIST THENWENEED
ARANDOMNUMBERBETWEENAND*AVAARRAYSAREZERO BASED SOTHElRSTWORDISAT
ZKDWZHQHHG
POSITION THESECONDWORDPOSITION ANDTHELASTWORDISPOSITIONINA ELEMENT
KHUHLVD
ARRAY 1UITEHANDILY A*AVAARRAYISMORETHANHAPPYTOTELLYOUITSLENGTH9OUJUST
HAVETOASK)NTHEPETSARRAY WEDSAY
LQW[ SHWVOHQJWK SHUYDVLYHWDUJHWHG
AND[WOULDNOWHOLDTHEVALUE SURFHVV

3.7ENEEDTHREERANDOMNUMBERS*AVASHIPSOUT OF THE BOX OFF THE SHELF SHRINK


WRAPPED ANDCORECOMPETENTWITHASETOFMATHMETHODSFORNOW THINKOFTHEMAS
G\QDPLFRXWVLGH
WKHER[WLSSLQJ
SRLQW
FUNCTIONS 4HEUDQGRP METHODRETURNSARANDOMNUMBERBETWEENANDNOT
QUITE  SOWEHAVETOMULTIPLYITBYTHENUMBEROFELEMENTSTHEARRAYLENGTH INTHE
LISTWEREUSING7EHAVETOFORCETHERESULTTOBEANINTEGERNODECIMALSALLOWED SO VPDUWGLVWULEXWHG
WEPUTINACASTYOULLGETTHEDETAILSINCHAPTER )TSTHESAMEASIFWEHADANYmOAT FRUHFRPSHWHQF\
INGPOINTNUMBERTHATWEWANTEDTOCONVERTTOANINTEGER
LQW[  LQW 
HPSRZHUHG
PLQGVKDUH
4. .OWWEGETTOBUILDTHEPHRASE BYPICKINGAWORDFROMEACHOFTHETHREELISTS
ANDSMOOSHINGTHEMTOGETHERALSOINSERTINGSPACESBETWEENWORDS 7EUSETHEhv
OPERATOR WHICHCONCATENATESWEPREFERTHEMORETECHNICAL@SMOOSHES THE3TRINGOBJECTS IRRWZLQZLQ
YLVLRQ
TOGETHER4OGETANELEMENTFROMANARRAY YOUGIVETHEARRAYTHEINDEXNUMBERPOSI
TION OFTHETHINGYOUWANTUSING
6WULQJV SHWV>@VLVQRZWKH6WULQJ³)LGR´ VL[VLJPDQHW
V V³³³LVDGRJ´VLVQRZ³)LGRLVDGRJ´ ZRUNHGSRUWDO

5.&INALLY WEPRINTTHEPHRASETOTHECOMMAND LINEANDVOILA7EREINMARKETING


\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHFRPSLOHUDQGWKH-90

<WVQOP\¼[<ITS"<PMKWUXQTMZIVL
\PM2>5JI\\TMW^MZ\PMY]M[\QWV
¹?PW¼[UWZMQUXWZ\IV\'º

<PM2I^I>QZ\]IT5IKPQVM <PM+WUXQTMZ
7HAT AREYOUKIDDING(%,,/)AM*AVA
)MTHEGUYWHOACTUALLYMAKESAPROGRAM
RUN4HECOMPILERJUSTGIVESYOUAlLE4HATS
IT*USTAlLE9OUCANPRINTITOUTANDUSEIT
FORWALLPAPER KINDLING LININGTHEBIRDCAGE
WHATEVER BUTTHElLEDOESNTDOANYTHINGUN
LESS)MTHERETORUNIT
)DONTAPPRECIATETHATTONE
!NDTHATSANOTHERTHING THECOMPILERHAS
NOSENSEOFHUMOR4HENAGAIN IFYOUHADTO
SPENDALLDAYCHECKINGNIT PICKYLITTLESYNTAX
VIOLATIONS %XCUSEME BUTWITHOUTME WHATEXACTLY
WOULDYOURUN4HERESAREASON*AVAWAS
DESIGNEDTOUSEABYTECODECOMPILER FORYOUR
INFORMATION)F*AVAWEREAPURELYINTERPRETED
LANGUAGE WHEREˆATRUNTIMEˆTHEVIRTUAL
MACHINEHADTOTRANSLATESTRAIGHT FROM A TEXT
EDITORSOURCECODE A*AVAPROGRAMWOULD
RUNATALUDICROUSLYGLACIALPACE*AVASHADA
CHALLENGINGENOUGHTIMECONVINCINGPEOPLE
THATITSlNALLYFASTANDPOWERFULENOUGHFOR
)MNOTSAYINGYOURE LIKE COMPLETELYUSELESS MOSTJOBS
"UTREALLY WHATISITTHATYOUDO3ERIOUSLY)
HAVENOIDEA!PROGRAMMERCOULDJUSTWRITE
BYTECODEBYHAND AND)DTAKEIT9OUMIGHT
BEOUTOFAJOBSOON BUDDY
%XCUSEME BUTTHATSQUITEANIGNORANTNOT
TOMENTIONARROGANT PERSPECTIVE7HILEIT
ISTRUETHATˆTHEORETICALLYˆYOUCANRUNANY
PROPERLYFORMATTEDBYTECODEEVENIFITDIDNT
COMEOUTOFA*AVACOMPILER INPRACTICETHATS
ABSURD!PROGRAMMERWRITINGBYTECODEBY
HANDISLIKEDOINGYOURWORDPROCESSINGBY
WRITINGRAWPOSTSCRIPT!ND)WOULDAPPRECIATE
ITIFYOUWOULDNOTREFERTOMEAShBUDDYv
)RESTMYCASEONTHEHUMORTHING "UTYOU
STILLDIDNTANSWERMYQUESTION WHATDOYOU
ACTUALLYDO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

<PM2I^I>QZ\]IT5IKPQVM <PM+WUXQTMZ
2EMEMBERTHAT*AVAISASTRONGLY TYPEDLAN
GUAGE ANDTHATMEANS)CANTALLOWVARIABLES
TOHOLDDATAOFTHEWRONGTYPE4HISISA
CRUCIALSAFETYFEATURE AND)MABLETOSTOPTHE
"UTSOMESTILLGETTHROUGH)CANTHROW#LASS VASTMAJORITYOFVIOLATIONSBEFORETHEYEVERGET
#AST%XCEPTIONSANDSOMETIMES)GETPEOPLE TOYOU!ND)ALSOˆ
TRYINGTOPUTTHEWRONGTYPEOFTHINGINAN
ARRAYTHATWASDECLAREDTOHOLDSOMETHING
ELSE ANDˆ
%XCUSEME BUT)WASNTDONE!NDYES THERE
ARESOMEDATATYPEEXCEPTIONSTHATCANEMERGE
ATRUNTIME BUTSOMEOFTHOSEHAVETOBE
ALLOWEDTOSUPPORTONEOF*AVASOTHERIMPOR
TANTFEATURESˆDYNAMICBINDING!TRUNTIME
A*AVAPROGRAMCANINCLUDENEWOBJECTSTHAT
WERENTEVENKNOWNTOTHEORIGINALPROGRAM
MER SO)HAVETOALLOWACERTAINAMOUNTOF
mEXIBILITY"UTMYJOBISTOSTOPANYTHINGTHAT
WOULDNEVERˆCOULDNEVERˆSUCCEEDATRUN
TIME5SUALLY)CANTELLWHENSOMETHINGWONT
WORK FOREXAMPLE IFAPROGRAMMERACCIDEN
TALLYTRIEDTOUSEA"UTTONOBJECTASA3OCKET
CONNECTION )WOULDDETECTTHATANDTHUS
/+3URE"UTWHATABOUTSECURITY,OOKATALL PROTECTHIMFROMCAUSINGHARMATRUNTIME
THESECURITYSTUFF)DO ANDYOURELIKE WHAT
CHECKINGFORSEMICOLONS/OOOHHHBIGSECURITY
RISK4HANKGOODNESSFORYOU %XCUSEME BUT)AMTHElRSTLINEOFDEFENSE
ASTHEYSAY4HEDATATYPEVIOLATIONS)PREVIOUS
LYDESCRIBEDCOULDWREAKHAVOCINAPROGRAM
IFTHEYWEREALLOWEDTOMANIFEST)AMALSO
THEONEWHOPREVENTSACCESSVIOLATIONS SUCH
ASCODETRYINGTOINVOKEAPRIVATEMETHOD OR
CHANGEAMETHODTHATnFORSECURITYREASONS
nMUSTNEVERBECHANGED)STOPPEOPLEFROM
TOUCHINGCODETHEYRENOTMEANTTOSEE
INCLUDINGCODETRYINGTOACCESSANOTHERCLASS
CRITICALDATA)TWOULDTAKEHOURS PERHAPSDAYS
EVEN TODESCRIBETHESIGNIlCANCEOFMYWORK
7HATEVER)HAVETODOTHATSAMESTUFFTOO
THOUGH JUSTTOMAKESURENOBODYSNUCKIN
AFTERYOUANDCHANGEDTHEBYTECODEBEFORE /FCOURSE BUTAS)INDICATEDPREVIOUSLY IF)
RUNNINGIT DIDNTPREVENTWHATAMOUNTSTOPERHAPS
OFTHEPOTENTIALPROBLEMS YOUWOULDGRINDTO
AHALT!NDITLOOKSLIKEWEREOUTOFTIME SO
WELLHAVETOREVISITTHISINALATERCHAT
/H YOUCANCOUNTONIT"UDDY

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH&RGH0DJQHWV

1dQ^OU_Q Code Magnets


!WORKING*AVAPROGRAMISALLSCRAMBLEDUP
ONTHEFRIDGE#ANYOUREARRANGETHECODE
SNIPPETSTOMAKEAWORKING*AVAPROGRAM
THATPRODUCESTHEOUTPUTLISTEDBELOW 
3OMEOFTHECURLYBRACESFELLONTHEFLOOR LI [

 ^
ANDTHEYWERETOOSMALLTOPICKUP SOFEEL 
6\
FREETOADDASMANYOFTHOSEASYOUNEED VWHP
 RXWS
[ ULQW
[ ´Gµ 
  
`

LI [  ^
6\VWHPRXWSULQW ´EFµ 
`

FODVV6KXIÁH^
SXEOLFVWDWL
FYR LGPDLQ 6WULQJ
>@DUJV ^

[! ^
LI
ULQW ´Dµ 
VWHPRXWS
6\
`

LQW[ 

[
[
6\
VWHPRXW
 SULQW ´
µ 

^
H [!
ZKLO

)LOH(GLW:LQGRZ+HOS6OHHS
7]\X]\"
MDYD6KXIIOH
DEFG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

1dQ^OU_Q   %
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
ZKLOH [! ^
[ [

"%THECOMPILER LI [ ^


6\VWHPRXWSULQWOQ ´VPDOO[µ 
(DFKRIWKH-DYDILOHVRQWKLVSDJH `
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
`
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRIWKHVH `
ILOHVZLOOFRPSLOH,IWKH\
ZRQ·WFRPSLOHKRZ
ZRXOG\RXIL[WKHP"

  &
  $
FODVV([HUFLVHE^
FODVV([HUFLVHE^
LQW[ 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
ZKLOH [! ^
LQW[ 
[ [
ZKLOH [ ^
LI [ ^
LI [! ^
6\VWHPRXWSULQWOQ ´VPDOO[µ 
6\VWHPRXWSULQWOQ ´ELJ[µ 
`
`
`
`
`
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHFURVVZRUG

  

  

-DYD&URVV


   


,ETSGIVEYOURRIGHTBRAINSOMETHINGTODO
)TSYOURSTANDARDCROSSWORD BUTALMOSTALL 

OFTHESOLUTIONWORDSAREFROMCHAPTER*UST

Licensed by
  
TOKEEPYOUAWAKE WEALSOTHREWINAFEW
NON *AVA WORDSFROMTHEHIGH TECHWORLD



Eduard Simons
 

!CROSS 

#OMMAND LINEINVOKER

104038
"ACKAGAIN 

#ANTGOBOTHWAYS
!CRONYMFORYOURLAPTOPSPOWER
NUMBERVARIABLETYPE
!CRONYMFORACHIP $OWN
3AYSOMETHING .OTANINTEGEROR?????YOURBOAT

1UITEACREWOFCHARACTERS #OMEBACKEMPTY HANDED

!NNOUNCEANEWCLASSORMETHOD /PENHOUSE

7HATSAPROMPTGOODFOR @4HINGSHOLDERS
5NTILATTITUDESIMPROVE
3OURCECODECONSUMER
#ANTPINITDOWN
$EPTOF,!.JOCKEYS
3HOCKINGMODIlER
*USTGOTTAHAVEONE
(OWTOGETTHINGSDONE
"YTECODECONSUMER

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS

!SHORT*AVAPROGRAMISLISTEDBELOW/NEBLOCKOFTHEPROGRAM
ISMISSING9OURCHALLENGEISTOMATCHTHECANDIDATEBLOCKOF
CODEONTHELEFT WITHTHEOUTPUTTHATYOUDSEEIFTHEBLOCK
WEREINSERTED.OTALLTHELINESOFOUTPUTWILLBEUSED ANDSOME
-IXED OFTHELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE$RAWLINES
-ESSAGES CONNECTINGTHECANDIDATEBLOCKSOFCODEWITHTHEIRMATCHING
COMMAND LINEOUTPUT4HEANSWERSAREATTHEENDOFTHECHAPTER 

FODVV7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
LQW\ 
ZKLOH [ ^ FDQGLGDWH
 JRHVKHUH FRGH
 

 6\VWHPRXWSULQW [³³\³³ 


[ [
 `
`
`
#ANDIDATES 0OSSIBLEOUTPUT
\ [\ 
PDWFKHDFKLWK
FDQGLGDWHZ  \ \[
RQHRIWKHSXWV 
SRVVLEOHRXW \ \
LI \! ^ 
\ \
` 

[ [ 
\ \[


LI \ ^
[ [
LI \ ^ 
[ [
` 
`
\ \

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH3RRO3X]]OH

FODVV3RRO3X]]OH2QH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 

3RRO3X]]OH ZKLOH BBBBBBBBBB ^


9OURJOBISTOTAKECODESNIPPETSFROMTHE
POOLANDPLACETHEMINTOTHEBLANK BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
LINESINTHECODE9OUMAYNOTUSETHE LI [ ^
SAMESNIPPETMORETHANONCE AND
BBBBBBBBBBBBBBBBBBBBBBBBBBB
YOUWONTNEEDTOUSEALLTHESNIP
`
PETS9OURGOALISTOMAKEACLASSTHAT
BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
WILLCOMPILEANDRUNANDPRODUCETHE
OUTPUTLISTED$ONTBEFOOLEDˆTHISONES
HARDERTHANITLOOKS LI BBBBBBBBBB ^

BBBBBBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBB
/UTPUT `
LI [  ^
)LOH(GLW:LQGRZ+HOS&KHDW

MDYD3RRO3X]]OH2QH BBBBBBBBBBBBBBBBBBBBBBBBBBBB
DQRLVH `
LI BBBBBBBBBBB ^
DQQR\V
DQR\VWHU BBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
6\VWHPRXWSULQWOQ ´´ 

BBBBBBBBBBBB
`
`
`

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDONLYONCE X
X
X
X XX 
X XX  3YSTEMOUTPRINThNOYSh 
3YSTEMOUTPRINThv  XX  3YSTEMOUTPRINThOISEh 
3YSTEMOUTPRINThAh  XX  3YSTEMOUTPRINThOYSTERh 
3YSTEMOUTPRINThNh  3YSTEMOUTPRINThANNOYSv 
3YSTEM OUT PRINThANh  3YSTEMOUTPRINThNOISEv 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLYH,Q$4XLFN'LS
FODVV([HUFLVHE^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
%XERCISE3OLUTIONS
ZKLOH [ ^
[ [
LI [! ^
$
6\VWHPRXWSULQWOQ ´ELJ[µ 
`
&RGH0DJQHWV
`
FODVV6KXIÁH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ `7KLVZLOOFRPSLOHDQGUXQ QRRXWSXW EXW
`ZLWKRXWDOLQHDGGHGWRWKHSURJUDPLW
LQW[  ZRXOGUXQIRUHYHULQDQLQÀQLWH¶ZKLOH·ORRS
ZKLOH [! ^

LI [! ^
6\VWHPRXWSULQW ´Dµ 
FODVV)RR^
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
[ [ LQW[ 
6\VWHPRXWSULQW ´µ  ZKLOH [! ^
[ [
LI [  ^ LI [ ^
6\VWHPRXWSULQW ´EFµ 
%
6\VWHPRXWSULQWOQ ´VPDOO[µ 
`
`
LI [  ^ `7KLVÀOHZRQ·WFRPSLOHZLWKRXWD
6\VWHPRXWSULQW ´Gµ  `FODVVGHFODUDWLRQDQGGRQ·WIRUJHW
[ [ `WKHPDWFKLQJFXUO\EUDFH
`
`
`
`
FODVV([HUFLVHE^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)LOH(GLW:LQGRZ+HOS3RHW
LQW[ 
MDYD6KXIIOH
ZKLOH [! ^
DEFG
[ [
& LI [ ^
6\VWHPRXWSULQWOQ ´VPDOO[µ 
`
`
7KH¶ZKLOH·ORRSFRGHPXVWEHLQ
`
VLGHDPHWKRG,WFDQ·WMXVWEH
`
KDQJLQJRXWLQVLGHWKHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

  
) 9 3
  
-$9$ 2
/ 23 8

5 : 2 , %
   
5
%$1&+ $ ' & 9 /

$ , 17 2 $ ,

< / 0 5 ,&
  
6 <7(28735,17
6 0
FODVV3RRO3X]]OH2QH^ 7 $ , $

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ $ , / % 0
LQW[   
1
65,*
7 '(&/$5(
ZKLOH ; ^ , 5 ( 7

& - +
6\VWHPRXWSULQW ´Dµ 
LI [ ^ 9 2

6\VWHPRXWSULQW ´´  &200$1'
`
6\VWHPRXWSULQW ´Qµ  FODVV7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LI ;! ^ LQW[ 
LQW\ 

ZKLOH [ ^
6\VWHPRXWSULQW ´R\VWHUµ  
[ [
`  

LI [  ^  6\VWHPRXWSULQW [³³\³³ 


[ [
6\VWHPRXWSULQW ´QR\Vµ   `
`
` `
LI ; ^
#ANDIDATES 0OSSIBLEOUTPUT
\ [\ 
6\VWHPRXWSULQW ´RLVHµ 
` \ \[

6\VWHPRXWSULQWOQ ´´ 
\ \
)LOH(GLW:LQGRZ+HOS&KHDW LI \! ^ 
; ; \ \
MDYD3RRO3X]]OH2QH
` ` 
DQRLVH
` DQQR\V
` [ [ 
DQR\VWHU \ \[


LI \ ^
[ [
LI \ ^ 
[ [
` 
`
\ \

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

$7ULSWR2EMHFWYLOOH

:H·UHJRLQJWR
2EMHFWYLOOH:H·UH
OHDYLQJWKLVGXVW\RO·
SURFHGXUDOWRZQIRUJRRG
,·OOVHQG\RXDSRVWFDUG

,ZDVWROGWKHUHZRXOGEHREMHFWV)NCHAPTER WEPUTALLOFOURCODEINTHE
MAIN METHOD4HATSNOTEXACTLYOBJECT ORIENTED)NFACT THATSNOTOBJECT ORIENTEDATALL7ELL
WEDIDUSEAFEWOBJECTS LIKETHE3TRINGARRAYSFORTHE0HRASE / -ATIC BUTWEDIDNTACTUALLY
DEVELOPANYOFOUROWNOBJECTTYPES3ONOWWEVEGOTTOLEAVETHATPROCEDURALWORLDBEHIND
GETTHEHECKOUTOFMAIN ANDSTARTMAKINGSOMEOBJECTSOFOUROWN7ELLLOOKATWHATMAKES
OBJECT ORIENTED// DEVELOPMENTIN*AVASOMUCHFUN7ELLLOOKATTHEDIFFERENCEBETWEEN
ACLASSANDANOBJECT7ELLLOOKATHOWOBJECTSCANGIVEYOUABETTERLIFEATLEASTTHEPROGRAM
MINGPARTOFYOURLIFE.OTMUCHWECANDOABOUTYOURFASHIONSENSE 7ARNINGONCEYOUGET
TO/BJECTVILLE YOUMIGHTNEVERGOBACK3ENDUSAPOSTCARD

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RQFHXSRQDWLPHLQ2EMHFWYLOOH

+PIQZ?IZ[
WZ0W_7JRMK\[+IV+PIVOMAW]Z4QNM
\PM [XMK

A
NCEUPONATIMEINASOFTWARESHOP TWO
PROGRAMMERSWEREGIVENTHESAMESPECANDTOLDTO
hBUILDITv4HE2EALLY!NNOYING0ROJECT-ANAGER
FORCEDTHETWOCODERSTOCOMPETE
BYPROMISINGTHATWHOEVERDELIVERS
lRSTGETSONEOFTHOSECOOL!ERON©
CHAIRSALLTHE3ILICON6ALLEYGUYSHAVE
,ARRY THEPROCEDURALPROGRAMMER AND
"RAD THE//GUY BOTHKNEWTHISWOULD
BEAPIECEOFCAKE
,ARRY SITTINGINHISCUBE THOUGHTTO
HIMSELF h7HATARETHETHINGSTHISPROGRAM
HASTODO7HATPROCEDURESDOWENEEDv
!NDHEANSWEREDHIMSELF hROTATEAND
PLAY3OUNDv3OOFFHEWENTTOBUILDTHE
PROCEDURES!FTERALL WHATISAPROGRAMIFNOT
APILEOFPROCEDURES
"RAD MEANWHILE KICKEDBACKATTHECAFE
ANDTHOUGHTTOHIMSELF h7HATARETHETHINGS
INTHISPROGRAMWHOARETHEKEYPLAYERSv(E
lRSTTHOUGHTOF4HE3HAPES/FCOURSE THERE
WEREOTHEROBJECTSHETHOUGHTOFLIKETHE5SER THE3OUND
ANDTHE#LICKINGEVENT"UTHEALREADYHADALIBRARYOFCODE
FORTHOSEPIECES SOHEFOCUSEDONBUILDING3HAPES2EAD
ONTOSEEHOW"RADAND,ARRYBUILTTHEIRPROGRAMS AND \PM KPIQZ
FORTHEANSWERTOYOURBURNINGQUESTION h3O WHOGOTTHE
!ERONv

1V4IZZa¼[K]JM )\*ZIL¼[TIX\WXI\\PMKINM
!SHEHADDONEAGAZILLIONTIMESBEFORE ,ARRY "RADWROTEACLASSFOREACHOFTHETHREESHAPES
SETABOUTWRITINGHIS)MPORTANT0ROCEDURES
(EWROTEROTATEANDPLAY3OUNDINNOTIME
URWDWH VKDSH1XP ^
PDNHWKHVKDSHURWDWHž
`
SOD\6RXQG VKDSH1XP ^
XVHVKDSH1XPWRORRNXSZKLFK `
$,)VRXQGWRSOD\DQGSOD\LW
`
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

4IZZa\PW]OP\PM¼LVIQTMLQ\0MKW]TLITUW[\NMMT\PMZWTTML
[\MMTWN\PM)MZWVJMVMI\PPQ[

*]\_IQ\ <PMZM¼[JMMVI[XMKKPIVOM
h/+ TECHNICALLYYOUWERElRST ,ARRY vSAIDTHE-ANAGER hBUTWEHAVETOADDJUSTONE
TINYTHINGTOTHEPROGRAM)TLLBENOPROBLEMFORCRACKPROGRAMMERSLIKEYOUTWOv
h)F)HADADIMEFOREVERYTIME)VEHEARDTHATONEv THOUGHT,ARRY KNOWINGTHATSPEC
CHANGE NO PROBLEMWASAFANTASYh!NDYET"RADLOOKSSTRANGELYSERENE7HATSUPWITH
THATv3TILL ,ARRYHELDTIGHTTOHISCOREBELIEFTHATTHE//WAY WHILECUTE WASJUST
SLOW!NDTHATIFYOUWANTEDTOCHANGEHISMIND YOUDHAVETOPRYITFROMHISCOLD
DEAD CARPAL TUNNELLEDHANDS
M
MJI [PIX
Z M _ QT T J M IV IUW W\PMZ[
<PM P \PM _PI\ OW\ ILLML \W \PM [XMK
ZMMV _Q\
WV \PM [K [MZ KTQKS[ WV \PM
M] M \PM
?PMV \P QTT Z W\I\M TQS L NQTM 
Q\ _
IUWMJI PQN [W]V
\ P M Z [  I VL XTIa I
W

*IKSQV4IZZa¼[K]JM )\*ZIL¼[TIX\WXI\\PMJMIKP
4HEROTATEPROCEDUREWOULDSTILLWORKTHECODEUSED "RADSMILED SIPPEDHISMARGARITA ANDWROTEONE
ALOOKUPTABLETOMATCHASHAPE.UMTOANACTUAL NEWCLASS3OMETIMESTHETHINGHELOVEDMOST
SHAPEGRAPHIC"UTPLAY3OUNDWOULDHAVETOCHANGE ABOUT//WASTHATHEDIDNTHAVETOTOUCHCODE
!NDWHATTHEHECKISAHIFlLE HEDALREADYTESTEDANDDELIVEREDh&LEXIBILITY
SOD\6RXQG VKDSH1XP ^ EXTENSIBILITY vHEMUSED REmECTINGONTHE
LIWKHVKDSHLVQRWDQDPRHED BENElTSOF//
XVHVKDSH1XPWRORRNXSZKLFK $PRHED
$,)VRXQGWRSOD\DQGSOD\LW URWDWH ^
HOVH FRGHWRURWDWHDQDPRHED
SOD\DPRHEDKLIVRXQG `
`
SOD\6RXQG ^
)TTURNEDOUTNOTTOBESUCHABIGDEAL BUTITSTILL
FRGHWRSOD\WKHQHZ
MADEHIMQUEASYTOTOUCHPREVIOUSLY TESTEDCODE/F KLIILOHIRUDQDPRHED
ALLPEOPLE HESHOULDKNOWTHATNOMATTERWHATTHE `
PROJECTMANAGERSAYS THESPECALWAYSCHANGES

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RQFHXSRQDWLPHLQ2EMHFWYLOOH

4IZZa[V]KSQVR][\UWUMV\[IPMILWN*ZIL
(AH3OMUCHFORTHATFOOFY//NONSENSE "UTTHESMIRKON,ARRYSFACEMELTEDWHENTHE
2EALLY!NNOYING0ROJECT-ANAGERSAIDWITHTHATTONEOFDISAPPOINTMENT h/H NO THATSNOT
HOWTHEAMOEBAISSUPPOSEDTOROTATEv
4URNSOUT BOTHPROGRAMMERSHADWRITTENTHEIRROTATECODELIKETHIS
 GHWHUPLQHWKHUHFWDQJOHWKDWVXUURXQGVWKHVKDSH
 FDOFXODWHWKHFHQWHURIWKDWUHFWDQJOHDQGURWDWHWKHVKDSHDURXQGWKDWSRLQW
"UTTHEAMOEBASHAPEWASSUPPOSEDTOROTATEAROUNDAPOINTONONEEND LIKEACLOCKHAND
h)MTOASTvTHOUGHT,ARRY VISUALIZINGCHARRED7ONDERBREAD©h!LTHOUGH HMMMM)COULD
JUSTADDANOTHERIFELSETOTHEROTATEPROCEDURE ANDTHENJUSTHARD CODETHEROTATIONPOINT
CODEFORTHEAMOEBA4HATPROBABLYWONTBREAKANYTHINGv"UTTHELITTLEVOICEATTHEBACKOF
HISHEADSAID h"IG-ISTAKE$OYOUHONESTLYTHINKTHESPECWONTCHANGEAGAINv

4IZZa
XWQV\ QV
ZW\I\QWV
)UMWJI ^MZ[QWV"
¼[
IVL *ZIL
?PI\ \PM [XMK KWV^MVQMV\Ta
NWZOW\ \W UMV\QWV

ZW\ I\QWV
M IUMJI
?PMZM \P
]TL JM"
XWQV\ [PW

*IKSQV4IZZa¼[K]JM )\*ZIL¼[TIX\WXWVPQ[TI_V
(ElGUREDHEBETTERADDROTATIONPOINTARGUMENTS KPIQZI\\PM<MTT]ZQLM*T]MOZI[[.M[\Q^IT
TOTHEROTATEPROCEDURE!LOTOFCODEWASAFFECTED 7ITHOUTMISSINGABEAT "RADMODIlEDTHEROTATE
4ESTING RECOMPILING THEWHOLENINEYARDSALLOVER METHOD BUTONLYINTHE!MOEBACLASS(ENEVER
AGAIN4HINGSTHATUSEDTOWORK DIDNT TOUCHEDTHETESTED WORKING
URWDWH VKDSH1XP[3W\3W ^ COMPILEDCODEFORTHEOTHER $PRHED
LIWKHVKDSHLVQRWDQDPRHED PARTSOFTHEPROGRAM4O LQW[3RLQW
GIVETHE!MOEBAAROTA LQW\3RLQW
FDOFXODWHWKHFHQWHUSRLQW
TIONPOINT HEADDEDAN URWDWH ^
EDVHGRQDUHFWDQJOH
ATTRIBUTETHATALL!MOEBAS FRGHWRURWDWHDQDPRHED
WKHQURWDWH WOULDHAVE(EMODI XVLQJDPRHED·V[DQG\
HOVH lED TESTED ANDDELIVERED `
XVHWKH[3WDQG\3WDV WIRELESSLY THEREVISED SOD\6RXQG ^
WKHURWDWLRQSRLQWRIIVHW PROGRAMDURINGASINGLE FRGHWRSOD\WKHQHZ
"ELA&LECKSET KLIILOHIRUDQDPRHED
DQGWKHQURWDWH `
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

;W*ZIL\PM77O]aOW\\PMKPIQZZQOP\ '
.OTSOFAST,ARRYFOUNDAmAWIN"RADSAPPROACH!ND
SINCEHEWASSURETHATIFHEGOTTHECHAIRHEDALSOGET,UCY
INACCOUNTING HEHADTOTURNTHISTHINGAROUND
,!2299OUVEGOTDUPLICATEDCODE4HEROTATE
PROCEDUREISINALLFOUR3HAPETHINGS
"2!$)TSAMETHOD NOTAPROCEDURE!NDTHEYRECLASSES
NOTTHINGS
,!2297HATEVER)TSASTUPIDDESIGN9OUHAVETO
MAINTAINFOURDIFFERENTROTATEhMETHODSv(OWCANTHAT
EVERBEGOOD
"2!$/H )GUESSYOUDIDNTSEETHElNALDESIGN,ETME
SHOWYOUHOW//INHERITANCEWORKS ,ARRY
?PI\ 4IZZa _IV\ML
NQO]ZML \PM KPIQZ _W]TL QUXZM[[ PMZ


6TXDUH &LUFOH 7ULDQJOH $PRHED
1 TWWSML I\ _PI\ ITT NW]Z
URWDWH URWDWH URWDWH URWDWH KTI[[M[ PI^M QV KWUUWV
SOD\6RXQG SOD\6RXQG SOD\6RXQG SOD\6RXQG


<PMa¼ZM ;PIXM[ IVL \PMa ITT ZW\I\M IVL 6KDSH
XTIa;W]VL ;W 1 IJ[\ZIK\ML W]\ \PM
KWUUWV NMI\]ZM[ IVL X]\ \PMU QV\W I
URWDWH
SOD\6RXQG

VM_ KTI[[ KITTML ;PIXM <PMV1TQVSML\PMW\PMZ
6KDSH
[]XMZKTI[[ NW]Z[PIXMKTI[[M[\W
URWDWH
SOD\6RXQG \PMVM_;PIXMKTI[[
QVIZMTI\QWV[PQXKITTML
QVPMZQ\IVKM
<RXFDQUHDGWKLVDV´6TXDUHLQKHULWVIURP6KDSHµ
´&LUFOHLQKHULWVIURP6KDSHµDQGVRRQ,UHPRYHG []JKTI[[M[
URWDWH DQGSOD\6RXQG IURPWKHRWKHUVKDSHVVRQRZ
WKHUH·VRQO\RQHFRS\WRPDLQWDLQ
6TXDUH &LUFOH 7ULDQJOH $PRHED
7KH6KDSHFODVVLVFDOOHGWKHVXSHUFODVVRIWKHRWKHUIRXU
FODVVHV7KHRWKHUIRXUDUHWKHVXEFODVVHVRI6KDSH7KH
VXEFODVVHVLQKHULWWKHPHWKRGVRIWKHVXSHUFODVV,QRWKHU
ZRUGVLIWKH6KDSHFODVVKDVWKHIXQFWLRQDOLW\WKHQWKH
VXEFODVVHVDXWRPDWLFDOO\JHWWKDWVDPHIXQFWLRQDOLW\
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RQFHXSRQDWLPHLQ2EMHFWYLOOH

?PI\IJW]\\PM)UWMJIZW\I\M'
,!2297ASNTTHATTHEWHOLEPROBLEMHEREˆTHATTHEAMOEBASHAPE
HADACOMPLETELYDIFFERENTROTATEANDPLAY3OUNDPROCEDURE
UULGH 1RZ
"2!$-ETHOD YH

2
,!2297HATEVER(OWCANAMOEBADOSOMETHINGDIFFERENTIF
$V Z
IThINHERITSvITSFUNCTIONALITYFROMTHE3HAPECLASS N 0H +R

"2!$4HATSTHELASTSTEP4HE!MOEBACLASSOVERRIDESTHE
METHODSOFTHE3
HAPECLASS4HENATRUNTIME THE*6-KNOWSEXACTLY
WHICHROTATE METHODTORUNWHENSOMEONETELLSTHE!MOEBATOROTATE

[]XMZKTI[[ 
Licensed by
6KDSH
UWZM IJ[\ZIK\
URWDWH
SOD\6RXQG
11UILM\PM)UWMJIKTI[[W^MZZQLM
UILM \PM )UWMJI KTI[[ W^MZZQLM
\PMZW\I\MIVLXTIa;W]VL
\PM ZW\I\M UM\PWL WN \PM
UM\PWL[WN\PM[]XMZKTI[[;PIXM
[]XMZKTI[[ ;PIXM

Eduard Simons
[]JKTI[[M[ 7^MZZQLQVOR][\UMIV[\PI\I
UWZM [XMKQNQK 7^MZZQLQVO R][\ UMIV[ \PI\ I
[]JKTI[[ZMLMNQVM[WVMWNQ\[
[]JKTI[[ ZMLMNQVM[ WVM WN Q\[
QVPMZQ\MLUM\PWL[_PMVQ\VMML[
QVPMZQ\ML UM\PWL[ _PMV Q\ VMML[
6TXDUH &LUFOH 7ULDQJOH $PRHED \WKPIVOMWZM`\MVL\PMJMPI^QWZ
\W KPIVOM WZ M`\MVL \PM JMPI^QWZ

104038
WN\PI\UM\PWL
WN \PI\ UM\PWL
URWDWH ^
 DPRHEDVSHFLILF
 URWDWH FRGH ^
7^MZZQLQVO UM\PWL[
SOD\6RXQG ^
 DPRHEDVSHFLILF
 VRXQG FRGH ^

,FDQWDNH
,!229(OWDOYOUhTELLvAN!MOEBATO
FDUHRIP\VHOI
DOSOMETHING$ONTYOUHAVETOCALLTHE ,NQRZKRZDQ$PRHED
PROCEDURE SORRYˆMETHOD ANDTHENTELLIT ,NQRZKRZD6KDSHLV LVVXSSRVHGWRURWDWH
WHICHTHINGTOROTATE VXSSRVHGWREHKDYH<RXU DQGSOD\DVRXQG
MRELVWRWHOOPHZKDWWR
"2!$4HATSTHEREALLYCOOLTHINGABOUT//
GRDQGP\MRELVWRPDNHLWKDSSHQ
7HENITSTIMEFOR SAY THETRIANGLETOROTATE 'RQ·W\RXZRUU\\RXUOLWWOHSURJUDP
THEPROGRAMCODEINVOKESCALLS THEROTATE PHUKHDGDERXWKRZ,GRLW
METHODONTHETRIANGLEOBJECT4HERESTOFTHE
PROGRAMREALLYDOESNTKNOWORCAREHOWTHE
TRIANGLEDOESIT!NDWHENYOUNEEDTOADD
SOMETHINGNEWTOTHEPROGRAM YOUJUSTWRITE
ANEWCLASSFORTHENEWOBJECTTYPE SOTHENEW
OBJECTSWILLHAVETHEIROWNBEHAVIOR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

<PM[][XMV[MQ[SQTTQVOUM
?PWOW\\PMKPIQZ'

!MYFROMTHESECONDmOOR
UNBEKNOWNSTTOALL THE0ROJECT
-ANAGERHADGIVENTHESPECTO
THREEPROGRAMMERS

YiX`e
?PI\LWaW]TQSMIJW]\77' gfn\i
4IMETOPUMPSOMENEURONS
´,WKHOSVPHGHVLJQLQDPRUHQDWXUDOZD\7KLQJV 9OUJUSTREADASTORYBOUTAPROCEDURAL
KDYHDZD\RIHYROYLQJµ PROGRAMMERGOINGHEAD TO HEADWITHAN//
 -R\VRIWZDUHDUFKLWHFW PROGRAMMER9OUGOTAQUICKOVERVIEWOFSOME
KEY//CONCEPTSINCLUDINGCLASSES METHODS AND
ATTRIBUTES7ELLSPENDTHERESTOFTHECHAPTER
´1RWPHVVLQJDURXQGZLWKFRGH,·YHDOUHDG\ LOOKINGATCLASSESANDOBJECTSWELLRETURNTO
WHVWHGMXVWWRDGGDQHZIHDWXUHµ INHERITANCEANDOVERRIDINGINLATERCHAPTERS 
 %UDGSURJUDPPHU "ASEDONWHATYOUVESEENSOFARANDWHATYOU
MAYKNOWFROMAPREVIOUS//LANGUAGEYOUVE
WORKEDWITH TAKEAMOMENTTOTHINKABOUT
´,OLNHWKDWWKHGDWDDQGWKHPHWKRGVWKDWRSHU
THESEQUESTIONS
DWHRQWKDWGDWDDUHWRJHWKHULQRQHFODVVµ
 -RVKEHHUGULQNHU 7HATARETHEFUNDAMENTALTHINGSYOUNEEDTO
THINKABOUTWHENYOUDESIGNA*AVACLASS7HAT
´5HXVLQJFRGHLQRWKHUDSSOLFDWLRQV:KHQ,ZULWH ARETHEQUESTIONSYOUNEEDTOASKYOURSELF
DQHZFODVV,FDQPDNHLWÁH[LEOHHQRXJKWREH )FYOUCOULDDESIGNACHECKLISTTOUSEWHEN
XVHGLQVRPHWKLQJQHZODWHUµ YOUREDESIGNINGACLASS WHATWOULDBEONTHE
 &KULVSURMHFWPDQDJHU CHECKLIST

´,FDQ·WEHOLHYH&KULVMXVWVDLGWKDW+HKDVQ·W
ZULWWHQDOLQHRIFRGHLQ\HDUVµ
 'DU\OZRUNVIRU&KULV PHWDFRJQLWLYH WLS
,I \RX·UH VWXFN RQ DQ H[HUFLVH WU\ WDONLQJ DERXW
´%HVLGHVWKHFKDLU"µ
LW RXW ORXG 6SHDNLQJ DQG KHDULQJ DFWLYDWHV
 $P\SURJUDPPHU
D GLIIHUHQW SDUW RI \RXU EUDLQ $OWKRXJK LW
ZRUNV EHVW LI \RX KDYH DQRWKHU SHUVRQ WR
GLVFXVV LW ZLWK SHWV ZRUN WRR 7KDW·V KRZ
RXU GRJ OHDUQHG SRO\PRUSKLVP

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKLQNLQJDERXWREMHFWV

?PMVaW]LM[QOVIKTI[[\PQVSIJW]\\PMWJRMK\[\PI\
_QTTJMKZM I\MLNZWU\PI\KTI[[\ aXM<PQVSIJW]\"
NWKLQJVWKHREMHFWNQRZV
NWKLQJVWKHREMHFWGRHV

6KRSSLQJ&DUW %XWWRQ $ODUP

ODEHO DODUP7LPH
FDUW&RQWHQWV SVW_[ FRORU SVW_[ DODUP0RGH SVW_[
VHW&RORU VHW$ODUP7LPH
DGG7R&DUW LWM[ VHW/DEHO LWM[ JHW$ODUP7LPH
VHW$ODUP LWM[
UHPRYH)URP&DUW GH3UHVV LV$ODUP6HW
FKHFN2XW XQ'HSUHVV VQRR]H

<PQVO[IVWJRMK\SVW_[IJW]\Q\[MTNIZMKITTML 6RQJ

NLQVWDQFHYDULDEOHV QV[\IVKM WLWOH SVW_[


^IZQIJTM[ DUWLVW
VWDWH
VHW7LWOH
<PQVO[IVWJRMK\KIVLWIZMKITTML UM\PWL[ VHW$UWLVW LWM[
EHKDYLRU SOD\
NPHWKRGV

4HINGSANOBJECTKNOWSABOUTITSELFARECALLEDINSTANCE 6KDUSHQ \RXU SHQFLO


VARIABLES4HEYREPRESENTANOBJECTSSTATETHEDATA AND
CANHAVEUNIQUEVALUESFOREACHOBJECTOFTHATTYPE &ILLINWHATATELEVISIONOBJECT
MIGHTNEEDTOKNOWANDDO
7KLQNRILQVWDQFHDVDQRWKHUZD\RIVD\LQJREMHFW
4HINGSANOBJECTCANDOARECALLEDMETHODS7HENYOU
DESIGNACLASS YOUTHINKABOUTTHEDATAANOBJECTWILLNEED
TOKNOWABOUTITSELF ANDYOUALSODESIGNTHEMETHODS
THATOPERATEONTHATDATA)TSCOMMONFORANOBJECTTO
HAVEMETHODSTHATREADORWRITETHEVALUESOFTHEINSTANCE
VARIABLES&OREXAMPLE !LARMOBJECTSHAVEANINSTANCE
VARIABLETOHOLDTHEALARM4IME ANDTWOMETHODSFOR
GETTINGANDSETTINGTHEALARM4IME
3OOBJECTSHAVEINSTANCEVARIABLESANDMETHODS BUTTHOSE
INSTANCEVARIABLESANDMETHODSAREDESIGNEDASPARTOFTHE
CLASS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

:KDW·VWKHGLIIHUHQFHEHWZHHQ
DFODVVDQGDQREMHFW"

)KTI[[Q[VW\IVWJRMK\
J]\Q\¼[][ML\WKWV[\Z]K\\PMU

!CLASSISABLUEPRINTFORANOBJECT)TTELLSTHE
VIRTUALMACHINEHOWTOMAKEANOBJECTOFTHAT
-90
PARTICULARTYPE%ACHOBJECTMADEFROMTHAT
CLASSCANHAVEITSOWNVALUESFORTHE
INSTANCEVARIABLESOFTHATCLASS&OR
EXAMPLE YOUMIGHTUSETHE"UTTON
CLASSTOMAKEDOZENSOFDIFFERENT
BUTTONS ANDEACHBUTTONMIGHTHAVE
FODVV
ITSOWNCOLOR SIZE SHAPE LABEL ANDSOON

/RRNDWLWWKLVZD\ !NOBJECTISLIKEONEENTRYINYOURADDRESSBOOK
/NEANALOGYFOROBJECTSISAPACKETOFUNUSED2OLODEX»CARDS
%ACHCARDHASTHESAMEBLANKFIELDSTHEINSTANCEVARIABLES 7HEN
YOUFILLOUTACARDYOUARECREATINGANINSTANCEOBJECT ANDTHE
ENTRIESYOUMAKEONTHATCARDREPRESENTITSSTATE
4HEMETHODSOFTHECLASSARETHETHINGSYOUDOTOAPARTICULARCARD
GET.AME CHANGE.AME SET.AME COULDALLBEMETHODSFOR
CLASS2OLODEX
3O EACHCARDCANDOTHESAMETHINGSGET.AME CHANGE.AME
ETC BUTEACHCARDKNOWSTHINGSUNIQUETOTHATPARTICULARCARD

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PDNLQJREMHFWV

5ISQVOaW]ZNQZ[\WJRMK\
3OWHATDOESITTAKETOCREATEANDUSEANOBJECT9OUNEEDTWOCLASSES/NE
CLASSFORTHETYPEOFOBJECTYOUWANTTOUSE$OG !LARM#LOCK 4ELEVISION 7KH'RW2SHUDWRU 
ETC ANDANOTHERCLASSTOTESTYOURNEWCLASS4HETESTERCLASSISWHEREYOUPUT
THEMAINMETHOD ANDINTHATMAIN METHODYOUCREATEANDACCESSOBJECTS 4HEDOTOPERATOR GIVES
OFYOURNEWCLASSTYPE4HETESTERCLASSHASONLYONEJOBTOTRYOUTTHEMETH YOUACCESSTOANOBJECTS
ODSANDVARIABLESOFYOURNEWOBJECTCLASSTYPE STATEANDBEHAVIORINSTANCE
VARIABLESANDMETHODS 
&ROMTHISPOINTFORWARDINTHEBOOK YOULLSEETWOCLASSESINMANYOF
OUREXAMPLES/NEWILLBETHEREALCLASSnTHECLASSWHOSEOBJECTSWE
REALLYWANTTOUSE ANDTHEOTHERCLASSWILLBETHETESTERCLASS WHICHWE MAKEANEWOBJECT
CALLWHATEVER9OUR#LASS.AME)S7HVW'ULYH&OREXAMPLE IFWEMAKEA $OGDNEW$OG 
%XQJHHCLASS WELLNEEDA%XQJHH7HVW'ULYHCLASSASWELL/NLYTHE
SOME#LASS.AME7HVW'ULYHCLASSWILLHAVEAMAIN METHOD ANDITSSOLE
PURPOSEISTOCREATEOBJECTSOFYOURNEWTYPETHENOT THE TESTERCLASS AND TELLITTOBARKBYUSINGTHE
THENUSETHEDOTOPERATOR TOACCESSTHEMETHODSANDVARIABLESOFTHENEW DOTOPERATORONTHE
VARIABLEDTOCALLBARK
OBJECTS4HISWILLALLBEMADESTUNNINGLYCLEARBYTHEFOLLOWINGEXAMPLES
DBARK 

 :ULWH\RXUFODVV
SETITSSIZEUSINGTHE
FODVV'RJ^ DOTOPERATOR
LQVWDQFHYD '2*
ULDEOHV DSIZE
LQWVL]H VL]H
6WULQJEUHHG EUHHG
QDPH
6WULQJQDPH
DPHWKRG EDUN
YRLGEDUN ^
6\VWHPRXWSULQWOQ ³5XII5XII´ 
`
`  :ULWHDWHVWHU 7HVW'ULYH FODVV
FODVV'RJ7HVW'ULYH^
KRG
V W  D  P DLQPHW RGH SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
X F
M
·U H  J R QQDSXHW[WVWHS 'RJWHVWFRGHJRHVKHUH
ZH LWLQWKHQ `
LQ `

,Q\RXUWHVWHUPDNHDQREMHFWDQGDFFHVV
 WKHREMHFW·VYDULDEOHVDQGPHWKRGV
FODVV'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RJG QHZ'RJ  PDNHD'RJR
EMHFW
GVL]H  XVHWKHGRWRSHUDWRU  
GRW WRG
U EDUN  WRVHWWKHVL]HRIWKH'
RJ
RSHUD ` DQGWRFDOOLWVEDU
N PHWKRG
,I\RXDOUHDG\KDYHVRPH22VDYY\
\RX·OONQRZZH·UHQRWXVLQJHQFDSVXODWLRQ
` :H·OOJHWWKHUHLQFKDSWHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

5ISQVOIVL\M[\QVO5W^QMWJRMK\[
FODVV0RYLH^
6WULQJWLWOH
6WULQJJHQUH
LQWUDWLQJ
YRLGSOD\,W ^
6\VWHPRXWSULQWOQ ³3OD\LQJWKHPRYLH´ 
`
`

SXEOLFFODVV0RYLH7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0RYLHRQH QHZ0RYLH 
RQHWLWOH ³*RQHZLWKWKH6WRFN´
RQHJHQUH ³7UDJLF´
RQHUDWLQJ 
0RYLHWZR QHZ0RYLH 
WZRWLWOH ³/RVWLQ&XELFOH6SDFH´
WZRJHQUH ³&RPHG\´
WZRUDWLQJ 
WZRSOD\,W 
0RYLHWKUHH QHZ0RYLH 
WKUHHWLWOH ³%\WH&OXE´
WKUHHJHQUH ³7UDJLFEXWXOWLPDWHO\XSOLIWLQJ´
WKUHHUDWLQJ 
`
`
6KDUSHQ \RXU SHQFLO

WLWOH
029,(
REMHFW  JHQUH
WLWOH
JHQUH UDWLQJ
UDWLQJ
SOD\,W
WLWOH

4HE-OVIE4EST$RIVECLASSCREATESOBJECTSINSTANCES OF REMHFW  JHQUH


THE-OVIECLASSANDUSESTHEDOTOPERATOR TOSETTHE
UDWLQJ
INSTANCEVARIABLESTOASPECIFICVALUE4HE-OVIE4EST$RIVE
CLASSALSOINVOKESCALLS AMETHODONONEOFTHEOBJECTS
&ILLINTHECHARTTOTHERIGHTWITHTHEVALUESTHETHREE WLWOH
OBJECTSHAVEATTHEENDOFMAIN 
REMHFW  JHQUH

UDWLQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWKHKHFNRXWRI PDLQ

9]QKS /M\W]\WNUIQV
!SLONGASYOUREINMAIN YOURENOTREALLYIN/BJECTVILLE)TSlNEFORATEST
PROGRAMTORUNWITHINTHEMAINMETHOD BUTINATRUE//APPLICATION YOU
NEEDOBJECTSTALKINGTOOTHEROBJECTS ASOPPOSEDTOASTATICMAIN METHOD
CREATINGANDTESTINGOBJECTS

<PM\ _W][M[WNUIQV"
NWRWHVW\RXUUHDOFODVV
NWRODXQFKVWDUW\RXU-DYDDSSOLFDWLRQ
!REAL*AVAAPPLICATIONISNOTHINGBUTOBJECTSTALKINGTOOTHEROBJECTS)NTHIS
CASE TALKINGMEANSOBJECTSCALLINGMETHODSONONEANOTHER/NTHEPREVIOUS
PAGE ANDINCHAPTER WELOOKATUSINGAMAIN METHODFROMASEPARATE
4EST$RIVECLASSTOCREATEANDTESTTHEMETHODSANDVARIABLESOFANOTHERCLASS)N
CHAPTERWELOOKATUSINGACLASSWITHAMAIN METHODTOSTARTTHEBALLROLLING
ONAREAL*AVAAPPLICATIONBYMAKINGOBJECTSANDTHENTURNINGTHOSEOBJECTS
*DPH/DXQFKHU
LOOSETOINTERACTWITHOTHEROBJECTS ETC
PDNH
!SA@SNEAKPREVIEW THOUGH OFHOWAREAL*AVAAPPLICATIONMIGHTBEHAVE *XHVV*VD
HERESALITTLEEXAMPLE"ECAUSEWERESTILLATTHEEARLIESTSTAGESOFLEARNING*AVA REMHFW DPH
WEREWORKINGWITHASMALLTOOLKIT SOYOULLlNDTHISPROGRAMALITTLECLUNKY PDLQ 6WULQJ>@DUJV WHOOV DQG
ANDINEFlCIENT9OUMIGHTWANTTOTHINKABOUTWHATYOUCOULDDOTOIMPROVE VWDUW*LWWR
IT ANDINLATERCHAPTERSTHATSEXACTLYWHATWELLDO$ONTWORRYIFSOMEOFTHE DPH
CODEISCONFUSINGTHEKEYPOINTOFTHISEXAMPLEISTHATOBJECTSTALKTOOBJECTS

<PM/]M[[QVO/IUM *XHVV*DPH
LQVWDQ
3UMMARY S YDULDEOHFVH
S IRUWK
SOD\HUVHWKUHH
4HEGUESSINGGAMEINVOLVESA@GAMEOBJECTANDTHREE@PLAYEROBJECTS4HEGAMEGEN
ERATESARANDOMNUMBERBETWEENAND ANDTHETHREEPLAYEROBJECTSTRYTOGUESS S
IT7EDIDNTSAYITWASAREALLYEXCITINGGAME
VWDUW*DPH
#LASSES
*XHVV*DPHFODVV3OD\HUFODVV*DPH/DXQFKHUFODVV
WKH
3OD\HU WKLVSQOXPEHU
4HE,OGIC
JXHVVHGD\HU
 4HE'AME,AUNCHERCLASSISWHERETHEAPPLICATIONSTARTSITHASTHEMAIN METHOD QXPEHU
 )NTHEMAIN METHOD A'UESS'AMEOBJECTISCREATED ANDITSSTART'AME METHOD PHWK
PDNLQJRGIRU
ISCALLED JXHVV

 4HE'UESS'AMEOBJECTSSTART'AME METHODISWHERETHEENTIREGAMEPLAYSOUT JXHVV D


)TCREATESTHREEPLAYERS THENhTHINKSvOFARANDOMNUMBERTHETARGETFORTHEPLAYERS
TOGUESS )TTHENASKSEACHPLAYERTOGUESS CHECKSTHERESULT ANDEITHERPRINTSOUT
INFORMATIONABOUTTHEWINNINGPLAYERS ORASKSTHEMTOGUESSAGAIN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

SXEOLFFODVV*XHVV*DPH^ *XHVV*DPHKDVW HH
3OD\HUS YDULDEOHVIRUWKHKU
W KU
LQVWDQFH
3OD\HUS REMHFWV HH3OD\HU
3OD\HUS
SXEOLFYRLGVWDUW*DPH ^ FUHDWHWKUHH3OD\
S QHZ3OD\HU 
DVVLJQWKHPWRWKHHUWRE
KU
MHFWVDQG
HH
S QHZ3OD\HU 
LQVWDQFHYDULDEOHV 3OD\HU
S QHZ3OD\HU 

LQWJXHVVS  GHFODUHWKUHHYDULDEOHVWRKROGWKH
LQWJXHVVS 
LQWJXHVVS 
WKUHHJXHVVHVWKH3OD\HUVP DNH
ERROHDQSLV5LJKW IDOVH
GHFODUHWKUHHYDULDEOHVWRKROGDWUXH
IDOVHEDVHGRQWKHSOD\HU·VDQVZHU RU
ERROHDQSLV5LJKW IDOVH
ERROHDQSLV5LJKW IDOVH
LQWWDUJHW1XPEHU  LQW  0DWKUDQGRP    PDNHD¶WDUJHW·QXPEHUWKDWWKH
6\VWHPRXWSULQWOQ ³,¶PWKLQNLQJRIDQXPEHUEHWZHHQDQG´  SOD\HUVKDYHWRJXHVV
ZKLOH WUXH ^
6\VWHPRXWSULQWOQ ³1XPEHUWRJXHVVLV³WDUJHW1XPEHU 
SJXHVV 
SJXHVV 
FDOOHDFKSOD\HU·VJXHVV PHWKRG
SJXHVV 
JXHVVS SQXPEHU
6\VWHPRXWSULQWOQ ³3OD\HURQHJXHVVHG³JXHVVS 
JXHVVS SQXPEHU JHWHDFKSOD\HU·VJXHVV WKHUHVXOWRI LU
6\VWHPRXWSULQWOQ ³3OD\HUWZRJXHVVHG³JXHVVS  JXHVV PHWKRGUXQQLQJ E\DFFHVVLQJWWKH
KH
JXHVVS SQXPEHU QXPEHUYDULDEOHRIHDFKSOD\HU
6\VWHPRXWSULQWOQ ³3OD\HUWKUHHJXHVVHG³JXHVVS 

LI JXHVVS WDUJHW1XPEHU ^
SLV5LJKW WUXH
` FKHFNHDFKSOD\HU·VJXHVVWRVHHLILWPDWFKHV
LI JXHVVS WDUJHW1XPEHU ^ WKHWDUJHWQXPEHU,IDSOD\HULVULJKW 
SLV5LJKW WUXH WKHQVHWWKDWSOD\HU·VYDULDEOHWREHWUXH
` UHPHPEHUZHVHWLWIDOVHE\GHIDXOW 
LI JXHVVS WDUJHW1XPEHU ^
SLV5LJKW WUXH
`
LISOD\HURQH25SOD\HUWZR25SOD\HUWKUHHLVULJ
LI SLV5LJKW__SLV5LJKW__SLV5LJKW ^
WKH__RSHUDWRUPHDQV25 KW

6\VWHPRXWSULQWOQ ³:HKDYHDZLQQHU´ 
6\VWHPRXWSULQWOQ ³3OD\HURQHJRWLWULJKW"³SLV5LJKW 
6\VWHPRXWSULQWOQ ³3OD\HUWZRJRWLWULJKW"³SLV5LJKW 
6\VWHPRXWSULQWOQ ³3OD\HUWKUHHJRWLWULJKW"³SLV5LJKW 
6\VWHPRXWSULQWOQ ³*DPHLVRYHU´ 
EUHDNJDPHRYHUVREUHDNRXWRIWKHORRS
RWKHUZLV
SOD\HUVIHRUVDWD\LQWKHORRSDQGDVN
`HOVH^
ZHPXVWNHHSJRLQJEHFDXVHQRERG\JRWLWULJKW
6\VWHPRXWSULQWOQ ³3OD\HUVZLOOKDYHWRWU\DJDLQ´ 
QRWKHUJXHVV WKH
`HQGLIHOVH
`HQGORRS
`HQGPHWKRG
`HQGFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
*XHVVLQJ*DPH

:]VVQVO\PM/]M[[QVO/IUM
SXEOLFFODVV3OD\HU^
LQWQXPEHU ZKHUHWKHJXHVVJRHV

SXEOLFYRLGJXHVV ^ /UTPUTITWILLBEDIFFERENTEACHTIMEYOURUNIT
QXPEHU  LQW  0DWKUDQGRP   
6\VWHPRXWSULQWOQ ³,¶PJXHVVLQJ³ )LOH(GLW:LQGRZ+HOS([SORGH

QXPEHU  MDYD*DPH/DXQFKHU
`
` ,¶PWKLQNLQJRIDQXPEHUEHWZHHQDQG
1XPEHUWRJXHVVLV
SXEOLFFODVV*DPH/DXQFKHU^ ,¶PJXHVVLQJ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ ,¶PJXHVVLQJ
*XHVV*DPHJDPH QHZ*XHVV*DPH 
JDPHVWDUW*DPH  ,¶PJXHVVLQJ
` 3OD\HURQHJXHVVHG
`
3OD\HUWZRJXHVVHG
3OD\HUWKUHHJXHVVHG
3OD\HUVZLOOKDYHWRWU\DJDLQ
-DYDWDNHVRXWWKH
*DUEDJH 1XPEHUWRJXHVVLV
,¶PJXHVVLQJ
%ACHTIMEANOBJECTISCREATED
IN*AVA ITGOESINTOANAREAOF ,¶PJXHVVLQJ
MEMORYKNOWNAS4HE(EAP ,¶PJXHVVLQJ
!LLOBJECTSˆNOMATTERWHEN WHERE
3OD\HURQHJXHVVHG
ORHOWTHEYRECREATEDnLIVEONTHE
HEAP"UTITSNOTJUSTANYOLDMEMORY 3OD\HUWZRJXHVVHG
HEAPTHE*AVAHEAPISACTUALLYCALLEDTHE 3OD\HUWKUHHJXHVVHG
'ARBAGE #OLLECTIBLE(EAP7HENYOU
CREATEANOBJECT *AVAALLOCATESMEMORY
3OD\HUVZLOOKDYHWRWU\DJDLQ
SPACEONTHEHEAPACCORDINGTOHOW 1XPEHUWRJXHVVLV
MUCHTHATPARTICULAROBJECTNEEDS!N ,¶PJXHVVLQJ
OBJECTWITH SAY INSTANCEVARIABLES
WILLPROBABLYNEEDMORESPACETHANAN ,¶PJXHVVLQJ
OBJECTWITHONLYTWOINSTANCEVARIABLES ,¶PJXHVVLQJ
"UTWHATHAPPENSWHENYOUNEEDTO 3OD\HURQHJXHVVHG
RECLAIMTHATSPACE(OWDOYOUGETAN
OBJECTOUTOFTHEHEAPWHENYOUREDONE 3OD\HUWZRJXHVVHG
WITHIT*AVAMANAGESTHATMEMORY 3OD\HUWKUHHJXHVVHG
FORYOU7HENTHE*6-CAN@SEETHATAN
:HKDYHDZLQQHU
OBJECTCANNEVERBEUSEDAGAIN THAT
OBJECTBECOMESELIGIBLEFORGARBAGE 3OD\HURQHJRWLWULJKW"WUXH
COLLECTION!NDIFYOURERUNNINGLOWON 3OD\HUWZRJRWLWULJKW"IDOVH
MEMORY THE'ARBAGE#OLLECTORWILLRUN
THROWOUTTHEUNREACHABLEOBJECTS AND 3OD\HUWKUHHJRWLWULJKW"IDOVH
FREEUPTHESPACE SOTHATTHESPACECAN *DPHLVRYHU
BEREUSED)NLATERCHAPTERSYOULLLEARN
MOREABOUTHOWTHISWORKS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HATIF)NEEDGLOBAL Q: 7HATISA*AVAPROGRAM
VARIABLESANDMETHODS(OW 7HATDOYOUACTUALLYDELIVER
DO)DOTHATIFEVERYTHINGHASTO
GOINACLASS
A: !*AVAPROGRAMISAPILE
0DNH LW 6WLF
A: 4HEREISNTACONCEPTOF
OFCLASSESORATLEASTONECLASS 
)NA*AVAAPPLICATION ONEOF
N
@GLOBALVARIABLESANDMETHODSIN THECLASSESMUSTHAVEAMAIN
!CLASSISLI
A*AVA//PROGRAM)NPRACTICAL METHOD USEDTOSTART UPTHE KEARECIP
E
USE HOWEVER THEREARETIMES PROGRAM3OASAPROGRAMMER /BJECTSA
RELIKE
WHENYOUWANTAMETHODOR YOUWRITEONEORMORECLASSES COOKIES
ACONSTANT TOBEAVAILABLE !NDTHOSECLASSESAREWHATYOU
TOANYCODERUNNINGINANY DELIVER)FTHEEND USERDOESNT
PARTOFYOURPROGRAM4HINK HAVEA*6- THENYOULLALSO
OFTHEUDQGRP METHODIN NEEDTOINCLUDETHATWITH
THE0HRASE / -ATICAPPITSA YOURAPPLICATIONSCLASSES
METHODTHATSHOULDBECALLABLE SOTHATTHEYCANRUNYOUR
FROMANYWHERE/RWHATABOUT PROGRAM4HEREAREANUMBER
ACONSTANTLIKEPI9OULLLEARN OFINSTALLERPROGRAMSTHAT
INCHAPTERTHATMARKING LETYOUBUNDLEYOURCLASSES
AMETHODASSXEOLFAND WITHAVARIETYOF*6-SSAY FOR
VWDWLFMAKESITBEHAVEMUCH DIFFERENTPLATFORMS ANDPUTITALL
LIKEA@GLOBAL!NYCODE INANY ONA#$ 2/-4HENTHEEND USER :MDD=LHGAFLK
CLASSOFYOURAPPLICATION CAN CANINSTALLTHECORRECTVERSIONOF
THE*6-ASSUMINGTHEYDONT
ƒ 2EMHFWRULHQWHGSURJUDPPLQJOHWV\RXH[WHQG
ACCESSAPUBLICSTATICMETHOD
ALREADYHAVEITONTHEIRMACHINE
DSURJUDPZLWKRXWKDYLQJWRWRXFKSUHYLRXVO\
!NDIFYOUMARKAVARIABLEAS
SXEOLF VWDWLF AND¿QDO WHVWHGZRUNLQJFRGH
nYOUHAVEESSENTIALLYMADEA ƒ $OO-DYDFRGHLVGHILQHGLQDFODVV
GLOBALLY AVAILABLECONSTANT
Q: 7HATIF)HAVEAHUNDRED ƒ $FODVVGHVFULEHVKRZWRPDNHDQREMHFWRI
WKDWFODVVW\SH$FODVVLVOLNHDEOXHSULQW
CLASSES/RATHOUSAND)SNT

Q: 4HENHOWISTHISOBJECT
THATABIGPAINTODELIVER
ALLTHOSEINDIVIDUALlLES
ƒ $QREMHFWFDQWDNHFDUHRILWVHOI\RXGRQ·W
KDYHWRNQRZRUFDUHKRZWKHREMHFWGRHVLW
ORIENTEDIFYOUCANSTILLMAKE #AN)BUNDLETHEMINTOONE
ƒ $QREMHFWNQRZVWKLQJVDQGGRHVWKLQJV
GLOBALFUNCTIONSANDGLOBAL !PPLICATION4HING
DATA ƒ 7KLQJVDQREMHFWNQRZVDERXWLWVHOIDUHFDOOHG
LQVWDQFHYDULDEOHV7KH\UHSUHVHQWWKHVWDWH

A: A: 9ES ITWOULDBEABIG RIDQREMHFW


&IRSTOFALL EVERYTHING PAINTODELIVERAHUGEBUNCHOF ƒ 7KLQJVDQREMHFWGRHVDUHFDOOHGPHWKRGV
IN*AVAGOESINACLASS3OTHE INDIVIDUALFILESTOYOUREND USERS 7KH\UHSUHVHQWWKHEHKDYLRURIDQREMHFW
CONSTANTFORPIANDTHEMETHOD BUTYOUWONTHAVETO9OUCAN
FORUDQGRP ALTHOUGHBOTH PUTALLOFYOURAPPLICATIONFILES ƒ :KHQ\RXFUHDWHDFODVV\RXPD\DOVRZDQW
PUBLICANDSTATIC AREDEFINED INTOA*AVA!RCHIVEnAJARFILEn WRFUHDWHDVHSDUDWHWHVWFODVVZKLFK\RX·OO
WITHINTHE0DWKCLASS!NDYOU THATSBASEDONTHEPKZIPFORMAT XVHWRFUHDWHREMHFWVRI\RXUQHZFODVVW\SH
MUSTKEEPINMINDTHATTHESE )NTHEJARFILE YOUCANINCLUDE ƒ $FODVVFDQLQKHULWLQVWDQFHYDULDEOHVDQG
STATICGLOBAL LIKE THINGSARETHE ASIMPLETEXTFILEFORMATTEDAS PHWKRGVIURPDPRUHDEVWUDFWVXSHUFODVV
EXCEPTIONRATHERTHANTHERULE SOMETHINGCALLEDAMANIFEST THAT
IN*AVA4HEYREPRESENTAVERY DEFINESWHICHCLASSINTHATJAR ƒ $WUXQWLPHD-DYDSURJUDPLVQRWKLQJPRUH
SPECIALCASE WHEREYOUDONT HOLDSTHEMAIN METHODTHAT WKDQREMHFWV¶WDONLQJ·WRRWKHUREMHFWV
HAVEMULTIPLEINSTANCESOBJECTS SHOULDRUN

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH%HWKH&RPSLOHU

1dQ^OU_Q "%THECOMPILER
(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRI
WKHVHILOHVZLOOFRPSLOH
,IWKH\ZRQ·WFRPSLOH
KRZZRXOG\RXIL[WKHP
DQGLIWKH\GRFRPSLOH
ZKDWZRXOGEHWKHLURXWSXW"

 
FODVV7DSH'HFN^
$ Licensed by
ERROHDQFDQ5HFRUG IDOVH

YRLGSOD\7DSH ^
Eduard Simons  
FODVV'9'3OD\HU^
%

104038
6\VWHPRXWSULQWOQ ´WDSHSOD\LQJµ  ERROHDQFDQ5HFRUG IDOVH
`
YRLGUHFRUG'9' ^
YRLGUHFRUG7DSH ^ 6\VWHPRXWSULQWOQ ´'9'UHFRUGLQJµ 
6\VWHPRXWSULQWOQ ´WDSHUHFRUGLQJµ  `
` `
`
FODVV'9'3OD\HU7HVW'ULYH^
FODVV7DSH'HFN7HVW'ULYH^ SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'9'3OD\HUG QHZ'9'3OD\HU 
WFDQ5HFRUG WUXH GFDQ5HFRUG WUXH
WSOD\7DSH  GSOD\'9' 

LI WFDQ5HFRUG WUXH ^ LI GFDQ5HFRUG WUXH ^


 WUHFRUG7DSH   GUHFRUG'9' 
` `
` `
` `

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

Code Magnets
1dQ^OU_Q !*AVAPROGRAMISALLSCRAMBLEDUPON
THEFRIDGE#ANYOURECONSTRUCTTHE
CODESNIPPETSTOMAKEAWORKING*AVA
PROGRAMTHATPRODUCESTHEOUTPUTLISTED GSOD\6QDUH 
BELOW3OMEOFTHECURLYBRACESFELLON
THEFLOORANDTHEYWERETOOSMALLTOPICK 'UXP.LWG QHZ'UXP.LW 
UP SOFEELFREETOADDASMANYOFTHOSE
ASYOUNEED
 WUXH
ERROHDQWRS+DW
WUXH
ERROHDQVQDUH

YRLGSOD\6QDUH ^
EDEDQJµ 
6\VWHPRXWSULQWOQ ´EDQJEDQJ
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

L
I GVQ
DUH WUXH 
 ^
GSOD\
6QDUH
` 

GVQDUH IDOVH

FODVV'UXP.LW7HVW'ULYH^

DW 
SO D\7RS+
G
FODVV'UXP.LW^

YRLGSOD
\7RS+DW ^
6\VWHP
RXWSULQWOQ
´GLQJGLQJ
)LOH(GLW:LQGRZ+HOS'DQFH
` GDGLQJµ 
MDYD'UXP.LW7HVW'ULYH
EDQJEDQJEDEDQJ
GLQJGLQJGDGLQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH3RRO3X]]OH

SXEOLFFODVV(FKR7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
(FKRH QHZ(FKR 
BBBBBBBBBBBBBBBBBBBBBBBBB
3RRO3X]]OH LQW[ 
9OURJOBISTOTAKECODESNIPPETSFROM ZKLOH BBBBBBBBBBB ^
THEPOOLANDPLACETHEMINTOTHE
BLANKLINESINTHECODE9OUMAY HKHOOR 
USETHESAMESNIPPETMORETHAN BBBBBBBBBBBBBBBBBBBBBBBBBB
ONCE ANDYOUWONTNEEDTOUSE
LI BBBBBBBBBBBB ^
ALLTHESNIPPETS9OURGOALISTO
MAKECLASSESTHATWILLCOMPILEAND HFRXQW HFRXQW
RUNANDPRODUCETHEOUTPUTLISTED `
LI BBBBBBBBBBBB ^
/UTPUT HFRXQW HFRXQWHFRXQW
)LOH(GLW:LQGRZ+HOS,PSORGH `
MDYD(FKR7HVW'ULYH [ [
KHOORRRR `
KHOORRRR 6\VWHPRXWSULQWOQ HFRXQW 
KHOORRRR `
KHOORRRR `


FODVVBBBBBBBBBBBB^
LQWBBBBBBBBB 
YRLGBBBBBBBBBBB^
"ONUS1UESTION
6\VWHPRXWSULQWOQ ´KHOORRRR´ 
)FTHELASTLINEOFOUTPUTWAS `
INSTEADOFHOWWOULD `
YOUCOMPLETETHEPUZZLE

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE
X X
Y X %CHO
E X 4ESTER
COUNT X ECHO EE
EE  COUNT %CHOE
ECOUNT  HELLO %CHOEE
%CHOENEW%CHO  X
ECOUNTCOUNT 
X
ECOUNTECOUNT 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

!BUNCHOF*AVACOMPONENTS INFULLCOSTUME AREPLAYINGAPARTY


GAME h7HOAM)v4HEYGIVEYOUACLUE ANDYOUTRYTOGUESSWHO
THEYARE BASEDONWHATTHEYSAY!SSUMETHEYALWAYSTELLTHETRUTH
ABOUTTHEMSELVES)FTHEYHAPPENTOSAYSOMETHINGTHATCOULDBETRUE
FORMORETHANONEOFTHEM CHOOSEALLFORWHOMTHATSENTENCECAN

P , " APPLY&ILLINTHEBLANKSNEXTTOTHESENTENCEWITHTHENAMESOFONEOR
MOREATTENDEES4HEFIRSTONESONUS

KR D 4ONIGHTSATTENDEES
: #LASS-ETHOD/BJECT)NSTANCEVARIABLE

,DPFRPSLOHGIURPDMDYDILOH FODVV
0\LQVWDQFHYDULDEOHYDOXHVFDQ
EHGLIIHUHQWIURPP\EXGG\·V
YDOXHV

,EHKDYHOLNHDWHPSODWH

,OLNHWRGRVWXII

,FDQKDYHPDQ\PHWKRGV

,UHSUHVHQW¶VWDWH·

,KDYHEHKDYLRUV

,DPORFDWHGLQREMHFWV

,OLYHRQWKHKHDS

,DPXVHGWRFUHDWHREMHFWLQVWDQFHV

0\VWDWHFDQFKDQJH

,GHFODUHPHWKRGV

,FDQFKDQJHDWUXQWLPH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

%HWKH&RPSLOHU
1dQ^OU_Q FODVV7DSH'HFN^
ERROHDQFDQ5HFRUG IDOVH
%XERCISE3OLUTIONS YRLGSOD\7DSH ^
6\VWHPRXWSULQWOQ ´WDSHSOD\LQJµ 
$ `
YRLGUHFRUG7DSH ^
6\VWHPRXWSULQWOQ ´WDSHUHFRUGLQJµ 
`
`

&RGH0DJQHWV FODVV7DSH'HFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
FODVV'UXP.LW^ 
7DSH'HFNW QHZ7DSH'HFN  
ERROHDQWRS+DW WUXH WFDQ5HFRUG WUXH
ERROHDQVQDUH WUXH WSOD\7DSH 

YRLGSOD\7RS+DW ^ LI WFDQ5HFRUG WUXH ^


6\VWHPRXWSULQWOQ ´GLQJGLQJGDGLQJµ   WUHFRUG7DSH 
` `
`:H·YHJRWWKHWHPSODWHQRZZHKDYH
YRLGSOD\6QDUH ^ `WRPDNHDQREMHFW
6\VWHPRXWSULQWOQ ´EDQJEDQJEDEDQJµ 
`
`
FODVV'9'3OD\HU^
ERROHDQFDQ5HFRUG IDOVH
FODVV'UXP.LW7HVW'ULYH^
YRLGUHFRUG'9' ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ ´'9'UHFRUGLQJµ 

`
'UXP.LWG QHZ'UXP.LW 
YRLGSOD\'9'  ^
GSOD\6QDUH 
6\VWHPRXWSULQWOQ ´'9'SOD\LQJµ 
GVQDUH IDOVH
`
GSOD\7RS+DW 
`
LI GVQDUH WUXH ^
FODVV'9'3OD\HU7HVW'ULYH^
GSOD\6QDUH 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
`
'9'3OD\HUG QHZ'9'3OD\HU 
`
` % GFDQ5HFRUG WUXH
GSOD\'9' 
LI GFDQ5HFRUG WUXH ^
)LOH(GLW:LQGRZ+HOS'DQFH
 GUHFRUG'9' 
MDYD'UXP.LW7HVW'ULYH
`
EDQJEDQJEDEDQJ
`7KHOLQHGSOD\'9'  ZRXOGQ·W
GLQJGLQJGDGLQJ
`FRPSLOHZLWKRXWDPHWKRG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FODVVHVDQGREMHFWV

0UZZLE3OLUTIONS

8WWT8]bbTM
SXEOLFFODVV(FKR7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 7HOAM)
(FKRH QHZ(FKR 
(FKRH QHZ(FKR  WKHFRUUHFWDQVZHU ,DPFRPSLOHGIURPDMDYDILOH FODVV
RU 0\LQVWDQFHYDULDEOHYDOXHVFDQEH 
(FKRH HLVWKHERQXVDQVZHU GLIIHUHQWIURPP\EXGG\·VYDOXHV REMHFW
LQW[ 
ZKLOH [ ^
,EHKDYHOLNHDWHPSODWH FODVV
HKHOOR  ,OLNHWRGRVWXII REMHFWPHWKRG
HFRXQW HFRXQW
LI [  ^ ,FDQKDYHPDQ\PHWKRGV FODVVREMHFW
HFRXQW HFRXQW ,UHSUHVHQW¶VWDWH· LQVWDQFHYDULDEOH
`
LI [! ^
,KDYHEHKDYLRUV REMHFWFODVV
HFRXQW HFRXQWHFRXQW ,DPORFDWHGLQREMHFWV PHWKRGLQVWDQFHYDULDEOH
`
[ [ ,OLYHRQWKHKHDS REMHFW
` ,DPXVHGWRFUHDWHREMHFW
6\VWHPRXWSULQWOQ HFRXQW  LQVWDQFHV FODVV
`
` 0\VWDWHFDQFKDQJH REMHFWLQVWDQFHYDULDEOH
,GHFODUHPHWKRGV FODVV
FODVV(FKR^
LQWFRXQW  ,FDQFKDQJHDWUXQWLPH REMHFWLQVWDQFHYDULDEOH
YRLGKHOOR  ^
6\VWHPRXWSULQWOQ ´KHOORRRR´  1RWHERWKFODVVHVDQGREMHFWVDUHVDLGWRKDYHVWDWHDQGEHKDYLRU
` 7KH\·UHGHÀQHGLQWKHFODVVEXWWKHREMHFWLVDOVRVDLGWR¶KDYH·
` WKHP5LJKWQRZZHGRQ·WFDUHZKHUHWKH\WHFKQLFDOO\OLYH

)LOH(GLW:LQGRZ+HOS$VVLPLODWH
MDYD(FKR7HVW'ULYH
KHOORRRR
KHOORRRR
KHOORRRR
KHOORRRR


\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

.QRZ<RXU9DULDEOHV

9DULDEOHVFRPHLQWZRIODYRUVSULPLWLYHDQGUHIHUHQFH3OFARYOUVE
USEDVARIABLESINTWOPLACESˆASOBJECTVWDWHINSTANCEVARIABLES ANDASORFDOVARIABLES
VARIABLESDECLAREDWITHINAMETHOD ,ATER WELLUSEVARIABLESASDUJXPHQWVVALUESSENTTOA
METHODBYTHECALLINGCODE ANDASUHWXUQW\SHVVALUESSENTBACKTOTHECALLEROFTHEMETHOD 
9OUVESEENVARIABLESDECLAREDASSIMPLESULPLWLYHINTEGERVALUESTYPELQW 9OUVESEEN
VARIABLESDECLAREDASSOMETHINGMOREFRPSOH[LIKEA3TRINGORANARRAY"UTWKHUH·VJRWWDEH
PRUHWROLIHTHANINTEGERS 3TRINGS ANDARRAYS7HATIFYOUHAVEA0ET/WNEROBJECTWITHA$OG
INSTANCEVARIABLE/RA#ARWITHAN%NGINE)NTHISCHAPTERWELLUNWRAPTHEMYSTERIESOF*AVA
TYPESANDLOOKATWHATYOUCANDECLAREASAVARIABLE WHATYOUCANPUTINAVARIABLE ANDWHATYOU
CANDOWITHAVARIABLE!NDWELLFINALLYSEEWHATLIFEISTRULYLIKEONTHEGARBAGE COLLECTIBLEHEAP

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHFODULQJDYDULDEOH

,MKTIZQVOI^IZQIJTM
*AVACARESABOUTTYPE)TWONTLETYOUDO
SOMETHINGBIZARREANDDANGEROUSLIKESTUFFA
'IRAFFEREFERENCEINTOA2ABBITVARIABLEˆWHAT
HAPPENSWHENSOMEONETRIESTOASKTHESO CALLED
2ABBITTOKRS !NDITWONTLETYOUPUTA
mOATINGPOINTNUMBERINTOANINTEGERVARIABLE
UNLESSYOUACKNOWLEDGETOTHECOMPILERTHATYOU
KNOWYOUMIGHTLOSEPRECISIONLIKE EVERYTHING
AFTERTHEDECIMALPOINT 
4HECOMPILERCANSPOTMOSTPROBLEMS
5DEELWKRSSHU QHZ*LUDIIH 
\SH
D Y D  FD U H VDERXWW DIIH $ONTEXPECTTHATTOCOMPILE4HANKFULLY
- SXWD*LU
<RXFDQ·W LWYDULDEOH &ORALLTHISTYPE SAFETYTOWORK YOUMUSTDECLARE
LQD5DEE THETYPEOFYOURVARIABLE)SITANINTEGERA$OG
!SINGLECHARACTER6ARIABLESCOMEINTWOmAVORS
PRIMITIVEANDOBJECTREFERENCE0RIMITIVESHOLD
FUNDAMENTALVALUESTHINKSIMPLEBITPATTERNS
INCLUDINGINTEGERS BOOLEANS ANDmOATINGPOINT
NUMBERS/BJECTREFERENCESHOLD WELL REFERENCES
TOOBJECTSGEE DIDNTTHATCLEARITUP
7ELLLOOKATPRIMITIVESlRSTANDTHENMOVE
ONTOWHATANOBJECTREFERENCEREALLYMEANS
"UTREGARDLESSOFTHETYPE YOUMUSTFOLLOWTWO
DECLARATIONRULES

YDULDEOHVPXVWKDYHDW\SH
"ESIDESATYPE AVARIABLENEEDSANAME SOTHAT
YOUCANUSETHATNAMEINCODE

YDULDEOHVPXVWKDYHDQDPH

LQWFRXQW
W\SH QDPH

.OTE7HENYOUSEEASTATEMENTLIKEhANOBJECT
OFTYPE8v THINKOFTYPEANDCLASSASSYNONYMS
7ELLRElNETHATALITTLEMOREINLATERCHAPTERS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

¹1¼LTQSMILW]JTMUWKPIVWUISMQ\IVQV\º 3ULPLWLYH7\SHV
7HENYOUTHINKOF*AVAVARIABLES THINKOFCUPS#OFFEECUPS TEACUPS GIANT 7\SH%LW'HSWK 9DOXH5DQJH
CUPSTHATHOLDLOTSANDLOTSOFBEER THOSEBIGCUPSTHEPOPCORNCOMESINAT ERROHDQDQGFKDU
THEMOVIES CUPSWITHCURVY SEXYHANDLES ANDCUPSWITHMETALLICTRIMTHAT
YOULEARNEDCANNEVER EVERGOINTHEMICROWAVE BOOLEAN*6- SPECIFIC TRUEORFALSE
!VARIABLEISJUSTACUP!CONTAINER)THOLDSSOMETHING CHAR BITS TO

)THASASIZE ANDATYPE)NTHISCHAPTER WEREGOINGTOLOOKlRSTATTHE QXPHULF DOODUHVLJQHG


VARIABLESCUPS THATHOLDPRIMITIVES THENALITTLELATERWELLLOOKATCUPS LQWHJHU
THATHOLDREFERENCESTOOBJECTS3TAYWITHUSHEREONTHEWHOLECUPANALOGYˆAS
BYTE BITS TO
SIMPLEASITISRIGHTNOW ITLLGIVEUSACOMMONWAYTOLOOKATTHINGSWHEN
THEDISCUSSIONGETSMORECOMPLEX!NDTHATLLHAPPENSOON SHORT BITS TO

0RIMITIVESARELIKETHECUPSTHEYHAVEATTHECOFFEEHOUSE)FYOUVEBEENTOA
3TARBUCKS YOUKNOWWHATWERETALKINGABOUTHERE4HEYCOMEINDIFFERENT INT BITS 
SIZES ANDEACHHASANAMELIKE@SHORT @TALL AND h)DLIKEA TO
@GRANDEMOCHAHALF CAFFWITHEXTRAWHIPPEDCREAMv LONG BITS HUGETOHUGE
9OUMIGHTSEETHECUPSDISPLAYEDONTHECOUNTER
SOYOUCANORDERAPPROPRIATELY ÀRDWLQJSRLQW
FLOAT BITS VARIES
DOUBLE BITS VARIES

VPDOOVKRUWWDOOJUDQGH 3ULPLWLYHGHFODUDWLRQV
ZLWKDVVLJQPHQWV
INTX
!NDIN*AVA PRIMITIVESCOMEINDIFFERENTSIZES ANDTHOSESIZES
HAVENAMES7HENYOUDECLAREAVARIABLEIN*AVA X
YOUMUSTDECLAREITWITHASPECIlCTYPE4HE BYTEB
FOURCONTAINERSHEREAREFORTHEFOUR BOOLEANIS&UNTRUE
INTEGERPRIMITIVESIN*AVA
DOUBLED
CHARC@F
ORQJLQWVKRUWE\WH INTZX
%ACHCUPHOLDSAVALUE SOFOR*AVAPRIMITIVES RATHERTHANSAYING h)DLIKEA BOOLEANIS0UNK2OCK
TALLFRENCHROASTv YOUSAYTOTHECOMPILER h)DLIKEANINTVARIABLEWITHTHE
IS0UNK2OCKFALSE
NUMBERPLEASEv%XCEPTFORONETINYDIFFERENCEIN*AVAYOUALSOHAVETO
GIVEYOURCUPANAME3OITSACTUALLY h)DLIKEANINTPLEASE WITHTHEVALUE BOOLEANPOWER/N
OF ANDNAMETHEVARIABLEHEIGHTv%ACHPRIMITIVEVARIABLEHASAlXED POWER/NIS&UN
NUMBEROFBITSCUPSIZE 4HESIZESFORTHESIXNUMERICPRIMITIVESIN*AVA LONGBIG
ARESHOWNBELOW
FLOATFF

RWWDKDYHWKDW
1RWHWKH¶I·* FDXVH-DYDWKLQNV
ZLWKD
IORDWEH WLV
DIORDWLQJSRLQ
E\WHVKRUWLQWORQJ  ÁRDWGRXEOH DQ\W ZLWK \RXXVH¶I·
KL QJ
0).+*.,+*., DGRXEOHXQOHVV
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHDVVLJQPHQW

AW]ZMITTaLWV¼\_IV\\W[XQTT\PI\ 6KDUSHQ \RXU SHQFLO


"ESURETHEVALUECANlTINTOTHEVARIABLE
9OUCANTPUTALARGEVALUEINTOA
SMALLCUP 4HECOMPILERWONTLETYOUPUT
AVALUEFROMALARGECUPINTO
7ELL /+ YOUCAN BUTYOULL ASMALLONE"UTWHATABOUT
LOSESOME9OULLGET ASWESAY THEOTHERWAYˆPOURINGA
SPILLAGE4HECOMPILERTRIESTO SMALLCUPINTOABIGONE.O
HELPPREVENTTHISIFITCANTELL PROBLEM
FROMYOURCODETHATSOMETHINGS "ASEDONWHATYOUKNOW
NOTGOINGTOlTINTHECONTAINER ABOUTTHESIZEANDTYPEOFTHE
VARIABLECUP YOUREUSING PRIMITIVEVARIABLES SEEIFYOU
CANFIGUREOUTWHICHOFTHESE
&OREXAMPLE YOUCANTPOURAN

Licensed by
ARELEGALANDWHICHARENT
INT FULLOFSTUFFINTOABYTE SIZED 7EHAVENTCOVEREDALLTHE
CONTAINER ASFOLLOWS RULESYET SOONSOMEOFTHESE
LQW[  YOULLHAVETOUSEYOURBEST
JUDGMENT4IP4HECOMPILER
E\WHE [

Eduard Simons
ALWAYSERRSONTHESIDEOF
SAFETY
ZRQ¶WZRUN

&ROMTHEFOLLOWINGLIST #IRCLE
THESTATEMENTSTHATWOULDBE
7HYDOESNTTHISWORK YOUASK!FTERALL THEVALUEOFXIS ANDISDElNITELY

104038
LEGALIFTHESELINESWEREINA
SMALLENOUGHTOlTINTOABYTE9OUKNOWTHAT ANDWEKNOWTHAT BUTALLTHE SINGLEMETHOD
COMPILERCARESABOUTISTHATYOURETRYINGTOPUTABIGTHINGINTOASMALLTHING
ANDTHERESTHEPOSSIBILITYOFSPILLING$ONTEXPECTTHECOMPILERTOKNOWWHATTHE LQW[ 
VALUEOFXIS EVENIFYOUHAPPENTOBEABLETOSEEITLITERALLYINYOURCODE ERROHDQERR [
9OUCANASSIGNAVALUETOAVARIABLEINONEOFSEVERALWAYSINCLUDING
LQWJ 
NTYPEALITERALVALUEAFTERTHEEQUALSSIGNX IS'OODTRUE ETC
LQW\ J
NASSIGNTHEVALUEOFONEVARIABLETOANOTHERXY
\ \
NUSEANEXPRESSIONCOMBININGTHETWOXY 
)NTHEEXAMPLESBELOW THELITERALVALUESAREINBOLDITALICS VKRUWV

LQWVL]H   GHFODUHDQLQWQDPHGVL]HDVVLJQLWWKHYDOXH V \


FKDULQLWLDO µM¶ GHFODUHDFKDUQDPHGLQLWLDODVVLJQLWWKHYDOXH¶M· E\WHE 
GRXEOHG  GHFODUHDGRXEOHQDPHGGDVVLJQLWWKHYDOXH
E\WHY E
ERROHDQLV&UD]\  GHFODUHDERROHDQQDPHGLV&UD]\ QRDVVLJQPHQW
VKRUWQ 
LV&UD]\ WUXH  DVVLJQWKHYDOXHWUXHWRWKHSUHYLRXVO\GHFODUHGLV&UD]\
LQW\ [  GHFODUHDQLQWQDPHG\DVVLJQLWWKHYDOXHWKDWLVWKHVXP Y Q
RIZKDWHYHU[LVQRZSOXV
E\WHN 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

*IKSI_IaNZWU\PI\SMa_WZL
9OUKNOWYOUNEEDANAMEANDATYPEFORYOURVARIABLES
9OUALREADYKNOWTHEPRIMITIVETYPES
"UTWHATCANYOUUSEASNAMES4HERULESARESIMPLE9OU
CANNAMEACLASS METHOD ORVARIABLEACCORDINGTOTHE
WLFN
0DNH LW 6
FOLLOWINGRULESTHEREALRULESARESLIGHTLYMOREmEXIBLE
BUTTHESEWILLKEEPYOUSAFE 

YPESARE ATDOUB
LE
Q ,WPXVWVWDUWZLWKDOHWWHUXQGHUVFRUH B RU RI MITIVET
GROODUVLJQ  <RXFDQ·WVWDUWDQDPHZLWKD 4HEE IG H T P
O RT I N T LONGFLO
TESH HEM
CHARBY BERINGT
QXPEHU BOOLEAN O N IC F O RREMEM
M
SAMNE RGE
Q $IWHUWKHÀUVWFKDUDFWHU\RXFDQXVHQXPEHUVDV !NDHERE )NGEST,A
ZHOO-XVWGRQ·WVWDUWLWZLWKDQXPEHU A RS 3 H OULDNT
L"E
"E#AREFU ER
Q ,WFDQEHDQ\WKLQJ\RXOLNHVXEMHFWWRWKRVHWZR G S VENBETT
& URR Y$O O W N I T LLSTICKE
UXOHVMXVWVRORQJDVLWLVQ·WRQHRI-DYD·VUHVHUYHG OUR
AKEUPY
)FYOUM ?
ZRUGV ,?&?$
? # ? " ?3?)?
THERTHINGS THATTHECOMPILERRECOGNIZES "
AREKEYWORDSANDO
!NDIFYOUREALLYWANTTOPLAYCONFUSE A COMPILER THENJUSTTRY
USINGARESERVEDWORDASANAME
9OUVEALREADYSEENSOMERESERVEDWORDSWHENWELOOKEDAT
1RPDWWHUZKDW
WRITINGOURlRSTMAINCLASS GR Q·W \RXKHDUGRQRW,UHSHDW
IRU\RXVHDQ\RI GRQRWOHWPHLQJHVW
XURZQ WKHVH DQRWKHUODUJHIXUU\GRJ
SXEOLFVWDWLFYRLG QDPHV
!NDTHEPRIMITIVETYPESARERESERVEDASWELL

ERROHDQFKDUE\WHVKRUWLQWORQJÀRDWGRXEOH
"UTTHEREAREALOTMOREWEHAVENTDISCUSSEDYET%VENIFYOUDONT
NEEDTOKNOWWHATTHEYMEAN YOUSTILLNEEDTOKNOWYOUCANTUSE
@EMYOURSELF$ONOTnUNDERANYCIRCUMSTANCESnTRYTOMEMORIZETHESE
NOW4OMAKEROOMFORTHESEINYOURHEAD YOUDPROBABLYHAVETO
LOSESOMETHINGELSE,IKEWHEREYOURCARISPARKED$ONTWORRY BY
THEENDOFTHEBOOKYOULLHAVEMOSTOFTHEMDOWNCOLD

<PQ[\IJTMZM[MZ ^ML
Zggd]Yf Zql] [`Yj \gmZd] ÛgYl afl dgf_ k`gjl hmZda[ hjanYl]
hjgl][l]\ YZkljY[l ÚfYd fYlan] klYla[ klja[l^h kqf[`jgfar]\ ljYfka]fl ngdYlad] a^
]dk] \g o`ad] koal[` [Yk] \]^Ymdl ^gj Zj]Yc [gflafm] Ykk]jl
[dYkk ]pl]f\k aehd]e]flk aehgjl afklYf[]g^ afl]j^Y[] f]o hY[cY_] kmh]j l`ak
[Yl[` ÚfYddq ljq l`jgo l`jgok j]lmjf nga\ [gfkl _glg ]fme
-DYD¶VNH\ZRUGVDQGRWKHUUHVHUYHGZRUGV LQQRXVHIXORUGHU ,I\RXXVHWKHVHIRUQDPHVWKHFRPSLOHUZLOOEHYHU\YHU\XSVHW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWUHIHUHQFHV

+WV\ZWTTQVOaW]Z,WOWJRMK\
9OUKNOWHOWTODECLAREAPRIMITIVEVARIABLEANDASSIGNITA
VALUE"UTNOWWHATABOUTNON PRIMITIVEVARIABLES)NOTHER
WORDS WHATABOUTOBJECTS 'RJG QHZ'RJ 

N 7KHUHLVDFWXDOO\QRVXFKWKLQJDVDQREMHFWYDULDEOH

G EDUN 
N 7KHUH·VRQO\DQREMHFWUHIHUHQFHYDULDEOH WKLQNRIWKLV
N $QREMHFWUHIHUHQFHYDULDEOHKROGVELWVWKDWUHSUHVHQWD
ZD\WRDFFHVVDQREMHFW OLNHWKLV
N ,WGRHVQ·WKROGWKHREMHFWLWVHOIEXWLWKROGVVRPHWKLQJ
OLNHDSRLQWHU2UDQDGGUHVV([FHSWLQ-DYDZHGRQ·W
UHDOO\NQRZZKDWLVLQVLGHDUHIHUHQFHYDULDEOH:HGR
NQRZWKDWZKDWHYHULWLVLWUHSUHVHQWVRQHDQGRQO\RQH
REMHFW$QGWKH-90NQRZVKRZWRXVHWKHUHIHUHQFHWR
JHWWRWKHREMHFW

9OUCANTSTUFFANOBJECTINTOAVARIABLE7EOFTENTHINKOF
ITTHATWAYWESAYTHINGSLIKE h)PASSEDTHE3TRINGTOTHE
3YSTEMOUTPRINTLN METHODv/R h4HEMETHODRETURNSA$OGv
OR h)PUTANEW&OOOBJECTINTOTHEVARIABLENAMEDMY&OOv
"UTTHATSNOTWHATHAPPENS4HEREARENTGIANT
EXPANDABLECUPSTHATCANGROWTOTHESIZEOFANY 7KLQNRID'RJ
OBJECT/BJECTSLIVEINONEPLACEANDONEPLACE UHIHUHQFHYDULDEOHDV
ONLYˆTHEGARBAGECOLLECTIBLEHEAP9OULL
LEARNMOREABOUTTHATLATERINTHISCHAPTER D'RJUHPRWHFRQWURO
!LTHOUGHAPRIMITIVEVARIABLEISFULLOF <RXXVHLWWRJHWWKH
BITSREPRESENTINGTHEACTUALVALUEOFTHE
REMHFWWRGRVRPHWKLQJ
VARIABLE ANOBJECTREFERENCEVARIABLEISFULL
OFBITSREPRESENTINGAWAYTOGETTOTHE LQYRNHPHWKRGV 
OBJECT
9OUUSETHEDOTOPERATOR
ONAREFERENCEVARIABLETOSAY
hUSETHETHINGBEFORETHEDOTTO
GETMETHETHINGAFTERTHEDOTv&OR
EXAMPLE
P\'RJEDUN 
MEANS hUSETHEOBJECTREFERENCEDBYTHEVARIABLEMY$OGTO
INVOKETHEBARK METHODv7HENYOUUSETHEDOTOPERATORON
ANOBJECTREFERENCEVARIABLE THINKOFITLIKEPRESSINGABUTTON
ONTHEREMOTECONTROLFORTHATOBJECT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

7KHVWHSVRIREMHFW
GHFODUDWLRQFUHDWLRQDQG
DVVLJQPHQW

 

E\WHVKRUWLQWORQJ UHIHUHQFH
 
'RJP\'RJ QHZ'RJ 
0).+*., Zal\]hl`fglj]d]nYfl!

)VWJRMK\ZMNMZMVKMQ[R][\ 'HFODUHDUHIHUHQFH

IVW\PMZ^IZQIJTM^IT]M YDULDEOH

3OMETHINGTHATGOESINACUP 'RJP\'RJ QHZ'RJ 


/NLYTHISTIME THEVALUEISAREMOTECONTROL 4ELLSTHE*6-TOALLOCATESPACEFORA
REFERENCEVARIABLE ANDNAMESTHAT
8ZQUQ\Q^M>IZQIJTM VARIABLEMY$OG4HEREFERENCEVARIABLE eq<g_

  IS FOREVER OFTYPE$OG)NOTHERWORDS
E\WH[   AREMOTECONTROLTHATHASBUTTONSTO
4HEBITSREPRESENTINGGO
SULPLWLYH CONTROLA$OG BUTNOTA#ATORA"UTTON 'RJ
INTOTHEVARIABLE 
YDOXH ORA3OCKET
E\WH

:MNMZMVKM>IZQIJTM  &UHDWHDQREMHFW
HFW

'RJP\'RJ QHZ'RJ 
EM

'RJP\'RJ QHZ'RJ  'RJR


4HEBITSREPRESENTINGAWAYTOGETTO 4ELLSTHE*6-TOALLOCATESPACEFORA
THE$OGOBJECTGOINTOTHEVARIABLE NEW$OGOBJECTONTHEHEAPWELL
UHIHUHQFH LEARNALOTMOREABOUTTHATPROCESS
4HE$OGOBJECTITSELFDOESNOTGOINTO YDOXH ESPECIALLYINCHAPTER
THEVARIABLE 'RJ 'RJREMHFW

Pbmaikbfbmbo^oZkbZ[e^l%ma^oZen^h_ma^oZkb&
Z[e^bl'''ma^oZen^!.%&+/'0%Z"'  /LQNWKHREMHFW
Pbmak^_^k^g\^oZkbZ[e^l%ma^oZen^h_ma^ DQGWKHUHIHUHQFH
oZkbZ[e^bl'''[bmlk^ik^l^gmbg`ZpZrmh`^mmh 'RJP\'RJ QHZ'RJ 
Zli^\bÛ\h[c^\m'
!SSIGNSTHENEW$OGTOTHEREFERENCE
Rhn]hgmdghp!hk\Zk^"ahpZgriZkmb\neZk VARIABLEMY$OG)NOTHERWORDS
COFbfie^f^gmlh[c^\mk^_^k^g\^l'Lnk^%ma^r PROGRAMSTHEREMOTECONTROL
fb`am[^Zihbgm^kmhZihbgm^kmh'''[nm^o^g
b_rhndghp%rhnlmbee\Zgmnl^ma^[bml_hk 'RJREMHFW
Zgrmabg`hma^kmaZgZ\\^llbg`Zgh[c^\m'
eq<g_

:HGRQ¶WFDUHKRZPDQ\¶VDQG¶VWKHUHDUHLQDUHIHUHQFHYDULDEOH,W¶VXSWRHDFK
-90DQGWKHSKDVHRIWKHPRRQ 'RJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWUHIHUHQFHV

WKHUH DUH QR
'XPE 4XHVWLRQV ,CXC'ZRQUGF
Q: (OWBIGISAREFERENCE 7KLVZHHN·VLQWHUYLHZ
VARIABLE
2EMHFW5HIHUHQFH

A: 9OUDONTKNOW5NLESS
YOURECOZYWITHSOMEONEONTHE
+HDG)LUVW;W\MTT][_PI\¼[TQNMTQSMNWZIVWJRMK\ZMNMZMVKM'
5HIHUHQFH8ZM\\a[QUXTMZMITTa1¼UIZMUW\MKWV\ZWTIVL1KIVJMXZWOZIUUML\W
*6-SDEVELOPMENTTEAM YOU KWV\ZWTLQNNMZMV\WJRMK\[
DONTKNOWHOWAREFERENCEIS
REPRESENTED4HEREAREPOINTERS
+HDG)LUVW,WaW]UMIVLQNNMZMV\WJRMK\[M^MV_PQTMaW]¼ZMZ]VVQVO'4QSMKIVaW]
INTHERESOMEWHERE BUTYOU ZMNMZ\WI,WOIVL\PMVÅ^MUQV]\M[TI\MZZMNMZ\WI+IZ'
CANTACCESSTHEM9OUWONT 5HIHUHQFH7N KW]Z[MVW\7VKM1¼ULMKTIZML\PI\¼[Q\1N 1¼UI,WOZMUW\MKWV\ZWT
NEEDTO/+ IFYOUINSIST YOU \PMV1¼TTVM^MZJMIJTM\WXWQV\WWX[·UaJIL_M¼ZMVW\[]XXW[ML\W[IaXWQV\1UMIVZMNMZ
MIGHTASWELLJUSTIMAGINEIT
\WIVa\PQVOJ]\I,WO
TOBEA BITVALUE "UTWHEN
YOURETALKINGABOUTMEMORY +HDG)LUVW,WM[\PI\UMIVaW]KIVZMNMZ\WWVTaWVM,WO'
ALLOCATIONISSUES YOUR"IG
5HIHUHQFH6W1KIVJMZMNMZZQVO\WWVM,WOIVL\PMVÅ^MUQV]\M[TI\MZ1KIVZMNMZ\W
#ONCERNSHOULDBEABOUTHOW
MANYOBJECTSASOPPOSEDTO [WUMW\PMZ,WO)[TWVOI[Q\¼[I,WO1KIVJMZMLQZMK\MLTQSMZMXZWOZIUUQVOaW]ZZMUW\M
OBJECTREFERENCES YOURECREATING \WILQNNMZMV\<>\WQ\=VTM[[VWVM^MZUQVL
ANDHOWBIGTHEYTHEOBJECTS +HDG)LUVW6W\MTTUM?PI\_MZMaW]OWVVI[Ia'
REALLYARE
5HIHUHQFH1LWV¼\\PQVSaW]_IV\\WOM\QV\W\PQ[VW_J]\1¼TTR][\OQ^MaW]\PM[PWZ\
^MZ[QWV·QN 1¼UUIZSMLI[¿QDO\PMVWVKM1IUI[[QOVMLI,WO1KIVVM^MZJMZMXZW
OZIUUML\WIVa\PQVOMT[MJ]\\PI\WVMIVLWVTa,WO1VW\PMZ_WZL[VWW\PMZWJRMK\KIV
Q: 3O DOESTHATMEANTHAT JMI[[QOVML\WUM
ALLOBJECTREFERENCESARETHE +HDG)LUVWAW]¼ZMZQOP\_MLWV¼\_IV\\W\ITSIJW]\\PI\VW_73[W]VTM[[aW]¼ZM
SAMESIZE REGARDLESSOFTHESIZE
¿QDO\PMVaW]KIVZMNMZ\WWVM,WOIVL\PMVZMNMZ\WILQNNMZMV\,WOTI\MZ+IVaW]M^MZ
OFTHEACTUALOBJECTSTOWHICH
ZMNMZ\WVW\PQVOI\ITT'1[Q\XW[[QJTM\WVW\JMXZWOZIUUML\WIVa\PQVO'
THEYREFER
5HIHUHQFHAM[J]\Q\LQ[\]ZJ[UM\W\ITSIJW]\Q\

A: 9EP!LLREFERENCESFORA
GIVEN*6-WILLBETHESAME
+HDG)LUVW?PaQ[\PI\'
5HIHUHQFH*MKI][MQ\UMIV[1¼UQXOOIVL\PI\¼[]X[M\\QVO\WUM
SIZEREGARDLESSOFTHEOBJECTS
+HDG)LUVWAW]UMIVJMKI][M\PMVaW]PI^MVW^IT]M'
THEYREFERENCE BUTEACH*6-
MIGHTHAVEADIFFERENTWAYOF 5HIHUHQFH7PQXOOQ[I^IT]M1¼U[\QTTIZMUW\MKWV\ZWTJ]\Q\¼[TQSMaW]JZW]OP\
REPRESENTINGREFERENCES SO PWUMIVM_]VQ^MZ[ITZMUW\MKWV\ZWTIVLaW]LWV¼\PI^MI<>1¼UVW\XZWOZIUUML\W
REFERENCESONONE*6-MAYBE KWV\ZWTIVa\PQVO<PMaKIVXZM[[UaJ]\\WV[ITTLIaTWVOJ]\VW\PQVOOWWLPIXXMV[1
SMALLERORLARGERTHANREFERENCES R][\NMMT[W][MTM[[)_I[\MWN JQ\[/ZIV\MLVW\\PI\UIVaJQ\[J]\[\QTT)VL\PI\¼[VW\
ONANOTHER*6-
\PM_WZ[\XIZ\1N 1IU\PMWVTaZMNMZMVKM\WIXIZ\QK]TIZWJRMK\IVL\PMV1¼U[M\\WQXOO

Q: #AN)DOARITHMETICONA
LMXZWOZIUUMLQ\UMIV[\PI\VW_VWJWLaKIVOM\\W\PI\WJRMK\1PILJMMVZMNMZZQVO\W
+HDG)LUVW)VL\PI\¼[JILJMKI][M
REFERENCEVARIABLE INCREMENTIT
YOUKNOWn#STUFF 5HIHUHQFHAW]PI^M\WI[S'0MZM1¼^MLM^MTWXMLIZMTI\QWV[PQX_Q\P\PQ[WJRMK\IV
QV\QUI\MKWVVMK\QWVIVL\PMV\PM\QMQ[[]LLMVTaKZ]MTTa[M^MZML)VL1_QTTVM^MZ[MM
\PI\WJRMK\IOIQVJMKI][MVW_Q\¼[MTQOQJTMNWZCXZWL]KMZK]M\ZIOQKU][QKEOIZJIOMKWTTMK\QWV
A: .OPE3AYITWITHMEAGAIN
h*AVAISNOT#v
;VQNN*]\LWaW]\PQVSXZWOZIUUMZ[M^MZKWV[QLMZ\PI\';VQN?Pa_PaKIV¼\1JMIXZQUQ
\Q^M'1PI\MJMQVOIZMNMZMVKM<PMZM[XWV[QJQTQ\aITT\PMJZWSMVI\\IKPUMV\[
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

4QNMWV\PMOIZJIOMKWTTMK\QJTMPMIX

%RRNE QHZ%RRN 
%R 
RNREMHFW


%RRNF QHZ%RRN 
$ECLARETWO"OOKREFERENCE

EAP
VARIABLES#REATETWONEW"OOK Z %R
RNREMHFW

LEH
OBJECTS!SSIGNTHE"OOKOBJECTSTO
THEREFERENCEVARIABLES

C TIB
%RRN

L LE
4HETWO"OOKOBJECTSARENOWLIVING
CO
ONTHEHEAP

E
; AG

B
2EFERENCES

AR
G
/BJECTS
%RRN

%RRNG F
$ECLAREANEW"OOKREFERENCEVARIABLE 
2ATHERTHANCREATINGANEW THIRD"OOK
OBJECT ASSIGNTHEVALUEOFVARIABLECTO
%R
RNREMHFW


VARIABLED"UTWHATDOESTHISMEAN 
)TSLIKESAYING h4AKETHEBITSINC MAKEA
COPYOFTHEM ANDSTICKTHATCOPYINTODv

W
Z

EAP
% RR F
%RWKFDQGGUHIHUWRWKHVDPH NREMH

LEH
REMHFW

C TIB
7KHFDQGGYDULDEOHVKROG
%RRN

L LE
WZRGLIIHUHQWFRSLHVRIWKH CO

E
VDPHYDOXH7ZRUHPRWHV ; AG

B
AR
SURJUDPPHGWRRQH79 G
2EFERENCES %RRN \
/BJECTS
%RRN

F E
!SSIGNTHEVALUEOFVARIABLEBTO 
VARIABLEC"YNOWYOUKNOWWHAT
W

THISMEANS4HEBITSINSIDEVARIABLE F
BARECOPIED ANDTHATNEWCOPYIS %RRNREMH 
STUFFEDINTOVARIABLEC


W

Z
EAP

%RWKEDQGFUHIHUWRWKH % RR F
VDPHREMHFW NREMH
LEH
C TIB

2EFERENCES %RRN
L LE

/BJECTS CO
E

; AG
B
AR

G
\
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWVRQWKHKHDS

4QNMIVLLMI\PWV\PMPMIX

%RRNE QHZ%RRN 
%R
RNREMHFW 


%RRNF QHZ%RRN 
$ECLARETWO"OOKREFERENCEVARIABLES

EAP
#REATETWONEW"OOKOBJECTS!SSIGN Z %R
RNREMHFW

LEH
THE"OOKOBJECTSTOTHEREFERENCE

C TIB
VARIABLES
%RRN

L LE
4HETWOBOOKOBJECTSARENOWLIVING CO

E
ONTHEHEAP AG
;

B
AR
!CTIVE2EFERENCES G
2EACHABLE/BJECTS
%RRN
E F DVW
!SSIGNTHEVALUEOFVARIABLECTOVARIABLEB 7KLVJX\LVWRFWRUEDLW
JDUEDJHFROOH

4HEBITSINSIDEVARIABLECARECOPIED AND
THATNEWCOPYISSTUFFEDINTOVARIABLEB
%R
RNREMHFW
"OTHVARIABLESHOLDIDENTICALVALUES


%RWKEDQGFUHIHUWRWKHVDPH 
REMHFW2EMHFWLVDEDQGRQHG

EAP
DQGHOLJLEOHIRU*DUEDJH&ROOHF

W
Z F

LEH
% RR
WLRQ *&  NREMH

C TIB
!CTIVE2EFERENCES

L LE
%RRN CO
2EACHABLE/BJECTS

E
AG

B
!BANDONED/BJECTS

AR
; G
4HEFIRSTOBJECTTHATBREFERENCED /BJECT
HASNOMOREREFERENCES)TSUNREACHABLE
%RRN
F QXOO
!SSIGNTHEVALUEQXOOTOVARIABLEC  6WLOOWRDVW 
4HISMAKESCANULLREFERENCE MEANING 1RW\HWWRDJVWDVE
ITDOESNTREFERTOANYTHING"UTITSSTILL
%R VDIHDVORQ
RNREMHFW UHIHUVWRLW
AREFERENCEVARIABLE ANDANOTHER"OOK


OBJECTCANSTILLBEASSIGNEDTOIT
 EAP
2EMHFWVWLOOKDVDQDFWLYH


W

UHIHUHQFH E DQGDVORQJ Z F
LEH

% RR
DVLWGRHVWKHREMHFWLVQRW NREMH
C TIB

HOLJLEOHIRU*&
L LE

!CTIVE2EFERENCES
%RRN CO
E

AG
NULL2EFERENCES
QXOOUHIHUHQFH GWRDQ\WKLQJ
B
AR

; PH G
2EACHABLE/BJECTS
QRWSURJUDP
!BANDONED/BJECTS
%RRN
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

)VIZZIaQ[TQSMI\ZIaWNK]X[
'HFODUHDQLQWDUUD\YDULDEOH$QDUUD\YDULDEOHLV
 DUHPRWHFRQWUROWRDQDUUD\REMHFW
LQW>@QXPV

&UHDWHDQHZLQWDUUD\ZLWKDOHQJWK
 RIDQGDVVLJQLWWRWKHSUHYLRXVO\
GHFODUHGLQW>@YDULDEOHQXPV

QXPV QHZLQW>@

*LYHHDFKHOHPHQWLQWKHDUUD\
LQWYDULDEOHV
 DQLQWYDOXH
5HPHPEHUHOHPHQWVLQDQLQW
DUUD\DUHMXVWLQWYDULDEOHV
OHV

QXPV>@ 
YDULDE

LQWLQWLQWLQWLQWLQWLQW
QXPV>@ 
LQW

QXPV>@ 
QXPV>@  LQWDUUD\REMHFW LQW>@
QXPV>@  QXPV
QXPV>@ 
QXPV>@  LQW>@ 1RWLFHWKDWWKHDUUD\LWVHOILVDQREMHFW
HYHQWKRXJKWKHHOHPHQWVDUHSULPLWLYHV

)ZZIa[IZMWJRMK\[\WW
4HE*AVASTANDARDLIBRARYINCLUDES REFERENCEVARIABLE!NYTHINGYOU "ESURETONOTICEONEKEYTHING
LOTSOFSOPHISTICATEDDATASTRUCTURES WOULDPUTINAVARIABLEOFTHATTYPE INTHEPICTUREABOVEnTHEARRAYIS
INCLUDINGMAPS TREES ANDSETS CANBEASSIGNEDTOANARRAYELEMENT ANOBJECT EVENTHOUGHITSANARRAYOF
SEE!PPENDIX" BUTARRAYSARE OFTHATTYPE3OINANARRAYOFTYPE PRIMITIVES
GREATWHENYOUJUSTWANTAQUICK INTINT;= EACHELEMENTCANHOLD !RRAYSAREALWAYSOBJECTS WHETHER
ORDERED EFlCIENTLISTOFTHINGS ANINT)NA$OGARRAY$OG;= EACH THEYREDECLAREDTOHOLDPRIMITIVES
!RRAYSGIVEYOUFASTRANDOM ELEMENTCANHOLDA$OG.O OROBJECTREFERENCES"UTYOUCAN
ACCESSBYLETTINGYOUUSEANINDEX REMEMBERTHATAREFERENCEVARIABLE HAVEANARRAYOBJECTTHATSDECLARED
POSITIONTOGETTOANYELEMENTIN JUSTHOLDSAREFERENCEAREMOTE TOHOLDPRIMITIVEVALUES)NOTHER
THEARRAY CONTROL NOTTHEOBJECTITSELF3O WORDS THEARRAYOBJECTCANHAVE
%VERYELEMENTINANARRAYISJUST INA$OGARRAY EACHELEMENTCAN ELEMENTSWHICHAREPRIMITIVES BUT
AVARIABLE)NOTHERWORDS ONEOF HOLDAREMOTECONTROLTOA$OG/F THEARRAYITSELFISNEVERAPRIMITIVE
THEEIGHTPRIMITIVEVARIABLETYPES COURSE WESTILLHAVETOMAKETHE 2EGARDLESSOFWHATTHEARRAYHOLDS
THINK,ARGE&URRY$OG ORA $OGOBJECTSANDYOULLSEEALLTHAT THEARRAYITSELFISALWAYSANOBJECT
ONTHENEXTPAGE
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DQDUUD\RI REMHFWV

5ISMIVIZZIaWN,WO[

'HFODUHD'RJDUUD\YDULDEOH

'RJ>@SHWV

&UHDWHDQHZ'RJDUUD\ZLWK
 DOHQJWKRIDQGDVVLJQLWWR
WKHSUHYLRXVO\GHFODUHG'RJ>@
YDULDEOHSHWV

SHWV QHZ'RJ>@

'RJ'RJ'RJ'RJ'RJ'RJ'RJ
?PI\¼[UQ[[QVO'
$OGS7EHAVEANARRAY SHWV
OF$OGREFERENCES BUTNO
ACTUAL$OGOBJECTS 'RJDUUD\REMHFW 'RJ>@
'RJ>@

&UHDWHQHZ'RJREMHFWVDQG
 DVVLJQWKHPWRWKHDUUD\ J2EMHFW
'R J2EMHFW
HOHPHQWV 'R
5HPHPEHUHOHPHQWVLQD'RJ
DUUD\DUHMXVW'RJUHIHUHQFH
YDULDEOHV:HVWLOOQHHG'RJV

SHWV>@ QHZ'RJ 
SHWV>@ QHZ'RJ 

6KDUSHQ \RXU SHQFLO

7HATISTHECURRENTVALUEOF 'RJ'RJ'RJ'RJ'RJ'RJ'RJ
PETS;=???????????
7HATCODEWOULDMAKE SHWV
PETS;=REFERTOONEOFTHE
TWOEXISTING$OGOBJECTS 'RJDUUD\REMHFW 'RJ>@
???????????????????????
'RJ>@

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

'RJ +WV\ZWTaW]Z,WO
QDPH _Q\PIZMNMZMVKM^IZQIJTM
'RJ¿GR QHZ'RJ 
EDUN fYe]
HDW ¿GRQDPH ³)LGR´
FKDVH&DW
7ECREATEDA$OGOBJECTAND 6WULQJ
USEDTHEDOTOPERATORONTHE
FW


REFERENCEVARIABLElDOTOACCESS 'RJREMH
THENAMEVARIABLE

7ECANUSETHElDOREFERENCE ^a\g
TOGETTHEDOGTOBARK OR
EAT ORCHASE#AT 
'RJ
¿GREDUN 
RXWW\SH
-DYDFDUHVDE ¿GRFKDVH&DW 
\\RX
FODUHGDQDU UD
2QFH\RX·YHGH H [F HS WWKLQJV
WKLQJLQLW ?PI\PIXXMV[QN\PM,WOQ[QV
FDQ·WSXWDQ\ \ W\SH
GHFODUHGDU UD
WKDWDUHRIWKH I,WOIZZIa'
LQWRD'RJ
XFDQ·WSXWD&DW
)RUH[DPSOH\R \D ZI XO LI VRPHRQH 7EKNOWWECANACCESSTHE$OGS
HSUHWW
DUUD\ LWZRXOGE UU D\VR
'RJVDUHLQWKHD INSTANCEVARIABLESANDMETHODSUSING
WKLQNVWKDWRQO\ N DQ G WK HQ WRWKHLU
HWREDU THEDOTOPERATOR BUTONWHAT
WKH\DVNHDFKRQ XU NLQ J $QG
WKHUH·VDFDWO
KRUURUGLVFRYHU OH L QW RD QL QW DUUD\ 7HENTHE$OGISINANARRAY WEDONT
GRXE
\RXFDQ·WVWLFND RZHYHU
EHU" <RXFDQK HAVEANACTUALVARIABLENAMELIKE
VSLOODJHUHPHP D UU D\ E HF DXVHD
QL QW lDO )NSTEADWEUSEARRAYNOTATIONAND
SXWDE\WHLQWRD QW V L]H GFXS
VÀWLQWRDQL PUSHTHEREMOTECONTROLBUTTONDOT
E\WHZLOODOZD\ SOL FLW Z LG HQ LQJ:H·OO
Q LP
7KLVLVNQRZQDVD QRZMXVW
OPERATOR ONANOBJECTATAPARTICULAR
WDLOVODWHUIRU
JHWLQWRWKHGH PS LOH U ZR Q·WOHW\RX INDEXPOSITION INTHEARRAY
WK H FR
UHPHPEHUWKDW DU UD \ EDVHGRQ 'RJ>@P\'RJV QHZ'RJ>@
WKLQJLQDQ
SXWWKHZURQJ
ODUHGW\SH
WKHDUUD\·VGHF P\'RJV>@ QHZ'RJ 
P\'RJV>@QDPH ³)LGR´
P\'RJV>@EDUN 

<HVZHNQRZZH·UHQRWGHPRQVWUDWLQJHQFDSVXODWLRQKHUHEXWZH·UH
WU\LQJWRNHHSLWVLPSOH)RUQRZ:H·OOGRHQFDSVXODWLRQLQFKDSWHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJUHIHUHQFHV

FODVV'RJ^
6WULQJQDPH ),WOM`IUXTM
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 'RJ
PDNHD'RJREMHFWDQGDFFHVVLW
QDPH
'RJGRJ QHZ'RJ 
GRJEDUN  EDUN
HDW
GRJQDPH ³%DUW´
FKDVH&DW

QRZPDNHD'RJDUUD\
'RJ>@P\'RJV QHZ'RJ>@ /UTPUT
DQGSXWVRPHGRJVLQLW )LOH(GLW:LQGRZ+HOS+RZO

Licensed by
P\'RJV>@ QHZ'RJ  MDYD'RJ
P\'RJV>@ QHZ'RJ  QXOOVD\V5XII
P\'RJV>@ GRJ ODVWGRJ¶VQDPHLV%DUW
QRZDFFHVVWKH'RJVXVLQJWKHDUUD\ )UHGVD\V5XII

Eduard Simons
UHIHUHQFHV 0DUJHVD\V5XII
P\'RJV>@QDPH ³)UHG´ %DUWVD\V5XII
P\'RJV>@QDPH ³0DUJH´


104038
+PPPPZKDWLVP\'RJV>@QDPH"
6\VWHPRXWSULQW ³ODVWGRJ¶VQDPHLV³ 
:MDD=LHGAFLK
6\VWHPRXWSULQWOQ P\'RJV>@QDPH 
ƒ 9DULDEOHVFRPHLQWZRIODYRUVSULPLWLYHDQG
QRZORRSWKURXJKWKHDUUD\ UHIHUHQFH
DQGWHOODOOGRJVWREDUN ƒ 9DULDEOHVPXVWDOZD\VEHGHFODUHGZLWKDQDPH
DQGDW\SH
LQW[ 
ƒ $SULPLWLYHYDULDEOHYDOXHLVWKHELWVUHSUHVHQWLQJ
ZKLOH [P\'RJVOHQJWK ^ WKHYDOXH ¶D·WUXHHWF 
WK·
P\'RJV>[@EDUN 
K DY H  D YD ULDEOH¶OHQJ RI ƒ $UHIHUHQFHYDULDEOHYDOXHLVWKHELWV
[ [ DUUD\V \RXWKHQXPEHU UHSUHVHQWLQJDZD\WRJHWWRDQREMHFWRQWKH
` WKDWJLYHV WKHDUUD\ KHDS
`
HOHPHQWVLQ ƒ $UHIHUHQFHYDULDEOHLVOLNHDUHPRWHFRQWURO
8VLQJWKHGRWRSHUDWRU  RQDUHIHUHQFH
YDULDEOHLVOLNHSUHVVLQJDEXWWRQRQWKHUHPRWH
SXEOLFYRLGEDUN ^
FRQWUROWRDFFHVVDPHWKRGRULQVWDQFHYDULDEOH
6\VWHPRXWSULQWOQ QDPH³VD\V5XII´ 
ƒ $UHIHUHQFHYDULDEOHKDVDYDOXHRIQXOOZKHQ
` LWLVQRWUHIHUHQFLQJDQ\REMHFW
SXEOLFYRLGHDW ^` ƒ $QDUUD\LVDOZD\VDQREMHFWHYHQLIWKHDUUD\
SXEOLFYRLGFKDVH&DW ^` LVGHFODUHGWRKROGSULPLWLYHV7KHUHLVQRVXFK
WKLQJDVDSULPLWLYHDUUD\RQO\DQDUUD\WKDW
`
KROGVSULPLWLYHV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

1dQ^OU_Q "%THECOMPILER
(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRIWKHVHILOHV
ZLOOFRPSLOH,IWKH\ZRQ·W
FRPSLOHKRZZRXOG\RX
IL[WKHP"

  $   %
FODVV%RRNV^ FODVV+REELWV^
6WULQJWLWOH
6WULQJDXWKRU 6WULQJQDPH
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
FODVV%RRNV7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ +REELWV>@K QHZ+REELWV>@
LQW] 
%RRNV>@P\%RRNV QHZ%RRNV>@
LQW[  ZKLOH ] ^
P\%RRNV>@WLWOH ´7KH*UDSHVRI-DYDµ ] ]
P\%RRNV>@WLWOH ´7KH-DYD*DWVE\µ K>]@ QHZ+REELWV 
P\%RRNV>@WLWOH ´7KH-DYD&RRNERRNµ K>]@QDPH ´ELOERµ
P\%RRNV>@DXWKRU ´EREµ LI ]  ^
P\%RRNV>@DXWKRU ´VXHµ K>]@QDPH ´IURGRµ
P\%RRNV>@DXWKRU ´LDQµ `
LI ]  ^
ZKLOH [ ^ K>]@QDPH ´VDPµ
6\VWHPRXWSULQW P\%RRNV>[@WLWOH  `
6\VWHPRXWSULQW ´E\´  6\VWHPRXWSULQW K>]@QDPH´LVD´ 
6\VWHPRXWSULQWOQ P\%RRNV>[@DXWKRU  6\VWHPRXWSULQWOQ ´JRRG+REELWQDPHµ 
[ [ `
` `
` `
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH&RGH0DJQHWV

1dQ^OU_Q Code Magnets


!WORKING*AVAPROGRAMISALLSCRAMBLEDUP 
LQW\
ONTHEFRIDGE#ANYOURECONSTRUCTTHECODE
SNIPPETSTOMAKEAWORKING*AVAPROGRAM UHI LQGH[>\@
THATPRODUCESTHEOUTPUTLISTEDBELOW
3OMEOFTHECURLYBRACESFELLONTHEFLOOR
LVODQG
ANDTHEYWERETOOSMALLTOPICKUP SOFEEL V>@
´%HUP
FREETOADDASMANYOFTHOSEASYOUNEED LVODQG XGDµ
V>@
´)LML
LVODQG µ
V>@
´$]RU
LVODQG HVµ
V>@
´&R]X
PHOµ

LQWUHI
ZKLOH \ ^

6\VWHPRXWSULQWOQ LVODQGV>UHI@ 


LQGH[>@

LQGH[>@

LQGH[>@

LQGH[>@

6WULQJ>@LVODQGV QHZ6WULQJ>@

6\VWHPRXWSULQW ´LVODQG ´ 

LQW>@
LQGH[ Q
HZLQW> @
\ \

)LOH(GLW:LQGRZ+HOS%LNLQL
FODVV7HVW$UUD\V^
MDYD7HVW$UUD\V

LVODQG )LML
LVODQG &R]XPHO SXEOLFVWDWLFYR
LGPDLQ 6WULQJ>@
LVODQG %HUPXGD DUJV ^
LVODQG $]RUHV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

·WXVH DVHSDUDWH
FODVV7ULDQJOH^
6 RP HWLPHVZHGRQZH·UHWU\LQJWR
DXVH
WHVWFODVVEHFWKHSDJH
GRXEOHDUHD
LQWKHLJKW
VDYHVSD FH R Q
3RRO3X]]OH LQWOHQJWK
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
9OURJOBISTOTAKECODESNIPPETSFROM BBBBBBBBBBBB
THEPOOLANDPLACETHEMINTOTHE BBBBBBBBBBBBBBBBBBBBBBB
BLANKLINESINTHECODE9OUMAY
USETHESAMESNIPPETMORETHAN ZKLOH BBBBBBBBBB ^
ONCE ANDYOUWONTNEEDTOUSE BBBBBBBBBBBBBBBBBBBBBBBBBB
ALLTHESNIPPETS9OURGOALISTO BBBBBBBBKHLJKW  [  
MAKEACLASSTHATWILLCOMPILEAND
RUNANDPRODUCETHEOUTPUTLISTED BBBBBBBBOHQJWK [
BBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQW ´WULDQJOH´[µDUHDµ 
/UTPUT
6\VWHPRXWSULQWOQ ´ ´BBBBBBBDUHD 
)LOH(GLW:LQGRZ+HOS%HUPXGD BBBBBBBBBBBBBBBB
MDYD7ULDQJOH
`
WULDQJOHDUHD 
BBBBBBBBBBBBBB
WULDQJOHDUHD 
[ 
WULDQJOHDUHD 
7ULDQJOHW WD>@
WULDQJOHDUHD BBBB
WD>@DUHD 
\ BBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQW ´\ ´\ 
6\VWHPRXWSULQWOQ ´WDUHD ´WDUHD 
"ONUS1UESTION `
&OREXTRABONUSPOINTS USESNIPPETS YRLGVHW$UHD ^
FROMTHEPOOLTOFILLINTHEMISSING
OUTPUTABOVE  BBBBBBBBBBBB  KHLJKW OHQJWK 
`
`
.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE
 TAREA
 TAREA
AREA
 TAREA INTX
TAAREA
 TAREA INTY XX  TAX
X TAXAREA
INTX XX  TAX
Y TA;X=AREA
TA;X=SET!REA  INTX XX  X
TA;X=
4RIANGLE;=TANEW4RIANGLE  TAXSET!REA  INTYX X
4RIANGLETANEW;=4RIANGLE;= TA;X=SET!REA  TANEW4RIANGLE 

4RIANGLE;=TANEW4RIANGLE;= TA;X=NEW4RIANGLE 

TAXNEW4RIANGLE 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH+HDSR·7URXEOH

FODVV+HDS4XL]^
LQWLG 
!(EAPO³4ROUBLE SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
!SHORT*AVAPROGRAMISLISTEDTOTHE +HDS4XL]>@KT QHZ+HDS4XL]>@
RIGHT7HEN@DOSTUFFISREACHED SOME
OBJECTSANDSOMEREFERENCEVARIABLES ZKLOH [ ^
WILLHAVEBEENCREATED9OURTASKIS KT>[@ QHZ+HDS4XL] 
TODETERMINEWHICHOFTHEREFERENCE KT>[@LG [
VARIABLESREFERTOWHICHOBJECTS.OTALL [ [
THEREFERENCEVARIABLESWILLBEUSED AND
SOMEOBJECTSMIGHTBEREFERREDTOMORE
 `
THANONCE$RAWLINESCONNECTINGTHE KT>@ KT>@
REFERENCEVARIABLESWITHTHEIRMATCHING KT>@ KT>@
OBJECTS KT>@ QXOO
4IP5NLESSYOUREWAYSMARTERTHANUS KT>@ KT>@
YOUPROBABLYNEEDTODRAWDIAGRAMS KT>@ KT>@
LIKETHEONESONPAGEANDOFTHIS
KT>@ KT>@
CHAPTER5SEAPENCILSOYOUCANDRAW
ANDTHENERASEREFERENCELINKSTHE KT>@ KT>@
ARROWSGOINGFROMAREFERENCEREMOTE GRVWXII
CONTROLTOANOBJECT  `
`

2EFERENCE6ARIABLES (EAP1UIZ/BJECTS

QL%
UHIHUHQFH KT>@
PDWFKHDFKKPDWFKLQJ
YDULDEOHZLW
REMHFW V KT>@
WKDYHWR
<RXPLJKWQHRIHUHQFH QL%
XVHHYHU\U
KT>@

KT>@
QL%

KT>@

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

7KHFDVHRIWKHSLOIHUHGUHIHUHQFHV

,WZDVDGDUNDQGVWRUP\QLJKW7DZQ\VWUROOHGLQWRWKHSURJUDPPHUV¶EXOOSHQOLNHVKH
RZQHGWKHSODFH6KHNQHZWKDWDOOWKHSURJUDPPHUVZRXOGVWLOOEHKDUGDWZRUNDQGVKH
ZDQWHGKHOS6KHQHHGHGDQHZPHWKRGDGGHGWRWKHSLYRWDOFODVVWKDWZDVWREHORDGHGLQWRWKH
FOLHQW¶VQHZWRSVHFUHW-DYDHQDEOHGFHOOSKRQH+HDSVSDFHLQWKHFHOOSKRQH¶VPHPRU\ZDV
DVWLJKWDV7DZQ\¶VWRSDQGHYHU\RQHNQHZLW7KHQRUPDOO\UDXFRXVEX]]LQWKHEXOOSHQIHOOWR
VLOHQFHDV7DZQ\HDVHGKHUZD\WRWKHZKLWHERDUG6KHVNHWFKHGDTXLFNRYHUYLHZRIWKHQHZ
PHWKRG¶VIXQFWLRQDOLW\DQGVORZO\VFDQQHGWKHURRP³:HOOER\VLW¶VFUXQFKWLPH´VKHSXUUHG
³:KRHYHUFUHDWHVWKHPRVWPHPRU\HI¿FLHQWYHUVLRQRIWKLVPHWKRGLVFRPLQJZLWKPHWRWKH
)LYH0LQXWH FOLHQW¶VODXQFKSDUW\RQ0DXLWRPRUURZWRKHOSPHLQVWDOOWKHQHZVRIWZDUH´
0\VWHU\ 7KHQH[WPRUQLQJ7DZQ\JOLGHGLQWRWKHEXOOSHQZHDULQJKHUVKRUW$ORKDGUHVV
³*HQWOHPHQ´VKHVPLOHG³WKHSODQHOHDYHVLQDIHZKRXUVVKRZPHZKDW\RX¶YH
JRW´%REZHQW¿UVWDVKHEHJDQWRVNHWFKKLVGHVLJQRQWKHZKLWHERDUG7DZQ\
VDLG³/HW¶VJHWWRWKHSRLQW%REVKRZPHKRZ\RXKDQGOHGXSGDWLQJWKHOLVWRIFRQ
WDFWREMHFWV´%RETXLFNO\GUHZDFRGHIUDJPHQWRQWKHERDUG

&RQWDFW>@FD QHZ&RQWDFW>@
ZKLOH [ ^PDNHFRQWDFWREMHFWV
FD>[@ QHZ&RQWDFW 
[ [
`
GRFRPSOLFDWHG&RQWDFWOLVWXSGDWLQJVWXIIZLWKFD

³7DZQ\,NQRZZH¶UHWLJKWRQPHPRU\EXW\RXUVSHFVDLGWKDWZHKDGWREHDEOHWRDFFHVV
LQGLYLGXDOFRQWDFWLQIRUPDWLRQIRUDOOWHQDOORZDEOHFRQWDFWVWKLVZDVWKHEHVWVFKHPH,FRXOG
FRRNXS´VDLG%RE.HQWZDVQH[WDOUHDG\LPDJLQLQJFRFRQXWFRFNWDLOVZLWK7DZQ\³%RE´
KHVDLG³\RXUVROXWLRQ¶VDELWNOXGJ\GRQ¶W\RXWKLQN"´.HQWVPLUNHG³7DNHDORRNDWWKLV
EDE\´

&RQWDFWUHIF
ZKLOH [ ^PDNHFRQWDFWREMHFWV
UHIF QHZ&RQWDFW 
[ [
`
GRFRPSOLFDWHG&RQWDFWOLVWXSGDWLQJVWXIIZLWKUHIF

³,VDYHGDEXQFKRIUHIHUHQFHYDULDEOHVZRUWKRIPHPRU\%RERULQRVRSXWDZD\\RXU
VXQVFUHHQ´PRFNHG.HQW³1RWVRIDVW.HQW´VDLG7DZQ\³\RX¶YHVDYHGDOLWWOHPHPRU\EXW
%RE¶VFRPLQJZLWKPH´

:K\GLG7DZQ\FKRRVH%RE¶VPHWKRGRYHU.HQW¶VZKHQ.HQW¶VXVHGOHVVPHPRU\"

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

FODVV%RRNV^
([HUFLVH6ROXWLRQV 6WULQJWLWOH
6WULQJDXWKRU
`
FODVV%RRNV7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%RRNV>@P\%RRNV QHZ%RRNV>@
LQW[ 
$ P\%RRNV>@ QHZ%RRNV 5HPHPEHU:HKDYHWR
&RGH0DJQHWV P\%RRNV>@ QHZ%RRNV DFWXDOO\PDNHWKH%RRNV
P\%RRNV>@ QHZ%RRNV REMHFWV
FODVV7HVW$UUD\V^ P\%RRNV>@WLWOH ´7KH*UDSHVRI-DYDµ
P\%RRNV>@WLWOH ´7KH-DYD*DWVE\µ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
P\%RRNV>@WLWOH ´7KH-DYD&RRNERRNµ
LQW>@LQGH[ QHZLQW>@
P\%RRNV>@DXWKRU ´EREµ
LQGH[>@  P\%RRNV>@DXWKRU ´VXHµ
LQGH[>@  P\%RRNV>@DXWKRU ´LDQµ
LQGH[>@  ZKLOH [ ^
LQGH[>@  6\VWHPRXWSULQW P\%RRNV>[@WLWOH 
6WULQJ>@LVODQGV QHZ6WULQJ>@ 6\VWHPRXWSULQW ´E\´ 
6\VWHPRXWSULQWOQ P\%RRNV>[@DXWKRU 
LVODQGV>@ ´%HUPXGDµ
[ [
LVODQGV>@ ´)LMLµ `
LVODQGV>@ ´$]RUHVµ `
LVODQGV>@ ´&R]XPHOµ `
LQW\ 
LQWUHI FODVV+REELWV^
6WULQJQDPH
ZKLOH \ ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
UHI LQGH[>\@ +REELWV>@K QHZ+REELWV>@
6\VWHPRXWSULQW ´LVODQG ´  LQW] 5HPHPEHUDUUD\VVWDUWZLWK
6\VWHPRXWSULQWOQ LVODQGV>UHI@  ZKLOH ] ^HOHPHQW
\ \ ] ]
` K>]@ QHZ+REELWV 

` %K>]@QDPH ´ELOERµ


LI ]  ^
` )LOH(GLW:LQGRZ+HOS%LNLQL K>]@QDPH ´IURGRµ
MDYD7HVW$UUD\V `
LVODQG )LML LI ]  ^
LVODQG &R]XPHO K>]@QDPH ´VDPµ
LVODQG %HUPXGD `
LVODQG $]RUHV 6\VWHPRXWSULQW K>]@QDPH´LVD´ 
6\VWHPRXWSULQWOQ ´JRRG+REELWQDPHµ 
`
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SULPLWLYHVDQGUHIHUHQFHV

3X]]OH6ROXWLRQV

<PMKI[MWN\PMXQTNMZMLZMNMZMVKM[

FODVV7ULDQJOH^ 4AWNYCOULDSEETHAT+ENTSMETHODHADASERIOUS
GRXEOHDUHD mAW)TSTRUETHATHEDIDNTUSEASMANYREFERENCE
LQWKHLJKW VARIABLESAS"OB BUTTHEREWASNOWAYTOACCESSANY
LQWOHQJWK BUTTHELASTOFTHE#ONTACTOBJECTSTHATHISMETHODCRE
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[
LQW[ 
ATED7ITHEACHTRIPTHROUGHTHELOOP HEWASASSIGN
7ULDQJOH>@WD
7ULDQJOH>@WD QHZ7ULDQJOH>@ INGANEWOBJECTTOTHEONEREFERENCEVARIABLE SOTHE
ZKLOH [ ^
 PREVIOUSLYREFERENCEDOBJECTWASABANDONEDONTHE
WD>[@ QHZ7ULDQJOH  HEAPnUNREACHABLE7ITHOUTACCESSTONINEOFTHETEN
WD>[@KHLJKW  [   OBJECTSCREATED +ENTSMETHODWASUSELESS
WD>[@OHQJWK [ 7KHVRIWZDUHZDVDKXJHVXFFHVVDQGWKHFOLHQWJDYH7DZQ\DQG%REDQH[WUDZHHN
WD>[@VHW$UHD  LQ+DZDLL:H·GOLNHWRWHOO\RXWKDWE\ILQLVKLQJWKLVERRN\RXWRRZLOOJHWVWXIIOLNHWKDW
6\VWHPRXWSULQW ´WULDQJOH´[µDUHDµ 
6\VWHPRXWSULQWOQ ´ ´WD>[@DUHD 
[ [
2EFERENCE6ARIABLES (EAP1UIZ/BJECTS
`
LQW\
 LQW\ [
[ 
7ULDQJOHW WD>@ QL%
WD>@DUHD  KT>@
6\VWHPRXWSULQW ´\ ´\ 
6\VWHPRXWSULQWOQ ´WDUHD ´WDUHD 
` KT>@
YRLGVHW$UHD ^
DUHD
DUHD  KHLJKW OHQJWK 
QL%
KT>@
`
` )LOH(GLW:LQGRZ+HOS%HUPXGD

MDYD7ULDQJOH
WULDQJOHDUHD 
WULDQJOHDUHD  KT>@
WULDQJOHDUHD  QL%
WULDQJOHDUHD 
\ WDUHD 
KT>@

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

+RZ2EMHFWV%HKDYH
7KLVRXJKWD
FKDQJHKHUVWDWH

6WDWHDIIHFWVEHKDYLRUEHKDYLRUDIIHFWVVWDWH7EKNOWTHATOBJECTS
HAVESTATEANDBEHAVIOR REPRESENTEDBYINSTANCEVARIABLESANDMETHODS"UTUNTILNOW WE
HAVENTLOOKEDATHOWSTATEANDBEHAVIORARERELATED7EALREADYKNOWTHATEACHINSTANCEOFA
CLASSEACHOBJECTOFAPARTICULARTYPE CANHAVEITSOWNUNIQUEVALUESFORITSINSTANCEVARIABLES
$OG!CANHAVEANAMEh&IDOvANDAWEIGHTOFPOUNDS$OG"ISh+ILLERvANDWEIGHSPOUNDS
!NDIFTHE$OGCLASSHASAMETHODMAKE.OISE WELL DONTYOUTHINKA POUNDDOGBARKSA
BITDEEPERTHANTHELITTLE POUNDER!SSUMINGTHATANNOYINGYIPPYSOUNDCANBECONSIDERED
ABARK &ORTUNATELY THATSTHEWHOLEPOINTOFANOBJECTˆITHASBEHAVIORTHATACTSONITSSTATE)N
OTHERWORDS METHODSUSEINSTANCEVARIABLEVALUES,IKE hIFDOGISLESSTHANPOUNDS MAKE
YIPPYSOUND ELSEvORhINCREASEWEIGHTBYv,ETSGOCHANGESOMESTATE

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWVKDYHVWDWHDQGEHKDYLRU

:MUMUJMZ"IKTI[[LM[KZQJM[_PI\IV
WJRMK\SVW_[IVL_PI\IVWJRMK\LWM[
!CLASSISTHEBLUEPRINTFORANOBJECT7HENYOU 6RQJ
WRITEACLASS YOUREDESCRIBINGHOWTHE*6- QV[\IVKM WLWOH
SHOULDMAKEANOBJECTOFTHATTYPE9OUALREADY SVW_[
^IZQIJTM[ DUWLVW
KNOWTHATEVERYOBJECTOFTHATTYPECANHAVE VWDWH
DIFFERENTINSTANCEVARIABLEVALUES"UTWHATABOUT VHW7LWOH
THEMETHODS UM\PWL[ VHW$UWLVW LWM[
EHKDYLRU SOD\
+IVM^MZaWJRMK\WN\PI\\aXMPI^MLQNNMZMV\
UM\PWLJMPI^QWZ'

WDQFHV
Licensed by
7ELLSORTOF

I L Y H  L QV
%VERYINSTANCEOFAPARTICULARCLASSHASTHESAME
6RQJ
METHODS BUTTHEMETHODSCANBEHAVEDIFFERENTLY
BASEDONTHEVALUEOFTHEINSTANCEVARIABLES
RIFODVV 3ROLWLN

Eduard Simons
4HE3ONGCLASSHASTWOINSTANCEVARIABLES TITLE &ROGSOD\ 0\:D\
ANDARTIST4HEPLAY METHODPLAYSASONG BUT 6LQDWUD
THEINSTANCEYOUCALLPLAY ONWILLPLAYTHESONG
REPRESENTEDBYTHEVALUEOFTHETITLEINSTANCE
0\:D\
VARIABLEFORTHATINSTANCE3O IFYOUCALLTHEPLAY 'DUNVWDU

104038
METHODONONEINSTANCEYOULLHEARTHESONG *UDWHIXO 6H[3LVWROV
h0OLITIKv WHILEANOTHERINSTANCEPLAYSh$ARKSTARv 'HDG 6LQJ
4HEMETHODCODE HOWEVER ISTHESAME
7UDYLV
YRLGSOD\ ^
VRXQG3OD\HUSOD\6RXQG WLWOH 
`
k+
l*
H 
LQVWDQF
6RQJ
R Q  WK LV
SOD\ 
6RQJ
6RQJW QHZ6RQJ  \
&DOOLQJ H´6LQJµWRSOD
VSOD\ 
WVHW$UWLVW ³7UDYLV´  V WSOD\ 
WVHW7LWOH ³6LQJ´ 
ZLOOFDX
6RQJV QHZ6RQJ  &DOOLQJSOD\ RQWKLVLQVWDQFH
VVHW$UWLVW ³6H[3LVWROV´  ZLOOFDXVH´0\:D\µWRSOD\
VVHW7LWOH ³0\:D\´  EXWQRWWKH6LQDWUDRQH

<HVDQRWKHUVWXQQLQJO\FOHDUDQVZHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

<PM[QbMINNMK\[\PMJIZS
!SMALL$OGSBARKISDIFFERENTFROMABIG$OGSBARK
4HE$OGCLASSHASANINSTANCEVARIABLESIZE THATTHE
BARK METHODUSESTODECIDEWHATKINDOFBARKSOUND
TOMAKE

'RJ
FODVV'RJ^
LQWVL]H VL]H
QDPH
6WULQJQDPH
EDUN
YRLGEDUN ^
LI VL]H! ^
6\VWHPRXWSULQWOQ ³:RRRI:RRRI´ 
`HOVHLI VL]H! ^
6\VWHPRXWSULQWOQ ³5XII5XII´ 
`HOVH^
6\VWHPRXWSULQWOQ ³<LS<LS´ 
`
`
`

FODVV'RJ7HVW'ULYH^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RJRQH QHZ'RJ 
RQHVL]H 
'RJWZR QHZ'RJ 
WZRVL]H 
'RJWKUHH QHZ'RJ 
WKUHHVL]H 
)LOH(GLW:LQGRZ+HOS3OD\GHDG

MDYD'RJ7HVW'ULYH
RQHEDUN 
:RRRI:RRRI
WZREDUN 
<LS<LS
WKUHHEDUN 
5XII5XII
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGSDUDPHWHUV

AW]KIV[MVL\PQVO[\WIUM\PWL
*USTASYOUEXPECTFROMANYPROGRAMMINGLANGUAGE YOUCANPASSVALUESINTO
YOURMETHODS9OUMIGHT FOREXAMPLE WANTTOTELLA$OGOBJECTHOWMANY
TIMESTOBARKBYCALLING
GEDUN  
$EPENDINGONYOURPROGRAMMINGBACKGROUNDANDPERSONALPREFERENCES
YOUMIGHTUSETHETERMARGUMENTSORPERHAPSPARAMETERSFORTHEVALUESPASSED
INTOAMETHOD!LTHOUGHTHEREAREFORMALCOMPUTERSCIENCEDISTINCTIONSTHAT
PEOPLEWHOWEARLABCOATSANDWHOWILLALMOSTCERTAINLYNOTREADTHISBOOK
MAKE WEHAVEBIGGERlSHTOFRYINTHISBOOK3OYOUCANCALLTHEMWHATEVER
YOULIKEARGUMENTS DONUTS HAIRBALLS ETC BUTWEREDOINGITLIKETHIS
$PHWKRGXVHVSDUDPHWHUV$FDOOHUSDVVHVDUJXPHQWV
!RGUMENTSARETHETHINGSYOUPASSINTOTHEMETHODS!NARGUMENTAVALUE
LIKE h&OOv ORAREFERENCETOA$OG LANDSFACE DOWNINTOAWAITFORIT
PARAMETER!NDAPARAMETERISNOTHINGMORETHANALOCALVARIABLE!VARIABLE
WITHATYPEANDANAME THATCANBEUSEDINSIDETHEBODYOFTHEMETHOD
"UTHERESTHEIMPORTANTPART)FAMETHODTAKESAPARAMETER YOUMUSTPASS
ITSOMETHING!NDTHATSOMETHINGMUSTBEAVALUEOFTHEAPPROPRIATETYPE

'RJG QHZ'RJ 
&DOOWKHEDUNPHWKRGRQWKH'RJUHIHU
 HQFHDQGSDVVLQWKHYDOXH DVWKH GEDUN  
DUJXPHQWWRWKHPHWKRG 
 DUJXPHQW
7KHELWVUHSUHVHQWLQJWKHLQW
 YDOXHDUHGHOLYHUHGLQWRWKH
EDUNPHWKRG



SDUDPHWHU 

 7KHELWVODQGLQWKHQXP2I%DUNV
 SDUDPHWHU DQLQWVL]HGYDULDEOH 
LQW

YRLGEDUN LQWQXP2I%DUNV ^
8VHWKHQXP2I%DUNV
ZKLOH QXP2I%DUNV! ^  SDUDPHWHUDVDYDULDEOHLQ
WKHPHWKRGFRGH
6\VWHPRXWSULQWOQ ³UXII´ 
QXP2I%DUNV QXP2I%DUNV
`
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

AW]KIVOM\\PQVO[JIKSNZWUIUM\PWL
-ETHODSCANRETURNVALUES%VERYMETHODISDECLAREDWITHARETURN
TYPE BUTUNTILNOWWEVEMADEALLOFOURMETHODSWITHAYRLG
RETURNTYPE WHICHMEANSTHEYDONTGIVEANYTHINGBACK
YRLGJR ^
` &XWH
"UTWECANDECLAREAMETHODTOGIVEASPECIlCTYPEOFVALUE EXWQRWH[DFWO\ZKDW,
BACKTOTHECALLER SUCHAS ZDVH[SHFWLQJ
LQWJLYH6HFUHW ^
UHWXUQ
`
)FYOUDECLAREAMETHODTORETURNAVALUE YOUMUST
RETURNAVALUEOFTHEDECLAREDTYPE/RAVALUE
THATISCOMPATIBLEWITHTHEDECLAREDTYPE7ELLGET
INTOTHATMOREWHENWETALKABOUTPOLYMORPHISM
INCHAPTERANDCHAPTER

:KDWHYHU\RXVD\
\RX·OOJLYHEDFN\RX
EHWWHUJLYHEDFN

7KHFRPSLOHUZRQ·WOHW\RXUHWXUQWKHZURQJW\SHRIWKLQJ
 


LQW

LQWWKH6HFUHW OLIHJLYH6HFUHW 
W\SHV
7KHVHPDWFK
PXVW  DU H U H W XUQHGIURP
UHVHQWLQJ QWKH
LQWJLYH6HFUHW ^ 7KHELWVUHSUHW PHWKRGDQGODQGL
WKHJLYH6HF HGWKH6HFUHW
UHWXUQ YDULDEOHQDP
` WKLVPXVWILW
LQDQLQW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PXOWLSOHDUJXPHQWV

AW]KIV[MVLUWZM\PIVWVM\PQVO
\WIUM\PWL
-ETHODSCANHAVEMULTIPLEPARAMETERS3EPARATETHEM
WITHCOMMASWHENYOUDECLARETHEM ANDSEPARATETHE
ARGUMENTSWITHCOMMASWHENYOUPASSTHEM-OST
IMPORTANTLY IFAMETHODHASPARAMETERS YOUMUSTPASS
ARGUMENTSOFTHERIGHTTYPEANDORDER

+ITTQVOI\ _WXIZIUM \MZUM \PWLIVL[MVLQVO


Q\\ _WIZO]UMV\[
YRLGJR ^
7HVW6WXIIW QHZ7HVW6WXII 
WWDNH7ZR   7KHDUJXPHQ
` RUGHU\RXSDVVWV\RXSDVVODQGLQWKHVDPH
LQWKHILUVWSDHGWKHP)LUVWDUJXPHQWO
WKHVHFRQGSDUDUDPHWHUVHFRQGDUJXPHQW DQGV
PHWHUDQGVR LQ
RQ
YRLGWDNH7ZR LQW[LQW\ ^
LQW] [\
6\VWHPRXWSULQWOQ ³7RWDOLV´] 
`

AW]KIVXI[[^IZQIJTM[QV\WIUM \PWLI[TWVOI[
\PM^IZQIJTM\ aXMUI\KPM[\PMXIZIUM \MZ\ aXM
WKH
YRLGJR ^ G  E D U  ODQGLQLWVLQ
DQ HE
LQWIRR   Y D O X H V RIIRRHUV6RQRZWKIRR WKH
7KH \SDUDPHW WKHELWVLQ DQGWKH
LQWEDU  [DQG LGHQWLFDOWR HLQWHJHU¶· WVLQEDU
[DUH WWHUQIRUWK FDOWRWKHEL
ELWSD \DUHLGHQWL
WWDNH7ZR IRREDU 
` ELWVLQ

PH
]",W·VWKHRVDR
YRLGWDNH7ZR LQW[LQW\ ^
W K H YD OX H R I
LQW] [\ :KDW·V HWLI\RXDGGHG
I
UHVXOW\RX·GJWLP \ R XSD VV HG W KHPLQWR
6\VWHPRXWSULQWOQ ³7RWDOLV´]  W W K H H
EDUD HWKRG
` WKHWDNH7ZRP
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

2I^IQ[XI[[Ja^IT]M

<PI\UMIV[XI[[JaKWXa


 

 HFODUHDQLQWYDULDEOHDQGDVVLJQLW
'
LQW[  ;  WKHYDOXH¶·7KHELWSDWWHUQIRU
LQW JRHVLQWRWKHYDULDEOHQDPHG[

=  'HFODUHDPHWKRGZLWKDQLQW
YRLGJR LQW] ^` SDUDPHWHUQDPHG]
LQW

FRS\RI
[
 &DOOWKHJR PHWKRGSDVVLQJ


  

   WKHYDULDEOH[DVWKHDUJXPHQW
 7KHELWVLQ[DUHFRSLHGDQG
; =
WKHFRS\ODQGVLQ]
LQW LQW
IRRJR [  YRLGJR LQW] ^`

[GRHVQ DUHQ·W  &KDQJHWKHYDOXHRI]LQVLGH


HYHQLI]·WGFKDQJH  [DQGHF]WHG  

 WKHPHWKRG7KHYDOXHRI[
RHV  
FRQQ 
GRHVQ·WFKDQJH7KHDUJXPHQW
; =
SDVVHGWRWKH]SDUDPHWHUZDV
LQW
LQW RQO\DFRS\RI[
YRLGJR LQW] ^ 7KHPHWKRGFDQ·WFKDQJHWKH
]  ELWVWKDWZHUHLQWKHFDOOLQJ
YDULDEOH[
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DUJXPHQWVDQGUHWXUQYDOXHV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HATHAPPENSIFTHEARGUMENTYOUWANTTO 5HPLQGHU-DYD
PASSISANOBJECTINSTEADOFAPRIMITIVE
FDUHVDERXWW\SH
A: 9OULLLEARNMOREABOUTTHISINLATERCHAPTERS <RXFDQ·WUHWXUQD*LUDIIHZKHQ
WKHUHWXUQW\SHLVGHFODUHG
BUTYOUALREADYKNOWTHEANSWER*AVAPASSES
EVERYTHINGBYVALUE%VERYTHING"UTVALUEMEANS DVD5DEELW6DPHWKLQJZLWK
BITSINSIDETHEVARIABLE!NDREMEMBER YOUDONT SDUDPHWHUV<RXFDQ·WSDVVD
STUFFOBJECTSINTOVARIABLESTHEVARIABLEISAREMOTE *LUDIIHLQWRDPHWKRGWKDW
CONTROLˆAREFERENCETOANOBJECT3OIFYOUPASSA WDNHVD5DEELW
REFERENCETOANOBJECTINTOAMETHOD YOUREPASSING
ACOPYOFTHEREMOTECONTROL3TAYTUNED THOUGH WELL
HAVELOTSMORETOSAYABOUTTHIS

Q: #ANAMETHODDECLAREMULTIPLERETURNVALUES
:MDD=LHGAFLK
/RISTHERESOMEWAYTORETURNMORETHANONE
VALUE ƒ &ODVVHVGHILQHZKDWDQREMHFWNQRZVDQGZKDWDQ
REMHFWGRHV
A: 3ORTOF!METHODCANDECLAREONLYONERETURN ƒ 7KLQJVDQREMHFWNQRZVDUHLWVLQVWDQFHYDULDEOHV
VWDWH 
VALUE"54IFYOUWANTTORETURN SAY THREEINTVALUES
THENTHEDECLAREDRETURNTYPECANBEANINTARRAY ƒ 7KLQJVDQREMHFWGRHVDUHLWVPHWKRGV EHKDYLRU 
3TUFFTHOSEINTSINTOTHEARRAY ANDPASSITONBACK)TS
ALITTLEMOREINVOLVEDTORETURNMULTIPLEVALUESWITH ƒ 0HWKRGVFDQXVHLQVWDQFHYDULDEOHVVRWKDWREMHFWV
DIFFERENTTYPESWELLBETALKINGABOUTTHATINALATER RIWKHVDPHW\SHFDQEHKDYHGLIIHUHQWO\
CHAPTERWHENWETALKABOUT!RRAY,IST
ƒ $PHWKRGFDQKDYHSDUDPHWHUVZKLFKPHDQV\RX
Q: $O)HAVETORETURNTHEEXACTTYPE)DECLARED
FDQSDVVRQHRUPRUHYDOXHVLQWRWKHPHWKRG
ƒ 7KHQXPEHUDQGW\SHRIYDOXHV\RXSDVVLQPXVW
A: 9OUCANRETURNANYTHINGTHATCANBEIMPLICITLY
PDWFKWKHRUGHUDQGW\SHRIWKHSDUDPHWHUV
GHFODUHGE\WKHPHWKRG
PROMOTEDTOTHATTYPE3O YOUCANPASSABYTEWHERE
ANINTISEXPECTED4HECALLERWONTCARE BECAUSETHE ƒ 9DOXHVSDVVHGLQDQGRXWRIPHWKRGVFDQEH
BYTEFITSJUSTFINEINTOTHEINTTHECALLERWILLUSEFOR LPSOLFLWO\SURPRWHGWRDODUJHUW\SHRUH[SOLFLWO\FDVW
ASSIGNINGTHERESULT9OUMUSTUSEANEXPLICITCAST WRDVPDOOHUW\SH
WHENTHEDECLAREDTYPEISSMALLERTHANWHATYOURE
TRYINGTORETURN ƒ 7KHYDOXH\RXSDVVDVDQDUJXPHQWWRDPHWKRG
FDQEHDOLWHUDOYDOXH ¶F·HWF RUDYDULDEOHRI
Q: $O)HAVETODOSOMETHINGWITHTHERETURN
WKHGHFODUHGSDUDPHWHUW\SH IRUH[DPSOH[ZKHUH
[LVDQLQWYDULDEOH  7KHUHDUHRWKHUWKLQJV\RX
VALUEOFAMETHOD#AN)JUSTIGNOREIT
FDQSDVVDVDUJXPHQWVEXWZH·UHQRWWKHUH\HW

A: *AVADOESNTREQUIREYOUTOACKNOWLEDGEA
RETURNVALUE9OUMIGHTWANTTOCALLAMETHODWITH
ƒ $PHWKRGPXVWGHFODUHDUHWXUQW\SH$YRLGUHWXUQ
W\SHPHDQVWKHPHWKRGGRHVQ·WUHWXUQDQ\WKLQJ
ANON VOIDRETURNTYPE EVENTHOUGHYOUDONTCARE ƒ ,IDPHWKRGGHFODUHVDQRQYRLGUHWXUQW\SHLWPXVW
ABOUTTHERETURNVALUE)NTHISCASE YOURECALLING
UHWXUQDYDOXHFRPSDWLEOHZLWKWKHGHFODUHGUHWXUQ
THEMETHODFORTHEWORKITDOESINSIDETHEMETHOD
RATHERTHANFORWHATTHEMETHODGIVESRETURNS)N
W\SH
*AVA YOUDONTHAVETOASSIGNORUSETHERETURNVALUE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

+WWT\PQVO[aW]KIVLW_Q\PXIZIUM\MZ[
IVLZM\]ZV\aXM[
.OWTHATWEVESEENHOWPARAMETERSANDRETURNTYPESWORK ITS (OHFWULF*XLWDU
TIMETOPUTTHEMTOGOODUSE'ETTERSAND3ETTERS)FYOUREINTO
BEINGALLFORMALABOUTIT YOUMIGHTPREFERTOCALLTHEM!CCESSORS EUDQG
AND-UTATORS"UTTHATSAWASTEOFPERFECTLYGOODSYLLABLES QXP2I3LFNXSV
"ESIDES 'ETTERSAND3ETTERSlTSTHE*AVANAMINGCONVENTION SO URFN6WDU8VHV,W
WKHVH
1RWH8VLQJ QWLRQV
THATSWHATWELLCALLTHEM
'ETTERSAND3ETTERSLETYOU WELL GETANDSETTHINGS)NSTANCEVARI
JHW%UDQG QDPLQJFRQYH H
ABLEVALUES USUALLY!'ETTERSSOLEPURPOSEINLIFEISTOSENDBACK PHDQV\RX·OOE
ASARETURNVALUE THEVALUEOFWHATEVERITISTHATPARTICULAR'ETTER VHW%UDQG IROORZLQJDQDYD
ISSUPPOSEDTOBE'ETTING!NDBYNOW ITSPROBABLYNOSURPRISE JHW1XP2I3LFNXSV LPSRUWDQW-
VWDQGDUG
THATA3ETTERLIVESANDBREATHESFORTHECHANCETOTAKEANARGU
MENTVALUEANDUSEITTOSETTHEVALUEOFANINSTANCEVARIABLE VHW1XP2I3LFNXSV
JHW5RFN6WDU8VHV,W
VHW5RFN6WDU8VHV,W
FODVV(OHFWULF*XLWDU^

6WULQJEUDQG
LQWQXP2I3LFNXSV
ERROHDQURFN6WDU8VHV,W

6WULQJJHW%UDQG ^
UHWXUQEUDQG
`

YRLGVHW%UDQG 6WULQJD%UDQG ^
EUDQG D%UDQG
`

LQWJHW1XP2I3LFNXSV ^
UHWXUQQXP2I3LFNXSV
`

YRLGVHW1XP2I3LFNXSV LQWQXP ^
QXP2I3LFNXSV QXP
`

ERROHDQJHW5RFN6WDU8VHV,W ^
UHWXUQURFN6WDU8VHV,W
`

YRLGVHW5RFN6WDU8VHV,W ERROHDQ\HV2U1R ^
URFN6WDU8VHV,W \HV2U1R
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHDOGHYHORSHUVHQFDSVXODWH

-VKIX[]TI\QWV
,WQ\WZZQ[SP]UQTQI\QWVIVL
ZQLQK]TM
-HQVD\V\RX·UH
5NTILTHISMOSTIMPORTANTMOMENT WEVE
ZHOOHQFDSVXODWHG
BEENCOMMITTINGONEOFTHEWORST//
FAUXPASANDWERENOTTALKINGMINOR
VIOLATIONLIKESHOWINGUPWITHOUTTHE@"
IN"9/" .O WERETALKING&AUX0ASWITH
ACAPITAL@&!ND@0
/URSHAMEFULTRANSGRESSION
%XPOSINGOURDATA
(EREWEARE JUSTHUMMINGALONGWITHOUT
ACAREINTHEWORLDLEAVINGOURDATAOUT
THEREFORANYONETOSEEANDEVENTOUCH
9OUMAYHAVEALREADYEXPERIENCEDTHAT
VAGUELYUNSETTLINGFEELINGTHATCOMESWITH
LEAVINGYOURINSTANCEVARIABLESEXPOSED
%XPOSEDMEANSREACHABLEWITHTHEDOT
OPERATOR ASIN
WKH&DWKHLJKW 
4HINKABOUTTHISIDEAOFUSINGOURREMOTE
CONTROLTOMAKEADIRECTCHANGETOTHE#AT
OBJECTSSIZEINSTANCEVARIABLE)NTHEHANDS
OFTHEWRONGPERSON AREFERENCEVARIABLE
REMOTECONTROL ISQUITEADANGEROUS
WEAPON"ECAUSEWHATSTOPREVENT VHWWHU
I RU FL QJ H YH U\ERG\WRFDOODDWIURP
DQ·W
\LNHV:HF SSHQ
%\ QSURWHFWWKHF
PHWKRGZHFDVL]HFKDQJHV
WKH&DWKHLJKW  OHWWKLVKD XQDFFHSWDEOH

4HISWOULDBEA"AD4HING7ENEEDTO SXEOLFYRLGVHW+HLJKW LQWKW ^


BUILDSETTERMETHODSFORALLTHEINSTANCE
LI KW! ^
VARIABLES ANDlNDAWAYTOFORCEOTHER :HSXWLQ
CODETOCALLTHESETTERSRATHERTHANACCESS KHLJKW KW WRJXDUDQWFKHFNV
THEDATADIRECTLY ` PLQLPXPFD HHD
WKHLJKW
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

0QLM\PMLI\I ,CXC'ZRQUGF
9ESITISTHATSIMPLETOGOFROM 7KLVZHHN·VLQWHUYLHZ
ANIMPLEMENTATIONTHATSJUST $Q2EMHFWJHWVFDQGLGDERXWHQFDSVXODWLRQ
BEGGINGFORBADDATATOONE
THATPROTECTSYOURDATAAND +HDG)LUVW?PI\¼[\PMJQOLMITIJW]\MVKIX[]TI\QWV'
PROTECTSYOURRIGHTTOMODIFY 2EMHFW73aW]SVW_\PI\LZMIU_PMZMaW]¼ZMOQ^QVOI\ITS\WXMWXTM_PMVaW]
YOURIMPLEMENTATIONLATER []LLMVTaZMITQbM·aW]¼ZMVISML'
/+ SOHOWEXACTLYDOYOU +HDG)LUVWAMIP_M¼^MPIL\PI\WVM1\¼[ZQOP\]X\PMZM_Q\P\PMWVMIJW]\\PM8QTI\M[
HIDETHEDATA7ITHTHE UIKPQVMIVLVW_M_WV¼\OW\PMZM73[WaW]NMMTVISML*]\W\PMZ\PIVJMQVOITQ\\TM
SXEOLFANDSULYDWH M`XW[MLQ[\PMZMIVaLIVOMZ'
ACCESSMODIlERS9OURE 2EMHFW1[\PMZMIVaLIVOMZ'1[\PMZMIVaLIVOMZ'C[\IZ\[TI]OPQVOE0MaLQLITTaW]W\PMZ
FAMILIARWITHSXEOLFnWEUSE QV[\IVKM[PMIZ\PI\¹1[\PMZMIVaLIVOMZ'ºPMI[S['CNITT[WV\PMÆWWZTI]OPQVOE
ITWITHEVERYMAINMETHOD
+HDG)LUVW?PI\¼[N]VVaIJW]\\PI\';MMU[TQSMIZMI[WVIJTMY]M[\QWV
(ERESANENCAPSULATION
2EMHFW731¼TTM`XTIQVQ\1\¼[CJ]Z[\[W]\TI]OPQVOIOIQV]VKWV\ZWTTIJTaE
STARTERRULEOFTHUMBALLSTAN
DARDDISCLAIMERSABOUTRULES +HDG)LUVW+IV1OM\aW]IVa\PQVO'?I\MZ'
OFTHUMBAREINEFFECT MARK 2EMHFW?PM_ 7PJWa6W1¼UÅVMZMITTa1¼TTJM[MZQW][,MMXJZMI\P73OWWV
YOURINSTANCEVARIABLESPRIVATE
ANDPROVIDEPUBLICGETTERS +HDG)LUVW;W_PI\LWM[MVKIX[]TI\QWVXZW\MK\aW]NZWU'
ANDSETTERSFORACCESSCONTROL 2EMHFW-VKIX[]TI\QWVX]\[INWZKMÅMTLIZW]VLUaQV[\IVKM^IZQIJTM[[WVWJWLaKIV[M\
7HENYOUHAVEMOREDESIGN \PMU\WTM\¼[[Ia[WUM\PQVOQVIXXZWXZQI\M
ANDCODINGSAVVYIN*AVA YOU +HDG)LUVW+IVaW]OQ^MUMIVM`IUXTM'
WILLPROBABLYDOTHINGSALITTLE
DIFFERENTLY BUTFORNOW THIS 2EMHFW,WM[V¼\\ISMI8P,PMZM5W[\QV[\IVKM^IZQIJTM^IT]M[IZMKWLML_Q\PKMZ\IQV
APPROACHWILLKEEPYOUSAFE I[[]UX\QWV[IJW]\\PMJW]VLIZQM[WN \PM^IT]M[4QSM\PQVSWN ITT\PM\PQVO[\PI\_W]TL
JZMISQN VMOI\Q^MV]UJMZ[_MZMITTW_ML6]UJMZWN JI\PZWWU[QVIVWNÅKM>MTWKQ\aWN 
IVIQZXTIVM*QZ\PLIa[*IZJMTT_MQOP\+MTTXPWVMV]UJMZ[5QKZW_I^MW^MVXW_MZ
0DUNLQVWDQFH +HDG)LUVW1[MM_PI\aW]UMIV;WPW_LWM[MVKIX[]TI\QWVTM\aW][M\JW]VLIZQM['
YDULDEOHVSULYDWH 2EMHFW*aNWZKQVOW\PMZKWLM\WOW\PZW]OP[M\\MZUM\PWL[<PI\_Ia\PM[M\\MZUM\PWL
KIV^ITQLI\M\PMXIZIUM\MZIVLLMKQLMQN Q\¼[LWIJTM5IaJM\PMUM\PWL_QTTZMRMK\Q\IVL
LWVW\PQVOWZUIaJMQ\¼TT\PZW_IV-`KMX\QWVTQSMQN Q\¼[IV]TT[WKQIT[MK]ZQ\aV]UJMZ
0DUNJHWWHUVDQG NWZIKZMLQ\KIZLIXXTQKI\QWVWZUIaJM\PMUM\PWL_QTTZW]VL\PMXIZIUM\MZ[MV\QV\W
VHWWHUVSXEOLF \PMVMIZM[\IKKMX\IJTM^IT]M<PMXWQV\Q[aW]KIVLW_PI\M^MZaW]_IV\QV\PM[M\\MZ
UM\PWL_PMZMI[aW]KIV¼\LWIVa\PQVOQN aW]ZQV[\IVKM^IZQIJTM[IZMX]JTQK
+HDG)LUVW*]\[WUM\QUM[1[MM[M\\MZUM\PWL[\PI\[QUXTa[M\\PM^IT]M_Q\PW]\KPMKS
QVOIVa\PQVO1N aW]PI^MIVQV[\IVKM^IZQIJTM\PI\LWM[V¼\PI^MIJW]VLIZaLWM[V¼\\PI\
[M\\MZUM\PWLKZMI\M]VVMKM[[IZaW^MZPMIL')XMZNWZUIVKMPQ\'
´6DGO\%LOOIRUJRWWR
HQFDSVXODWHKLV&DWFODVVDQG 2EMHFW<PMXWQV\\W[M\\MZ[IVLOM\\MZ[\WWQ[\PI\aW]KIVKPIVOMaW]ZUQVLTI\MZ
HQGHGXSZLWKDIODWFDWµ _Q\PW]\JZMISQVOIVaJWLaMT[M¼[KWLM 1UIOQVMQN PITN \PMXMWXTMQVaW]ZKWU
RYHUKHDUGDWWKHZDWHUFRROHU  XIVa][MLaW]ZKTI[[_Q\PX]JTQKQV[\IVKM^IZQIJTM[IVLWVMLIaaW][]LLMVTaZMITQbML
¹7WX[·\PMZM¼[[WUM\PQVO1LQLV¼\XTIVNWZ_Q\P\PI\^IT]M1¼UOWQVO\WPI^M\W[_Q\KP\WI
[M\\MZUM\PWLºAW]JZMISM^MZaWVM¼[KWLM<PMKWWT\PQVOIJW]\MVKIX[]TI\QWVQ[\PI\aW]
OM\\WKPIVOMaW]ZUQVL)VLVWJWLaOM\[P]Z\<PMXMZNWZUIVKMOIQVNZWU][QVO^IZQIJTM[
LQZMK\TaQ[[WUQVQ[K]TMIVL_W]TLZIZMTa¸QN M^MZ¸JM_WZ\PQ\
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZREMHFWVEHKDYH

FODVV*RRG'RJ^
-VKIX[]TI\QVO\PM  *RRG'RJ
/WWL,WOKTI[[ FH
SULYDWHLQWVL]H

H  WK H LQVWDQ VL]H
0DN SULYDWH
H
YDULDEO
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H JHW6L]H 

` VHW6L]H 

 EDUN 
QG
JHWWHUD SXEOLFYRLGVHW6L]H LQWV ^
0DNHWKHHWKRGVSXEOLF
VHWWHUP VL]H V
`

Licensed by
(YHQWKRXJKWKHPHWKRGVGFRRQ·WUHDOO\
YRLGEDUN ^
LI VL]H! ^
ROWKLQJ 6\VWHPRXWSULQWOQ ³:RRRI:RRRI´ 
DGGQHZIXQFWLRQDOLW\WKHXUPLQG

Eduard Simons
\R
LVWKDW\RXFDQFKDQJH DQGPDNHD `HOVHLI VL]H! ^
ODWHU\RXFDQFRPHEDFN WHU 6\VWHPRXWSULQWOQ ³5XII5XII´ 
PHWKRGVDIHUIDVWHUEHW `HOVH^

104038
6\VWHPRXWSULQWOQ ³<LS<LS´ 
`
`
`
$Q\SODFHZKHUHD
SDUWLFXODUYDOXHFDQ FODVV*RRG'RJ7HVW'ULYH^
EHXVHGDPHWKRG
FDOOWKDWUHWXUQVWKDW SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
W\SHFDQEHXVHG *RRG'RJRQH QHZ*RRG'RJ 
RQHVHW6L]H  
*RRG'RJWZR QHZ*RRG'RJ 
LQVWHDGRI
WZRVHW6L]H  
LQW[ 
6\VWHPRXWSULQWOQ ³'RJRQH³RQHJHW6L]H 
\RXFDQVD\ 6\VWHPRXWSULQWOQ ³'RJWZR³WZRJHW6L]H 
LQW[ RQHJHW6L]H  RQHEDUN 
WZREDUN 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

0W_LWWJRMK\[QVIVIZZIa
JMPI^M'
*USTLIKEANYOTHEROBJECT4HEONLYDIFFERENCEIS
HOWYOUGETTOTHEM)NOTHERWORDS HOWYOUGET
THEREMOTECONTROL,ETSTRYCALLINGMETHODSON
$OGOBJECTSINANARRAY

 'HFODUHDQGFUHDWHD'RJDUUD\
WRKROG'RJUHIHUHQFHV
'RJ>@SHWV
SHWV QHZ'RJ>@

'RJ'RJ'RJ'RJ'RJ'RJ'RJ

SHWV
'RJDUUD\REMHFW 'RJ>@
'RJ>@

 &UHDWHWZRQHZ'RJREMHFWV
DQGDVVLJQWKHPWRWKHÀUVW J2EMHFW
'R J2EMHFW
WZRDUUD\HOHPHQWV
 'R

SHWV>@ QHZ'RJ 
SHWV>@ QHZ'RJ  VL]H
VL]H

 &DOOPHWKRGVRQWKHWZR'RJ
REMHFWV
SHWV>@VHW6L]H  
LQW[ SHWV>@JHW6L]H 
SHWV>@VHW6L]H  

'RJ'RJ'RJ'RJ'RJ'RJ'RJ

SHWV
'RJDUUD\REMHFW 'RJ>@
'RJ>@
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQLWLDOL]LQJLQVWDQFHYDULDEOHV

,MKTIZQVOIVLQVQ\QITQbQVO
QV[\IVKM^IZQIJTM[
,QVWDQFHYDULDEOHV
9OUALREADYKNOWTHATAVARIABLEDECLARATIONNEEDSATLEASTANAME
ANDATYPE DOZD\VJHWD
LQWVL]H GHIDXOWYDOXH,I
6WULQJQDPH
\RXGRQ·WH[SOLFLWO\
!NDYOUKNOWTHATYOUCANINITIALIZEASSIGNAVALUE TOTHE DVVLJQDYDOXH
VARIABLEATTHESAMETIME
WRDQLQVWDQFH
LQWVL]H 
6WULQJQDPH ³'RQQ\´ YDULDEOHRU\RX
GRQ·WFDOODVHWWHU
"UTWHENYOUDONTINITIALIZEANINSTANCEVARIABLE WHATHAPPENS
WHENYOUCALLAGETTERMETHOD)NOTHERWORDS WHATISTHEVALUEOF
PHWKRGWKH
ANINSTANCEVARIABLEBEFOREYOUINITIALIZEIT LQVWDQFHYDULDEOH
EOHV VWLOOKDVDYDOXH
QVWDQFHYDULD
GHFODUHWZDRLVVLJQDYDOXH
FODVV3RRU'RJ^
LQWHJHUV  
SULYDWHLQWVL]H EXWGRQ·W
SULYDWH6WULQJQDPH IORDWLQJSRLQWV 

SXEOLFLQWJHW6L]H ^ :KDWZLOOWKHVHUHWXUQ"" ERROHDQV  IDOVH
UHWXUQVL]H
UHIHUHQFHV  QXOO
`
SXEOLF6WULQJJHW1DPH ^
UHWXUQQDPH
`

`
N ":LOO
SXEOLFFODVV3RRU'RJ7HVW'ULYH^
D W  G R  \RXWKLOLQH"
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ :K YHQFRPS
3RRU'RJRQH QHZ3RRU'RJ  WKLVH
6\VWHPRXWSULQWOQ ³'RJVL]HLV³RQHJHW6L]H 
6\VWHPRXWSULQWOQ ³'RJQDPHLV³RQHJHW1DPH 
`

` HLQVWDQFHYDULDEOHV LWLDOL]
<RXGRQ·WKDYHOZWRD\LQVKDYHDGHIDXOWYDOXH1XPWEHIDUOVH
EHFDXVHWKH\DFOXGLQJFKDU JHWERROHDQVJH
)LOH(GLW:LQGRZ+HOS&DOO9HW

MDYD3RRU'RJ7HVW'ULYH SULPLWLYHV LQ HUHQFHYDULDEOHVJHWQXOO


DQGREMHFWUHI RQWUROWKDW
WPHDQVDUHPRRWHDQF\WKLQJ$
'RJVL]HLV
5 HPHP EHU Q XO OM XV
SURJUDPPHGW
'RJQDPHLVQXOO LVQ·WFRQWUROOLQJQ WXDOREMHFW
UHIHUHQFHEXW DF R

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

<PMLQNNMZMVKMJM\ _MMVQV[\IVKM
IVLTWKIT^IZQIJTM[

 ,QVWDQFHYDULDEOHVDUHGHFODUHG
LQVLGHDFODVVEXWQRWZLWKLQDPHWKRG /RFDOYDULDEOHVGR
FODVV+RUVH^ 127JHWDGHIDXOW
SULYDWHGRXEOHKHLJKW  YDOXH7KHFRPSLOHU
SULYDWH6WULQJEUHHG
PRUHFRGH FRPSODLQVLI\RX
` WU\WRXVHDORFDO
YDULDEOHEHIRUH
WKHYDULDEOHLV
 /RFDOYDULDEOHVDUHGHFODUHGZLWKLQDPHWKRG LQLWLDOL]HG
FODVV$GG7KLQJ^
LQWD
LQWE 
WKHUH DUH QR
'XPE 4XHVWLRQV
SXEOLFLQWDGG ^
LQWWRWDO DE
UHWXUQWRWDO
Q: 7HATABOUTMETHODPARAMETERS
(OWDOTHERULESABOUTLOCALVARIABLES
` APPLYTOTHEM
`

A: -ETHODPARAMETERSAREVIRTUALLYTHE
SAMEASLOCALVARIABLESˆTHEYREDECLARED
 /RFDOYDULDEOHV0867EHLQLWLDOL]HGEHIRUHXVH INSIDETHEMETHODWELL TECHNICALLYTHEYRE
FODVV)RR^ DECLAREDINTHEARGUMENTLISTOFTHEMETHOD
FDQ
SXEOLFYRLGJR ^ :RQ·WFRPSLOHRX<WRXDYDOXH RATHERTHANWITHINTHEBODYOFTHEMETHOD
GHFODUH[ ZL WK BUTTHEYRESTILLLOCALVARIABLESASOPPOSEDTO
LQW[ WU\
EXWDVVRRQDVKH\FRXRP INSTANCEVARIABLES "UTMETHODPARAMETERS
LQW] [ LW W SLOHU WILLNEVERBEUNINITIALIZED SOYOULLNEVERGET
WR86(
`
IUHDNVRXW ACOMPILERERRORTELLINGYOUTHATAPARAMETER
VARIABLEMIGHTNOTHAVEBEENINITIALIZED
`
 "UTTHATSBECAUSETHECOMPILERWILLGIVE
YOUANERRORIFYOUTRYTOINVOKEAMETHOD
)LOH(GLW:LQGRZ+HOS<LNHV
WITHOUTSENDINGARGUMENTSTHATTHEMETHOD
MDYDF)RRMDYD NEEDS3OPARAMETERSARE!,7!93INITIALIZED
BECAUSETHECOMPILERGUARANTEESTHAT
)RRMDYDYDULDEOH[PLJKW METHODSAREALWAYSCALLEDWITHARGUMENTS
QRWKDYHEHHQLQLWLDOL]HG THATMATCHTHEPARAMETERSDECLAREDFORTHE
METHOD ANDTHEARGUMENTSAREASSIGNED
LQW] [ AUTOMATICALLY TOTHEPARAMETERS
HUURUA

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWHTXDOLW\

+WUXIZQVO^IZQIJTM[XZQUQ\Q^M[WZZMNMZMVKM[
3OMETIMESYOUWANTTOKNOWIFTWOPRIMITIVESARETHESAME4HATSEASY
ENOUGH JUSTUSETHEOPERATOR3OMETIMESYOUWANTTOKNOWIFTWO
8VH WRFRPSDUH
REFERENCEVARIABLESREFERTOASINGLEOBJECTONTHEHEAP%ASYASWELL JUSTUSE WZRSULPLWLYHV
THEOPERATOR"UTSOMETIMESYOUWANTTOKNOWIFTWOOBJECTSAREEQUAL RUWRVHHLIWZR
!NDFORTHAT YOUNEEDTHEEQUALS METHOD4HEIDEAOFEQUALITYFOR UHIHUHQFHVUHIHUWR
OBJECTSDEPENDSONTHETYPEOFOBJECT&OREXAMPLE IFTWODIFFERENT3TRING WKHVDPHREMHFW
OBJECTSHAVETHESAMECHARACTERSSAY hEXPEDITIOUSv THEYAREMEANINGFULLY
EQUIVALENT REGARDLESSOFWHETHERTHEYARETWODISTINCTOBJECTSONTHEHEAP 8VHWKHHTXDOV 
"UTWHATABOUTA$OG$OYOUWANTTOTREATTWO$OGSASBEINGEQUALIFTHEY PHWKRGWRVHH
HAPPENTOHAVETHESAMESIZEANDWEIGHT0ROBABLYNOT3OWHETHERTWO
DIFFERENTOBJECTSSHOULDBETREATEDASEQUALDEPENDSONWHATMAKESSENSEFOR
LIWZRGLIIHUHQW
THATPARTICULAROBJECTTYPE7ELLEXPLORETHENOTIONOFOBJECTEQUALITYAGAIN REMHFWVDUHHTXDO
INLATERCHAPTERSANDAPPENDIX" BUTFORNOW WENEEDTOUNDERSTANDTHAT 6XFKDVWZRGLIIHUHQW
THEOPERATORISUSEDONLYTOCOMPARETHEBITSINTWOVARIABLES7HATTHOSE 6WULQJREMHFWVWKDWERWK
BITSREPRESENTDOESNTMATTER4HEBITSAREEITHERTHESAME ORTHEYRENOT UHSUHVHQWWKHFKDUDFWHUV
LQ´)UHGµ
7RFRPSDUHWZRSULPLWLYHVXVHWKH RSHUDWRU

4HEOPERATORCANBEUSEDTOCOMPARETWOVARIABLESOFANYKIND ANDIT WKHELW


SIMPLYCOMPARESTHEBITS VDPHVRSWDWWHUQVDUHWKH
HTXDOXVLQ KHVHWZRDUH 
IFAB []LOOKSATTHEBITSINAANDBANDRETURNSTRUEIFTHEBITPATTERN J
ISTHESAMEALTHOUGHITDOESNTCAREABOUTTHESIZEOFTHEVARIABLE SOALLTHE
EXTRAZEROESONTHELEFTENDDONTMATTER  RHVRQ U 



HPRUH]H   
LQWD  WKHUHDWUVLGHRIWKHLQRXWW  

I
WKHOH GRQ·WFDUHDE D E
E\WHE 
EXWZH HUH
LI D E ^WUXH` WKDWK LQW E\WH

7RVHHLIWZRUHIHUHQFHVDUHWKHVDPH ZKLFKPHDQVWKH\
UHIHUWRWKHVDPHREMHFWRQWKHKHDS XVHWKH RSHUDWRU
WKHELW
2EMEMBER THEOPERATORCARESONLYABOUTTHEPATTERNOFBITSINTHE VDPHIRUSDWWHUQVDUHWKH
VARIABLE4HERULESARETHESAMEWHETHERTHEVARIABLEISAREFERENCEOR DUHHTXDO DDQGFVRWKH 
PRIMITIVE3OTHEOPERATORRETURNSTRUEIFTWOREFERENCEVARIABLESREFERTO XVLQJ \
THESAMEOBJECT)NTHATCASE WEDONTKNOWWHATTHEBITPATTERNISBECAUSE
ITSDEPENDENTONTHE*6- ANDHIDDENFROMUS BUTWEDOKNOWTHATWHATEVER
ITLOOKSLIKE ITWILLBETHESAMEFORTWOREFERENCESTOASINGLEOBJECT
)RRD QHZ)RR 
)RRE QHZ)RR 
Y
)RRF D
LI D E ^IDOVH` )RR
D FLVWUXH Z
;
LI D F ^WUXH`
LI E F ^IDOVH` D ELVIDOVH )RR
)RR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

,DOZD\V
NHHSP\YDULDEOHV
SULYDWH,I\RXZDQWWR
VHHWKHP\RXKDYHWR
WDONWRP\PHWKRGV

LFN
SULY
DWH
0DNH LWRE6DW
2OSESARE
ISCHOPPY
THISPOEM
YVALU E
PASSINGB
BYCOPY
ISPASSING R
EPLACEOU
R4RYIT2
Y O U C AN DOBETTE N " E TT E RYET
/H LIKE ITHYOURO
W
S
NDLINEW WNWORD
DUMBSECO T H IN G W ITHYOURO
T H E W H OLE
REPLACE ETIT
NEVERFORG
6KDUSHQ \RXU SHQFLO ANDYOULL

LQWD FDOF$UHD  


:KDW·VOHJDO" VKRUWF 
*LYHQWKHPHWKRGEHORZZKLFK
RIWKHPHWKRGFDOOVOLVWHGRQWKH FDOF$UHD F 
ULJKWDUHOHJDO"
LQWG FDOF$UHD  
3XWDFKHFNPDUNQH[WWRWKH
FDOF$UHD  
RQHVWKDWDUHOHJDO 6RPH
VWDWHPHQWVDUHWKHUHWRDVVLJQ ORQJW 
YDOXHVXVHGLQWKHPHWKRGFDOOV 
LQWI FDOF$UHD W 
LQWJ FDOF$UHD 
LQWFDOF$UHD LQWKHLJKWLQWZLGWK ^ FDOF$UHD 
UHWXUQKHLJKW ZLGWK E\WHK FDOF$UHD  
` LQWM FDOF$UHD  

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH%HWKH&RPSLOHU

1dQ^OU_Q "%THECOMPILER
(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRIWKHVHILOHV
ZLOOFRPSLOH,IWKH\ZRQ·W
FRPSLOHKRZZRXOG\RX
IL[WKHPDQGLIWKH\GR
FRPSLOHZKDWZRXOGEH
WKHLURXWSXW"

  $   %

FODVV;&RS\^ FODVV&ORFN^
6WULQJWLPH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
YRLGVHW7LPH 6WULQJW ^
LQWRULJ 
WLPH W
;&RS\[ QHZ;&RS\  `

LQW\ [JR RULJ  YRLGJHW7LPH ^


UHWXUQWLPH
6\VWHPRXWSULQWOQ RULJ´´\  `
`
`
LQWJR LQWDUJ ^
FODVV&ORFN7HVW'ULYH^
DUJ DUJ  SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

UHWXUQDUJ &ORFNF QHZ&ORFN 
`
`
FVHW7LPH ´µ 
6WULQJWRG FJHW7LPH 
6\VWHPRXWSULQWOQ ´WLPH´WRG 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

1dQ^OU_Q !BUNCHOF*AVACOMPONENTS INFULLCOSTUME AREPLAYINGAPARTY


GAME h7HOAM)v4HEYGIVEYOUACLUE ANDYOUTRYTOGUESSWHO
THEYARE BASEDONWHATTHEYSAY!SSUMETHEYALWAYSTELLTHETRUTH
ABOUTTHEMSELVES)FTHEYHAPPENTOSAYSOMETHINGTHATCOULDBETRUE
FORMORETHANONEGUY THENWRITEDOWNALLFORWHOMTHATSENTENCE
APPLIES&ILLINTHEBLANKSNEXTTOTHESENTENCEWITHTHENAMESOFONE
ORMOREATTENDEES
4ONIGHTSATTENDEES

 D P  ," INSTANCEVARIABLE ARGUMENT RETURN GETTER SETTER

:K R ENCAPSULATION PUBLIC PRIVATE PASSBYVALUE METHOD

$FODVVFDQKDYHDQ\QXPEHURI WKHVH

$PHWKRGFDQKDYHRQO\RQHRI WKHVH

7KLVFDQEHLPSOLFLWO\SURPRWHG

,SUHIHUP\LQVWDQFHYDULDEOHVSULYDWH

,WUHDOO\PHDQV¶PDNHDFRS\·

2QO\VHWWHUVVKRXOGXSGDWHWKHVH

$PHWKRGFDQKDYHPDQ\RI WKHVH

,UHWXUQVRPHWKLQJE\GHILQLWLRQ

,VKRXOGQ·WEHXVHGZLWKLQVWDQFHYDULDEOHV

,FDQKDYHPDQ\DUJXPHQWV

%\GHILQLWLRQ,WDNHRQHDUJXPHQW

7KHVHKHOSFUHDWHHQFDSVXODWLRQ

,DOZD\VIO\VROR

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH0L[HG0HVVDJHV

-IXED
-ESSAGES
!SHORT*AVAPROGRAMISLISTEDTOYOURRIGHT SXEOLFFODVV0L[^
4WOBLOCKSOFTHEPROGRAMAREMISSING
9OURCHALLENGEISTOMATCHTHECANDIDATE LQWFRXQWHU 
BLOCKSOFCODEBELOW WITHTHEOUTPUT SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
THATYOUDSEEIFTHEBLOCKSWEREINSERTED LQWFRXQW 
.OTALLTHELINESOFOUTPUTWILLBEUSED AND 0L[>@PD QHZ0L[>@
SOMEOFTHELINESOFOUTPUTMIGHTBEUSED
LQW[ 
MORETHANONCE$RAWLINESCONNECTING
THECANDIDATEBLOCKSOFCODEWITHTHEIR ZKLOH  ^
MATCHINGCOMMAND LINEOUTPUT
PD>[@ QHZ0L[ 
PD>[@FRXQWHU PD>[@FRXQWHU
FRXQW FRXQW
FRXQW FRXQWPD>[@PD\EH1HZ [ 
[ [
`
6\VWHPRXWSULQWOQ FRXQW³³
PD>@FRXQWHU 
#ANDIDATES 0OSSIBLEOUTPUT `

[  SXEOLFLQWPD\EH1HZ LQWLQGH[ ^

LQGH[ LI  ^



0L[P QHZ0L[ 
[  PFRXQWHU PFRXQWHU
UHWXUQ
LQGH[ `

UHWXUQ
`
[ 
`
LQGH[ 

[ 

LQGH[ 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

SXEOLFFODVV3X]]OH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
LQW\ 
3RRO3X]]OH LQW[ 
9OURJOBISTOTAKECODESNIPPETSFROMTHE LQWUHVXOW 
POOLANDPLACETHEMINTOTHEBLANKLINES ZKLOH [ ^
INTHECODE9OUMAYNOTUSETHESAME BBBBBBBBBBBBBBBBBBBBBBBBBBB
SNIPPETMORETHANONCE ANDYOUWONT
BBBBBBBBBBBBBBBBBBBBBBBBBBB
NEEDTOUSEALLTHESNIPPETS9OURGOAL
ISTOMAKEACLASSTHATWILLCOMPILEAND \ \ 
RUNANDPRODUCETHEOUTPUTLISTED BBBBBBBBBBBBBBBBB
`
[ 
ZKLOH [! ^
BBBBBBBBBBBBBBBBB
UHVXOW UHVXOWBBBBBBBBBBBBBBBBBBB
/UTPUT `
)LOH(GLW:LQGRZ+HOS%HOO\)ORS 6\VWHPRXWSULQWOQ ´UHVXOW´UHVXOW 
`
MDYD3X]]OH
`
UHVXOW
FODVVBBBBBBBBBBB^
LQWLYDU
BBBBBBBBBBBBBBGR6WXII LQWBBBBBBBBB ^
LI LYDU! ^
UHWXUQBBBBBBBBBBBBBBBBBBBBBBBBB
`HOVH^
UHWXUQBBBBBBBBBBBBBBBBBBBBBBBBB
`
`
`
.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDONLYONCE DO3TUFFX 
OBSDO3TUFFX 
OBS;X=DO3TUFFFACTOR 
IVARX
OBS;X=DO3TUFFX  IVAR FACTOR
OBSIVARX 0UZZLE
OBS;X=IVARX IVAR IVAR
 FACTOR  0UZZLEB INT
OBS;X=IVARY FACTOR IVAR
 FACTOR  0UZZLEB SHORT
IVAR
FACTOR
0UZZLE;=OBSNEW0UZZLE;= PUBLIC
OBS;X=NEW0UZZLEBX 
0UZZLEB;=OBSNEW0UZZLEB;= PRIVATE XX  OBS;=NEW0UZZLEB 
0UZZLEB;=OBSNEW0UZZLE;= XX  OBS;X=NEW0UZZLEB 
OBSNEW0UZZLEB 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH)LYH0LQXWH0\VWHU\

)DVW7LPHVLQ6WLP&LW\

:KHQ%XFKDQDQMDPPHGKLVWZLWFKJXQLQWR-DL¶VVLGH-DLIUR]H-DLNQHZWKDW%XFKDQDQ
ZDVDVVWXSLGDVKHZDVXJO\DQGKHGLGQ¶WZDQWWRVSRRNWKHELJJX\%XFKDQDQRUGHUHG-DL
LQWRKLVERVV¶VRI¿FHEXW-DL¶GGRQHQRWKLQJZURQJ ODWHO\ VRKH¿JXUHGDOLWWOHFKDWZLWK
%XFKDQDQ¶VERVV/HYHOHUFRXOGQ¶WEHWRREDG+H¶GEHHQPRYLQJORWVRIQHXUDOVWLPPHUVLQ
WKHZHVWVLGHODWHO\DQGKH¿JXUHG/HYHOHUZRXOGEHSOHDVHG%ODFNPDUNHWVWLPPHUVZHUHQ¶W
WKHEHVWPRQH\SXPSDURXQGEXWWKH\ZHUHSUHWW\KDUPOHVV0RVWRIWKHVWLPMXQNLHVKH¶G
VHHQWDSSHGRXWDIWHUDZKLOHDQGJRWEDFNWROLIHPD\EHMXVWDOLWWOHOHVVIRFXVHGWKDQEHIRUH

)LYH0LQXWH /HYHOHU¶VµRI¿FH¶ZDVDVNXQJ\ORRNLQJVNLPPHUEXWRQFH%XFKDQDQVKRYHGKLPLQ-DL
FRXOGVHHWKDWLW¶GEHHQPRGL¿HGWRSURYLGHDOOWKHH[WUDVSHHGDQGDUPRUWKDWDORFDOERVVOLNH
0\VWHU\
Licensed by
/HYHOHUFRXOGKRSHIRU³-DLP\ER\´KLVVHG/HYHOHU³SOHDVXUHWRVHH\RXDJDLQ´³/LNHZLVH
,¶PVXUH´VDLG-DLVHQVLQJWKHPDOLFHEHKLQG/HYHOHU¶VJUHHWLQJ³:HVKRXOGEHVTXDUH
/HYHOHUKDYH,PLVVHGVRPHWKLQJ"´³+D<RX¶UHPDNLQJLWORRNSUHWW\JRRG-DL\RXUYROXPH
LVXSEXW,¶YHEHHQH[SHULHQFLQJVKDOOZHVD\DOLWWOHµEUHDFK¶ODWHO\´VDLG/HYHOHU

Eduard Simons
-DLZLQFHGLQYROXQWDULO\KH¶GEHHQDWRSGUDZHUMDFNKDFNHULQKLVGD\$Q\WLPHVRPHRQH
¿JXUHGRXWKRZWREUHDNDVWUHHWMDFN¶VVHFXULW\XQZDQWHGDWWHQWLRQWXUQHGWRZDUG-DL³1R
ZD\LW¶VPHPDQ´VDLG-DL³QRWZRUWKWKHGRZQVLGH,¶PUHWLUHGIURPKDFNLQJ,MXVWPRYH
P\VWXIIDQGPLQGP\RZQEXVLQHVV´³<HDK\HDK´ODXJKHG/HYHOHU³,¶PVXUH\RX¶UH
FOHDQRQWKLVRQHEXW,¶OOEHORVLQJELJPDUJLQVXQWLOWKLVQHZMDFNKDFNHULVVKXW

104038
RXW´³:HOOEHVWRIOXFN/HYHOHUPD\EH\RXFRXOGMXVWGURSPHKHUHDQG,¶OOJR
PRYHDIHZPRUHµXQLWV¶IRU\RXEHIRUH,ZUDSXSWRGD\´VDLG-DL

³,¶PDIUDLGLW¶VQRWWKDWHDV\-DL%XFKDQDQKHUHWHOOVPHWKDWZRUGLV\RX¶UH
FXUUHQWRQ-1(´LQVLQXDWHG/HYHOHU³1HXUDO(GLWLRQ"VXUH,SOD\DURXQGDELWVR
ZKDW"´-DLUHVSRQGHGIHHOLQJDOLWWOHTXHDV\³1HXUDOHGLWLRQ¶VKRZ,OHWWKHVWLPMXQNLHV
NQRZZKHUHWKHQH[WGURSZLOOEH´H[SODLQHG/HYHOHU³7URXEOHLVVRPHVWLPMXQNLH¶VVWD\HG
VWUDLJKWORQJHQRXJKWR¿JXUHRXWKRZWRKDFNLQWRP\:DUH+RXVLQJGDWDEDVH´³,QHHGD
TXLFNWKLQNHUOLNH\RXUVHOI-DLWRWDNHDORRNDWP\6WLP'URS-1(FODVVPHWKRGVLQVWDQFH
YDULDEOHVWKHZKROHHQFKLODGDDQG¿JXUHRXWKRZWKH\¶UHJHWWLQJLQ,WVKRXOG´³+(<´
H[FODLPHG%XFKDQDQ³,GRQ¶WZDQWQRVFXPKDFNHUOLNH-DLQRVLQ¶DURXQGP\FRGH´³(DV\
ELJJX\´-DLVDZKLVFKDQFH³,¶PVXUH\RXGLGDWRSUDWHMREZLWK\RXUDFFHVVPRGL³'RQ¶W
WHOOPHELWWZLGGOHU´VKRXWHG%XFKDQDQ³,OHIWDOORIWKRVHMXQNLHOHYHOPHWKRGVSXEOLF
VRWKH\FRXOGDFFHVVWKHGURSVLWHGDWDEXW,PDUNHGDOOWKHFULWLFDO:DUH+RXVLQJPHWKRGV
SULYDWH1RERG\RQWKHRXWVLGHFDQDFFHVVWKRVHPHWKRGVEXGG\QRERG\´

³,WKLQN,FDQVSRW\RXUOHDN/HYHOHUZKDWVD\ZHGURS%XFKDQDQKHUHRIIDWWKHFRUQHU
DQGWDNHDFUXLVHDURXQGWKHEORFN´VXJJHVWHG-DL%XFKDQDQUHDFKHGIRUKLVWZLWFKJXQEXW
/HYHOHU¶VVWXQQHUZDVDOUHDG\RQ%XFKDQDQ¶VQHFN³/HWLWJR%XFKDQDQ´VQHHUHG/HYHOHU
³'URSWKHWZLWFKHUDQGVWHSRXWVLGH,WKLQN-DLDQG,KDYHVRPHSODQVWRPDNH´

:KDWGLG-DLVXVSHFW"
:LOOKHJHWRXWRI/HYHOHU¶VVNLPPHUZLWKDOOKLVERQHVLQWDFW"
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PHWKRGVXVHLQVWDQFHYDULDEOHV

FODVV&ORFN^
([HUFLVH6ROXWLRQV
6WULQJWLPH
YRLGVHW7LPH 6WULQJW ^
WLPH W
% `
6WULQJJHW7LPH ^
UHWXUQWLPH
`
`

FODVV&ORFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
&ORFNF QHZ&ORFN 
FVHW7LPH ´µ 
6WULQJWRG FJHW7LPH 
6\VWHPRXWSULQWOQ ´WLPH´WRG 
`
`1RWH¶*HWWHU·PHWKRGVKDYHDUHWXUQ
$&ODVVµ;&RS\¶FRPSLOHVDQGUXQVDVLWVWDQGV7KH W\SHE\GHÀQLWLRQ
RXWSXWLVµ¶5HPHPEHU-DYDLVSDVVE\YDOXH ZKLFK
PHDQVSDVVE\FRS\ WKHYDULDEOHµRULJ¶LVQRWFKDQJHGE\WKH
JR  PHWKRG

$FODVVFDQKDYHDQ\QXPEHURIWKHVH LQVWDQFHYDULDEOHVJHWWHUVHWWHUPHWKRG
$PHWKRGFDQKDYHRQO\RQHRIWKHVH UHWXUQ
7KLVFDQEHLPSOLFLWO\SURPRWHG UHWXUQDUJXPHQW
,SUHIHUP\LQVWDQFHYDULDEOHVSULYDWH HQFDSVXODWLRQ
,WUHDOO\PHDQVµPDNHDFRS\¶ SDVVE\YDOXH
2QO\VHWWHUVVKRXOGXSGDWHWKHVH LQVWDQFHYDULDEOHV
$PHWKRGFDQKDYHPDQ\RIWKHVH DUJXPHQW
,UHWXUQVRPHWKLQJE\GH¿QLWLRQ JHWWHU
,VKRXOGQ¶WEHXVHGZLWKLQVWDQFHYDULDEOHV SXEOLF
,FDQKDYHPDQ\DUJXPHQWV PHWKRG
%\GH¿QLWLRQ,WDNHRQHDUJXPHQW VHWWHU
7KHVHKHOSFUHDWHHQFDSVXODWLRQ JHWWHUVHWWHUSXEOLFSULYDWH

,DOZD\VÀ\VROR UHWXUQ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

3X]]OH6ROXWLRQV

$QVZHUWRWKHPLQXWHP\VWHU\

SXEOLFFODVV3X]]OH^
-DLNQHZWKDW%XFKDQDQZDVQ¶WWKHVKDUSHVW
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ SHQFLOLQWKHER[:KHQ-DLKHDUG%XFKDQDQ
3X]]OHE>@REV QHZ3X]]OHE>@ WDONDERXWKLVFRGH%XFKDQDQQHYHUPHQWLRQHG
LQW\  KLVLQVWDQFHYDULDEOHV-DLVXVSHFWHGWKDW
LQW[  ZKLOH%XFKDQDQGLGLQIDFWKDQGOHKLVPHWKRGV
LQWUHVXOW 
FRUUHFWO\KHIDLOHGWRPDUNKLVLQVWDQFHYDULDEOHV
ZKLOH [ ^
SULYDWH7KDWVOLSXSFRXOGKDYHHDVLO\FRVW
REV>[@ QHZ3X]]OHE  
/HYHOHUWKRXVDQGV
REV>[@LYDU \
\ \ 
[ [
`
[ 
ZKLOH [! ^
[ [
UHVXOW UHVXOWREV>[@GR6WXII [  #ANDIDATES 0OSSIBLEOUTPUT
`
6\VWHPRXWSULQWOQ ´UHVXOW´UHVXOW  [ 
`
`
LQGH[
FODVV3X]]OHE^ 
LQWLYDU
SXEOLFLQWGR6WXII LQWIDFWRU ^ [ 
LI LYDU! ^
UHWXUQLYDU IDFWRU LQGH[ 
`HOVH^
UHWXUQLYDU  IDFWRU 
` /UTPUT [ 
` )LOH(GLW:LQGRZ+HOS%HOO\)ORS
` MDYD3X]]OH
LQGH[ 
UHVXOW

[ 

LQGH[ 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

([WUD6WUHQJWK0HWKRGV
,FDQOLIW
KHDY\REMHFWV

/HW·VSXWVRPHPXVFOHLQRXUPHWKRGV7EDABBLEDWITHVARIABLES PLAYED
WITHAFEWOBJECTS ANDWROTEALITTLECODE"UTWEWEREWEAK7ENEEDMORETOOLS,IKE
OPERATORS7ENEEDMOREOPERATORSSOWECANDOSOMETHINGALITTLEMOREINTERESTINGTHAN SAY
BARK!NDLOOPS7ENEEDLOOPS BUTWHATSWITHTHEWIMPYWHILELOOPS7ENEEDFORLOOPS
IFWEREREALLYSERIOUS-IGHTBEUSEFULTOGENERATERANDOMNUMBERS!NDTURNA3TRING
INTOANINT YEAH THATWOULDBECOOL"ETTERLEARNTHATTOO!NDWHYDONTWELEARNITALLBY
BUILDINGSOMETHINGREAL TOSEEWHATITSLIKETOWRITEANDTEST APROGRAMFROMSCRATCH-AYBE
AGAME LIKE"ATTLESHIPS4HATSAHEAVY LIFTINGTASK SOITLLTAKETWOCHAPTERSTOFINISH7ELLBUILD
ASIMPLEVERSIONINTHISCHAPTER ANDTHENBUILDAMOREPOWERFULDELUXEVERSIONINCHAPTER

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EXLOGLQJDUHDOJDPH

4M\¼[J]QTLI*I\\TM[PQX[\ aTM
OIUM"¹;QVSI,W\+WUº
)TSYOUAGAINSTTHECOMPUTER BUTUNLIKETHEREAL
"ATTLESHIPGAME INTHISONEYOUDONTPLACEANYSHIPS <RX·UHJRLQJWREXLOGWKH
OFYOUROWN)NSTEAD YOURJOBISTOSINKTHECOMPUTERS 6LQND'RW&RPJDPHZLWK
SHIPSINTHEFEWESTNUMBEROFGUESSES
D[JULGDQGWKUHH
/H ANDWEARENTSINKINGSHIPS7EREKILLING$OT 'RW&RPV(DFK'RW&RP
#OMS4HUSESTABLISHINGBUSINESSRELEVANCYSOYOUCAN
WDNHVXSWKUHHFHOOV
EXPENSETHECOSTOFTHISBOOK 
'OAL3INKALLOFTHECOMPUTERS$OT#OMSINTHEFEWEST
NUMBEROFGUESSES9OUREGIVENARATINGORLEVEL BASED
ONHOWWELLYOUPERFORM
XIZ\WNIOIUMQV\MZIK\QWV
3ETUP7HENTHEGAMEPROGRAMISLAUNCHED THE
COMPUTERPLACESTHREE$OT#OMSONAVIRTUALX )LOH(GLW:LQGRZ+HOS6HOO

GRID7HENTHATSCOMPLETE THEGAMEASKSFORYOURlRST MDYD'RW&RP%XVW


GUESS (QWHUDJXHVV$
(OWYOUPLAY7EHAVENTLEARNEDTOBUILDA'5)YET SO PLVV
THISVERSIONWORKSATTHECOMMAND LINE4HECOMPUTER
WILLPROMPTYOUTOENTERAGUESSACELL THATYOULLTYPE (QWHUDJXHVV%
ATTHECOMMAND LINEASh!v h#v ETC )NRESPONSE PLVV
TOYOURGUESS YOULLSEEARESULTATTHECOMMAND
(QWHUDJXHVV&
LINE EITHERh(ITv h-ISSv ORh9OUSUNK0ETSCOMvOR
WHATEVERTHELUCKY$OT#OMOFTHEDAYIS 7HEN PLVV
YOUVESENTALLTHREE$OT#OMSTOTHATBIGINTHE (QWHUDJXHVV'
SKY THEGAMEENDSBYPRINTINGOUTYOURRATING
HDFKER[µ
KLW
;JULG LVD´FHOO (QWHUDJXHVV'
KLW
!
(QWHUDJXHVV'
" 2XFK<RXVXQN3HWVFRP 
'OCOM

# NLOO
(QWHUDJXHVV%
$ 0ETSCOM
PLVV
% (QWHUDJXHVV*
& KLW
(QWHUDJXHVV*
' !SK-ECOM
KLW
       (QWHUDJXHVV*
2XFK<RXVXQN$VN0HFRP 
VWDUWVDW]HUROLNH-DYDDUUD\V
NLOO
 FKDSWHU (QWHUDJXHVV$
PLVV
(QWHU D JXHVV %

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

.QZ[\IPQOPTM^MTLM[QOV
7EKNOWWELLNEEDCLASSESANDMETHODS BUTWHAT HDQV
SHOULDTHEYBE4OANSWERTHAT WENEEDMORE $FLUFOHPILQLVK
INFORMATIONABOUTWHATTHEGAMESHOULDDO VWDUWRU
&IRST WENEEDTOlGUREOUTTHEGENERALmOWOFTHE
OHLV
$UHFWDQUJHSUHVHQW
GAME(ERESTHEBASICIDEA 6WDUW

 XVHGWR Q
DQDFWLR
 8VHUVWDUWVWKHJDPH
*DPHVHWXS
) *
) *DPHFUHDWHVWKUHH'RW&RPV

* *DPHSODFHVWKHWKUHH'RW  *HWXVHU
&RPVRQWRDYLUWXDOJULG JXHVV )

 *DPHSOD\EHJLQV
PLVV &KHFN KLW UHPRYHORFD
5HSHDWWKHIROORZLQJXQWLOWKHUHDUH JXHVV WLRQFHOO
QRPRUH'RW&RPV *

) 3URPSWXVHUIRUDJXHVV NLOO
´$µ´&µHWF
UHPRYH
'RW&RP
* &KHFNWKHXVHUJXHVVDJDLQVW
DOO'RW&RPVWRORRNIRUDKLW
PLVVRUNLOO7DNHDSSURSUL
DWHDFWLRQLIDKLWGHOHWHFHOO $GLDPRQG
$'HWF ,IDNLOOGHOHWH \HV VWLOOVRPH UHSUHVHQWVD
'RW&RP
'RW&RPV
DOLYH"
GHFLVLRQSRLQW

 *DPHÀQLVKHV

QR

*LYHWKHXVHUDUDWLQJEDVHGRQ GLVSOD\XVHU
WKHQXPEHURIJXHVVHV VFRUHUDWLQJ

.OWWEHAVEANIDEAOFTHEKINDSOFTHINGSTHE
JDPH
PROGRAMNEEDSTODO4HENEXTSTEPISlGURING
RYHU
OUTWHATKINDOFOBJECTSWELLNEEDTODOTHE
WORK2EMEMBER THINKLIKE"RADRATHERTHAN
,ARRYFOCUSlRSTONTHETHINGSINTHEPROGRAM
RATHERTHANTHEPROCEDURES
:KRD$UHDOÀRZFKDUW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DVLPSOHUYHUVLRQRI WKHJDPH

<PM¹;QUXTM,W\+WU/IUMº
IOMV\TMZQV\ZWL]K\QWV *DPHVWDUWVDQGFUHDWHV21('RW&RP
 DQGJLYHVLWDORFDWLRQRQWKUHHFHOOVLQ
)TLOOKSLIKEWEREGONNANEEDATLEASTTWOCLASSES A WKHVLQJOHURZRIVHYHQFHOOV
'AMECLASSANDA$OT#OMCLASS"UTBEFOREWEBUILD
THEFULLMONTY3INKA$OT#OMGAME WELLSTARTWITH ,QVWHDGRI´$µ´&µDQGVRRQWKH
ORFDWLRQVDUHMXVWLQWHJHUV IRUH[DPSOH
ASTRIPPED DOWN SIMPLIlEDVERSION 3IMPLE$OT#OM
DUHWKHFHOOORFDWLRQVLQWKLV
'AME7ELLBUILDTHESIMPLEVERSIONINTHISCHAPTER SLFWXUH
FOLLOWEDBYTHEDELUXEVERSIONTHATWEBUILDINTHE
NEXTCHAPTER
%VERYTHINGISSIMPLERINTHISGAME)NSTEADOFA $
      
GRID WEHIDETHE$OT#OMINJUSTASINGLEROW!ND
INSTEADOFTHREE$OT#OMS WEUSEONE
*DPHSOD\EHJLQV3URPSWXVHUIRU
4HEGOALISTHESAME THOUGH SOTHEGAMESTILLNEEDS  DJXHVVWKHQFKHFNWRVHHLILWKLW
TOMAKEA$OT#OMINSTANCE ASSIGNITALOCATION DQ\RIWKH'RW&RP·VWKUHHFHOOV
SOMEWHEREINTHEROW GETUSERINPUT ANDWHENALL ,IDKLWLQFUHPHQWWKHQXP2I+LWV
OFTHE$OT#OMSCELLSHAVEBEENHIT THEGAMEISOVER YDULDEOH
4HISSIMPLIlEDVERSIONOFTHE
GAMEGIVESUSABIGHEADSTART 6LPSOH'RW&RP*DPH  *DPHÀQLVKHVZKHQDOOWKUHHFHOOVKDYH
ONBUILDINGTHEFULLGAME EHHQKLW WKHQXP2I+LWVYDULDEOHYDO
 XHLV DQGWHOOVWKHXVHUKRZPDQ\
)FWECANGETTHISSMALLONE
6LPSOH'RW&RP JXHVVHVLWWRRNWRVLQNWKH'RW&RP
WORKING WECANSCALEITUPTO
THEMORECOMPLEXONELATER LQW>@ORFDWLRQ&HOOV
YRLGPDLQ LQWQXP2I+LWV
)NTHISSIMPLEVERSION THE )KWUXTM\MOIUMQV\MZIK\QWV
GAMECLASSHASNOINSTANCE
)LOH(GLW:LQGRZ+HOS'HVWUR\
VARIABLES ANDALLTHEGAME 6WULQJFKHFN<RXUVHOI 6WU
LQJJXHVV
CODEISINTHEMAIN METHOD MDYD6LPSOH'RW&RP*DPH
YRLGVHW/RFDWLRQ&HOOV LQ
)NOTHERWORDS WHENTHE W>@ORF HQWHUDQXPEHU
PROGRAMISLAUNCHEDAND KLW
MAIN BEGINSTORUN ITWILL HQWHUDQXPEHU
MAKETHEONEANDONLY$OT#OM
INSTANCE PICKALOCATIONFORITTHREE KLW
CONSECUTIVECELLSONTHESINGLEVIRTUAL HQWHUDQXPEHU
SEVEN CELLROW ASKTHEUSERFORAGUESS CHECKTHE PLVV
GUESS ANDREPEATUNTILALLTHREECELLSHAVEBEENHIT HQWHUDQXPEHU
+EEPINMINDTHATTHEVIRTUALROWISVIRTUAL)NOTHER NLOO
WORDS ITDOESNTEXISTANYWHEREINTHEPROGRAM!S <RXWRRNJXHVVHV
LONGASBOTHTHEGAMEANDTHEUSERKNOWTHATTHE
$OT#OMISHIDDENINTHREECONSECUTIVECELLSOUTOFA
POSSIBLESEVENSTARTINGATZERO THEROWITSELFDOESNT
HAVETOBEREPRESENTEDINCODE9OUMIGHTBETEMPTED
TOBUILDANARRAYOFSEVENINTSANDTHENASSIGNTHE
$OT#OMTOTHREEOFTHESEVENELEMENTSINTHEARRAY
BUTYOUDONTNEEDTO!LLWENEEDISANARRAYTHAT
HOLDSJUSTTHETHREECELLSTHE$OT#OMOCCUPIES
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

,M^MTWXQVOI+TI[[ <PM\PZMM\PQVO[_M¼TT_ZQ\MNWZ
MIKPKTI[["
!SAPROGRAMMER YOUPROBABLYHAVEAMETHODOLOGY
PROCESSAPPROACHTOWRITINGCODE7ELL SODOWE/UR
SEQUENCEISDESIGNEDTOHELPYOUSEEANDLEARN WHAT SUHSFRGH WHVWFRGH UHDOFRGH
WERETHINKINGASWEWORKTHROUGHCODINGACLASS)T
ISNTNECESSARILYTHEWAYWEORYOU WRITECODEINTHE
2EAL7ORLD)NTHE2EAL7ORLD OFCOURSE YOULLFOLLOW 4HISBARISDISPLAYEDONTHENEXTSETOFPAGESTOTELL
THEAPPROACHYOURPERSONALPREFERENCES PROJECT OR YOUWHICHPARTYOUREWORKINGON&OREXAMPLE IFYOU
EMPLOYERDICTATE7E HOWEVER CANDOPRETTYMUCH SEETHISPICTUREATTHETOPOFAPAGE ITMEANSYOURE
WORKINGONPREPCODEFORTHE3IMPLE$OT#OMCLASS
WHATEVERWEWANT!NDWHENWECREATEA*AVACLASSASA
hLEARNINGEXPERIENCEv WEUSUALLYDOITLIKETHIS
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH UHDOFRGH
† &IGUREOUTWHATTHECLASSISSUPPOSEDTODO

† ,ISTTHEINSTANCEVARIABLESANDMETHODS
SUHSFRGH
† 7RITEPREPCODEFORTHEMETHODS9OULLSEE $IRUPRISVHXGRFRGHWRKHOS\RXIRFXVRQ
THISINJUSTAMOMENT WKHORJLFZLWKRXWVWUHVVLQJDERXWV\QWD[
† 7RITETESTCODEFORTHEMETHODS
WHVWFRGH
† )MPLEMENTTHECLASS $FODVVRUPHWKRGVWKDWZLOOWHVWWKHUHDOFRGH
DQGYDOLGDWHWKDWLW¶VGRLQJWKHULJKWWKLQJ
† 4ESTTHEMETHODS

† $EBUGANDREIMPLEMENTASNEEDED UHDOFRGH
7KHDFWXDOLPSOHPHQWDWLRQRIWKHFODVV7KLVLV
† %XPRESSGRATITUDETHATWEDONTHAVETOTEST ZKHUHZHZULWHUHDO-DYDFRGH

<W,W"
OURSO CALLEDLEARNINGEXPERIENCEAPPON 
ACTUALLIVEUSERS
VV
W&RPFOD
6LPSOH'R
SUHSFRGH
†ZULWH
HWHVWFRGH
†ZULW
FRGH
YiX`e H¿QDO-DYD
†ZULW
gfn\i W&RP*DP
H
6LPSOH'R
&LEXTHOSEDENDRITES FODVV
H
HSUHSFRG
(OWWOULDYOUDECIDEWHICHCLASSORCLASSES †ZULW
H>QR@
TOBUILDlRST WHENYOUREWRITINGAPROGRAM ULWHWHVWFRG
Z
!SSUMINGTHATALLBUTTHETINIESTPROGRAMS FRGH
H¿QDO-DYD
NEEDMORETHANONECLASSIFYOUREFOLLOWING †ZULW
GOOD//PRINCIPLESANDNOTHAVINGONECLASS
DOMANYDIFFERENTJOBS WHEREDOYOUSTART

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH UHDOFRGH

9OULLGETTHEIDEAOFHOWPREPCODEOURVERSIONOFPSEUDOCODE WORKSASYOU
READTHROUGHTHISEXAMPLE)TSSORTOFHALF WAYBETWEENREAL*AVACODEANDAPLAIN
6LPSOH'RW&RP
%NGLISHDESCRIPTIONOFTHECLASS-OSTPREPCODEINCLUDESTHREEPARTSINSTANCE
LQW>@ORFDWLRQ&HOOV
LQWQXP2I+LWV
VARIABLEDECLARATIONS METHODDECLARATIONS METHODLOGIC4HEMOSTIMPORTANT
PARTOFPREPCODEISTHEMETHODLOGIC BECAUSEITDElNESWHATHASTOHAPPEN
6WULQJFKHFN<RXUVHOI 6WULQJJXHVV
WHICHWELATERTRANSLATEINTOHOW WHENWEACTUALLYWRITETHEMETHODCODE
YRLGVHW/RFDWLRQ&HOOV LQW>@ORF
()'0%6)ERMRXEVVE]XSLSPHXLIPSGEXMSRGIPPW'EPPMXPSGEXMSR'IPPW
()'0%6)ERMRXXSLSPHXLIRYQFIVSJLMXW'EPPMXRYQ3J,MXWERH7)8MXXS

()'0%6)EGLIGO=SYVWIPJ QIXLSHXLEXXEOIWE7XVMRKJSVXLIYWIV´WKYIWW ±²±²IXG 


GLIGOWMXERHVIXYVRWEVIWYPXVITVIWIRXMRKE±LMX²±QMWW²SV±OMPP²
()'0%6)EWIX0SGEXMSR'IPPW WIXXIVQIXLSHXLEXXEOIWERMRXEVVE] [LMGLLEWXLIXLVIIGIPP
PSGEXMSRWEWMRXW IXG 

1)8,3(7XVMRKGLIGO=SYVWIPJ 7XVMRKYWIV+YIWW 
  +)8XLIYWIVKYIWWEWE7XVMRKTEVEQIXIV
  '32:)68XLIYWIVKYIWWXSERMRX
  6)4)%8[MXLIEGLSJXLIPSGEXMSRGIPPWMRXLIMRXEVVE]
    '314%6)XLIYWIVKYIWWXSXLIPSGEXMSRGIPP
      -*XLIYWIVKYIWWQEXGLIW
        -2'6)1)28XLIRYQFIVSJLMXW
        *-2(398MJMX[EWXLIPEWXPSGEXMSRGIPP
        -*RYQFIVSJLMXWMW6)8962±OMPP²EWXLIVIWYPX
        )07)MX[EWRSXEOMPPWS6)8962±LMX²
        )2(-*
      )07)XLIYWIVKYIWWHMHRSXQEXGLWS6)8962±QMWW²
      )2(-*
  )2(6)4)%8
)2(1)8,3(

1)8,3(ZSMHWIX0SGEXMSR'IPPW MRX?AGIPP0SGEXMSRW 
  +)8XLIGIPPPSGEXMSRWEWERMRXEVVE]TEVEQIXIV
  %77-+2XLIGIPPPSGEXMSRWTEVEQIXIVXSXLIGIPPPSGEXMSRWMRWXERGIZEVMEFPI
)2(1)8,3(

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP
WHVWFRGH
SUHSFRGH WHVWFRGH UHDOFRGH

?ZQ\QVO\PMUM \PWL
QUXTMUMV\I\QWV[ 2KP\)RUDPLQXWH
WKHUH,WKRXJKW\RX
TM\¼[_ZQ\M\PMZMIT ZHUHQ·WJRQQDZULWH\RXU
UM\PWLKWLMVW_IVLOM\ WHVWFRGHÀUVW:KRR
\PQ[X]XXa_WZSQVO 'RQ·WVFDUHPHOLNHWKDW
"EFOREWESTARTCODINGTHE
METHODS THOUGH LETSBACK
UPANDWRITESOMECODETO
TESTTHEMETHODS4HATSRIGHT
WEREWRITINGTHETESTCODE
BEFORETHERESANYTHINGTOTEST
4HECONCEPTOFWRITING
THETESTCODElRSTISONEOF
THEPRACTICESOF%XTREME
0ROGRAMMING80 AND
ITCANMAKEITEASIERAND
FASTER FORYOUTOWRITEYOUR
CODE7ERENOTNECESSARILY
SAYINGYOUSHOULDUSE80
BUTWEDOLIKETHEPARTABOUT
WRITINGTESTSlRST!ND80JUST
SOUNDSCOOL

([WUHPH3URJUDPPLQJ ;3 
% XTREME0ROGRAMMING80 ISANEWCOMERTOTHESOFTWARE $ONTPUTINANYTHINGTHATSNOTINTHESPECNOMATTER
DEVELOPMENTMETHODOLOGYWORLD#ONSIDEREDBYMANY HOWTEMPTEDYOUARETOPUTINFUNCTIONALITYhFORTHE
TOBEhTHEWAYPROGRAMMERSREALLYWANTTOWORKv 80 FUTUREv 
EMERGEDINTHELATESANDHASBEENADOPTEDBY 7RITETHETESTCODEFIRST
COMPANIESRANGINGFROMTHETWO PERSONGARAGESHOP
TOTHE&ORD-OTOR#OMPANY4HETHRUSTOF80ISTHATTHE .OKILLERSCHEDULESWORKREGULARHOURS
CUSTOMERGETSWHATHEWANTS WHENHEWANTSIT EVEN 2EFACTORIMPROVETHECODE WHENEVERANDWHEREVERYOU
WHENTHESPECCHANGESLATEINTHEGAME NOTICETHEOPPORTUNITY
80ISBASEDONASETOFPROVENPRACTICESTHATAREALL $ONTRELEASEANYTHINGUNTILITPASSESALLTHETESTS
DESIGNEDTOWORKTOGETHER ALTHOUGHMANYFOLKSDOPICK
ANDCHOOSE ANDADOPTONLYAPORTIONOF80SRULES4HESE 3ETREALISTICSCHEDULES BASEDAROUNDSMALLRELEASES
PRACTICESINCLUDETHINGSLIKE +EEPITSIMPLE
-AKESMALL BUTFREQUENT RELEASES 0ROGRAMINPAIRS ANDMOVEPEOPLEAROUNDSOTHAT
$EVELOPINITERATIONCYCLES EVERYBODYKNOWSPRETTYMUCHEVERYTHINGABOUTTHECODE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RPFODVV
WHVWFRGH
SUHSFRGH WHVWFRGH UHDOFRGH

?ZQ\QVO\M[\KWLMNWZ\PM;QUXTM,W\+WUKTI[[
7ENEEDTOWRITETESTCODETHATCANMAKEA3IMPLE$OT#OMOBJECT
ANDRUNITSMETHODS&ORTHE3IMPLE$OT#OMCLASS WEREALLY
CAREABOUTONLYTHECHECK9OURSELF METHOD ALTHOUGHWEWILLHAVE
TOIMPLEMENTTHESET,OCATION#ELLS METHODINORDERTOGETTHE
CHECK9OURSELF METHODTORUNCORRECTLY
4AKEAGOODLOOKATTHEPREPCODEBELOWFORTHECHECK9OURSELF
METHODTHESET,OCATION#ELLS METHODISANO BRAINERSETTERMETHOD
SOWERENOTWORRIEDABOUTIT BUTINA@REALAPPLICATIONWEMIGHT

Licensed by
WANTAMOREROBUST@SETTERMETHOD WHICHWEWOULDWANTTOTEST 
4HENASKYOURSELF h)FTHECHECK9OURSELF METHODWERE
IMPLEMENTED WHATTESTCODECOULD)WRITETHATWOULDPROVETOME
THEMETHODISWORKINGCORRECTLYv

Eduard Simons
*I[MLWV\PQ[ XZMXKWLM"
 0MZM¼[_PI\_M[PW]TL\M[\"

104038
 
  1)8,3(7XVMRKGLIGO=SYVWIPJ 7XVMRKYWIV+YIWW   ,QVWDQWLDWHD6LPSOH'RW&RPREMHFW
  +)8XLIYWIVKYIWWEWE7XVMRKTEVEQIXIV  $VVLJQLWDORFDWLRQ DQDUUD\RILQWVOLNH
  '32:)68XLIYWIVKYIWWXSERMRX ^` 

  6)4)%8[MXLIEGLSJXLIPSGEXMSRGIPPWMRXLIMRXEVVE]  &UHDWHD6WULQJWRUHSUHVHQWDXVHUJXHVV


³´³´HWF 
    '314%6)XLIYWIVKYIWWXSXLIPSGEXMSRGIPP
 ,QYRNHWKHFKHFN<RXUVHOI PHWKRGSDVV
    -*XLIYWIVKYIWWQEXGLIW LQJLWWKHIDNHXVHUJXHVV
      -2'6)1)28XLIRYQFIVSJLMXW  3ULQWRXWWKHUHVXOWWRVHHLILW¶VFRUUHFW
      *-2(398MJMX[EWXLIPEWXPSGEXMSRGIPP ³SDVVHG´RU³IDLOHG´ 

      -*RYQFIVSJLMXWMW6)8962±/MPP²EWXLIVIWYPX
      )07)MX[EWRSXEOMPPWS6)8962±,MX²
      )2(-*
    )07)XLIYWIVKYIWWHMHRSXQEXGLWS6)8962±1MWW²
    )2(-*
  )2(6)4)%8
)2(1)8,3(

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP
WHVWFRGH
SUHSFRGH WHVWFRGH UHDOFRGH

WKHUH DUH QR <M[\KWLMNWZ\PM;QUXTM,W\+WUKTI[[


'XPE 4XHVWLRQV
Q: -AYBE)MMISSINGSOME SXEOLFFODVV6LPSOH'RW&RP7HVW'ULYH^ HD
LQVWDQWLDRWW&RP
THINGHERE BUTHOWEXACTLYDO
YOURUNATESTONSOMETHING SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 6LPSOH'
THATDOESNTYETEXIST REMHFW
6LPSOH'RW&RPGRW QHZ6LPSOH'RW&RP 
A: 9OUDONT7ENEVERSAID
NH  DQ  LQ
PD FDWLRQRI LQWV 
IRU
WDUUDW\KHGRW
YOUSTARTBYRUNNINGTHETEST
YOUSTARTBYWRITINGTHETEST!T WKHORFRQVHFXWLYH 
THETIMEYOUWRITETHETESTCODE LQW>@ORFDWLRQV ^` FRP DSRVVLEOH
YOUWONTHAVEANYTHINGTORUN RXWRI
ITAGAINST SOYOUPROBABLYWONT GRWVHW/RFDWLRQ&HOOV ORFDWLRQV 
BEABLETOCOMPILEITUNTILYOU LQYRNHWK
WRITE@STUBCODETHATCANCOM PHWKRGRQHVHWWHU
PILE BUTTHATWILLALWAYSCAUSE  WKHGRWF
THETESTTOFAILLIKE RETURNNULL
RP
6WULQJXVHU*XHVV ³´ PDNHDIDNH
XVHUJXHVV
Q: 4HEN)STILLDONTSEETHE
6WULQJUHVXOW GRWFKHFN<RXUVHOI XVHU*XHVV 
POINT7HYNOTWAITUNTILTHE
CODEISWRITTEN ANDTHENWHIP LQYRNHWKHF FN<
OUTTHETESTCODE 6WULQJWHVW5HVXOW ³IDLOHG´ PHWKRGRQWKHKH G
RXUVHOI 
RW
REMHFWDQGS FRP
A: LI UHVXOWHTXDOV ³KLW´  ^ IDNHJXHVV DVVLWWKH
4HEACTOFTHINKINGTHROUGH
ANDWRITING THETESTCODEHELPS
WHVW5HVXOW ³SDVVHG´
CLARIFYYOURTHOUGHTSABOUTWHAT
LIWKHIDNHJXHVVZV  JLYHV
THEMETHODITSELFNEEDSTODO
EDFND´KLWµ LW· RUNLQJ
`
!SSOONASYOURIMPLEMENTATION
CODEISDONE YOUALREADYHAVE
TESTCODEJUSTWAITINGTOVALIDATE 6\VWHPRXWSULQWOQ WHVW5HVXOW 
IT"ESIDES YOUKNOWIFYOUDONT SULQWRXWWKH
DOITNOW YOULLNEVERDOIT ` SDVVHGRUIDLOHWHGµVW UHVXOW
4HERESALWAYSSOMETHINGMORE
INTERESTINGTODO
`
)DEALLY WRITEALITTLETESTCODE
THENWRITEONLYTHEIMPLEMENTA 6KDUSHQ \RXU SHQFLO
TIONCODEYOUNEEDINORDERTO )NTHENEXTCOUPLEOFPAGESWEIMPLEMENTTHE3IMPLE$OT#OMCLASS
PASSTHATTEST4HENWRITEALITTLE ANDTHENLATERWERETURNTOTHETESTCLASS,OOKINGATOURTESTCODE
MORETESTCODEANDWRITEONLY ABOVE WHATELSESHOULDBEADDED7HATAREWENOTTESTINGINTHIS
THENEWIMPLEMENTATIONCODE CODE THATWESHOULDBETESTINGFOR7RITEYOURIDEASORLINESOF
NEEDEDTOPASSTHATNEWTEST!T CODE BELOW
EACHTESTITERATION YOURUNALL
THEPREVIOUSLY WRITTENTESTS SO
THATYOUALWAYSPROVETHATYOUR
LATESTCODEADDITIONSDONTBREAK
PREVIOUSLY TESTEDCODE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH

<PMKPMKSAW]Z[MTNUM\PWL
4HEREISNTAPERFECTMAPPINGFROMPREPCODETOJAVACODEYOULLSEEAFEW
ADJUSTMENTS4HEPREPCODEGAVEUSAMUCHBETTERIDEAOFWHATTHECODENEEDSTO
DO ANDNOWWEHAVETOlNDTHE*AVACODETHATCANDOTHEHOW
)NTHEBACKOFYOURMIND BETHINKINGABOUTPARTSOFTHISCODEYOUMIGHTWANT
ORNEED TOIMPROVE4HENUMBERSAREFORTHINGSSYNTAXANDLANGUAGE

FEATURES YOUHAVENTSEENYET4HEYREEXPLAINEDONTHEOPPOSITEPAGE

+)8XLIYWIV
SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJ
VWULQJ*XHVV ^
KYIWW  FRQYHUWWKH6WULQJ
LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 
'32:)68 WRDQLQW
XLIYWIVKYIWWXS
ERMRX 6WULQJUHVXOW ³PLVV´ PDNHDYDULDEOHWRKROG
UHWXUQSXW´PLVVµLQDV WKHUHVXOWZH·OO
LHZHDVVXPHD´PLVVµ WKHGHIDXOW
6)4)%8[MXL 
IEGLGIPPMRXLIMRX IRU LQWFHOOORFDWLRQ&HOOV ^ UHSHDWZLWKH
EVVE] DUUD\ HDFKF DFKFHOOLQWKHORFDWLRQ
HOOORFDWLRQR &H
-*XLIYWIVKYIWW LI JXHVV FHOO ^
FRPSDUHWKHX IWKHREMHFW OOV

HOHPHQW FHOO  VHUJXHVVWRWKLV
QEXGLIW
UHVXOW ³KLW´ LQWKHDUUD\
-2'6)1)28  ZHJRWDKLW
XLIRYQFIVSJ QXP2I+LWV
LMXW

EUHDN JHWRXWRIWKHO
WRWHVWWKHRWKHRRSQRQHHG
`HQGLI UFHOOV
`HQGIRU
*-2(398MJ
MX[EWXLIPEWXGIPP
LI QXP2I+LWV ORFDWLRQ&HOOVOHQJWK ^
-*RYQFIVSJLMXW ZH·UHRXWRIWKHORRSEXWOHW·V
MW
UHVXOW ³NLOO´ QRZ¶GHDG· KLWWLPHV DQGFK VHHLIZH·UH
6)8962±OMPP²
UHVXOW6WULQJWR´.LOOµ DQJHWKH
EWXLIVIWYPX
`HQGLI
)07)MX[EW
RSXEOMPPWS
6)8962±LMX² 6\VWHPRXWSULQWOQ UHVXOW  GLVSOD\WKHUHVXOWIRUWKHXVHU
)07)
UHWXUQUHVXOW ´0LVVµXQOHVVLWZDVFKDQJHGWR´+LWµRU´.LOOµ
6)8962 UHWXUQWKHUHVXOWEDFNW
±QMWW²
`HQGPHWKRG WKHFDOOLQJPHWKRG R

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH

2][\\PMVM_[\]NN
4HETHINGSWEHAVENTSEENBEFORE
AREONTHISPAGE3TOPWORRYING4HE $PHWKRGLQWKH
RESTOFTHEDETAILSAREATTHEENDOF ,QWHJHUFODVVWKDW
THECHAPTER4HISISJUSTENOUGHTOLET NQRZVKRZWR´SDUVHµ
KDW
YOUKEEPGOING $FODVVLWWK-DYD D6WULQJLQWRWKHLQW 7DNHV
D 6WULQ
VKLSV Z LWUHSUHVHQWV J

 &RQYHUWLQJD
 1V\MOMZXIZ[M1V\¹º
6WULQJWRDQLQW

UDWLRQDV´UHSHDW
5HDGWKLVIRUORRSGHFOD¶OR 7KHFROR
IRUHDFKHOHPHQWLQWKH HQW FDWLRQ&HOOV· ZKROHWKLQQ  PHDQV´LQ
µVR
DUUD\WDNHWKHQH[W YDULDLQ
HOHP WKHDUUD\ YDOXH,1ORFJPHDQV´IRUHDFKWLKH
EOH OO·µ
¶FH DWLRQ&HOOV QW
DQGDVVLJQLWWRWKHLQW µ

 7KHIRUORRS NWZQV\KMTT"TWKI\QWV+MTT[ce
RS
'HFODUHDYDULDEOHWKDWZLOOK
 R Y H U LQWKHQORH[W
IURPWKHDUUD\(DFKWLPHWKROGRQHHOHPHQW \WRLWHU
DW H
ORRSWKH R
WKLVYDULDEOH LQWKLVFDVHDQLQURXJKWKHORRS 7KHDUULPD HWKURXJKWKHZLOOEHDVVLJQHGWWWKH
K  W D \
(DF WLQWKHDUU RUHRQWKLV  D
´FHOOµ ZLOOKROGDGLIIHUHQW WYDULDEOHQDPHG HOHPHQ ULDEOH´FHOOµ 0
DUUD\XQWLOWKHUHDUHQRPRUHHOHPHQWIURPWKH WKHYD WKLVFKDSWHU
FRGHGRHVD´EUHDNµVHHHOHPHQWV RUWKH HQGRI
EHORZ 

7KHPHDQVDGGWR
7KHSRVWLQFUHPHQW
ZKDWHYHU·VWKHUH LQRWKHU

RSHUDWRU
ZRUGVLQFUHPHQWE\ 
V]U7N0Q\[
QXP2I+LWVLVWKHVDPH LQ
WKLVFDVH DVVD\LQJQXP2I+LWV 
QXP2I+LWVH[FHSWVOLJKWO\
PRUHHIILFLHQW


 EUHDNVWDWHPHQW
JZMIS#
*HWV\RXRXWRIDORRS,PPHGLDWHO\5LJKWKHUH
1RLWHUDWLRQQRERROHDQWHVWMXVWJHWRXWQRZ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH

.QVITKWLMNWZ;QUXTM,W\+WUIVL;QUXTM,W\+WU<M[\MZ
WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HATHAPPENSIN
SXEOLFFODVV6LPSOH'RW&RP7HVW'ULYH^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)NTEGERPARSE)NT IFTHETHINGYOU
PASSISNTANUMBER!NDDOESIT 6LPSOH'RW&RPGRW QHZ6LPSOH'RW&RP 
RECOGNIZESPELLED OUTNUMBERS
LQW>@ORFDWLRQV ^`
LIKEhTHREEv
GRWVHW/RFDWLRQ&HOOV ORFDWLRQV 

A: )NTEGERPARSE)NT WORKSONLY
6WULQJXVHU*XHVV ³´
6WULQJUHVXOW GRWFKHFN<RXUVHOI XVHU*XHVV 
ON3TRINGSTHATREPRESENTTHEASCII
VALUESFORDIGITS           `
)FYOUTRYTOPARSESOMETHINGLIKE
`
hTWOvORhBLURPv THECODEWILLBLOW
UPATRUNTIME"YBLOWUP WE
ACTUALLYMEANTHROWANEXCEPTION
BUTWEDONTTALKABOUTEXCEPTIONS
UNTILTHE%XCEPTIONSCHAPTER3OFOR SXEOLFFODVV6LPSOH'RW&RP^
NOW BLOWUPISCLOSEENOUGH
LQW>@ORFDWLRQ&HOOV
LQWQXP2I+LWV 

Q: )NTHEBEGINNINGOFTHE

SXEOLFYRLGVHW/RFDWLRQ&HOOV LQW>@ORFV ^
BOOK THEREWASANEXAMPLEOFA ORFDWLRQ&HOOV ORFV
FORLOOPTHATWASREALLYDIFFERENT `
FROMTHISONEˆARETHERETWO
DIFFERENTSTYLESOFFORLOOPS SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJVWULQJ*XHVV ^
LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 
6WULQJUHVXOW ³PLVV´
A: 9ES&ROMTHEFIRSTVERSIONOF
*AVATHEREHASBEENASINGLEKIND
IRU LQWFHOOORFDWLRQ&HOOV ^
LI JXHVV FHOO ^
OFFORLOOPEXPLAINEDLATERINTHIS UHVXOW ³KLW´
CHAPTER THATLOOKSLIKETHIS QXP2I+LWV
EUHDN
FORINTIII [ ` 7HATSHOULDWESEE
DOSOMETHINGTIMES `RXWRIWKHORRS WHENWERUNTHISCODE
] 4HETESTCODEMAKESA
LI QXP2I+LWV 3IMPLE$OT#OMOBJECT
9OUCANUSETHISFORMATFORANY ORFDWLRQ&HOOVOHQJWK ^ ANDGIVESITALOCATIONAT
KINDOFLOOPYOUNEED"UT UHVXOW ³NLOO´   4HENITSENDSAFAKE
BEGINNINGWITH*AVA4IGER ` USERGUESSOFhvINTOTHE
YOUCANALSOUSETHEENHANCEDFOR 6\VWHPRXWSULQWOQ UHVXOW  CHECK9OUSELF METHOD
LOOPTHATSTHEOFFICIALDESCRIPTION UHWXUQUHVXOW )FTHECODEISWORKING
WHENYOURLOOPNEEDSTOITERATE `FORVHPHWKRG CORRECTLY WESHOULDSEETHE
OVERTHEELEMENTSINANARRAYOR `FORVHFODVV RESULTPRINTOUT
ANOTHERKINDOFCOLLECTION ASYOULL
SEEINTHENEXTCHAPTER 9OUCAN
ALWAYSUSETHEPLAINOLDFORLOOP MDYD6LPSOH'RW&RP7HVW'ULYH
7KHUH¶VDOLWWOHEXJOXUNLQJKHUH,WFRPSLOHVDQG KLW
TOITERATEOVERANARRAY BUTTHE UXQVEXWVRPHWLPHVGRQ¶WZRUU\DERXWLWIRUQRZ
ENHANCEDFORLOOPMAKESITEASIER EXWZHZLOOKDYHWRIDFHLWDOLWWOHODWHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP
SUHSFRGH WHVWFRGH UHDOFRGH

6KDUSHQ \RXU SHQFLO


7E BUILT THE TESTCLASS ANDTHE3IMPLE$OT#OMCLASS"UTWESTILLHAVENT
MADE THE ACTUAL GAME'IVENTHECODEONTHEOPPOSITEPAGE ANDTHESPECFOR
THEACTUALGAME WRITEINYOURIDEASFORPREPCODEFORTHEGAMECLASS7EVEGIVEN
4HE3IMPLE$OT#OM'AME
YOUAFEWLINESHEREANDTHERETOGETYOUSTARTED4HEACTUALGAMECODEISONTHE
NEEDSTODOTHIS
NEXTPAGE SODONTTURNTHEPAGEUNTILYOUDOTHISEXERCISE
-AKETHESINGLE
9OUSHOULDHAVESOMEWHEREBETWEENANDLINESINCLUDINGTHEONESWEWROTE
3IMPLE$OT#OM/BJECT
BUTNOTINCLUDINGLINESTHATHAVEONLYACURLYBRACE 
-AKEALOCATIONFORITTHREE
1)8,3(TYFPMGWXEXMGZSMHQEMR 7XVMRK?AEVKW CONSECUTIVECELLSONASINGLE
  ()'0%6)ERMRXZEVMEFPIXSLSPHXLIRYQFIVSJYWIVKYIWWIWREQIHRYQ3J+YIWWIW ROWOFSEVENVIRTUALCELLS 
  !SKTHEUSERFORAGUESS
#HECKTHEGUESS
2EPEATUNTILTHEDOTCOMIS
DEAD
4ELLTHEUSERHOWMANY
GUESSESITTOOK

  '31498)EVERHSQRYQFIVFIX[IIRERHXLEX[MPPFIXLIWXEVXMRKPSGEXMSRGIPPTSWMXMSR

)KWUXTM\MOIUMQV\MZIK\QWV
)LOH(GLW:LQGRZ+HOS5XQDZD\

MDYD6LPSOH'RW&RP*DPH
  ;,-0)XLIHSXGSQMWWXMPPEPMZI
HQWHUDQXPEHU
      +)8YWIVMRTYXJVSQXLIGSQQERHPMRI    
   KLW
HQWHUDQXPEHU
KLW
HQWHUDQXPEHU
PLVV
HQWHUDQXPEHU
NLOO
<RXWRRNJXHVVHV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH UHDOFRGH

8ZMXKWLMNWZ\PM;QUXTM,W\+WU/IUMKTI[[
-^MZa\PQVOPIXXMV[QVUIQV
4HEREARESOMETHINGSYOULLHAVETOTAKEONFAITH&OREXAMPLE WEHAVEONE
LINEOFPREPCODETHATSAYS h'%4USERINPUTFROMCOMMAND LINEv,ETMETELL
YOU THATSALITTLEMORETHANWEWANTTOIMPLEMENTFROMSCRATCHRIGHTNOW"UT
HAPPILY WEREUSING//!NDTHATMEANSYOUGETTOASKSOMEOTHERCLASSOBJECT
TODOSOMETHINGFORYOU WITHOUTWORRYINGABOUTHOWITDOESIT7HENYOUWRITE
PREPCODE YOUSHOULDASSUMETHATSOMEHOWYOULLBEABLETODOWHATEVERYOU
NEEDTODO SOYOUCANPUTALLYOURBRAINPOWERINTOWORKINGOUTTHELOGIC

TYFPMGWXEXMGZSMHQEMR 7XVMRK?AEVKW
  ()'0%6)ERMRXZEVMEFPIXSLSPHXLIRYQFIVSJYWIVKYIWWIWREQIHRYQ3J+YIWWIWWIXMXXS
  1%/)ERI[7MQTPI(SX'SQMRWXERGI
'31498)EVERHSQRYQFIVFIX[IIRERHXLEX[MPPFIXLIWXEVXMRKPSGEXMSRGIPPTSWMXMSR
  1%/)ERMRXEVVE][MXLMRXWYWMRKXLIVERHSQP]KIRIVEXIHRYQFIVXLEXRYQFIVMRGVIQIRXIHF]
  ERHXLEXRYQFIVMRGVIQIRXIHF] I\EQTPI
  -2:3/)XLIWIX0SGEXMSR'IPPW QIXLSHSRXLI7MQTPI(SX'SQMRWXERGI
  ()'0%6)EFSSPIERZEVMEFPIVITVIWIRXMRKXLIWXEXISJXLIKEQIREQIHMW%PMZI7)8MXXSXVYI

;,-0)XLIHSXGSQMWWXMPPEPMZI MW%PMZI!!XVYI 
    +)8YWIVMRTYXJVSQXLIGSQQERHPMRI
    ',)'/XLIYWIVKYIWW
    -2:3/)XLIGLIGO=SYVWIPJ QIXLSHSRXLI7MQTPI(SX'SQMRWXERGI
    -2'6)1)28RYQ3J+YIWWIWZEVMEFPI
    ',)'/JSVHSXGSQHIEXL
    -*VIWYPXMW±OMPP²
      7)8MW%PMZIXSJEPWI [LMGLQIERW[I[SR´XIRXIVXLIPSSTEKEMR
     46-28XLIRYQFIVSJYWIVKYIWWIW
    )2(-*
  )2(;,-0) METACOGNITIVETIP
)2(1)8,3( 'RQ·WZRUNRQHSDUWRIWKHEUDLQIRUWRRORQJDVWUHWFKDWRQHWLPH
:RUNLQJMXVWWKHOHIWVLGHRIWKHEUDLQIRUPRUHWKDQPLQXWHV
LVOLNHZRUNLQJMXVW\RXUOHIWDUPIRUPLQXWHV*LYHHDFKVLGH
RI\RXUEUDLQDEUHDNE\VZLWFKLQJVLGHVDWUHJXODULQWHUYDOV
:KHQ\RXVKLIWWRRQHVLGHWKHRWKHUVLGHJHWVWRUHVWDQG
UHFRYHU/HIWEUDLQDFWLYLWLHVLQFOXGHWKLQJVOLNHVWHSE\VWHS
VHTXHQFHVORJLFDOSUREOHPVROYLQJDQGDQDO\VLVZKLOHWKH
ULJKWEUDLQNLFNVLQIRUPHWDSKRUVFUHDWLYHSUREOHPVROYLQJ
SDWWHUQPDWFKLQJDQGYLVXDOL]LQJ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

:MDD=LHGAFLK
ƒ <RXU-DYDSURJUDPVKRXOGVWDUWZLWKDKLJK ƒ &KRRVHIRUORRSVRYHUZKLOHORRSVZKHQ\RX
OHYHOGHVLJQ NQRZKRZPDQ\WLPHV\RXZDQWWRUHSHDWWKH
ORRSFRGH
ƒ 7\SLFDOO\\RX·OOZULWHWKUHHWKLQJVZKHQ\RX
FUHDWHDQHZFODVV ƒ 8VHWKHSUHSRVWLQFUHPHQWRSHUDWRUWRDGG
WRDYDULDEOH [
  SUHSFRGH
  WHVWFRGH ƒ 8VHWKHSUHSRVWGHFUHPHQWWRVXEWUDFWIURP
DYDULDEOH [
  UHDO -DYD FRGH
ƒ 8VH,QWHJHUSDUVH,QW WRJHWWKHLQW
ƒ 3UHSFRGHVKRXOGGHVFULEHZKDWWRGRQRWKRZ YDOXHRID6WULQJ
WRGRLW,PSOHPHQWDWLRQFRPHVODWHU
ƒ ,QWHJHUSDUVH,QW ZRUNVRQO\LIWKH
ƒ 8VHWKHSUHSFRGHWRKHOSGHVLJQWKHWHVW 6WULQJUHSUHVHQWVDGLJLW ´µµµµµHWF
FRGH
ƒ 8VHEUHDNWROHDYHDORRSHDUO\ LHHYHQLI
ƒ :ULWHWHVWFRGHEHIRUH\RXLPSOHPHQWWKH WKHERROHDQWHVWFRQGLWLRQLVVWLOOWUXH 
PHWKRGV

+RZPDQ\
KLWVGLG\RXJHW
ODVWPRQWK" ,QFOXGLQJ
UHSHDWYLVLWRUV" 
<HV

+RZG\IURP*KRVW7RZQ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6LPSOH'RW&RP*DPHFODVV
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH
<PMOIUM¼[UIQVUM\PWL
*USTASYOUDIDWITHTHE3IMPLE$OT#OMCLASS BETHINKINGABOUTPARTSOFTHISCODE
YOUMIGHTWANTORNEED TOIMPROVE4HENUMBEREDTHINGSAREFORSTUFFWE

WANTTOPOINTOUT4HEYREEXPLAINEDONTHEOPPOSITEPAGE/H IFYOUREWONDER
INGWHYWESKIPPEDTHETESTCODEPHASEFORTHISCLASS WEDONTNEEDATESTCLASSFOR
THEGAME)THASONLYONEMETHOD SOWHATWOULDYOUDOINYOURTESTCODE-AKE
ASEPARATECLASSTHATWOULDCALLMAIN ONTHISCLASS7EDIDNTBOTHER


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ OHWRWUDFNKHVRZ
PDNHDYDULDE KHXVHUP DN
()'0%6)EZEVM LQWQXP2I*XHVVHV  PDQ\JXHVVHVW
EFPIXSLSPHYWIV
KYIWWGSYRXWIXMX
*DPH+HOSHUKHOSHU QHZ*DPH+HOSHU  WKLVLVDVSHFLDOFODVVZHZURWHWKDWKDV
XS WKHPHWKRGIRUJHWWLQJXVHULQSXWIRU
QRZSUHWHQGLW·VSDUWRI-DYD
1%/)E7MQTPI(SX
'SQSFNIGX
6LPSOH'RW&RPWKH'RW&RP QHZ6LPSOH'RW&RP  PDNHWKHGRWFRPREMHFW

'31498)ELQWUDQGRP1XP  LQW  0DWKUDQGRP    PDNHDUDQGRPQXPEHUIRUWKHILUVW
VERHSQRYQFIV FHOODQGXVHLWWRPDNHWKHFHOO 
FIX[IIRERH ORFDWLRQVDUUD\
1%/)ERMRXEVVE]
LQW>@ORFDWLRQV ^UDQGRP1XPUDQGRP1XPUDQGRP1XP`
[MXLXLIGIPPPSGE

QV WKHDUUD\
XMSRWERH
-2:3/)WIX0SGE
WKH'RW&RPVHW/RFDWLRQ&HOOV ORFDWLRQV 
JLYHWKHGRWFRPLWVORFDWLR
XMSR'IPPWSRXLIHSX
GSQSFNIGX ERROHDQLV$OLYH WUXH
PDNHDERROHDQYDULDEOHWRWUDFNZKHWKHUWKHJDPH
()'0%6)EFSSP LVVWLOODOLYHWRXVHLQWKHZKLOHORRSWHVWUHSHDW
IERMW%PMZI
ZKLOHJDPHLVVWLOODOLYH
SXW6WULQJ
;,-0)XLIHSX ZKLOH LV$OLYH WUXH ^
GSQMWWXMPPEPMZI  JHWXVHULQ
+)8YWIVMRTYX 6WULQJJXHVV KHOSHUJHW8VHU,QSXW ³HQWHUDQXPEHU´ 
',)'/MX 6WULQJUHVXOW WKH'RW&RPFKHFN<RXUVHOI JXHVV  DVNWKHGRWF
-2:3/)GLIGO=S WKHJXHVVVDYHRPWRFKHFN
YVWIPJ SRHSXGSQ
QXP2I*XHVVHV LQFUHPHQWJXHVVFRXQW UHVXOWLQD6WULWKHUHWXUQHG
-2'6)1)28
QJ
RYQ3J+YIWWIW LI UHVXOWHTXDOV ³NLOO´ ^ ZDVLWD´NLOOµ"LIVRVHWLV$OLYH IDOV
-*VIWYPXMW±OMPP²
LV$OLYH IDOVH UHHQWHUWKHORRS DQGSULQWXVHWR H VRZHZRQ·W
UJXHVVFRXQW
7)8KEQI%PMZIXS
JEPWI 6\VWHPRXWSULQWOQ ³<RXWRRN³QXP2I*XHVVHV³JXHVVHV´ 
46-28XLIRYQFIV
SJYWIVKYIWWIW `FORVHLI

`FORVHZKLOH

`FORVHPDLQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH

ZIVLWUIVLOM\=[MZ1VX]\
4WOTHINGSTHATNEEDABITMORE 7KLVLVD¶FDVW·DQ WIRUF
EXPLAINING AREONTHISPAGE4HISIS LPPHGLDWHO\DIWHULGLWW HVWKHWKLQJ G
JUSTAQUICKLOOKTOKEEPYOUGOING RE HFR
W\SHRIWKHFDVW LHWKHW PHWKH 7KH0DWKUDQGRPPHWKR P]HURWR
MOREDETAILSONTHE'AME(ELPER SDUHQV 0DWKUDQGRP \SHLQWKH UHWXUQVDQXPEHUIURRW UPXOD
CLASSAREATTHEENDOFTHISCHAPTER
UH WX UQV
VRZHKDYHWRFDVWLWWREH DGRXEOH MXVWOHVVWKDQRQH6 UQVKLVDIR
QXP EHU
ZDQWDQLFHZKROHQXP DQLQW ZH ZLWKWKHFDVW UHWX
EHU EH IURPWR   L H
DQG ,QWKLVFDV WKHF WZHHQ
WKHIUDFWLRQDOSDUWHRI DVWORSVRII
WKHGRXEOH
FDVWWRDQLQW
 0DNHDUDQGRP

QXPEHU

QV\ZIVLWU6]U%QV\5I\PZIVLWU

:HGHFODUHDQLQWYDULDEOHWRKROG $FODVVWKDWFRPHV $PHWKRGRIWKH


WKHUDQGRPQXPEHUZHJHWEDFN ZLWK-DYD 0DWKFODVV

7KLVP
DUJXPHQHWWKRGWDNHVD6WULQ
WKHXVHUD WKDWLWXVHVWRS J
:KDWHY WWKHFRPPDQ URPSW
$QLQVWDQFHZHPDGHHDUOLHU GLVSOD\HGHULQ\RXSDVVLQKHUGH OLQH
RIDFODVVWKDWZHEXLOWWR EHIRUH WKHWHUPLQD JHWV
*HWWLQJXVHULQSXW KHOSZLWKWKHJDPH,W·VFDOOHG ORRNLQJIWRKUHPHWKRGVWDUWOVMXVW

 *DPH+HOSHUDQG\RXKDYHQ·W XVHULQSXW
XVLQJWKH*DPH+HOSHU 
FODVV VHHQLW\HW \RXZLOO 

;\ZQVOO]M[[%PMTXMZOM\=[MZ1VX]\¹MV\MZIV]UJMZº#

:HGHFODUHD6WULQJYDULDEOH $PHWKRGRIWKH*DPH+HOSHUFODVV
KROGWKHXVHULQSXW6W WR WKDWDVNVWKHXVHUIRUFRPPDQG
ULQJZH
JHWEDFN ´µ´µHWF OLQHLQSXWUHDGVLWLQDIWHUWKH
 XVHUKLWV5(7851DQGJLYHVEDFN
WKHUHVXOWDVD6WULQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
*DPH+HOSHUFODVV 5HDG\EDNH
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH

7VMTI[\KTI[["/IUM0MTXMZ
7EMADETHEDOTCOMCLASS *USTCOPY
THECODEBELOWANDCOMPILEITINTO
7EMADETHEGAMECLASS ACLASSNAMED'AME(ELPER$ROPALLTHREE
CLASSES3IMPLE$OT#OM 3IMPLE$OT#OM'AME
!LLTHATSLEFTISTHEHELPERCLASSˆTHEONEWITHTHE 'AME(ELPER INTOTHESAMEDIRECTORY ANDMAKEIT
GET5SER)NPUT METHOD4HECODETOGETCOMMAND YOURWORKINGDIRECTORY
LINEINPUTISMORETHANWEWANTTOEXPLAINRIGHTNOW
)TOPENSUPWAYTOOMANYTOPICSBESTLEFTFORLATER 4GCF[DCMG
,ATER ASINCHAPTER 7HENEVERYOUSEETHE %QFG LOGO YOURESEE
INGCODETHATYOUHAVETOTYPEAS ISANDTAKEONFAITH

Licensed by
4RUSTIT9OULLLEARNHOWTHATCODEWORKSLATER
,SUHFRRNHG
VRPHFRGHVR\RX
GRQ·WKDYHWRPDNH

Eduard Simons
LW\RXUVHOI

4GCF[DCMG

104038
%QFG
LPSRUWMDYDLR 
SXEOLFFODVV*DPH+HOSHU^
SXEOLF6WULQJJHW8VHU,QSXW 6WULQJSURPSW ^
6WULQJLQSXW/LQH QXOO
6\VWHPRXWSULQW SURPSW³³ 
WU\^
%XIIHUHG5HDGHULV QHZ%XIIHUHG5HDGHU
 QHZ,QSXW6WUHDP5HDGHU 6\VWHPLQ 
LQSXW/LQH LVUHDG/LQH 
LI LQSXW/LQHOHQJWK   UHWXUQQXOO
`FDWFK ,2([FHSWLRQH ^
6\VWHPRXWSULQWOQ ³,2([FHSWLRQ³H 
`
UHWXUQLQSXW/LQH
`
`

:HNQRZKRZPXFK\RXHQMR\W\SLQJEXWIRUWKRVHUDUH
PRPHQWVZKHQ\RX¶GUDWKHUGRVRPHWKLQJHOVHZH¶YHPDGH
WKH5HDG\EDNH&RGHDYDLODEOHRQZLFNHGO\VPDUWFRP

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

4M\¼[XTIa ?PI\¼[\PQ[')J]O '


*DVS
+HUH·VZKDWKDSSHQVZKHQZH +HUH·VZKDWKDSSHQVZKHQZH
UXQLWDQGHQWHUWKHQXPEHUV HQWHU
/RRNLQ·JRRG

)KWUXTM\MOIUMQV\MZIK\QWV )LQNNMZMV\OIUMQV\MZIK\QWV
YOURMILEAGEMAYVARY YIKES

)LOH(GLW:LQGRZ+HOS6PLOH )LOH(GLW:LQGRZ+HOS)DLQW

MDYD6LPSOH'RW&RP*DPH MDYD6LPSOH'RW&RP*DPH
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV KLW
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV KLW
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV NLOO
HQWHUDQXPEHU <RXWRRNJXHVVHV
KLW
HQWHUDQXPEHU
KLW
HQWHUDQXPEHU
6KDUSHQ \RXU SHQFLO
NLOO
<RXWRRNJXHVVHV
)TSACLIFF HANGER
7ILLWEFINDTHEBUG
7ILLWEFIXTHEBUG

3TAYTUNEDFORTHENEXTCHAPTER WHEREWEANSWER
THESEQUESTIONSANDMORE
!NDINTHEMEANTIME SEEIFYOUCANCOMEUPWITH
IDEASFORWHATWENTWRONGANDHOWTOFIXIT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IRUORRSV

5WZMIJW]\NWZTWWX[
7EVECOVEREDALLTHEGAMECODEFORTHISCHAPTERBUTWELLPICKITUPAGAIN
TOlNISHTHEDELUXEVERSIONOFTHEGAMEINTHENEXTCHAPTER 7EDIDNT
WANTTOINTERRUPTYOURWORKWITHSOMEOFTHEDETAILSANDBACKGROUNDINFO
SOWEPUTITBACKHERE7ELLSTARTWITHTHEDETAILSOFFORLOOPS ANDIFYOURE
A# PROGRAMMER YOUCANJUSTSKIMTHESELASTFEWPAGES

:MO]TIZVWVMVPIVKMLNWZTWWX[
WKHFRG
UHSHDWJHRW
H
R
V
WKHERG\ KHUH
SRVWLQFUHPHQWRSHUDWRU

NWZQV\Q%#Q$#Qce ZMXMI\NWZZMX["

LQLWLDOL]DWLRQ ERROHDQWHVW LWHUDWLRQH[SUHVVLRQ

7HATITMEANSINPLAIN%NGLISHh2EPEATTIMESv
(OWTHECOMPILERSEESIT
 CREATEAVARIABLEIANDSETITTO
 REPEATWHILEIISLESSTHAN
 ATTHEENDOFEACHLOOPITERATION ADDTOI

0ART/NEINITIALIZATION
5SETHISPARTTODECLAREANDINITIALIZEAVARIABLETOUSEWITHINTHELOOPBODY
9OULLMOSTOFTENUSETHISVARIABLEASACOUNTER9OUCANACTUALLYINITIALIZEMORE
THANONEVARIABLEHERE BUTWELLGETTOTHATLATERINTHEBOOK
0ART4WOBOOLEANTEST
4HISISWHERETHECONDITIONALTESTGOES7HATEVERSINTHERE ITMUSTRESOLVETOA
BOOLEANVALUEYOUKNOW TRUEORFALSE 9OUCANHAVEATEST LIKEX ORYOU
CANEVENINVOKEAMETHODTHATRETURNSABOOLEAN
0ART4HREEITERATIONEXPRESSION
)NTHISPART PUTONEORMORETHINGSYOUWANTTOHAPPENWITHEACHTRIPTHROUGH
THELOOP+EEPINMINDTHATTHISSTUFFHAPPENSATTHEENDOFEACHLOOP

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

W]\X]\"
<ZQX[\PZW]OPITWWX )LOH(GLW:LQGRZ+HOS5HSHDW

IRU LQWL LL ^ MDYD7HVW


6\VWHPRXWSULQWOQ L  
` 
6\VWHPRXWSULQWOQ ³GRQH´  

GHFODUHLQWL

VHWLWR 


GRQH
LVL" WUXH HQWHUORRS
WKHERROHDQ
ERG\
WHVW

IDOVH 0REAND0OST)NCREMENT$ECREMENT/PERATOR
SULQWWKHYDOXH
SULQW´GRQHµ RIL 4HESHORTCUTFORADDINGORSUBTRACTINGFROMAVARIABLE
MXPSEHORZORRS
[
LQFUHPHQWL ISTHESAMEAS
WKHLWHUDWLRQ
H[SUHVVLRQ [ [
4HEYBOTHMEANTHESAMETHINGINTHISCONTEXT
hADDTOTHECURRENTVALUEOFXvORhINCREMENTXBYv
,QNNMZMVKMJM\ _MMVNWZIVL_PQTM !ND

!WHILELOOPHASONLYTHEBOOLEANTESTITDOESNTHAVE
[
ABUILT ININITIALIZATIONORITERATIONEXPRESSION!WHILE ISTHESAMEAS
LOOPISGOODWHENYOUDONTKNOWHOWMANYTIMESTO
[ [
LOOPANDJUSTWANTTOKEEPGOINGWHILESOMECONDI
TIONISTRUE"UTIFYOUKNOWHOWMANYTIMESTOLOOP /FCOURSETHATSNEVERTHEWHOLESTORY4HEPLACEMENTOFTHE
EGTHELENGTHOFANARRAY TIMES ETC AFORLOOPIS OPERATOREITHERBEFOREORAFTERTHEVARIABLE CANAFFECTTHERE
CLEANER(ERESTHELOOPABOVEREWRITTENUSINGWHILE SULT0UTTINGTHEOPERATORBEFORETHEVARIABLEFOREXAMPLE X
MEANS hlRST INCREMENTXBY ANDTHENUSETHISNEWVALUEOFXv
4HISONLYMATTERSWHENTHE XISPARTOFSOMELARGEREXPRES
ZHKDYHWRGHF SIONRATHERTHANJUSTINASINGLESTATEMENT
LQWL 
LQLWLDOL]HWKH ODUHDQG
ZKLOH L ^ FRXQWHU LQW[ LQW] [
PRODUCESXIS ZIS
6\VWHPRXWSULQWOQ L 
ZHKDYH "UTPUTTINGTHE AFTERTHEXGIVEYOUADIFFERENTRESULT
WKHFRXQWWHRLQFUHPHQW
L
LQW[ LQW] [
` U
PRODUCESXIS BUTZISZGETSTHEVALUEOFXANDTHENXIS
6\VWHPRXWSULQWOQ ³GRQH´  INCREMENTED

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HQKDQFHGIRU

<PMMVPIVKMLNWZTWWX
"EGINNINGWITH*AVA4IGER THE*AVALANGUAGEHASASECONDKINDOFFORLOOP
CALLEDTHEENHANCEDFOR THATMAKESITEASIERTOITERATEOVERALLTHEELEMENTSINAN
ARRAYOROTHERKINDSOFCOLLECTIONSYOULLLEARNABOUTOTHERCOLLECTIONSINTHENEXT
CHAPTER 4HATSREALLYALLTHATTHEENHANCEDFORGIVESYOUˆASIMPLERWAYTOWALK
THROUGHALLTHEELEMENTSINTHECOLLECTION BUTSINCEITSTHEMOSTCOMMONUSEOFA
FORLOOP ITWASWORTHADDINGITTOTHELANGUAGE7ELLREVISITTHEENHANCEDFORLOOPIN
THENEXTCHAPTER WHENWETALKABOUTCOLLECTIONSTHATARENTARRAYS

7KHFRG
'HFODUHDQLWHUDWLRQYDULDEHQW OH 7KHFROR UHSHDWJRHHWVR
WKDWZLOOKROG DV LQJOHH OHP  PHDQV´,1Qµ    WKHERG\ KHUH

LQWKHDUUD\
NWZ;\ZQVOVIUM"VIUM)ZZIace
DWHRYHU
7KHHOHPHQWVLQWKH :LWKHDFKLWHUDWLRQ 
W RQ R I HOH PH QW V WK DW\RXZDQWWRGLWHU
DGLI IH UH QW HO HP HQ 7KHFROOHFWL RPHZKHUHHDUOLHUWKHFRGHVDL
DUUD\0867EH
LQWKHDUUD\ZLOO H ,PDJLQHWKDWV Eµ`
FRPSDWLEOHZLWKWKH
GHFODUHGYDULDEOHW\S H EHDVVLJQHGWRWK Q DP H$ UU D\  ^ ´)UHGµ´0DU\µ´%R
YDULDEOH´QDPHµ 6WULQJ >@
PH YDULDEOHKDVWK HYDOXHRI
DW LR Q WK H QD DU\µHWF
:LWKWKHILUVWLWLWKWKHVHFRQGLWHUDWLRQDYDOXHRI´0
HU
´)UHGµDQGZ
7HATITMEANSINPLAIN%NGLISHh&OREACHELEMENTINNAME!RRAY ASSIGNTHE
ELEMENTTOTHE@NAMEVARIABLE ANDRUNTHEBODYOFTHELOOPv

(OWTHECOMPILERSEESIT 1RWHGHSHQGLQJRQWKH
SURJUDPPLQJODQJXDJHWK H\·YH
 #REATEA3TRINGVARIABLECALLEDNAMEANDSETITTONULL XVHGLQWKHSDVWVRP HRS
!SSIGNTHEFIRSTVALUEINNAME!RRAYTONAME UHIHUWRWKHHQKDQFHGHSIR OH
UD
WKH´IRUHDFKµRUWKH´IRU V
 2UNTHEBODYOFTHELOOPTHECODEBLOCKBOUNDEDBYCURLYBRACES  LQµORRSEHFDXVHWKDW·V ZLW
!SSIGNTHENEXTVALUEINNAME!RRAYTONAME UHDGV´IRU($&+WKLQJKR ,1WKH
FROOHFWLRQµ
 2EPEATWHILETHEREARESTILLELEMENTSINTHEARRAY

0ART/NEITERATIONVARIABLEDECLARATION
5SETHISPARTTODECLAREANDINITIALIZEAVARIABLETOUSEWITHINTHELOOPBODY7ITHEACH
ITERATIONOFTHELOOP THISVARIABLEWILLHOLDADIFFERENTELEMENTFROMTHECOLLECTION4HE
TYPEOFTHISVARIABLEMUSTBECOMPATIBLEWITHTHEELEMENTSINTHEARRAY&OREXAMPLE
YOUCANTDECLAREANINTITERATIONVARIABLETOUSEWITHA3TRING;=ARRAY

0ART4WOTHEACTUALCOLLECTION
4HISMUSTBEAREFERENCETOANARRAYOROTHERCOLLECTION!GAIN DONTWORRYABOUTTHE
OTHERNON ARRAYKINDSOFCOLLECTIONSYETˆYOULLSEETHEMINTHENEXTCHAPTER

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

#ONVERTINGA3TRINGTOANINT +I[\QVO
LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV  XZQUQ\Q^M[
4HEUSERTYPESHISGUESSATTHECOMMAND
LINE WHENTHEGAMEPROMPTSHIM4HAT
GUESSCOMESINASA3TRINGhv hv ETC
ANDTHEGAMEPASSESTHAT3TRINGINTOTHE
CHECK9OURSELF METHOD
"UTTHECELLLOCATIONSARESIMPLYINTSINAN
ARRAY ANDYOUCANTCOMPAREANINTTOA
3TRING
&OREXAMPLE THISWONTWORK
3TRINGNUMhv ORQJ VKRUW
FDQEHFDVWWR
INTX ELWVRQ

 VLGHZHUHWKHOHIW
IFXNUM HORRIBLEEXPLOSION 
 
FXWRII
4RYINGTOCOMPILETHATMAKESTHECOMPILER
EXW\RXPLJKW 
LAUGHANDMOCKYOU ORVHVRPHWKLQJ
RSHUDWRU FDQQRWEHDSSOLHGWR

 LQWMDYDODQJ6WULQJ ,QFKDSWHUZHWDONHGDERXWWKHVL]HVRIWKHYDULRXVSULPLWLYHVDQGKRZ\RX
LI [ QXP ^` FDQ·WVKRYHDELJWKLQJGLUHFWO\LQWRDVPDOOWKLQJ   
 O
 RQJ\ 
A
 LQW[ \ZRQ¶WFRPSLOH

3OTOGETAROUNDTHEWHOLEAPPLESAND $ORQJLVELJJHUWKDQDQLQWDQGWKHFRPSLOHUFDQ·WEHVXUHZKHUHWKDWORQJKDV
ORANGESTHING WEHAVETOMAKETHE3TRING EHHQ,WPLJKWKDYHEHHQRXWGULQNLQJZLWKWKHRWKHUORQJVDQGWDNLQJRQUHDOO\
hvINTOTHEINT"UILTINTOTHE*AVACLASS ELJYDOXHV7RIRUFHWKHFRPSLOHUWRMDPWKHYDOXHRIDELJJHUSULPLWLYHYDULDEOH
LIBRARYISACLASSCALLED)NTEGERTHATSRIGHT LQWRDVPDOOHURQH\RXFDQXVHWKHFDVWRSHUDWRU,WORRNVOLNHWKLV
AN)NTEGERCLASS NOTTHEINTPRIMITIVE  O
 RQJ\ VRIDUVRJRRG
ANDONEOFITSJOBSISTOTAKE3TRINGSTHAT
REPRESENTNUMBERSANDCONVERTTHEMINTO  LQW[  LQW \[ FRRO

ACTUALNUMBERS 3XWWLQJLQWKHFDVWWHOOVWKHFRPSLOHUWRWDNHWKHYDOXHRI\FKRSLWGRZQWRLQW
VL]HDQGVHW[HTXDOWRZKDWHYHULVOHIW,IWKHYDOXHRI\ZDVELJJHUWKDQWKH
PD[LPXPYDOXHRI[WKHQZKDW·VOHIWZLOOEHDZHLUG EXWFDOFXODEOH QXPEHU
DWVKLSV
DFODVVDWYKD
 O
 RQJ\ 
WDNHVD6WULQJ
ZLWK- 

H[FHHGVWKHELWOLPLWRIDVKRUW

  
 VKRUW[  VKRUW \[QRZHTXDOV


1V\MOMZXIZ[M1V\¹º 6WLOOWKHSRLQWLVWKDWWKHFRPSLOHUOHWV\RXGRLW$QGOHW·VVD\\RXKDYHDIORDW
LQJSRLQWQXPEHUDQG\RXMXVWZDQWWRJHWDWWKHZKROHQXPEHU LQW SDUWRILW

 ÀRDWI I

DPHWKRGLQWKH,QWHJHU  LQW[  LQW I[ZLOOHTXDO

FODVVWKDWNQRZVKRZWR $QGGRQ·WHYHQWKLQNDERXWFDVWLQJDQ\WKLQJWRDERROHDQRUYLFHYHUVD³MXVW
´SDUVHµD6WULQJLQWRWKH ZDONDZD\
LQWLWUHSUHVHQWV
 ,WLQYROYHVVLJQELWVELQDU\¶WZR·VFRPSOHPHQW·DQGRWKHUJHHNHU\DOORIZKLFK
DUHGLVFXVVHGDWWKHEHJLQQLQJRIDSSHQGL[%
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH%HWKH-90

1dQ^OU_Q "%THE*6-
7KH-DYDILOHRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFH
ILOH<RXUMRELVWRSOD\-90
DQGGHWHUPLQHZKDWZRXOGEH
WKHRXWSXWZKHQWKH
SURJUDPUXQV"

)LOH(GLW:LQGRZ+HOS20

MDYD2XWSXW
FODVV2XWSXW^ 

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
2XWSXWR QHZ2XWSXW 
RJR  RU
`
)LOH(GLW:LQGRZ+HOS,QFHQVH

YRLGJR ^ MDYD2XWSXW
[ 
LQW\ 
IRU LQW[ [[ ^
\
LI [! ^
6\VWHPRXWSULQW \´´  RU
`
)LOH(GLW:LQGRZ+HOS%HOLHYH
)LOH(GLW:LQGRZ+HOS6OHHS
LI \! ^
6\VWHPRXWSULQWOQ ´[ ´[  MDYD2XWSXW
MDYD7HVW$UUD\V
[)LML
LVODQG 
EUHDN LVODQG &R]XPHO
` LVODQG %HUPXGD
LVODQG $]RUHV
`
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

Code Magnets
1dQ^OU_Q !WORKING*AVAPROGRAMISALLSCRAMBLEDUPONTHEFRIDGE#ANYOU
RECONSTRUCTTHECODESNIPPETSTOMAKEAWORKING*AVAPROGRAMTHAT
PRODUCESTHEOUTPUTLISTEDBELOW3OMEOFTHECURLYBRACESFELLONTHE
FLOORANDTHEYWERETOOSMALLTOPICKUP SOFEELFREETOADDASMANYOF
THOSEASYOUNEED

 [


LI [  ^

6\VWHPRXWSULQWOQ [´´\ 

FODVV
0XOW
L)R U^

\!\ ^
IRU LQW\ 

IRU LQW[ [[ ^

SXEOLF
VWDWLF
YRLGPD
LQ 6WUL
QJ>@D
)LOH(GLW:LQGRZ+HOS5DLG
U JV ^

MDYD0XOWL)RU







\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH-DYD&URVV

  

 

 

  

 


-DYD&URVV
  

  
(OWDOESACROSSWORDPUZZLE
HELPYOULEARN*AVA7ELL ALL
OFTHEWORDSARE*AVARELATED
)NADDITION THECLUESPROVIDE
METAPHORS PUNS ANDTHELIKE
  4HESEMENTALTWISTSANDTURNS
BURNALTERNATEROUTESTO*AVA
KNOWLEDGE RIGHTINTOYOUR
   BRAIN


 





!CROSS $OWN
&ANCYCOMPUTERWORD !UTOMATICTOOLKIT )NCREMENTTYPE !SIF
FORBUILD #LASSSWORKHORSE !DDAFTER
,OOKSLIKEAPRIMITIVE
-ULTI PARTLOOP BUT 0IHOUSE
0REISATYPEOF?????
4ESTlRST 5N CASTABLE #OMPILEITAND????
&ORSITERATION??????
BITS -ATHMETHOD  QUANTITY
%STABLISHlRSTVALUE
-ETHODSANSWER #ONVERTERMETHOD
7HILEOR&OR
0REPCODE ESQUE ,EAVEEARLY
5PDATEANINSTANCEVARIABLE
#HANGE 4OWARDSBLASTOFF
4HEBIGTOOLKIT !CYCLE
!NARRAYUNIT 4ALKATIVEPACKAGE
)NSTANCEORLOCAL -ETHODMESSENGER
ABBREV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

!SHORT*AVAPROGRAMISLISTEDBELOW/NEBLOCKOFTHEPROGRAM
ISMISSING9OURCHALLENGEISTOMATCHTHECANDIDATEBLOCKOF
CODEONTHELEFT WITHTHEOUTPUTTHATYOUDSEEIFTHEBLOCK
WEREINSERTED.OTALLTHELINESOFOUTPUTWILLBEUSED ANDSOME
-IXED OFTHELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE$RAWLINES
-ESSAGES CONNECTINGTHECANDIDATEBLOCKSOFCODEWITHTHEIRMATCHING
COMMAND LINEOUTPUT

FODVV0L[)RU^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
LQW\ 
IRU LQWRXWHU RXWHURXWHU ^
IRU LQWLQQHU LQQHU!LQQHU ^

WH FDQGLGD
\ \ JRHVKHUH FRGH
LI [  ^
EUHDN
`
[ [
`
\ \
`
6\VWHPRXWSULQWOQ [³³\ 
`
`


#ANDIDATES 0OSSIBLEOUTPUT

[ [  PDWFKHDFKLWK


FDQGLGDWHZ 
RQHRIWKHSXWV
[ [ 

[ [  SRVVLEOHRXW


[ 

[ 

[ [ 



\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

%XERCISE3OLUTIONS

%HWKH-90 &RGH0DJQHWV
FODVV2XWSXW^ FODVV0XOWL)RU^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


2XWSXWR QHZ2XWSXW 
IRU LQW[ [[ ^
RJR 

Licensed by

`
IRU LQW\ \!\ ^
YRLGJR ^ 6\VWHPRXWSULQWOQ [´´\ 
LQW\  `

Eduard Simons
IRU LQW[ [[ ^
LI [  ^:KDWZRXOGKDSSHQ
\
[LIWKLVFRGHEORFNFDPH
LI [! ^
`EHIRUHWKH¶\·IRUORRS"
6\VWHPRXWSULQW \´´ 

104038
`
` `
LI \! ^ `
)LOH(GLW:LQGRZ+HOS0RQRSROH
6\VWHPRXWSULQWOQ ´[ ´[ 
MDYD0XOWL)RU
EUHDN 

`

` 
`


`'LG\RXUHPHPEHUWRIDFWRULQWKH
EUHDNVWDWHPHQW"+RZGLGWKDW
 DIIHFWWKHRXWSXW"

)LOH(GLW:LQGRZ+HOS0RWRUF\FOH0DLQWHQDQFH
)LOH(GLW:LQGRZ+HOS6OHHS

MDYD7HVW$UUD\V
MDYD2XWSXW
LVODQG
[)LML

LVODQG &R]XPHO
LVODQG %HUPXGD
LVODQG $]RUHV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDSURJUDP

0UZZLE3OLUTIONS

  
,03/(0(170
 
5)25(
 
(;75(0(3,17
  
;/65(7851+
 
36(8'2&2'(5,2

5(27&$677'
  
(,&$3,-7,
675$2$
  
6(/(0(179$5,$%/(
,50$5,
 
2$(-$9$/$1*=
171,,(
  
,17(*(5230

27%22/($1
 
5$1'20867

813$56(,17+

1%5($./

#ANDIDATES 0OSSIBLEOUTPUT

[ [ 

[ [ 

[ [ 

[ 

[ 

[ [ 



\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

8VLQJWKH-DYD/LEUDU\

6RLW·VWUXH"
,FDQOLIW
:HGRQ·WKDYHWR
KHDY\REMHFWV
EXLOGLWRXUVHOYHV"

-DYDVKLSVZLWKKXQGUHGVRI SUHEXLOWFODVVHV9OUDONTHAVETO
REINVENTTHEWHEELIFYOUKNOWHOWTOFINDWHATYOUNEEDINTHE*AVALIBRARY KNOWNAS
THE*AVA!0)9OUVEGOTBETTERTHINGSTODO)FYOUREGOINGTOWRITECODE YOUMIGHTASWELL
WRITEONLYTHEPARTSTHATARETRULYCUSTOMFORYOURAPPLICATION9OUKNOWTHOSEPROGRAMMERS
WHOWALKOUTTHEDOOREACHNIGHTAT0-4HEONESWHODONTEVENSHOWUPUNTIL!-
4HEYUSETHE*AVA!0)!NDABOUTEIGHTPAGESFROMNOW SOWILLYOU4HECORE*AVALIBRARY
ISAGIANTPILEOFCLASSESJUSTWAITINGFORYOUTOUSELIKEBUILDINGBLOCKS TOASSEMBLEYOUROWN
PROGRAMOUTOFLARGELYPRE BUILTCODE4HE2EADY BAKE*AVAWEUSEINTHISBOOKISCODEYOU
DONTHAVETOCREATEFROMSCRATCH BUTYOUSTILLHAVETOTYPEIT4HE*AVA!0)ISFULLOFCODEYOU
DONTEVENHAVETOTYPE!LLYOUNEEDTODOISLEARNTOUSEIT

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZHVWLOOKDYHDEXJ

1VW]ZTI[\KPIX\MZ_MTMN \aW]
_Q\P\PMKTQNNPIVOMZ)J]O

0W_Q\¼[[]XXW[ML\WTWWS 0W_\PMJ]OTWWS[
+HUH·VZKDWKDSSHQVZKHQZH +HUH·VZKDWKDSSHQVZKHQZH
UXQLWDQGHQWHUWKHQXPEHUV HQWHU
/RRNLQ·JRRG

)KWUXTM\MOIUMQV\MZIK\QWV )LQNNMZMV\OIUMQV\MZIK\QWV
YOURMILEAGEMAYVARY YIKES

)LOH(GLW:LQGRZ+HOS6PLOH )LOH(GLW:LQGRZ+HOS)DLQW

MDYD6LPSOH'RW&RP*DPH MDYD6LPSOH'RW&RP*DPH
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV KLW
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV KLW
HQWHUDQXPEHU HQWHUDQXPEHU
PLVV NLOO
HQWHUDQXPEHU <RXWRRNJXHVVHV
KLW
HQWHUDQXPEHU
KLW 1V\PMK]ZZMV\^MZ[QWVWVKM
HQWHUDQXPEHU aW]OM\IPQ\aW]KIV[QUXTa
NLOO ZMXMI\\PI\PQ\\ _WUWZM
<RXWRRNJXHVVHV \QUM[NWZ\PMSQTT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

;W_PI\PIXXMVML'

SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJVWULQJ*XHVV ^

LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 


&RQYHUWWKH6WULQJ
WRDQLQW
0DNHDYDULDEOHWRKROG
UHWXUQ3XW´PLVVµLQDV WKHUHVXOWZH·OO
6WULQJUHVXOW ³PLVV´

LHZHDVVXPHD´PLVVµ  WKHGHIDXOW

IRU LQWFHOOORFDWLRQ&HOOV ^ 5HSHDWZ


WKLQJLQW LWKHDFK
+HUH·VZKHUHLW LI JXHVV FHOO ^ &RPSDUHWKHXVHU KHDUUD\
JRHVZURQJ:H JXHVVWRWKLVHOHPHQW
FRXQWHGDKLWHYHU\ UHVXOW ³KLW´ FHOO LQWKHDUUD\
WLPHWKHXVHU ZHJRWDKLW
JXHVVHGDFHOO QXP2I+LWV
ORFDWLRQHYHQLI
WKDWORFDWLRQKDG EUHDN *HWRXWRIWKH
DOUHDG\EHHQKLW WRWHVWWKH ORRSQRQHHG RWKHUFHOOV
`HQGLI
:HQHHGDZD\WR
`HQGIRU
NQRZWKDWZKHQ
DXVHUPDNHV
LI QXP2I+LWV ORFDWLRQ&HOOVOHQJWK ^
DKLWKHKDVQ·W :H·UHRXWRIWKHORRSEXW
SUHYLRXVO\KLWWKDW UHVXOW ³NLOO´
OHW·VVHHLIZH·UHQRZ¶GHDG·
FHOO,IKHKDVWKHQ KLWWLPHV DQGFKDQJHWKH
ZHGRQ·WZDQWWR `HQGLI UHVXOW6WULQJWR´NLOOµ
FRXQWLWDVDKLW
6\VWHPRXWSULQWOQ UHVXOW  'LVSOD\WKHUHVXOWIRUWKHXVHU
´PLVVµXQOHVVLWZDVFKDQJHGWR´KLWµRU´NLOOµ 
UHWXUQUHVXOW
5HWXUQWKHUHVXOWEDFN
`HQGPHWKRG WKHFDOOLQJPHWKRG WR

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IL[LQJWKHEXJ

0W_LW_MNQ`Q\ '
:HQHHGDZD\WRNQRZZKHWKHUDFHOOKDVDOUHDG\EHHQKLW/HW·VUXQ
WKURXJKVRPHSRVVLELOLWLHVEXWÀUVWZH·OOORRNDWZKDWZHNQRZVRIDU

:HKDYHDYLUWXDOURZRIFHOOVDQGD'RW&RPZLOORFFXS\WKUHH
FRQVHFXWLYHFHOOVVRPHZKHUHLQWKDWURZ7KLVYLUWXDOURZVKRZVD
'RW&RPSODFHGDWFHOOORFDWLRQVDQG

7KHYLU
FHOOORWFDXWDOURZZLWKWKH
       'RW&RPRE LRQVIRUWKH
MHFW

7KH'RW&RPKDVDQLQVWDQFHYDULDEOH³DQLQWDUUD\³WKDWKROGVWKDW
'RW&RPREMHFW·VFHOOORFDWLRQV

  
7KHDUUD\ QVW
KROGVWKH'LRW DQFHYDULDEOHW
KDW
ORFDWLRQ&HOOV 7KLV'RW&RPK&RP·VFHOOORFDWLRQV
DQG7 ROG V WKH
KRVHDUHWKHYQDOXHVRI
LQVWDQFHYDULDEOHRI   
WKH'RW&RP WKHXVHUQHHG VWRJXHVV XPEHUV

 7X\QWVWVM
:HFRXOGPDNHDVHFRQGDUUD\DQGHDFKWLPHWKHXVHUPDNHVDKLWZH
VWRUHWKDWKLWLQWKHVHFRQGDUUD\DQGWKHQFKHFNWKDWDUUD\HDFKWLPH
ZHJHWDKLWWRVHHLIWKDWFHOOKDVEHHQKLWEHIRUH

$¶WUXH·LQDSD LFXODU
WKHFHOOORFDWLRQUW LQGH[LQWKHDUUD\PH
DQVW
DUUD\ ORFDWLRQ&HOOV  VDPHLQGH[LQWKH27+(5KDW
D W WK DW
KDVEHHQKLW
FALSE FALSE TRUE

7KLVDUUD\KR
KLW&HOOVDUUD\ WKH¶VWDWH·RIOGHDVFKWKUHHYDOXHVUHSUHVHQWLQJ
WKLVZRXOGEHD ORFDWLRQFHOOVDUUD\FHOOLQWKH'RW&RP·V
  
FHOODWLQGH[ )RUH[DPSOHLIWK
QHZERROHDQDUUD\ H
LQVWDQFHYDULDEOHRI WKH´KLW&HOOVµDULVUDKLWWKHQVHWLQGH[LQ
WKH'RW&RP \WR¶WUXH·

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

7X\QWVWVMQ[\WWKT]VSa
2SWLRQRQHVHHPVOLNHPRUHZRUNWKDQ\RX·GH[SHFW,WPHDQVWKDWHDFK
WLPHWKHXVHUPDNHVDKLW\RXKDYHWRFKDQJHWKHVWDWHRIWKHVHFRQG
DUUD\ WKH¶KLW&HOOV·DUUD\ RKEXWÀUVW\RXKDYHWR&+(&.WKH¶KLW&HOOV·
DUUD\WRVHHLIWKDWFHOOKDVDOUHDG\EHHQKLWDQ\ZD\,WZRXOGZRUNEXW
WKHUH·VJRWWREHVRPHWKLQJEHWWHU

 7X\QWV\ _W
:HFRXOGMXVWNHHSWKHRQHRULJLQDODUUD\EXWFKDQJHWKHYDOXHRIDQ\KLW
FHOOVWR7KDWZD\ZHRQO\KDYH21(DUUD\WRFKHFNDQGPDQLSXODWH

DDWDSDUW
KDVDOUHDG\EHHQLFXKODUFHOOORFDWLRQPHDQVW
KDWWKH
   QHJDWLYHQXPEHUVLQLWWVRZH·UHRQO\ORRNLQJIRUQRQFHOO
KHDUUD\

ORFDWLRQ&HOOV
LQVWDQFHYDULDEOHRI   
WKH'RW&RP

7X\QWV\ _WQ[ITQ\\TMJM\\MZJ]\
[\QTTXZM\\ aKT]VSa
2SWLRQWZRLVDOLWWOHOHVVFOXQN\WKDQRSWLRQRQHEXWLW·VQRWYHU\HIÀFLHQW<RX·G
VWLOOKDYHWRORRSWKURXJKDOOWKUHHVORWV LQGH[SRVLWLRQV LQWKHDUUD\HYHQLI
RQHRUPRUHDUHDOUHDG\LQYDOLGEHFDXVHWKH\·YHEHHQ¶KLW· DQGKDYHDYDOXH 
7KHUHKDVWREHVRPHWKLQJEHWWHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SUHSFRGH
SUHSFRGH WHVWFRGH UHDOFRGH

 7X\QWV\PZMM
:HGHOHWHHDFKFHOOORFDWLRQDVLWJHWVKLWDQGWKHQPRGLI\WKHDUUD\WR
EHVPDOOHU([FHSWDUUD\VFDQ·WFKDQJHWKHLUVL]HVRZHKDYHWRPDNHD
QHZDUUD\DQGFRS\WKHUHPDLQLQJFHOOVIURPWKHROGDUUD\LQWRWKHQHZ
VPDOOHUDUUD\
  
ORFDWLRQ&HOOVDUUD\ 7KHDUUD\VWDU
%()25(DQ\FHOOV RIDQGZHORRWVSRWKXWURZLWKDVL]H
KDYHEHHQKLW    SRVLWLRQVLQWK XJKDOOFHOOV
DPDWFKEHWZHHHQDUWKUDH\ WRORRNIRU
WKHFHOOYDOXH  XVHUJXHVVDQG


  :KHQFHOO¶·LVK
ORFDWLRQ&HOOVDUUD\
VPDOOHUDUUD\ZLWLWKZ HPDNHDQHZ
$)7(5FHOO¶·ZKLFK
LQJFHOOORFDWLRQVDQRQ O\WKHUHPDLQ
ZDVDWLQGH[LQWKH
DUUD\KDVEHHQKLW
RULJLQDOORFDWLRQ&HOOVG DVVLJQLWWRWKH
UHIHUHQFH
 

7X\QWV\PZMM_W]TLJMU]KPJM\\MZQN\PMIZZIaKW]TL[PZQVS[W\PI\_M_W]TLV¼\PI^M
\WUISMIVM_[UITTMZIZZIaKWXa\PMZMUIQVQVO^IT]M[QVIVLZMI[[QOV\PMZMNMZMVKM

<PMWZQOQVITXZMXKWLMNWZXIZ\WN\PM 4QNM_W]TLJMOWWLQNWVTa_MKW]TL
KPMKSAW]Z[MTNUM\PWL" KPIVOMQ\\W"

  6)4)%8[MXLIEGLSJXLIPSGEXMSRGIPPWMRXLIMRXEVVE]   6)4)%8[MXLIEGLSJXLIVIQEMRMRKPSGEXMSRGIPPW
    '314%6)XLIYWIVKYIWWXSXLIPSGEXMSRGIPP     '314%6)XLIYWIVKYIWWXSXLIPSGEXMSRGIPP
      -*XLIYWIVKYIWWQEXGLIW       -*XLIYWIVKYIWWQEXGLIW
        -2'6)1)28XLIRYQFIVSJLMXW         6)13:)XLMWGIPPJVSQXLIEVVE]
        *-2(398MJMX[EWXLIPEWXPSGEXMSRGIPP         *-2(398MJMX[EWXLIPEWXPSGEXMSRGIPP
        -*RYQFIVSJLMXWMW6)8962±OMPP²         -*XLIEVVE]MWRS[IQTX]6)8962±OMPP²
        )07)MX[EWRSXEOMPPWS6)8962±LMX²         )07)MX[EWRSXEOMPPWS6)8962±LMX²
        )2(-*         )2(-*
      )07)YWIVKYIWWHMHRSXQEXGLWS6)8962±QMWW²       )07)YWIVKYIWWHMHRSXQEXGLWS6)8962±QMWW²
      )2(-*       )2(-*
  )2(6)4)%8   )2(6)4)%8

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

,IRQO\,FRXOGÀQGDQDUUD\
WKDWFRXOGVKULQNZKHQ\RXUHPRYH
VRPHWKLQJ$QGRQHWKDW\RXGLGQ·WKDYH
WRORRSWKURXJKWRFKHFNHDFKHOHPHQWEXW
LQVWHDG\RXFRXOGMXVWDVNLWLILWFRQWDLQV
ZKDW\RX·UHORRNLQJIRU$QGLWZRXOGOHW\RX
JHWWKLQJVRXWRILWZLWKRXWKDYLQJWRNQRZ
H[DFWO\ZKLFKVORWWKHWKLQJVDUHLQ
7KDWZRXOGEHGUHDP\%XW,NQRZLW·V
MXVWDIDQWDV\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

?ISM]XIVL[UMTT\PMTQJZIZa

$VLIE\PDJLFWKHUHUHDOO\LVVXFKDWKLQJ

%XWLW·VQRWDQDUUD\LW·VDQ$UUD\/LVW

$FODVVLQWKHFRUH-DYDOLEUDU\ WKH$3, 

4HE*AVA3TANDARD%DITIONWHICHISWHATYOUHAVEUNLESSYOUREWORK
INGONTHE-ICRO%DITIONFORSMALLDEVICESANDBELIEVEME YOUDKNOW
SHIPSWITHHUNDREDSOFPRE BUILTCLASSES*USTLIKEOUR2EADY "AKECODE

Licensed by
EXCEPTTHATTHESEBUILT INCLASSESAREALREADYCOMPILED

4HATMEANSNOTYPING

Eduard Simons
*USTUSE@EM T
!RRAY,IS

CTELEM

104038
IST
RTOTHEL
ADD/BJESTHEOBJECTPARAMETE
!D D
METER
2QHRIDJD]LOOLRQFODVVHVLQ NTINDEX CTATTHEINDEXPARA
WKH-DYDOLEUDU\ REMOVEI OB JE
THE
2EMOVES
<RXFDQXVHLWLQ\RXUFRGH M AY,IST 
BJECTELE INTHE!RR
DVLI\RXZURWHLW\RXUVHOI REMOVE/VESTHISOBJECTIFIT S
2EMO
ARAMETER
S / B JE CTELEM ATCHFORTHEOBJECTP
CONTAIN THERESAM
RUEIF
2ETURNS@T
 LEMENTS
IS%MPTY LIS THASNOE
RUEIFTHE
2ETURNS@T
TER OR 
F / B JE C TELEM FTHEOBJECTPARAME
INDEX/ HERTHEIN
IT
DEXO
2ETURNSE
THELIST
ENTSCU RRENTLYIN
SIZE ENUMB EROFELEM
2ETURNSTH
1RWHWKHDGG 2EMHFWHOHP PHWKRG METER
DEX NDEXPARA
T I N T I N E N TL YATTHEI
DFWXDOO\ORRNVDOLWWOHVWUDQJHUWKDQWKH G E EOBJEC T
C U RR
2 ETURNSTH
RQHZH·YHVKRZQKHUHZH·OOJHWWRWKH
UHDORQHODWHULQWKHERRN)RUQRZMXVW SOHRI620(RI
WKLQNRILWDVDQDGG PHWKRGWKDW 7KLVLVMXVWDVDP UUD\/LVW
WDNHVWKHREMHFW\RXZDQWWRDGG WKHPHWKRGVLQ$

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

;WUM\PQVO[aW]KIVLW_Q\P)ZZIa4Q[\
V\QWD[
QHZ(JJ!DQJOHEUDFNHW
'RQ·WZRUU\DERXWWKDQLVV´PDNHWKLVDOLVWRI(JJREMHFWVµ
 0DNHRQH ULJKWQRZLWMXVWPH
V
$UUD\/LVW(JJ!P\/LVW QHZ$UUD\/LVW(JJ!  /LVWREMHFWL
$QHZ$UUQDW\ KHKHDS,W·VOLWWOH
FUHDWHGRW·VHPSW\
 3XWVRPHWKLQJLQLW EHFDXVHL
(JJV QHZ(JJ 
1RZWKH$UUD\/LVWMHF JURZVD´ER[µ
WRKROGWKH ( JJ RE W
P\/LVWDGG V 

V
 3XWDQRWKHUWKLQJLQLW
(JJE QHZ(JJ  7KH$UUD\/LVW
JURZVDJ
WKHVHFRQG( JJREMHFW DLQWRKROG
P\/LVWDGG E 

V E
 )LQGRXWKRZPDQ\WKLQJVDUHLQLW ROGLQJREMHFWVVR
7KH$UUD\/LVWLVKUH V
LQWWKH6L]H P\/LVWVL]H  WKHVL]H PHWKRG WXUQ

DLQWKH(JJREMHFW
 )LQGRXWLILWFRQWDLQVVRPHWKLQJ 7KH$UUD\/LVW'2(6FRQW UHWXUQVWUXH
ERROHDQLV,Q P\/LVWFRQWDLQV V  UHIHUHQFHGE\¶V·VRFRQWDLQV

DQVILUVWLQGH[LV 
 )LQGRXWZKHUHVRPHWKLQJLV LHLWVLQGH[ $UUD\/LVWLV]HUREDVHG PHFHGE\¶E·ZDVWKH
LQWLG[ P\/LVWLQGH[2I E  DQGVLQFHWKHREMHFWUHIHUHQ[2I UHWXUQV
VHFRQGWKLQJLQWKHOLVWLQGH

 )LQGRXWLILW·VHPSW\ LW·VGHILQLWHO\127HPSW
\VRLV(PSW\ 
ERROHDQHPSW\ P\/LVWLV(PSW\  UHWXUQVIDOVH

 5HPRYHVRPHWKLQJIURPLW +H\ORRN³LWVKUDQN
P\/LVWUHPRYH V 
E
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

6KDUSHQ \RXU SHQFLO &ILLINTHERESTOFTHETABLEBELOWBYLOOKINGATTHE!RRAY,ISTCODE


ONTHELEFTANDPUTTINGINWHATYOUTHINKTHECODEMIGHTBEIFIT
WEREUSINGAREGULARARRAYINSTEAD7EDONTEXPECTYOUTOGETALL
OFTHEMEXACTLYRIGHT SOJUSTMAKEYOURBESTGUESS

)ZZIa4Q[\ ZMO]TIZIZZIa

$UUD\/LVW6WULQJ!P\/LVW QHZ
$UUD\/LVW6WULQJ! 
6WULQJ>@P\/LVW QHZ6WULQJ>@

6WULQJD QHZ6WULQJ ³ZKRRKRR´ 


6WULQJD QHZ6WULQJ ´ZKRRKRRµ 
P\/LVWDGG D 

6WULQJE QHZ6WULQJ ³)URJ´ 


6WULQJE QHZ6WULQJ ´)URJµ 
P\/LVWDGG E 

LQWWKH6L]H P\/LVWVL]H 

2EMHFWR P\/LVWJHW  

P\/LVWUHPRYH  

ERROHDQLV,Q P\/LVWFRQWDLQV E 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

WKHUH DUH QR
'XPE 4XHVWLRQV ,CXC'ZRQUGF
Q: 3O!RRAY,ISTISCOOL BUT
7KLVZHHN·VLQWHUYLHZ
$UUD\/LVWRQDUUD\V
HOWWOULD)KNOWITEXISTS
+HDG)LUVW;W)ZZIa4Q[\[IZMTQSMIZZIa[ZQOP\'
A: 4HEQUESTIONISREALLY
h(OWDO)KNOWWHATSINTHE
$UUD\/LVW1V\PMQZLZMIU[ 1IUIVWJRMK\\PIVSaW]^MZaU]KP
+HDG)LUVW1N 1¼UVW\UQ[\ISMVIZZIa[IZMWJRMK\[\WW<PMaTQ^MWV\PMPMIXZQOP\
!0)vANDTHATSTHEKEYTOYOUR
SUCCESSASA*AVAPROGRAMMER \PMZM_Q\PITT\PMW\PMZWJRMK\[
.OTTOMENTIONYOURKEYTO $UUD\/LVW;]ZMIZZIa[OWWV\PMPMIXL]PJ]\IVIZZIaQ[[\QTTI_IVVIJM
BEINGASLAZYASPOSSIBLEWHILE )ZZIa4Q[\)XW[MZ7JRMK\[PI^M[\I\MIVLJMPI^QWZZQOP\'?M¼ZMKTMIZWV\PI\*]\
STILLMANAGINGTOBUILDSOFTWARE PI^MaW]IK\]ITTa\ZQMLKITTQVOIUM\PWLWVIVIZZIa'
9OUMIGHTBEAMAZEDATHOW
MUCHTIMEYOUCANSAVEWHEN +HDG)LUVW6W_\PI\aW]UMV\QWVQ\KIV¼\[Ia1PI^M*]\_PI\UM\PWL_W]TL1
SOMEBODYELSEHASALREADYDONE KITTIVa_Ia'1WVTaKIZMIJW]\KITTQVOUM\PWL[WV\PM[\]NN 1X]\QV\PMIZZIaVW\
MOSTOFTHEHEAVYLIFTING AND \PMIZZIaQ\[MTN)VL1KIV][MIZZIa[aV\I`_PMV1_IV\\WX]\\PQVO[QVIVL\ISM
ALLYOUHAVETODOISSTEPINAND \PQVO[W]\WN \PMIZZIa
CREATETHEFUNPART
$UUD\/LVW1[\PI\[W'AW]UMIV\W\MTTUMaW]IK\]ITTaZMUW^ML[WUM\PQVONZWUIV
"UTWEDIGRESSTHESHORT
IZZIa';PMM[P_PMZMLW\PMa\ZIQVaW]O]a['5K2I^I¼['
ANSWERISTHATYOUSPENDSOME
TIMELEARNINGWHATSINTHECORE +HDG)LUVW7N KW]Z[M1\ISM[WUM\PQVOW]\WN \PMIZZIa1[Ia,WOL%LWO)ZZIaCE
!0)4HELONGANSWERISATTHE IVL1OM\\PM,WOWJRMK\I\QVLM`W]\WN \PMIZZIa
ENDOFTHISCHAPTER WHEREYOULL
LEARNHOWTODOTHAT $UUD\/LVW)TTZQOP\1¼TT\Za\W[XMIS[TW_Ta[WaW]KIVNWTTW_ITWVOAW]_MZMVW\
1ZMXMI\VW\ZMUW^QVO\PI\,WONZWU\PMIZZIa)TTaW]LQL_I[UISMIKWXaWN \PM

Q: "UTTHATSAPRETTYBIG
ZMNMZMVKM\W\PM,WOIVLI[[QOVQ\\WIVW\PMZ,WO^IZQIJTM
+HDG)LUVW7P1[MM_PI\aW]¼ZM[IaQVO6W1LQLV¼\IK\]ITTaZMUW^M\PM,WO
ISSUE.OTONLYDO)NEEDTO
KNOWTHATTHE*AVALIBRARY WJRMK\NZWU\PMIZZIa1\¼[[\QTT\PMZM*]\1KIVR][\[M\Q\[ZMNMZMVKM\WV]TT1O]M[[
COMESWITH!RRAY,IST BUTMORE $UUD\/LVW*]\1¼UIÅZ[\KTI[[WJRMK\[W1PI^MUM\PWL[IVL1KIVIK\]ITTaaW]
IMPORTANTLY)HAVETOKNOW SVW_LW\PQVO[TQSMZMUW^M\PM,WO¼[ZMNMZMVKMNZWUUa[MTNVW\R][\[M\Q\\WV]TT
THAT!RRAY,ISTISTHETHINGTHAT )VL1KIVKPIVOMUa[QbMLaVIUQKITTaTWWSQ\]X2][\\Za\WOM\IVIZZIa\WLW\PI\
CANDOWHAT)WANT3OHOW
DO)GOFROMANEED TO DO +HDG)LUVW/MMPI\M\WJZQVO\PQ[]XJ]\\PMZ]UWZQ[\PI\aW]¼ZMVW\PQVOUWZM
SOMETHINGTOA WAY TO DO IT \PIVIOTWZQÅMLJ]\TM[[MNÅKQMV\IZZIa<PI\QVNIK\aW]¼ZMR][\I_ZIXXMZNWZIV
USINGTHE!0) IZZIaILLQVOM`\ZIUM\PWL[NWZ\PQVO[TQSMZM[QbQVO\PI\1_W]TLPI^MPIL\W_ZQ\M
Ua[MTN)VL_PQTM_M¼ZMI\Q\aW]KIV¼\M^MVPWTLXZQUQ\Q^M[ 1[V¼\\PI\IJQOTQUQ\I\QWV'
A: .OWYOUREREALLYATTHE
$UUD\/LVW1KIV¼\JMTQM^MaW]J]aQV\W\PI\]ZJIVTMOMVL6W1IUVW\R][\ITM[[
MNÅKQMV\IZZIa1_QTTILUQ\\PI\\PMZMIZMINM_M`\ZMUMTaZIZM[Q\]I\QWV[_PMZMIV
HEARTOFIT"YTHETIMEYOUVE
FINISHEDTHISBOOK YOULLHAVE IZZIaUQOP\JMR][\I\IL1ZMXMI\\ILJQ\NI[\MZNWZKMZ\IQV\PQVO[*]\Q[Q\_WZ\P\PM
AGOODGRASPOFTHELANGUAGE UQVQ[K]TMXMZNWZUIVKMOIQV\WOQ^M]XITT\PQ[XW_MZ;\QTTTWWSI\ITT\PQ[ÆM`QJQTQ\a)VL
ANDTHERESTOFYOURLEARNING I[NWZ\PMXZQUQ\Q^M[WN KW]Z[MaW]KIVX]\IXZQU\Q^MQVIV)ZZIa4Q[\I[TWVOI[Q\¼[
CURVEREALLYISABOUTKNOWING _ZIXXMLQVIXZQUQ\Q^M_ZIXXMZKTI[[aW]¼TT[MMITW\UWZMWV\PI\QVKPIX\MZ
HOWTOGETFROMAPROBLEMTO )VLI[WN 2I^I\PI\_ZIXXQVOIVL]V_ZIXXQVO_PMVaW]\ISM\PMXZQUQ\Q^MW]\
ASOLUTION WITHYOUWRITINGTHE IOIQVPIXXMV[I]\WUI\QKITTa)VLITTZQOP\1¼TTIKSVW_TMLOM\PI\aM[QN aW]¼ZM][QVOIV
LEASTAMOUNTOFCODE)FYOUCAN )ZZIa4Q[\WN XZQUQ\Q^M[Q\XZWJIJTaQ[NI[\MZ_Q\PIVIZZIaJMKI][MWN ITT\PM_ZIXXQVO
BEPATIENTFORAFEWMOREPAGES
IVL]V_ZIXXQVOJ]\[\QTT_PWZMITTa][M[XZQUQ\Q^M[\PM[MLIa['
WESTARTTALKINGABOUTITATTHE
ENDOFTHISCHAPTER 7PTWWSI\\PM\QUM 1¼UTI\MNWZ8QTI\M[?M¼TTPI^M\WLW\PQ[IOIQV[WUM\QUM
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GLIIHUHQFHEHWZHHQ$UUD\/LVWDQGDUUD\

+WUXIZQVO)ZZIa4Q[\\WIZMO]TIZIZZIa

)ZZIa4Q[\ ZMO]TIZIZZIa

$UUD\/LVW6WULQJ!P\/LVW QHZ 6WULQJ>@P\/LVW QHZ6WULQJ>@
$UUD\/LVW6WULQJ! 

6WULQJD QHZ6WULQJ ³ZKRRKRR´  6WULQJD QHZ6WULQJ ³ZKRRKRR´ 


P\/LVWDGG D  P\/LVW>@ D

6WULQJE QHZ6WULQJ ³)URJ´  6WULQJE QHZ6WULQJ ³)URJ´ 


P\/LVWDGG E  P\/LVW>@ E

LQWWKH6L]H P\/LVWVL]H  LQWWKH6L]H P\/LVWOHQJWK


UHLW
+HUH·VZKH ORRN
2EMHFWR P\/LVWJHW   6WULQJR P\/LVW>@ VWDUWVWR IHUHQW
UHDOO\GLI
P\/LVWUHPRYH   P\/LVW>@ QXOO

ERROHDQLV,Q P\/LVWFRQWDLQV E  ERROHDQLV,Q IDOVH

IRU 6WULQJLWHPP\/LVW ^

LI EHTXDOV LWHP ^

LV,Q WUXH

EUHDN

`

`

.OTICEHOWWITH!RRAY,IST YOUREWORKING 7ITHANARRAY YOUUSESPECIALARRAYSYNTAXLIKE


WITHANOBJECTOFTYPE!RRAY,IST SOYOUREJUST MY,IST;=FOO THATYOUWONTUSEANYWHERE
INVOKINGREGULAROLDMETHODSONAREGULAROLD ELSEEXCEPTWITHARRAYS%VENTHOUGHAN
OBJECT USINGTHEREGULAROLDDOTOPERATOR ARRAYISANOBJECT ITLIVESINITSOWNSPECIAL
WORLDANDYOUCANTINVOKEANYMETHODSON
IT ALTHOUGHYOUCANACCESSITSONEANDONLY
INSTANCEVARIABLE LENGTH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

+WUXIZQVO)ZZIa4Q[\\WIZMO]TIZIZZIa

 $SODLQROGDUUD\KDVWRNQRZLWV  $UUD\VXVHDUUD\V\QWD[WKDW·VQRW
VL]HDWWKHWLPHLW·VFUHDWHG XVHGDQ\ZKHUHHOVHLQ-DYD
"UTFOR!RRAY,IST YOUJUSTMAKEANOBJECTOF "UT!RRAY,ISTSAREPLAINOLD*AVAOBJECTS SO
TYPE!RRAY,IST%VERYTIME)TNEVERNEEDSTO THEYHAVENOSPECIALSYNTAX
KNOWHOWBIGITSHOULDBE BECAUSEITGROWS
P\/LVW>@
ANDSHRINKSASOBJECTSAREADDEDORREMOVED

1HHGVDVL]H HVSHFLDO
QHZ6WULQJ>@
7KHDUUD\EUDFNHWV>@UUDU
D\ V
V\QWD[XVHGRQO\ IRUD
QHZ$UUD\/LVW6WULQJ!

1RVL]HUHTXLUHG DOWKRXJK\RXFDQ
JLYHLWDVL]HLI\RXZDQWWR 
 $UUD\/LVWVLQ-DYDDUH
 7RSXWDQREMHFWLQDUHJXODUDUUD\ SDUDPHWHUL]HG
\RXPXVWDVVLJQLWWRDVSHFLÀF
7EJUSTSAIDTHATUNLIKEARRAYS !RRAY,ISTS
ORFDWLRQ
HAVENOSPECIALSYNTAX"UTTHEYDOUSE
$QLQGH[IURPWRRQHOHVVWKDQWKHOHQJWKRI SOMETHINGSPECIALTHATWASADDEDTO*AVA
WKHDUUD\  4IGERˆPARAMETERIZEDTYPES
P\/LVW>@ E
$UUD\/LVW6WULQJ!

1HHGVDQLQGH[ 7KH6WULQJ!LQDQJOHEUDFNHWVLVD´W\SH
SDUDPHWHUµ$UUD\/LVW6WULQJ!PHDQVVLPSO\´D
)FTHATINDEXISOUTSIDETHEBOUNDARIESOFTHE
ARRAYLIKE THEARRAYWASDECLAREDWITHASIZEOF
OLVWRI6WULQJVµDVRSSRVHGWR$UUD\/LVW'RJ!
 ANDNOWYOURETRYINGTOASSIGNSOMETHING ZKLFKPHDQV´DOLVWRI'RJVµ
TOINDEX ITBLOWSUPATRUNTIME 0RIORTO*AVA THEREWASNOWAYTODECLARE
7ITH!RRAY,IST YOUCANSPECIFYANINDEXUS THETYPEOFTHINGSTHATWOULDGOINTHE
INGTHEADDAN)NT AN/BJECT METHOD ORYOU !RRAY,IST SOTOTHECOMPILER ALL!RRAY,ISTS
CANJUSTKEEPSAYINGADDAN/BJECT ANDTHE WERESIMPLYHETEROGENOUSCOLLECTIONSOF
!RRAY,ISTWILLKEEPGROWINGTOMAKEROOMFOR OBJECTS"UTNOW USINGTHETYPE'OES(ERE
THENEWTHING SYNTAX WECANDECLAREANDCREATEAN
P\/LVWDGG E  !RRAY,ISTTHATKNOWSANDRESTRICTS THE
TYPESOFOBJECTSITCANHOLD7ELLLOOKATTHE
1RLQGH[ DETAILSOFPARAMETERIZEDTYPESIN!RRAY,ISTS
INTHE#OLLECTIONSCHAPTER SOFORNOW DONT
THINKTOOMUCHABOUTTHEANGLEBRACKET
SYNTAXYOUSEEWHENWEUSE!RRAY,ISTS*UST
KNOWTHATITSAWAYTOFORCETHECOMPILERTO
ALLOWONLYASPECIlCTYPEOFOBJECTTHETYPEIN
ANGLEBRACKETS INTHE!RRAY,IST

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHEXJJ\'RW&RPFRGH

SUHSFRGH WHVWFRGH UHDOFRGH 


UHDOFRGH

4M\¼[NQ`\PM,W\+WUKWLM
5HPHPEHUWKLVLVKRZWKHEXJJ\YHUVLRQORRNV
HDGRI
:H·YHUHQDPHGWKH FODVV'RW&RPQRFHZG LQYHVWUVLRQEXWWKLV
SXEOLFFODVV'RW&RP^ WKHQHZDGYDQ DSWHU
6LPSOH'RW&RP IRRXUVD ZLQWKHODVWFK
LVWKHVDPHFRGH\
LQW>@ORFDWLRQ&HOOV
LQWQXP2I+LWV 

SXEOLFYRLGVHW/RFDWLRQ&HOOV LQW>@ORFV ^
ORFDWLRQ&HOOV ORFV
`

SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJVWULQJ*XHVV ^
LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 
6WULQJUHVXOW ³PLVV´

IRU LQWFHOOORFDWLRQ&HOOV ^
LI JXHVV FHOO ^ :KHUHLW
FRXQWHGHDDFOOZHQWZURQJ:H
UHVXOW ³KLW´ ZLWKRXWFKHFKJXHVVDVDKLW
QXP2I+LWV KDGDOUHDG\ENLQJZKHWKHUWKDWF
HHQKLW HOO

EUHDN
`
`RXWRIWKHORRS

LI QXP2I+LWV ORFDWLRQ&HOOVOHQJWK ^


UHVXOW ³NLOO´
`
6\VWHPRXWSULQWOQ UHVXOW 
UHWXUQUHVXOW
`FORVHPHWKRG
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

SUHSFRGH WHVWFRGH UHDOFRGH 


UHDOFRGH

6M_IVLQUXZW^ML,W\+WUKTI[[

,JQRUHWK
QRZZHWDLVONOLQHIRU
LPSRUWMDYDXWLO$UUD\/LVW LWDWWKHHQ DERXW
FKDSWHU GRIWKH
SXEOLFFODVV'RW&RP^

SULYDWH$UUD\/LVW6WULQJ!ORFDWLRQ&HOOV
6WULQJV
D\/LVWWKDWKROGV
SULYDWHLQWQXP2I+LWV
JDU UD \WR D Q $ UU
GRQ¶WQHHGWKDWQRZ 6WULQ &KDQJHWKH
SXEOLFYRLGVHW/RFDWLRQ&HOOV $UUD\/LVW6WULQJ!ORF ^
WQDPH
ORFDWLRQ&HOOV ORF
S UR Y H G DUJXPHQ
LP
`

1HZDQG
 UJXHVVLVLQWKH
SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJXVHU,QSXW ^ )LQGRXWLIW\KHDVXNLVHQJIRULWVLQGH[
 $UUD\/LVWE WKHOLVWWKHQLQGH[2I 
6WULQJUHVXOW ³PLVV´ ,ILW·VQRWLQ
UHWXUQVD 
LQWLQGH[ ORFDWLRQ&HOOVLQGH[2I XVHU,QSXW 

LI LQGH[!  ^ ,ILQGH[L V
 ]HURWKHXVHJUUHDJXWHUWKDQRUHTXDOWR
ORFDWLRQ&HOOVUHPRYH LQGH[  OLVWVRUHPRYHLW HVVLVGHILQLWHO\LQWKH


 KLV
LI ORFDWLRQ&HOOVLV(PSW\ ^ ,IWKHOLVWLVHPSW\W
ZDVWKHNLOOLQJ EO RZ
UHVXOW ³NLOO´
`HOVH^
UHVXOW ³KLW´
`FORVHLI

`FORVHRXWHULI

UHWXUQUHVXOW
`FORVHPHWKRG
`FORVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PDNLQJWKH'RW&RP%XVW

4M\¼[J]QTL\PM:-)4OIUM"
¹;QVSI,W\+WUº
7EVEBEENWORKINGONTHE@SIMPLEVERSION BUTNOW
LETSBUILDTHEREALONE)NSTEADOFASINGLEROW WELL <RX·UHJRLQJWREXLOGWKH
USEAGRID!NDINSTEADOFONE$OT#OM WELLUSE 6LQND'RW&RPJDPHZLWK
THREE
D[JULGDQGWKUHH
'OAL3INKALLOFTHECOMPUTERS$OT#OMSINTHE 'RW&RPV(DFK'RW&RP
FEWESTNUMBEROFGUESSES9OUREGIVENARATINGLEVEL WDNHVXSWKUHHFHOOV
BASEDONHOWWELLYOUPERFORM
3ETUP7HENTHEGAMEPROGRAMISLAUNCHED THE
COMPUTERPLACESTHREE$OT#OMS RANDOMLY ONTHE
VIRTUALXGRID7HENTHATSCOMPLETE THEGAME
ASKSFORYOURlRSTGUESS XIZ\WNIOIUMQV\MZIK\QWV
)LOH(GLW:LQGRZ+HOS6HOO
(OWYOUPLAY7EHAVENTLEARNEDTOBUILDA'5)
YET SOTHISVERSIONWORKSATTHECOMMAND LINE4HE MDYD'RW&RP%XVW
COMPUTERWILLPROMPTYOUTOENTERAGUESSACELL (QWHUDJXHVV$
WHICHYOULLTYPEATTHECOMMAND LINEASh!v h#v
ETC )NRESPONSETOYOURGUESS YOULLSEEARESULTAT PLVV
THECOMMAND LINE EITHERhHITv hMISSv ORh9OUSUNK (QWHUDJXHVV%
0ETSCOMvORWHATEVERTHELUCKY$OT#OMOFTHEDAY PLVV
IS 7HENYOUVESENTALLTHREE$OT#OMSTOTHATBIG
INTHESKY THEGAMEENDSBYPRINTINGOUTYOUR (QWHUDJXHVV&
RATING PLVV
HDFKER[µ (QWHUDJXHVV'
;JULG LVD´FHOO KLW

! (QWHUDJXHVV'
KLW
"
'OCOM

(QWHUDJXHVV'
# 2XFK<RXVXQN3HWVFRP 
$ 0ETSCOM NLOO
(QWHUDJXHVV%
%
PLVV
& (QWHUDJXHVV*
' KLW
!SK-ECOM
(QWHUDJXHVV*
      
KLW
VWDUWVDW]HUROLNH-DYDDUUD\V (QWHUDJXHVV*
2XFK<RXVXQN$VN0HFRP 
NLOO
 FKDSWHU (QWHUDJXHVV$
PLVV
(QWHU D JXHVV %

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

?PI\VMML[\WKPIVOM' 'RW&RP%XVWFODVVFRQWLQXHG
7EHAVETHREECLASSESTHATNEEDTOCHANGETHE ~ 0UTTHE$OT#OMSONAGRIDRATHERTHAN
$OT#OMCLASSWHICHISNOWCALLED$OT#OMINSTEADOF JUSTASINGLEROW ANDDOITFORALLTHREE
3IMPLE$OT#OM THEGAMECLASS$OT#OM"UST ANDTHE $OT#OMS
GAMEHELPERCLASSWHICHWEWONTWORRYABOUTNOW  4HISSTEPISNOWWAYMORECOMPLEXTHAN
BEFORE IFWEREGOINGTOPLACETHE$OT#OMS
) 'RW&RPFODVV RANDOMLY3INCEWERENOTHERETOMESS
~ !DDANAMEVARIABLE WITHTHEMATH WEPUTTHEALGORITHMFOR
TOHOLDTHENAMEOFTHE$OT#OM GIVINGTHE$OT#OMSALOCATIONINTOTHE
h0ETSCOMv h'OCOMv ETC SOEACH$OT 'AME(ELPER2EADY BAKE CLASS
#OMCANPRINTITSNAMEWHENITSKILLEDSEE
THEOUTPUTSCREENONTHEOPPOSITEPAGE  ~ #HECKEACHUSERGUESSWITHALLTHREE
$OT#OMS INSTEADOFJUSTONE
* 'RW&RP%XVWFODVV WKHJDPH ~ +EEPPLAYINGTHEGAMEIEACCEPTING
~ #REATETHREE$OT#OMSINSTEADOFONE USERGUESSESANDCHECKINGTHEMWITHTHE
REMAINING$OT#OMS UNTILTHEREARENOMORE
~ 'IVEEACHOFTHETHREE$OT#OMSANAME LIVE$OT#OMS
#ALLASETTERMETHODONEACH$OT#OM
INSTANCE SOTHATTHE$OT#OMCANASSIGNTHE ~ 'ETOUTOFMAIN7EKEPTTHESIMPLEONEIN
NAMETOITSNAMEINSTANCEVARIABLE MAINJUSTTOKEEPITSIMPLE"UTTHATSNOT
WHATWEWANTFORTHEREALGAME

 PD N H  ' R W
W DQ GW R &RP
HU LQS X O R F
U SOD\ DW
LR
IR QV
HV G  SOD \V Z L W K 
&ODVVHV X V U HD W H V DQ
F
'RW&RP%XVW 'RW&RP *DPH+HOSHU

7KHJDPHFODVV 7KHDFWXDO 7KHKHOSHUFODVV


0DNHV'RW&RPV 'RW&RPREMHFWV 5HDG\%DNH 
JHWVXVHULQSXW 'RW&RPVNQRZWKHLU ,WNQRZVKRZWR
SOD\VXQWLODOO'RW QDPHORFDWLRQDQG DFFHSWXVHUFRP
&RPVDUHGHDG KRZWRFKHFNDXVHU PDQGOLQHLQSXW
JXHVVIRUDPDWFK DQGPDNH'RW&RP
ORFDWLRQV

3OXV
$UUD\/LVWVIRU
WKH'RW&RP%XVW
2EMHFWV DQGIRUHDFK
RIWKH'RW&RP
REMHFWV
'RW&RP
'RW&RP%XVW 'RW&RP *DPH+HOSHU
'RW&RP

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHWDLOHGVWUXFWXUHRI WKHJDPH

?PWLWM[_PI\QV\PM,W\+WU*][\OIUM
IVL_PMV

'RW&RP%XVW 7KHPDLQ PHWKRG


7KHJDPH LQVWDQWLDWHV LQWKH'RW&RP%XVW
 FODVV FODVVLQVWDQWLDWHVWKH
'RW&RP%XVWREMHFWWKDW
GRHVDOOWKHJDPHVWXII
'RW&RP%XVW
REMHFW

Licensed by
LQVWDQWLDWHV

Eduard Simons
`]dh]j
*DPH+HOSHU
REMHFW 7KH'RW&RP%XVW JDPH 
REMHFWLQVWDQWLDWHVDQ

104038
LQVWDQFHRI*DPH+HOSHU
WKHREMHFWWKDWZLOOKHOS
'RW&RP%XVW WKHJDPHGRLWVZRUN
REMHFW

7KH'RW&RP%XVWREMHFW
LQVWDQWLDWHVDQ$UUD\/LVW
 *DPH+HOSHU WKDWZLOOKROGWKH'RW&RP
REMHFW REMHFWV
`]dh]j \gl;gekDakl

'RW&RP%XVW
REMHFW

$UUD\/LVWREMHFW WR
KROG'RW&RPREMHFWV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

7KH'RW&RP%XVWREMHFW
 FUHDWHVWKUHH'RW&RP
[]ddk REMHFWV DQGSXWVWKHPLQ
WKH$UUD\/LVW
*DPH+HOSHU
REMHFW []ddk
`]dh]j \gl;gekDakl

\gl;ge \gl;ge
\gl;ge
( ) * []ddk
'RW&RP%XVW
REMHFW $UUD\/LVWREMHFWWR
'RW&RP
KROG'RW&RPREMHFWV
REMHFWV

7KH'RW&RP%XVWREMHFWDVNVWKH 7KH'RW&RP%XVWREMHFWJLYHVHDFKRIWKH'RW
KHOSHUREMHFWIRUDORFDWLRQIRUD &RPREMHFWVDORFDWLRQ ZKLFKWKH'RW&RP%XVW
'RW&RP GRHVWKLVWLPHVRQHIRU JRWIURPWKHKHOSHUREMHFW OLNH´$µ´%µ
HDFK'RW&RP HWF(DFK'RW&RPREMHFWSXWVKLVRZQWKUHH
WLRQ
NH OR F D ORFDWLRQFHOOVLQDQ$UUD\/LVW
PD
LWLV
KHUH $UUD\/LVWREMHFW
*DPH+HOSHU
 `]dh]j \gl;gekDakl REMHFW []ddk
[]dd []dd []dd
( ) *
WRKROG'RW&RP
FHOOORFDWLRQV

[]ddk
$UUD\/LVW
'RW&RP%XVW []dd []dd []dd REMHFW
( ) *
\gl;ge \gl;ge
\gl;ge
REMHFW ( ) * []ddk

$UUD\/LVW
$UUD\/LVWREMHFWWR []dd []dd []dd REMHFW
'RW&RP ( ) *
KROG'RW&RPREMHFWV
REMHFWV

7KH'RW&RP%XVWREMHFWDVNVWKHKHOSHU 7KH'RW&RP%XVWREMHFWORRSVWKURXJKWKHOLVW
REMHFWIRUDXVHUJXHVV WKHKHOSHU RI'RW&RPVDQGDVNVHDFKRQHWRFKHFNWKHXVHU
SURPSWVWKHXVHUDQGJHWVLQSXWIURP JXHVVIRUDPDWFK7KH'RW&RPFKHFNVLWVORFDWLRQV
WKHFRPPDQGOLQH V $UUD\/LVWDQGUHWXUQVDUHVXOW ´KLWµ´PLVVµHWF
V
H U  JXH
WXV
JH
LWLV
 KHUH
XHVV $UUD\/LVWREMHFW
*DPH+HOSHU L VJ
REMHFW N W K []ddk
[]dd []dd []dd WRKROG'RW&RP
`]dh]j \gl;gekDakl F ( ) *
KH ´KLWµ FHOOORFDWLRQV
F

[]ddk
$UUD\/LVW
'RW&RP%XVW []dd []dd []dd REMHFW
( ) *
\gl;ge \gl;ge
\gl;ge
REMHFW ( ) * []ddk

$QGVRWKHJDPHFRQWLQXHVJHW $UUD\/LVW
WLQJXVHULQSXWDVNLQJHDFK'RW&RP $UUD\/LVWREMHFWWR []dd []dd []dd REMHFW
WRFKHFNIRUDPDWFKDQGFRQWLQXLQJ 'RW&RP ( ) *
KROG'RW&RPREMHFWV
XQWLODOO'RW&RPVDUHGHDG REMHFWV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH'RW&RP%XVWFODVV WKHJDPH

SUHSFRGH WHVWFRGH UHDOFRGH

'RW&RP%XVW 8ZMXKWLMNWZ\PMZMIT,W\+WU*][\KTI[[
*DPH+HOSHUKHOSHU
$UUD\/LVWGRW&RPV/LVW 4HE$OT#OM"USTCLASSHASTHREEMAINJOBSSETUPTHEGAME PLAYTHEGAME
LQWQXP2I*XHVVHV
UNTILTHE$OT#OMSAREDEAD ANDENDTHEGAME!LTHOUGHWECOULDMAP
THOSETHREEJOBSDIRECTLYINTOTHREEMETHODS WESPLITTHEMIDDLEJOBPLAYTHE
VHW8S*DPH
GAME INTOTWOMETHODS TOKEEPTHEGRANULARITYSMALLER3MALLERMETHODS
VWDUW3OD\LQJ MEANINGSMALLERCHUNKSOFFUNCTIONALITY HELPUSTEST DEBUG ANDMODIFY
FKHFN8VHU*XHVV THECODEMOREEASILY
ILQLVK*DPH

()'0%6)ERHMRWXERXMEXIXLI+EQI,IPTIVMRWXERGIZEVMEFPIREQIHLIPTIV
()'0%6)ERHMRWXERXMEXIER%VVE]0MWXXSLSPHXLIPMWXSJ(SX'SQW MRMXMEPP]XLVII 'EPPMX
9DULDEOH HSX'SQW0MWX
()'0%6)ERMRXZEVMEFPIXSLSPHXLIRYQFIVSJYWIVKYIWWIW WSXLEX[IGERKMZIXLIYWIVE
'HFODUDWLRQV WGSVIEXXLIIRHSJXLIKEQI 2EQIMXRYQ3J+YIWWIWERHWIXMXXS

()'0%6)EWIX9T+EQI QIXLSHXSGVIEXIERHMRMXMEPM^IXLI(SX'SQSFNIGXW[MXLREQIW
ERHPSGEXMSRW(MWTPE]FVMIJMRWXVYGXMSRWXSXLIYWIV
()'0%6)EWXEVX4PE]MRK QIXLSHXLEXEWOWXLITPE]IVJSVKYIWWIWERHGEPPWXLI
0HWKRG
GLIGO9WIV+YIWW QIXLSHYRXMPEPPXLI(SX'SQSFNIGXWEVIVIQSZIHJVSQTPE]
'HFODUDWLRQV ()'0%6)EGLIGO9WIV+YIWW QIXLSHXLEXPSSTWXLVSYKLEPPVIQEMRMRK(SX'SQSFNIGXWERH
GEPPWIEGL(SX'SQSFNIGX´WGLIGO=SYVWIPJ QIXLSH
()'0%6)E½RMWL+EQI QIXLSHXLEXTVMRXWEQIWWEKIEFSYXXLIYWIV´WTIVJSVQERGIFEWIH
SRLS[QER]KYIWWIWMXXSSOXSWMROEPPSJXLI(SX'SQSFNIGXW

1)8,3(ZSMHWIX9T+EQI
  QEOIXLVII(SX'SQSFNIGXWERHREQIXLIQ
  '6)%8)XLVII(SX'SQSFNIGXW
0HWKRG
  7)8EREQIJSVIEGL(SX'SQ
,PSOHPHQWDWLRQV   %((XLI(SX'SQWXSXLIHSX'SQW0MWX XLI%VVE]0MWX 
  6)4)%8[MXLIEGLSJXLI(SX'SQSFNIGXWMRXLIHSX'SQW0MWXEVVE]
   '%00XLITPEGI(SX'SQ QIXLSHSRXLILIPTIVSFNIGXXSKIXEVERHSQP]WIPIGXIH
   PSGEXMSRJSVXLMW(SX'SQ XLVIIGIPPWZIVXMGEPP]SVLSVM^SRXEPP]EPMKRIHSRE<KVMH 
   7)8XLIPSGEXMSRJSVIEGL(SX'SQFEWIHSRXLIVIWYPXSJXLITPEGI(SX'SQ GEPP
  )2(6)4)%8
)2(1)8,3(

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

SUHSFRGH WHVWFRGH UHDOFRGH

5M\PWLQUXTMUMV\I\QWV[KWV\QV]ML"
1)8,3(ZSMHWXEVX4PE]MRK
  6)4)%8[LMPIER](SX'SQWI\MWX
    +)8YWIVMRTYXF]GEPPMRKXLILIPTIVKIX9WIV-RTYX QIXLSH
    ):%09%8)XLIYWIV´WKYIWWF]GLIGO9WIV+YIWW QIXLSH
  )2(6)4)%8
)2(1)8,3(

1)8,3(ZSMHGLIGO9WIV+YIWW 7XVMRKYWIV+YIWW
  ¼RHSYXMJXLIVI³WELMX ERHOMPP SRER](SX'SQ
  -2'6)1)28XLIRYQFIVSJYWIVKYIWWIWMRXLIRYQ3J+YIWWIWZEVMEFPI 
7)8XLIPSGEPVIWYPXZEVMEFPI E7XVMRK XS±QMWW²EWWYQMRKXLEXXLIYWIV´WKYIWW[MPPFIEQMWW
  6)4)%8[MXLIEGLSJXLI(SX3FNIGXWMRXLIHSX'SQW0MWXEVVE]
   ):%09%8)XLIYWIV´WKYIWWF]GEPPMRKXLI(SX'SQSFNIGX´WGLIGO=SYVWIPJ QIXLSH
   7)8XLIVIWYPXZEVMEFPIXS±LMX²SV±OMPP²MJETTVSTVMEXI
   -*XLIVIWYPXMW±OMPP²6)13:)XLI(SX'SQJVSQXLIHSX'SQW0MWX
  )2(6)4)%8
  (-740%=XLIVIWYPXZEPYIXSXLIYWIV
)2(1)8,3(

1)8,3(ZSMHÞRMWL+EQI
  (-740%=EKIRIVMG±KEQISZIV²QIWWEKIXLIR
    -*RYQFIVSJYWIVKYIWWIWMWWQEPP
     (-740%=EGSRKVEXYPEXMSRWQIWWEKI
    )07)
    (-740%=ERMRWYPXMRKSRI
  )2(-*
)2(1)8,3(

6KDUSHQ \RXU SHQFLO


(OWSHOULDWEGOFROMPREPCODETOTHE METHODS!NDWHICHMETHODDOYOUTEST
FINALCODE&IRSTWESTARTWITHTESTCODE AND ANDWRITEFIRST3EEIFYOUCANWORKOUTSOME
THENTESTANDBUILDUPOURMETHODSBITBY PREPCODEFORASETOFTESTS0REPCODEOR
BIT7EWONTKEEPSHOWINGYOUTESTCODE EVENBULLETPOINTSAREGOODENOUGHFORTHIS
INTHISBOOK SONOWITSUPTOYOUTOTHINK EXERCISE BUTIFYOUWANTTOTRYTOWRITETHE
ABOUTWHATYOUDNEEDTOKNOWTOTESTTHESE REALTESTCODEIN*AVA KNOCKYOURSELFOUT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH'RW&RP%XVWFRGH WKHJDPH
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH
6KDUSHQ \RXU SHQFLO
LPSRUWMDYDXWLO 
$QQRWDWHWKHFRGH
SXEOLFFODVV'RW&RP%XVW^
\RXUVHOI
SULYDWH*DPH+HOSHUKHOSHU QHZ*DPH+HOSHU 
0DWFKWKH

SULYDWH$UUD\/LVW'RW&RP!GRW&RPV/LVW QHZ$UUD\/LVW'RW&RP! 
DQQRWDWLRQVDWWKH
SULYDWHLQWQXP2I*XHVVHV 
ERWWRPRIHDFKSDJH
SULYDWHYRLGVHW8S*DPH ^ ZLWKWKHQXPEHUV
¿UVWPDNHVRPHGRWFRPVDQGJLYHWKHPORFDWLRQV LQWKHFRGH:ULWH
WKHQXPEHULQWKH
'RW&RPRQH QHZ'RW&RP 
VORWLQIURQWRIWKH
RQHVHW1DPH ³3HWVFRP´  FRUUHVSRQGLQJ
'RW&RPWZR QHZ'RW&RP  DQQRWDWLRQ
WZRVHW1DPH ³H7R\VFRP´  
'RW&RPWKUHH QHZ'RW&RP  <RX·OOXVHHDFK
WKUHHVHW1DPH ³*RFRP´  DQQRWDWLRQMXVWRQFH
DQG\RX·OOQHHGDOORI
GRW&RPV/LVWDGG RQH 
WKHDQQRWDWLRQV
GRW&RPV/LVWDGG WZR 
GRW&RPV/LVWDGG WKUHH 

6\VWHPRXWSULQWOQ ³<RXUJRDOLVWRVLQNWKUHHGRWFRPV´  
6\VWHPRXWSULQWOQ ³3HWVFRPH7R\VFRP*RFRP´ 
6\VWHPRXWSULQWOQ ³7U\WRVLQNWKHPDOOLQWKHIHZHVWQXPEHURIJXHVVHV´ 

IRU 'RW&RPGRW&RP7R6HWGRW&RPV/LVW ^ 
$UUD\/LVW6WULQJ!QHZ/RFDWLRQ KHOSHUSODFH'RW&RP   
GRW&RP7R6HWVHW/RFDWLRQ&HOOV QHZ/RFDWLRQ 

`FORVHIRUORRS
`FORVHVHW8S*DPHPHWKRG

SULYDWHYRLGVWDUW3OD\LQJ ^
ZKLOH GRW&RPV/LVWLV(PSW\ ^

6WULQJXVHU*XHVV KHOSHUJHW8VHU,QSXW ³(QWHUDJXHVV´  
FKHFN8VHU*XHVV XVHU*XHVV 

`FORVHZKLOH
¿QLVK*DPH  
`FORVHVWDUW3OD\LQJPHWKRG

DVNWKHKHOSHUIRUD'RW&RPORFDWLRQ
JHWXVHULQSXW
QLWLDOL]H UHSHDWZLWKHDFK'RW&RPLQWKHOLVW
GHFODUHDQEGOHLVZH·OOQHHG
WKHYDULD FDOOWKHVHWWHUPHW FDOORXURZQFKHFN8
SULQWEU LHI WR JLYHLWWKHORFDWLKRGRQWKLV'RW&RP VHU*XHVVPHWKRG
LQVWUXFWLRQVIRU IU RPWKHKHOSHU RQ\RXMXVWJRW
XVHU  DVORQJDVWKH'RW&RP
PDNHWKUHH'RW&R PREMHFWVJLYH¶HP
WK H $U UD\/ LVW OLVWLV127HPSW\
FDOORXURZQILQLVK*DPHPHWKRG QDPHVDQGVWLFN¶HPLQ
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,
SUHSFRGH WHVWFRGH UHDOFRGH 
UHDOFRGH
:KDWHYHU\RXGR
'21·7WXUQWKH
SDJH
SULYDWHYRLGFKHFN8VHU*XHVV 6WULQJXVHU*XHVV ^

QXP2I*XHVVHV  1RWXQWLO\RX·YH
 ÀQLVKHGWKLV
6WULQJUHVXOW ³PLVV´  H[HUFLVH
IRU 'RW&RPGRW&RP7R7HVWGRW&RPV/LVW ^ 
2XUYHUVLRQLVRQ
UHVXOW GRW&RP7R7HVWFKHFN<RXUVHOI XVHU*XHVV 

WKHQH[WSDJH
LI UHVXOWHTXDOV ³KLW´ ^
EUHDN 
`
LI UHVXOWHTXDOV ³NLOO´ ^
GRW&RPV/LVWUHPRYH GRW&RP7R7HVW  
EUHDN
`
`FORVHIRU
6\VWHPRXWSULQWOQ UHVXOW  
`FORVHPHWKRG


SULYDWHYRLG¿QLVK*DPH ^
6\VWHPRXWSULQWOQ ³$OO'RW&RPVDUHGHDG<RXUVWRFNLVQRZZRUWKOHVV´ 
LI QXP2I*XHVVHV  ^
6\VWHPRXWSULQWOQ ³,WRQO\WRRN\RX³QXP2I*XHVVHV³JXHVVHV´  
 6\VWHPRXWSULQWOQ ³<RXJRWRXWEHIRUH\RXURSWLRQVVDQN´ 
`HOVH^
6\VWHPRXWSULQWOQ ³7RRN\RXORQJHQRXJK³QXP2I*XHVVHV³JXHVVHV´ 
6\VWHPRXWSULQWOQ ³)LVKDUHGDQFLQJZLWK\RXURSWLRQV´ 
`
`FORVHPHWKRG


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RW&RP%XVWJDPH QHZ'RW&RP%XVW  
JDPHVHW8S*DPH  
JDPHVWDUW3OD\LQJ 

`FORVHPHWKRG
`

UHSHDWZLWKDOO'RW&RPVLQWKHOLVW SULQWWKH
WKLVJX\·VGHDGVRWDNHKLPRXWRIW SULQWDPHVVDJHWHOOLQJWKH UHVXOWIRU
'RW&RPVOLVWWKHQJHWRXWRIWKH KH XVHUKRZKHGLGLQWKHJDPH WKHXVHU
ORRS WHOOWKHJDPHREMHFW
HPH QWWKHQXPE HUR IJ XHVV HVW KHX VHUKDVPDGH WRVHWXSWKHJDPH
LQFU LVV· XQO HVV WROG RWK HUZ LVH
DVVXPH LW·V D¶P
WHOOWKHJDPH 
JHWRXWRIWKHORRS JDPHSOD\ORR R E MH F W WRVWDUWWK
H P DVNWKH'RW&RPWRFKHFNWKHXVHUJXHVV
HDUO\QRSRLQWLQWHVWLQJ LQSXWDQGF S  NHHSV LQJI D LQ ORRNLQJIRUDKLW RUN LOO
WKHRWKHUV KHFNLQJWKHDVN JXHVV
RUXVHU
FUHDWHWKHJDPHREMHFW
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH'RW&RP%XVWFRGH WKHJDPH

SUHSFRGH WHVWFRGH UHDOFRGH 


UHDOFRGH

LQLWLDOL]H
LPSRUWMDYDXWLO 
'HFODUHDEQOHG VZH·OOQHHG
SXEOLFFODVV'RW&RP%XVW^ WKHYDULD
SULYDWH*DPH+HOSHUKHOSHU QHZ*DPH+HOSHU 
SULYDWH$UUD\/LVW'RW&RP!GRW&RPV/LVW QHZ$UUD\/LVW'RW&RP! 0DNHDQ$UUD\/LVWR
I
P RE MH FW V LQ RWKHU
SULYDWHLQWQXP2I*XHVVHV  'RW&R KROG
ZRUGVDOLVWWKDWREZMHLOO V
SULYDWHYRLGVHW8S*DPH ^ 21/<'RW&RP @ZRFWXOG
P>
MXVWDV'RW&R RI'RW&RP
¿UVWPDNHVRPHGRWFRPVDQGJLYHWKHPORFDWLRQV
PHDQDQDUUD\
'RW&RPRQH QHZ'RW&RP 
REMHFWV 
RQHVHW1DPH ³3HWVFRP´ 
'RW&RPWZR QHZ'RW&RP  0DNHWKUHH'RW&R PREMHFWV
WZRVHW1DPH ³H7R\VFRP´  JLYH¶HPQDPHVD QG LFN¶HP
VW
LQWKH$UUD \/ LVW 
'RW&RPWKUHH QHZ'RW&RP 
WKUHHVHW1DPH ³*RFRP´ 
GRW&RPV/LVWDGG RQH 
GRW&RPV/LVWDGG WZR 
GRW&RPV/LVWDGG WKUHH  3ULQWEULHI
LQVWUXFWLRQVIRUXVHU
6\VWHPRXWSULQWOQ ³<RXUJRDOLVWRVLQNWKUHHGRWFRPV´ 
6\VWHPRXWSULQWOQ ³3HWVFRPH7R\VFRP*RFRP´ 
6\VWHPRXWSULQWOQ ³7U\WRVLQNWKHPDOOLQWKHIHZHVWQXPEHURIJXHVVHV´ 

IRU 'RW&RPGRW&RP7R6HWGRW&RPV/LVW ^ 5HSHDWZLWKHDFK'RW&RPLQWKHOLVW
 $VNWKHKHOSHUIRUD
$UUD\/LVW6WULQJ!QHZ/RFDWLRQ KHOSHUSODFH'RW&RP   'RW&RPORFDWLRQ DQ
 $UUD\/LVWRI6WULQJV 
GRW&RP7R6HWVHW/RFDWLRQ&HOOV QHZ/RFDWLRQ 
&DOOWKHVHWWH PHW
 'RW&RPWRJLYHULW KRGRQWKLV
`FORVHIRUORRS MXVWJRWIURPWKH WKHORFDWLRQ\RX
`FORVHVHW8SJDPHPHWKRG KHOSHU

SULYDWHYRLGVWDUW3OD\LQJ ^
 V127HPSW\ WKHPHDQV127LW·V
$VORQJDVWKH'RW&RPOLVWLV(P IDOVH 
ZKLOH GRW&RPV/LVWLV(PSW\ ^ WKHVDPHDV GRW&RPV/LVWL SW\ 

6WULQJXVHU*XHVV KHOSHUJHW8VHU,QSXW ³(QWHUDJXHVV´  *HWXVHULQSXW
FKHFN8VHU*XHVV XVHU*XHVV 
&DOORXURZQFKHFN
 8VHU*XHVVPHWKRG
`FORVHZKLOH
¿QLVK*DPH  &DOORXURZQILQLVK*DPHPHWKRG
`FORVHVWDUW3OD\LQJPHWKRG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

SUHSFRGH WHVWFRGH UHDOFRGH 


UHDOFRGH

SULYDWHYRLGFKHFN8VHU*XHVV 6WULQJXVHU*XHVV ^

VHUKDVPDGH
QXP2I*XHVVHV LQFUHPHQWWKHQXPEHURIJXHVVHVWKHX

6WULQJUHVXOW ³PLVV´ DVVXPHLW·VD¶PLVV·XQOHVVWROGRWKHUZLVH
IRU 'RW&RPGRW&RP7R7HVWGRW&RPV/LVW ^ UHSHDWZLWKDOO'RW&RPVLQWKHOLVW
UHVXOW GRW&RP7R7HVWFKHFN<RXUVHOI XVHU*XHVV  DVNWKH'RW&RPWRFKHFNWKH XVHU
 JXHVVORRNLQJIRUD KLW  RU NLOO
LI UHVXOWHTXDOV ³KLW´ ^
 JHWRXWRIWKHORRSHDUO\QRSRLQW
EUHDN LQWHVWLQJWKHRWKHUV
`
LI UHVXOWHTXDOV ³NLOO´ ^

WKLVJX\·VGHDGVRWDNHKLPRXWRIW
GRW&RPV/LVWUHPRYH GRW&RP7R7HVW 
'R W&RPVOLVWWKHQJHWRXWRIWKHORRS KH
EUHDN
`

`FORVHIRU

6\VWHPRXWSULQWOQ UHVXOW 
SULQ
WWKHUHVXOWIRUWKHXVHU
`FORVHPHWKRG
SULQWDPHVVDJHWHOOLQJWKH
 XVHUKRZKHGLGLQWKHJDPH

SULYDWHYRLG¿QLVK*DPH ^
6\VWHPRXWSULQWOQ ³$OO'RW&RPVDUHGHDG<RXUVWRFNLVQRZZRUWKOHVV´ 
LI QXP2I*XHVVHV  ^
6\VWHPRXWSULQWOQ ³,WRQO\WRRN\RX³QXP2I*XHVVHV³JXHVVHV´ 
 6\VWHPRXWSULQWOQ ³<RXJRWRXWEHIRUH\RXURSWLRQVVDQN´ 
`HOVH^
6\VWHPRXWSULQWOQ ³7RRN\RXORQJHQRXJK³QXP2I*XHVVHV³JXHVVHV´ 
6\VWHPRXWSULQWOQ ³)LVKDUHGDQFLQJZLWK\RXURSWLRQV´ 
`
`FORVHPHWKRG


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RW&RP%XVWJDPH QHZ'RW&RP%XVW  FUHDWHWKHJ
JDPHVHW8S*DPH  DPHREMHFW
JDPHVWDUW3OD\LQJ  WHOOWKHJDPH
REMHFWWRVHW
`FORVHPHWKRG
WHOOWKHJDPH XSWKHJDPH
` REMHFWW JDPHSOD\O R R
LQSXWDQGFKRHFS NHHSVDVNVLQWDUWWKHPDLQ
NLQJWKHJXHVVJIRUXVHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH'RW&RPFRGH

SUHSFRGH WHVWFRGH UHDOFRGH 


UHDOFRGH

<PMNQVIT^MZ[QWVWN\PM
,W\+WUKTI[[
LPSRUWMDYDXWLO 

SXEOLFFODVV'RW&RP^
'RW&RP·VLQVWDQFHYDULDEOHV
SULYDWH$UUD\/LVW6WULQJ!ORFDWLRQ&HOOV DQ$UUD\/LVWRIFHOOORFDWLRQV
SULYDWH6WULQJQDPH WKH'RW&RP·VQDPH

SXEOLFYRLGVHW/RFDWLRQ&HOOV $UUD\/LVW6WULQJ!ORF ^ $VHWWHUPHWKRGWKDWXSGDWHV


WKH'RW&RP·VORFDWLRQ \
ORFDWLRQ&HOOV ORF 5DQGRPORFDWLRQSURYLGHGERP  
` WKH*DPH+HOSHUSODFH'RW&
PHWKRG
SXEOLFYRLGVHW1DPH 6WULQJQ ^ <RXUEDVLFVHWWHUPHWKRG
QDPH Q
` 7KH$UUD\/LVWLQGH[2I  PHQHR WKRGLQ
DFWLRQ ,IWK HXV HUJ XHVV LVR IWKH
HQWULHVLQWKH$UUD\ /LVW LQG H[2 I  
SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJXVHU,QSXW ^
ZLOOUHW XUQ LWV$UU D\/ LVW ORFD WLRQ ,I 
6WULQJUHVXOW ³PLVV´ QRWLQGH[2I  ZLOOUH WXU Q 
LQWLQGH[ ORFDWLRQ&HOOVLQGH[2I XVHU,QSXW 
LI LQGH[!  ^
8VLQJ$UUD\/LVW·VUHPRYH  PHWKRGWRGHOHWHDQHQWU\
ORFDWLRQ&HOOVUHPRYH LQGH[ 

LI ORFDWLRQ&HOOVLV(PSW\ ^ 8VLQJWKHLV(PSW\  PHWKRGWRVHHLIDOO
UHVXOW ³NLOO´ RIWKHORFDWLRQVKDYHEHHQJXHVVHG
6\VWHPRXWSULQWOQ ³2XFK<RXVXQN³QDPH³ ³ 
`HOVH^
UHVXOW ³KLW´ 7HOOWKHXVHUZKHQ
D'RW&RPKDVEHH
`FORVHLI QVXQN
`FORVHLI
UHWXUQUHVXOW
5HWXUQ¶PLVV·RU
¶KLW·RU¶NLOO·
`FORVHPHWKRG
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

;]XMZ8W_MZN]T*WWTMIV-`XZM[[QWV[
3OFAR WHENWEVEUSEDBOOLEANEXPRESSIONSFOROURLOOPSOR 1RWHTXDOV  DQG
LITESTS THEYVEBEENPRETTYSIMPLE7EWILLBEUSINGMORE
POWERFULBOOLEANEXPRESSIONSINSOMEOFTHE2EADY "AKECODE ,ETSSAYTHATYOUHAVEALOGICLIKE hOFTHETENAVAILABLE
YOUREABOUTTOSEE ANDEVENTHOUGHWEKNOWYOUWOULDNT CAMERAMODELS ACERTAINTHINGISTRUEFORALLBUTONEh
PEEK WETHOUGHTTHISWOULDBEAGOODTIMETODISCUSSHOWTO LI PRGHO  ^
ENERGIZEYOUREXPRESSIONS GRQRQPRGHOVWXII
`
¶$QG·DQG¶2U·2SHUDWRUV  __ 
ORFORCOMPARINGOBJECTSLIKESTRINGS
,ETSSAYYOUREWRITINGACHOOSE#AMERA METHOD WITHLOTSOFRULES
ABOUTWHICHCAMERATOSELECT-AYBEYOUCANCHOOSECAMERAS LI EUDQGHTXDOV ´;µ ^
RANGINGFROMTO BUTINSOMECASESYOUWANTTOLIMITTHE GRQRQEUDQG;VWXII
PRICERANGEMOREPRECISELY9OUWANTTOSAYSOMETHINGLIKE `

@)FTHEPRICERANGEISBETWEENANDTHENCHOOSE8 6KRUW&LUFXLW2SHUDWRUV  __


4HEOPERATORSWEVELOOKEDATSOFAR AND\\ ARE
LI SULFH!  SULFH ^ KNOWNASSHORTCIRCUITOPERATORS)NTHECASEOF
THEEXPRESSIONWILLBETRUEONLYIFBOTHSIDESOFTHE
FDPHUD ´;µ
ARETRUE3OIFTHE*6-SEESTHATTHELEFTSIDEOFA
` EXPRESSIONISFALSE ITSTOPSRIGHTTHERE$OESNTEVEN
BOTHERTOLOOKATTHERIGHTSIDE
,ETSSAYTHATOFTHETENCAMERABRANDSAVAILABLE YOUHAVESOME 3IMILARLY WITH\\ THEEXPRESSIONWILLBETRUEIFEITHERSIDEIS
LOGICTHATAPPLIESTOONLYAFEWOFTHELIST TRUE SOIFTHE*6-SEESTHATTHELEFTSIDEISTRUE ITDECLARES
THEENTIRESTATEMENTTOBETRUEANDDOESNTBOTHERTO
CHECKTHERIGHTSIDE
LI EUDQGHTXDOV ´$µ __EUDQGHTXDOV ´%µ  ^
7HYISTHISGREAT,ETSSAYTHATYOUHAVEAREFERENCE
GRVWXIIIRUONLYEUDQG$OREUDQG% VARIABLEANDYOURENOTSUREWHETHERITSBEENASSIGNED
` TOANOBJECT)FYOUTRYTOCALLAMETHODUSINGTHISNULL
REFERENCEVARIABLEIENOOBJECTHASBEENASSIGNED YOULL
GETA.ULL0OINTER%XCEPTION3O TRYTHIS
"OOLEANEXPRESSIONSCANGETREALLYBIGANDCOMPLICATED

LI UHI9DU QXOO 


LI ]RRP7\SHHTXDOV ´RSWLFDOµ 
UHI9DULV9DOLG7\SH  ^
 ]RRP'HJUHH!  ]RRP'HJUHH  __
GR¶JRWDYDOLGW\SH·VWXII
 ]RRP7\SHHTXDOV ´GLJLWDOµ 
`
 ]RRP'HJUHH!  ]RRP'HJUHH  ^
GRDSSURSULDWH]RRPVWXII 1RQ6KRUW&LUFXLW2SHUDWRUV  _
` 7HENUSEDINBOOLEANEXPRESSIONS THEAND\OPERATORS
)FYOUWANTTOGETREALLYTECHNICAL YOUMIGHTWONDERABOUTTHE ACTLIKETHEIRAND\\COUNTERPARTS EXCEPTTHAT
PRECEDENCEOFTHESEOPERATORS)NSTEADOFBECOMINGANEXPERT THEYFORCETHE*6-TOALWAYSCHECKBOTHSIDESOFTHE
INTHEARCANEWORLDOFPRECEDENCE WERECOMMENDTHATYOUUSE EXPRESSION4YPICALLY AND\AREUSEDINANOTHERCONTEXT
FORMANIPULATINGBITS
PARENTHESESTOMAKEYOURCODECLEAR

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
5HDG\EDNH*DPH+HOSHU

7KLVLVWKHKHOSHUFODVVIRUWKHJDPH%HVLGHVWKHXVHULQSXWPHWKRG
4GCF[DCMG WKDWSURPSWVWKHXVHUDQGUHDGVLQSXWIURPWKHFRPPDQGOLQH WKH
KHOSHU·V%LJ6HUYLFHLVWRFUHDWHWKHFHOOORFDWLRQVIRUWKH'RW&RPV
%QFG ,IZHZHUH\RXZH·GMXVWEDFNDZD\VORZO\IURPWKLVFRGHH[FHSW
WRW\SHLWLQDQGFRPSLOHLW:HWULHGWRNHHSLWIDLUO\VPDOOWR\RX
ZRXOGQ·WKDYHWRW\SHVRPXFKEXWWKDWPHDQVLWLVQ·WWKHPRVW
LPSRUWMDYDLR  UHDGDEOHFRGH$QGUHPHPEHU\RXZRQ·WEHDEOHWRFRPSLOHWKH
LPSRUWMDYDXWLO  'RW&RP%XVWJDPHFODVVXQWLO\RXKDYHWKLVFODVV

SXEOLFFODVV*DPH+HOSHU^

SULYDWHVWDWLF¿QDO6WULQJDOSKDEHW ³DEFGHIJ´
1RWH)RUH[WUDFUHGLW\RXPLJKW
SULYDWHLQWJULG/HQJWK  WU\¶XQFRPPHQWLQJ·WKH
SULYDWHLQWJULG6L]H  6\VWHPRXWSULQW OQ ·VLQWKH
SULYDWHLQW>@JULG QHZLQW>JULG6L]H@ SODFH'RW&RP  PHWKRGMXVW
SULYDWHLQWFRP&RXQW 

Licensed by
WRZDWFKLWZRUN7KHVHSULQW
SXEOLF6WULQJJHW8VHU,QSXW 6WULQJSURPSW ^ VWDWHPHQWVZLOOOHW\RX´FKHDWµ
6WULQJ
LQSXW/LQH QXOO E\JLYLQJ\RXWKHORFDWLRQRIWKH
6\VWHPRXWSULQW SURPSW³³  'RW&RPVEXWLWZLOOKHOS\RXWHVWLW
WU\^

Eduard Simons
%XIIHUHG5HDGHULV QHZ%XIIHUHG5HDGHU
 QHZ,QSXW6WUHDP5HDGHU 6\VWHPLQ 
LQSXW/LQH LVUHDG/LQH 
LI LQSXW/LQHOHQJWK   UHWXUQQXOO
`FDWFK ,2([FHSWLRQH ^

104038
6\VWHPRXWSULQWOQ ³,2([FHSWLRQ³H 
`
UHWXUQLQSXW/LQHWR/RZHU&DVH 
`

SXEOLF$UUD\/LVW6WULQJ!SODFH'RW&RP LQWFRP6L]H ^
$UUD\/LVW6WULQJ!DOSKD&HOOV QHZ$UUD\/LVW6WULQJ! 
6WULQJ>@DOSKDFRRUGV QHZ6WULQJ>FRP6L]H@KROGVµI¶W\SHFRRUGV
6WULQJWHPS QXOOWHPSRUDU\6WULQJIRUFRQFDW
LQW>@FRRUGV QHZLQW>FRP6L]H@FXUUHQWFDQGLGDWHFRRUGV
LQWDWWHPSWV FXUUHQWDWWHPSWVFRXQWHU
ERROHDQVXFFHVV IDOVHÀDJ IRXQGDJRRGORFDWLRQ"
LQWORFDWLRQ FXUUHQWVWDUWLQJORFDWLRQ

FRP&RXQWQWKGRWFRPWRSODFH
LQWLQFU VHWKRUL]RQWDOLQFUHPHQW
LI FRP&RXQW   ^LIRGGGRWFRP SODFHYHUWLFDOO\
LQFU JULG/HQJWKVHWYHUWLFDOLQFUHPHQW
`

ZKLOH VXFFHVV DWWHPSWV ^PDLQVHDUFKORRS 


 ORFDWLRQ  LQW  0DWKUDQGRP  JULG6L]H JHWUDQGRPVWDUWLQJSRLQW
6\VWHPRXWSULQW ³WU\³ORFDWLRQ 
 LQW[ QWKSRVLWLRQLQGRWFRPWRSODFH
VXFFHVV WUXHDVVXPHVXFFHVV
ZKLOH VXFFHVV [FRP6L]H ^ORRNIRUDGMDFHQWXQXVHGVSRWV
LI JULG>ORFDWLRQ@  ^LIQRWDOUHDG\XVHG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

4GCF[DCMG /IUM0MTXMZKTI[[KWLMKWV\QV]ML
%QFG

FRRUGV>[@ ORFDWLRQVDYHORFDWLRQ
ORFDWLRQ LQFUWU\µQH[W¶DGMDFHQW
LI ORFDWLRQ! JULG6L]H ^RXWRIERXQGVµERWWRP¶
VXFFHVV IDOVHIDLOXUH
`
LI [!  ORFDWLRQJULG/HQJWK  ^RXWRIERXQGVULJKWHGJH
VXFFHVV IDOVHIDLOXUH
`
`HOVH^IRXQGDOUHDG\XVHGORFDWLRQ
6\VWHPRXWSULQW ³XVHG³ORFDWLRQ 
VXFFHVV IDOVHIDLOXUH
`
`
`HQGZKLOH

LQW[ WXUQORFDWLRQLQWRDOSKDFRRUGV
LQWURZ 
LQWFROXPQ 
6\VWHPRXWSULQWOQ ³?Q´ 
ZKLOH [FRP6L]H ^
JULG>FRRUGV>[@@ PDUNPDVWHUJULGSWVDVµXVHG¶
URZ  LQW  FRRUGV>[@JULG/HQJWK JHWURZYDOXH
FROXPQ FRRUGV>[@JULG/HQJWKJHWQXPHULFFROXPQYDOXH
WHPS 6WULQJYDOXH2I DOSKDEHWFKDU$W FROXPQ FRQYHUWWRDOSKD

DOSKD&HOOVDGG WHPSFRQFDW ,QWHJHUWR6WULQJ URZ 
PHQWWKDW
[
7 K LV L VWKHVWDWHZKHUHWKH
6\VWHPRXWSULQW ³FRRUG³[´ ³DOSKD&HOOVJHW [  DFWO\
` WHOOV\RXH[ ORFDWHG
 'RW&RPLV
6\VWHPRXWSULQWOQ ³?Q´ 

UHWXUQDOSKD&HOOV
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
$3,SDFNDJHV

=[QVO\PM4QJZIZa\PM2I^I)81
9OUMADEITALLTHEWAYTHROUGHTHE$OT#OM"USTGAME
THANKSTOTHEHELPOF!RRAY,IST!NDNOW ASPROMISED
ITSTIMETOLEARNHOWTOFOOLAROUNDINTHE*AVALIBRARY

,QWKH-DYD$3,FODVVHV
DUHJURXSHGLQWRSDFNDJHV

7RXVHDFODVVLQWKH$3,\RX
KDYHWRNQRZZKLFKSDFNDJH
WKHFODVVLVLQ
%VERYCLASSINTHE*AVALIBRARYBELONGSTOAPACKAGE
4HEPACKAGEHASANAME LIKEMDYD[VZLQJA
PACKAGETHATHOLDSSOMEOFTHE3WING'5)CLASSES
YOULLLEARNABOUTSOON !RRAY,ISTISINTHEPACKAGE
CALLEDMDYDXWLO WHICHSURPRISESURPRISE HOLDSA
PILEOFUTILITYCLASSES9OULLLEARNALOTMOREABOUT
PACKAGESINCHAPTER INCLUDINGHOWTOPUTYOUR
OWNCLASSESINTOYOUROWNPACKAGES&ORNOWTHOUGH
WEREJUSTLOOKINGTOUSESOMEOFTHECLASSESTHATCOME
WITH*AVA
5SINGACLASSFROMTHE!0) INYOUROWNCODE IS
SIMPLE9OUJUSTTREATTHECLASSASTHOUGHYOUWROTE
ITYOURSELFASTHOUGHYOUCOMPILEDIT ANDTHEREIT
SITS WAITINGFORYOUTOUSEIT7ITHONEBIGDIFFERENCE
SOMEWHEREINYOURCODEYOUHAVETOINDICATETHEFULL
NAMEOFTHELIBRARYCLASSYOUWANTTOUSE ANDTHAT
MEANSPACKAGENAME CLASSNAME
%VENIFYOUDIDNTKNOWIT YOUVEALREADYBEENUSING
CLASSESFROMAPACKAGE3YSTEM3YSTEMOUTPRINTLN
3TRING AND-ATH-ATHRANDOM ALLBELONGTOTHE
MDYDODQJPACKAGE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

<RXKDYHWRNQRZWKHIXOOQDPH  WKHUH DUH QR


'XPE 4XHVWLRQV
RIWKHFODVV\RXZDQWWRXVHLQ
\RXUFRGH Q: 7HYDOESTHEREHAVETO
BEAFULLNAME)STHATTHEONLY
PURPOSEOFAPACKAGE
!RRAY,ISTISNOTTHEFULLNAMEOF!RRAY,IST JUSTAS@+ATHY
ISNTAFULLNAMEUNLESSITSLIKE-ADONNAOR#HER BUTWE
WONTGOTHERE 4HEFULLNAMEOF!RRAY,ISTISACTUALLY A: 0ACKAGESAREIMPORTANT
FORTHREEMAINREASONS&IRST THEY
MDYDXWLO$UUD\/LVW HELPTHEOVERALLORGANIZATIONOFA
PROJECTORLIBRARY2ATHERTHANJUST
HAVINGONEHORRENDOUSLYLARGE
SDFNDJHQDPH
FODVVQDPH PILEOFCLASSES THEYREALLGROUPED
INTOPACKAGESFORSPECIFICKINDS
OFFUNCTIONALITYLIKE'5) ORDATA
STRUCTURES ORDATABASESTUFF ETC
<RXKDYHWRWHOO-DYDZKLFK$UUD\/LVW\RX 3ECOND PACKAGESGIVEYOUANAME
ZDQWWRXVH<RXKDYHWZRRSWLRQV SCOPING TOHELPPREVENTCOLLISIONS
IFYOUANDOTHERPROGRAMMERS
INYOURCOMPANYALLDECIDETO
MAKEACLASSWITHTHESAMENAME
) ,03257 )FYOUHAVEACLASSNAMED3ETAND
3XWDQLPSRUWVWDWHPHQWDWWKHWRSRI\RXUVRXUFHFRGH¿OH SOMEONEELSEINCLUDINGTHE*AVA
LPSRUWMDYDXWLO$UUD\/LVW !0) HASACLASSNAMED3ET YOU
NEEDSOMEWAYTOTELLTHE*6-
SXEOLFFODVV0\&ODVV^` WHICH3ETCLASSYOURETRYINGTOUSE
25 4HIRD PACKAGESPROVIDEALEVELOF
SECURITY BECAUSEYOUCANRESTRICT
THECODEYOUWRITESOTHATONLY
OTHERCLASSESINTHESAMEPACKAGE
CANACCESSIT9OULLLEARNALLABOUT
* 7<3( THATINCHAPTER
7\SHWKHIXOOQDPHHYHU\ZKHUHLQ\RXUFRGH(DFKWLPH
\RXXVHLW$Q\ZKHUH\RXXVHLW
/+ BACKTOTHENAME Q:
COLLISIONTHING(OWDOESAFULL
:KHQ\RXGHFODUHDQGRULQVWDQWLDWHLW
NAMEREALLYHELP7HATSTO
MDYDXWLO$UUD\/LVW'RJ!OLVW QHZMDYDXWLO$UUD\/LVW'RJ!  PREVENTTWOPEOPLEFROMGIVINGA
CLASSTHESAMEPACKAGENAME

:KHQ\RXXVHLWDVDQDUJXPHQWW\SH
SXEOLFYRLGJR MDYDXWLO$UUD\/LVW'RJ!OLVW ^`
A: *AVAHASANAMINGCONVENTION
THATUSUALLYPREVENTSTHISFROM
HAPPENING ASLONGASDEVELOPERS
ADHERETOIT7ELLGETINTOTHATIN
:KHQ\RXXVHLWDVDUHWXUQW\SH MOREDETAILINCHAPTER

SXEOLFMDYDXWLO$UUD\/LVW'RJ!IRR ^`


8QOHVVWKHFODVVLVLQWKHMDYDODQJSDFNDJH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

:MDD=LHGAFLK
ƒ $UUD\/LVWLVDFODVVLQWKH-DYD$3,
:KHUH·GWKDW¶[·FRPHIURP"
ƒ 7RSXWVRPHWKLQJLQWRDQ$UUD\/LVWXVHDGG 
RUZKDWGRHVLWPHDQZKHQ
DSDFNDJHVWDUWVZLWKMDYD[" ƒ 7RUHPRYHVRPHWKLQJIURPDQ$UUD\/LVWXVH
UHPRYH 
)NTHEFIRSTANDSECONDVERSIONSOF*AVA
AND ALLCLASSESTHATSHIPPEDWITH*AVAIN ƒ 7RILQGRXWZKHUHVRPHWKLQJLV DQGLILWLV LQDQ
OTHERWORDS THESTANDARDLIBRARY WEREINPACKAGES $UUD\/LVWXVHLQGH[2I 
THATBEGANWITHJAVA4HEREWASALWAYSJAVALANG OFCOURSE
ˆTHEONEYOUDONTHAVETOIMPORT!NDTHEREWASJAVANET ƒ 7RILQGRXWLIDQ$UUD\/LVWLVHPSW\XVH
JAVAIO JAVAUTILALTHOUGHTHEREWASNOSUCHTHINGAS!RRAY,IST LV(PSW\ 
WAYBACKTHEN ANDAFEWOTHERS INCLUDINGTHEJAVAAWT
PACKAGETHATHELD'5) RELATEDCLASSES ƒ 7RJHWWKHVL]H QXPEHURIHOHPHQWV LQDQ
$UUD\/LVWXVHWKHVL]H PHWKRG
,OOMINGONTHEHORIZON THOUGH WEREOTHERPACKAGESNOT
INCLUDEDINTHESTANDARDLIBRARY4HESECLASSESWEREKNOWNAS ƒ 7RJHWWKHOHQJWK QXPEHURIHOHPHQWV LQD
EXTENSIONS ANDCAMEINTWOMAINFLAVORSSTANDARD ANDNOT UHJXODUROGDUUD\UHPHPEHU\RXXVHWKHOHQJWK
STANDARD3TANDARDEXTENSIONSWERETHOSETHAT3UNCONSIDERED
YDULDEOH
OFFICIAL ASOPPOSEDTOEXPERIMENTAL EARLYACCESS ORBETA
PACKAGESTHATMIGHTORMIGHTNOTEVERSEETHELIGHTOFDAY ƒ $Q$UUD\/LVWUHVL]HVG\QDPLFDOO\WRZKDW
3TANDARDEXTENSIONS BYCONVENTION ALLBEGANWITHAN@X HYHUVL]HLVQHHGHG,WJURZVZKHQREMHFWV
APPENDEDTOTHEREGULARJAVAPACKAGESTARTER4HEMOTHEROFALL DUHDGGHGDQGLWVKULQNVZKHQREMHFWVDUH
STANDARDEXTENSIONSWASTHE3WINGLIBRARY)TINCLUDEDSEVERAL UHPRYHG
PACKAGES ALLOFWHICHBEGANWITHJAVAXSWING
"UTSTANDARDEXTENSIONSCANGETPROMOTEDTOFIRST CLASS SHIPS
ƒ <RXGHFODUHWKHW\SHRIWKHDUUD\XVLQJDW\SH
WITH *AVA STANDARD OUT OF THE BOXLIBRARYPACKAGES!NDTHATS
SDUDPHWHUZKLFKLVDW\SHQDPHLQDQJOH
WHATHAPPENEDTO3WING BEGINNINGWITHVERSIONWHICH EUDFNHWV([DPSOH$UUD\/LVW%XWWRQ!PHDQV
EVENTUALLYBECAMETHEFIRSTVERSIONDUBBED@*AVA  WKH$UUD\/LVWZLOOEHDEOHWRKROGRQO\REMHFWVRI
W\SH%XWWRQ RUVXEFODVVHVRI%XWWRQDV\RX·OO
h#OOLv EVERYONETHOUGHTINCLUDINGUS h.OWEVERYONEWHOHAS
*AVAWILLHAVETHE3WINGCLASSES ANDWEWONTHAVETOFIGURE OHDUQLQWKHQH[WFRXSOHRIFKDSWHUV 
OUTHOWTOGETTHOSECLASSESINSTALLEDWITHOUREND USERSv ƒ $OWKRXJKDQ$UUD\/LVWKROGVREMHFWVDQGQRW
4ROUBLEWASLURKINGBENEATHTHESURFACE HOWEVER BECAUSE SULPLWLYHVWKHFRPSLOHUZLOODXWRPDWLFDOO\´ZUDSµ
WHENPACKAGESGETPROMOTED WELLOF#/523%THEYHAVETO DQG´XQZUDSµZKHQ\RXWDNHLWRXW DSULPL
STARTWITHJAVA NOTJAVAX%VERYONE+./73THATPACKAGESIN WLYHLQWRDQ2EMHFWDQGSODFHWKDWREMHFWLQWKH
THESTANDARDLIBRARYDONTHAVETHAThXv ANDTHATONLYEXTENSIONS $UUD\/LVWLQVWHDGRIWKHSULPLWLYH 0RUHRQWKLV
HAVETHEhXv3O JUSTANDWEMEANJUST BEFOREVERSION
IHDWXUHODWHULQWKHERRN
WENTFINAL 3UNCHANGEDTHEPACKAGENAMESANDDELETEDTHE
hXvAMONGOTHERCHANGES "OOKSWEREPRINTEDANDINSTORES ƒ &ODVVHVDUHJURXSHGLQWRSDFNDJHV
FEATURING3WINGCODEWITHTHENEWNAMES.AMINGCONVENTIONS
WEREINTACT!LLWASRIGHTWITHTHE*AVAWORLD ƒ $FODVVKDVDIXOOQDPHZKLFKLVDFRPELQD
%XCEPTTHE ORSOSCREAMINGDEVELOPERSWHOREALIZED WLRQRIWKHSDFNDJHQDPHDQGWKHFODVVQDPH
THATWITHTHATSIMPLENAMECHANGECAMEDISASTER!LLOFTHEIR &ODVV$UUD\/LVWLVUHDOO\MDYDXWLO$UUD\/LVW
3WING USINGCODEHADTOBECHANGED4HEHORROR4HINKOFALL
THOSEIMPORTSTATEMENTSTHATSTARTEDWITHJAVAX
ƒ 7RXVHDFODVVLQDSDFNDJHRWKHUWKDQMDYD
ODQJ\RXPXVWWHOO-DYDWKHIXOOQDPHRIWKH
!NDINTHEFINALHOUR DESPERATE ASTHEIRHOPESGREWTHIN THE FODVV
DEVELOPERSCONVINCED3UNTOhSCREWTHECONVENTION SAVEOUR
CODEv4HERESTISHISTORY3OWHENYOUSEEAPACKAGEINTHE ƒ <RXXVHHLWKHUDQLPSRUWVWDWHPHQWDWWKHWRSRI
LIBRARYTHATBEGINSWITHJAVAX YOUKNOWITSTARTEDLIFEASAN \RXUVRXUFHFRGHRU\RXFDQW\SHWKHIXOOQDPH
EXTENSION ANDTHENGOTAPROMOTION HYHU\SODFH\RXXVHWKHFODVVLQ\RXUFRGH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: $OESLPSRUWMAKEMY
CLASSBIGGER$OESITACTUALLY
COMPILETHEIMPORTEDCLASSOR
PACKAGEINTOMYCODE
0DNH LW 6WLFN
A: 0ERHAPSYOUREA#PRO
GRAMMER!NLPSRUWISNOTTHE
2OSESARERE
APPLESARER
D
IPE
SAMEASANLQFOXGH3OTHE IFYOUDONTI
MPORT
ANSWERISNOANDNO2EPEATAFTER YOULLJUSTH
AVETOT YPE
MEhANLPSRUWSTATEMENTSAVES 9OUMUSTT
YOUFROMTYPINGv4HATSREALLYIT ELL*AVATHE
YOUUSE UN FULLNAMEO
9OUDONTHAVETOWORRYABOUT LESSTHATCLA FEVERYCLA
PACKAGE! SSISINTHE SS
YOURCODEBECOMINGBLOATED OR NLPSRUW JAVALANG
ORPACKAGE STATEMENT
SLOWER FROMTOOMANYIMPORTS ATTHETOPO FORTHECLAS
EASYWAY/ FYOURSOURC S
THER WISE YO ECO
!NLPSRUWISSIMPLYTHEWAYYOU
NAMEOFTH UHAVETOTYP DEISTHE
GIVE*AVATHEFULLNAMEOFACLASS ECLASS EVE ETHEFULL
RYWHEREYO
UUSEIT

Q: /+ HOWCOME)NEVERHAD
TOIMPORTTHE3TRINGCLASS/R
3YSTEM
2QHPRUHWLPHLQWKHXQOLNHO\
HYHQWWKDW\RXGRQ·WDOUHDG\
KDYHWKLVGRZQ
A: 2EMEMBER YOUGETTHE
JAVALANGPACKAGESORTOFhPRE
IMPORTEDvFORFREE"ECAUSE
THECLASSESINJAVALANGARESO
FUNDAMENTAL YOUDONTHAVETO
LPSRUW
USETHEFULLNAME4HEREISONLY
ONEJAVALANG3TRINGCLASS ANDONE
JAVALANG3YSTEMCLASS AND*AVA RU
DARNWELLKNOWSWHERETOFIND
THEM

Q: $O)HAVETOPUTMYOWN
CLASSESINTOPACKAGES(OWDO)
DOTHAT#AN)DOTHAT

A: )NTHEREALWORLDWHICH
YOUSHOULDTRYTOAVOID YES YOU
WILLWANTTOPUTYOURCLASSESINTO
PACKAGES7ELLGETINTOTHATIN
DETAILINCHAPTER&ORNOW WE
WONTPUTOURCODEEXAMPLESINA
PACKAGE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJWRNQRZWKH$3,

h'OODTOKNOWTHERESAN!RRAY,ISTIN
THEJAVAUTILPACKAGE"UTBYMYSELF HOW
WOULD)HAVElGUREDTHATOUTv
-XOLDKDQGPRGHO

0W_\WXTIa_Q\P\PM)81
7ZRWKLQJV\RXZDQWWRNQRZ

 :KDWFODVVHVDUHLQWKHOLEUDU\"

 2QFH\RXÀQGDFODVVKRZGR
\RXNQRZZKDWLWFDQGR"

 %URZVHD%RRN

 8VHWKH+70/$3,GRFV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

 %URZVHD%RRN

)OLSSLQJWKURXJKD
UHIHUHQFHERRNLVWKH
EHVWZD\WRÀQGRXW
ZKDW·VLQWKH-DYD
OLEUDU\<RXFDQHDVLO\
VWXPEOHRQDFODVVWKDW
ORRNVXVHIXOMXVWE\
EURZVLQJSDJHV

FODVVQDPH

SDFNDJHQDPH

LRQ
FODVVGHVFULSW

PHWKRGV DQGRWKH
ZH·OOWDONDERXWODWUWKLQJV
HU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJWKH-DYD$3,GRFXPHQWDWLRQ

 8VHWKH+70/$3,GRFV
*AVACOMESWITHAFABULOUSSETOFONLINEDOCS 4HEREFERENCEBOOK FOREXAMPLE TELLSYOU
CALLED STRANGELY THE*AVA!0)4HEYREPARTOF WHATTHEMETHODSTAKE ASARGUMENTS ANDWHAT
ALARGERSETCALLEDTHE*AVA3TANDARD%DITION THEYRETURN,OOKAT!RRAY,IST FOREXAMPLE
$OCUMENTATIONWHICH DEPENDINGONWHAT )NTHEREFERENCEBOOK YOULLlNDTHEMETHOD
DAYOFTHEWEEKYOULOOK 3UNMAYBEREFER INDEX/F THATWEUSEDINTHE$OT#OMCLASS
RINGTOASh*AVA3TANDARD%DITIONv AND "UTIFALLYOUKNEWISTHATTHEREISAMETHOD
YOUHAVETODOWNLOADTHEDOCSSEPARATELY CALLEDINDEX/F THATTAKESANOBJECTANDRE
THEYDONTCOMESHRINK WRAPPEDWITHTHE*AVA TURNSTHEINDEXANINT OFTHATOBJECT YOUSTILL
DOWNLOAD)FYOUHAVEAHIGH SPEEDINTERNET NEEDTOKNOWONECRUCIALTHINGWHATHAPPENS
CONNECTION ORTONSOFPATIENCE YOUCANALSO IFTHEOBJECTISNOTINTHE!RRAY,IST,OOKING
BROWSETHEMATJAVASUNCOM4RUSTUS YOU ATTHEMETHODSIGNATUREALONEWONTTELLYOU
PROBABLYWANTTHESEONYOURHARDDRIVE HOWTHATWORKS"UTTHE!0)DOCSWILLMOSTOF
THETIME ANYWAY 4HE!0)DOCSTELLYOUTHAT
4HE!0)DOCSARETHEBESTREFERENCEFORGET THEINDEX/F METHODRETURNSA IFTHEOBJECT
TINGMOREDETAILSABOUTACLASSANDITSMETHODS PARAMETERISNOTINTHE!RRAY,IST4HATSHOW
,ETSSAYYOUWEREBROWSINGTHROUGHTHEREFER WEKNEWWECOULDUSEITBOTHASAWAYTOCHECK
ENCEBOOKANDFOUNDACLASSCALLED#ALENDAR IFANOBJECTISEVENINTHE!RRAY,IST ANDTOGET
INJAVAUTIL4HEBOOKTELLSYOUALITTLEABOUTIT ITSINDEXATTHESAMETIME IFTHEOBJECTWAS
ENOUGHTOKNOWTHATTHISISINDEEDWHATYOU THERE"UTWITHOUTTHE!0)DOCS WEMIGHTHAVE
WANTTOUSE BUTYOUSTILLNEEDTOKNOWMORE THOUGHTTHATTHEINDEX/F METHODWOULD
ABOUTTHEMETHODS BLOWUPIFTHEOBJECTWASNTINTHE!RRAY,IST


6FUROOWKURXJKWKH
DQGVHOHFWRQH FOLF SDFNDJHV
WRUHVWULFWWKHOLV NLW 
ORZHUIUDPHWRRQOWLQWKH UHDOOWKH
IURPWKDWSDFNDJH\FODVVHV 7KLVLVZKH LV<RXFDQ
JRRGVWXIIXJKWKH
VFUROOWKUR RUDEULHI
 HV PHWKRGVI UFOLFNRQ
WK UR X J K WKHFODVV WR

6FUROO RQH FOLFNLW LOO VXPPDU\RWRJHWIXOO
DQGVHOHFWHFODVVWKDWZLOOI DPHWKRG
FKRRVHWK EURZVHUIUDPH GHWDLOV
WKHPDLQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

1dQ^OU_Q
Code Magnets SULQW$/ D 
#ANYOURECONSTRUCTTHECODESNIPPETSTOMAKEA DUHPRYH  
SULQW$/ D 
WORKING*AVAPROGRAMTHATPRODUCESTHEOUTPUT
LISTEDBELOW./4%4ODOTHISEXERCISE YOUNEED DDGG 
´]HUR´
ONE.%7PIECEOFINFOˆIFYOULOOKINTHE!0)FOR DDGG  
!RRAY,IST YOULLFINDASECONDADDMETHODTHATTAKES ´RQH´

TWOARGUMENTS
W6WULQJ!DO ^
ADDINTINDEX /BJECTO SXEOLFVWDWLFYRLGSULQW$/ $UUD\/LV
)TLETSYOUSPECIFYTOTHE
!RRAY,ISTWHERETOPUTTHEOBJECTYOUREADDING LI DFRQ
WDLQV ³WZ
DDGG R´ ^
³´ 
`

DDGG ´WZR´ 

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6\VWHPRXWSULQW HOHPHQW³³ 
`
6\VWHPRXWSULQWOQ ³³ 
LI DFRQWDLQV ³WKUHH´ ^
DDGG ³IRXU´ 
`
SXEOLFFODVV$UUD\/LVW0DJQHW^

LI DLQGH[2I ³IRXU´   ^


DDGG ³´ 
`

` `

LPSRUWMDYDXWLO
`
SULQW$/ D 

D\/LVW6WULQJ! 
$UUD\/LVW6WULQJ!D QHZ$UU

IRU 6WULQ
)LOH(GLW:LQGRZ+HOS'DQFH JHOHPHQW
DO ^
MDYD$UUD\/LVW0DJQHW
]HURRQHWZRWKUHH
]HURRQHWKUHHIRXU KUHH´ 
]HURRQHWKUHHIRXU DDGG ´W

]HURRQHWKUHHIRXU SULQW$/ D

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHFURVVZRUG

   

 

-DYD&URVV    

 

(OWDOESTHISCROSSWORDPUZZLEHELPYOULEARN 

*AVA7ELL ALLOFTHEWORDSARE*AVARELATED
 
EXCEPTONEREDHERRING 
 
(INT7HENINDOUBT REMEMBER!RRAY,IST

Licensed by


 



!CROSS 

Eduard Simons
)CANTBEHAVE

/R INTHECOURTROOM
7HEREITSATBABY
!FORKSORIGIN $OWN

104038
'ROWAN!RRAY,IST 7HERETHE*AVAACTIONIS
7HOLLYMASSIVE !DDRESSABLEUNIT
6ALUECOPY NDSMALLEST
.OTANOBJECT &RACTIONALDEFAULT
!NARRAYONSTEROIDS ,IBRARYSGRANDEST
%XTENT -USTBELOWDENSITY
SCOUNTERPART (ESINTHERESOMEWHERE
3PANISHGEEKSNACKS.OTE4HISHAS !SIF
NOTHINGTODOWITH*AVA
DEARTHMETHOD
&ORLAZYlNGERS
7HATSHOPPINGANDARRAYSHAVEINCOMMON
7HEREPACKAGESROAM
,IBRARYACRONYM
7HATGOESAROUND

-ORE(INTS
(ESMAKINGA?????? .OTABOUT*AVA 3PANISHAPPETIZERS
4HINK!RRAY,IST !RRAYSEXTENT
0RIMITIVE #OMMONPRIMITIVE
4HINK!RRAY,IST 4HINK!RRAY,IST
7HATSOVERRIDABLE VARIETIES
$OWN !CROSS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWRNQRZWKH-DYD$3,

LPSRUWMDYDXWLO 

SXEOLFFODVV$UUD\/LVW0DJQHW^
%XERCISE3OLUTIONS
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

$UUD\/LVW6WULQJ!D QHZ$UUD\/LVW6WULQJ! 

)LOH(GLW:LQGRZ+HOS'DQFH
DDGG ´]HUR´ 
DDGG ´RQH´ 
MDYD$UUD\/LVW0DJQHW
]HURRQHWZRWKUHH DDGG ´WZR´ 
]HURRQHWKUHHIRXU
]HURRQHWKUHHIRXU
DDGG ´WKUHH´ 
]HURRQHWKUHHIRXU
SULQW$/ D 

LI DFRQWDLQV ³WKUHH´ ^


DDGG ³IRXU´ 
`
DUHPRYH  
SULQW$/ D 

LI DLQGH[2I ³IRXU´   ^


DDGG ³´ 
`
SULQW$/ D 

LI DFRQWDLQV ³WZR´ ^


DDGG ³´ 
`
SULQW$/ D 
`

SXEOLFVWDWLFYRLGSULQW$/ $UUD\/LVW6WULQJ!DO ^

IRU 6WULQJHOHPHQWDO ^

6\VWHPRXWSULQW HOHPHQW³³ 
`
6\VWHPRXWSULQWOQ ³³ 
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

   
35,0,7,9(6

'(/+
 

-DYD&URVV 2%-(&7,1'(;2)
8+05
   

DQVZHUV %32,)(7&
 
/$''/21*2

*(7&271
 
.9$,17
 
$55$</,67/6$

*56,=(,
 
$/(1*7+601

3287$3$6

,03257$7

3/,%5$5<

6KDUSHQ \RXU SHQFLO


7RITEYOUR/7.SETOFCLUES,OOKATEACHWORD ANDTRYTO
WRITEYOUROWNCLUES4RYMAKINGTHEMEASIER ORHARDER OR
!CROSS MORETECHNICALTHANTHEONESWEHAVE

???????????????????????????????????
??????????????????????????????????? $OWN
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????
??????????????????????????????????? ???????????????????????????????????

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

:HZHUHXQGHUSDLG

%HWWHU/LYLQJLQ RYHUZRUNHGFRGHUV¶WLOOZH
WULHGWKH3RO\PRUSKLVP3ODQ%XW

2EMHFWYLOOH WKDQNVWRWKH3ODQRXUIXWXUHLV
EULJKW<RXUVFDQEHWRR

3ODQ\RXUSURJUDPVZLWKWKHIXWXUHLQPLQG)FTHEREWEREAWAYTOWRITE
*AVACODESUCHTHATYOUCOULDTAKEMOREVACATIONS HOWMUCHWOULDITBEWORTHTOYOU7HAT
IFYOUCOULDWRITECODETHATSOMEONEELSECOULDEXTEND EASILY!NDIFYOUCOULDWRITECODE
THATWASFLEXIBLE FORTHOSEPESKYLAST MINUTESPECCHANGES WOULDTHATBESOMETHINGYOURE
INTERESTEDIN4HENTHISISYOURLUCKYDAY&ORJUSTTHREEEASYPAYMENTSOFMINUTESTIME YOU
CANHAVEALLTHIS7HENYOUGETONTHE0OLYMORPHISM0LAN YOULLLEARNTHESTEPSTOBETTERCLASS
DESIGN THETRICKSTOPOLYMORPHISM THEWAYSTOMAKEFLEXIBLECODE ANDIFYOUACTNOWˆA
BONUSLESSONONTHETIPSFOREXPLOITINGINHERITANCE$ONTDELAY ANOFFERTHISGOODWILLGIVE
YOUTHEDESIGNFREEDOMANDPROGRAMMINGFLEXIBILITYYOUDESERVE)TSQUICK ITSEASY ANDITS
AVAILABLENOW3TARTTODAY ANDWELLTHROWINANEXTRALEVELOFABSTRACTION

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHSRZHURI LQKHULWDQFH

+PIQZ?IZ[:M^Q[Q\ML
2EMEMBERWAYBACKINCHAPTER WHEN,ARRYPROCEDURALGUY
AND"RAD//GUY WEREVYINGFORTHE!ERONCHAIR,ETSLOOKAT
AFEWPIECESOFTHATSTORYTOREVIEWTHEBASICSOFINHERITANCE
,!2299OUVEGOTDUPLICATEDCODE4HEROTATEPROCEDURE
ISINALLFOUR3HAPETHINGS)TSASTUPIDDESIGN9OUHAVETO
MAINTAINFOURDIFFERENTROTATEhMETHODSv(OWCANTHAT
EVERBEGOOD
"2!$/H )GUESSYOUDIDNTSEETHElNALDESIGN,ETME
SHOWYOUHOW//INHERITANCEWORKS ,ARRY


6TXDUH &LUFOH 7ULDQJOH $PRHED
1 TWWSML I\ _PI\ ITT NW]Z
URWDWH URWDWH URWDWH URWDWH KTI[[M[ PI^M QV KWUUWV
SOD\6RXQG SOD\6RXQG SOD\6RXQG SOD\6RXQG


<PMa¼ZM ;PIXM[ IVL \PMa ITT ZW\I\M IVL 6KDSH
XTIa;W]VL ;W 1 IJ[\ZIK\ML W]\ \PM URWDWH
KWUUWV NMI\]ZM[ IVL X]\ \PMU QV\W I SOD\6RXQG 
VM_ KTI[[ KITTML ;PIXM <PMV1TQVSML\PMW\PMZ
6KDSH
[]XMZKTI[[ NW]Z[PIXMKTI[[M[\W
URWDWH
SOD\6RXQG \PMVM_;PIXMKTI[[
QVIZMTI\QWV[PQXKITTML
QVPMZQ\IVKM
<RXFDQUHDGWKLVDV´6TXDUHLQKHULWVIURP6KDSHµ
´&LUFOHLQKHULWVIURP6KDSHµDQGVRRQ,UHPRYHG []JKTI[[M[
URWDWH DQGSOD\6RXQG IURPWKHRWKHUVKDSHVVRQRZ
WKHUH·VRQO\RQHFRS\WRPDLQWDLQ
6TXDUH &LUFOH 7ULDQJOH $PRHED
7KH6KDSHFODVVLVFDOOHGWKHVXSHUFODVVRIWKHRWKHUIRXU
FODVVHV7KHRWKHUIRXUDUHWKHVXEFODVVHVRI6KDSH7KH
VXEFODVVHVLQKHULWWKHPHWKRGVRIWKHVXSHUFODVV,QRWKHU
ZRUGVLIWKH6KDSHFODVVKDVWKHIXQFWLRQDOLW\WKHQWKH
VXEFODVVHVDXWRPDWLFDOO\JHWWKDWVDPHIXQFWLRQDOLW\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

?PI\IJW]\\PM)UWMJIZW\I\M'
,!2297ASNTTHATTHEWHOLEPROBLEMHEREˆTHATTHEAMOEBASHAPE
HADACOMPLETELYDIFFERENTROTATEANDPLAY3OUNDPROCEDURE
UULGH 1RZ
(OWCANAMOEBADOSOMETHINGDIFFERENTIFITINHERITSITS YH

2
FUNCTIONALITYFROMTHE3HAPECLASS
$V Z
"2!$4HATSTHELASTSTEP4HE!MOEBACLASSOVERRIDESTHE N 0H +R
METHODSOFTHE3HAPECLASS4HENATRUNTIME THE*6-KNOWS
EXACTLYWHICHROTATE METHODTORUNWHENSOMEONETELLSTHE
!MOEBATOROTATE

[]XMZKTI[[
UWZM IJ[\ZIK\
6KDSH 
URWDWH
SOD\6RXQG
1 UILM \PM )UWMJI KTI[[ W^MZZQLM
1UILM\PM)UWMJIKTI[[W^MZZQLM\PM
\PM ZW\I\M UM\PWL WN \PM
ZW\I\MIVLXTIa;W]VLUM\PWL[
[]XMZKTI[[ ;PIXM
WN\PM[]XMZKTI[[;PIXM7^MZZQLQVO
[]JKTI[[M[ R][\UMIV[\PI\I[]JKTI[[ZMLMNQVM[
UWZM [XMKQNQK 7^MZZQLQVO R][\ UMIV[ \PI\ I
WVMWNQ\[QVPMZQ\MLUM\PWL[_PMV
[]JKTI[[ ZMLMNQVM[ WVM WN Q\[
Q\VMML[\WKPIVOMWZM`\MVL\PM
QVPMZQ\ML UM\PWL[ _PMV Q\ VMML[
6TXDUH &LUFOH 7ULDQJOH $PRHED
JMPI^QWZWN\PI\UM\PWL
\W KPIVOM WZ M`\MVL \PM JMPI^QWZ
URWDWH WN \PI\ UM\PWL
 DPRHEDVSHFLILF
 URWDWH FRGH
7^MZZQLQVO UM\PWL[
SOD\6RXQG
 DPRHEDVSHFLILF
 VRXQG FRGH

YiX`e
gfn\i
(OWWOULDYOUREPRESENTAHOUSECATANDATIGER INAN
INHERITANCESTRUCTURE)SADOMESTICCATASPECIALIZED
VERSIONOFATIGER7HICHWOULDBETHESUBCLASSAND
WHICHWOULDBETHESUPERCLASS/RARETHEYBOTH
SUBCLASSESTOSOMEOTHERCLASS
(OWWOULDYOUDESIGNANINHERITANCESTRUCTURE7HAT
METHODSWOULDBEOVERRIDDEN
4HINKABOUTIT"EFOREYOUTURNTHEPAGE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHZD\LQKHULWDQFHZRUNV

=VLMZ[\IVLQVO 1VPMZQ\IVKM
?PMV aW] LM[QOV _Q\P QVPMZQ\IVKM aW] X]\ KWUUWV KWLM QV
I KTI[[ IVL \PMV \MTT W\PMZ UWZM [XMKQNQK KTI[[M[ \PI\ \PM
KWUUWV UWZM IJ[\ZIK\ KTI[[ Q[ \PMQZ []XMZKTI[[ ?PMV WVM
KTI[[ QVPMZQ\[ NZWU IVW\PMZ \PM []JKTI[[ QVPMZQ\[ NZWU \PM
[]XMZKTI[[
1V 2I^I _M [Ia \PI\ \PM []JKTI[[ M`\MVL[ \PM []XMZKTI[[
)V QVPMZQ\IVKM ZMTI\QWV[PQX UMIV[ \PI\ \PM []JKTI[[ QVPMZQ\[
\PM UMUJMZ[ WN \PM []XMZKTI[[ ?PMV _M [Ia ¹UMUJMZ[ WN
I KTI[[º _M UMIV \PM QV[\IVKM ^IZQIJTM[ IVL UM\PWL[
.WZ M`IUXTM QN 8IV\PMZ5IV Q[ I []JKTI[[ WN ;]XMZ0MZW \PM
8IV\PMZ5IV KTI[[ I]\WUI\QKITTa QVPMZQ\[ \PM QV[\IVKM ^IZQIJTM[
IVL UM\PWL[ KWUUWV \W ITT []XMZPMZWM[ QVKT]LQVO  

            IVL
[W WV *]\ \PM 8IV\PMZ5IV []JKTI[[ KIV ILL VM_
UM\PWL[ IVL QV[\IVKM ^IZQIJTM[ WN Q\[ W_V IVL Q\ KIV
W^MZZQLM \PM UM\PWL[ Q\ QVPMZQ\[ NZWU \PM []XMZKTI[[
;]XMZ0MZW

[]XMZKTI[[ 6XSHU+HUR
UWZM IJ[\ZIK\ VXLW
QV[\IVKM ^IZQIJTM[
WLJKWV
VSHFLDO3RZHU [\I\M I\\ZQJ]\M[

XVH6SHFLDO3RZHU UM\PWL[
SXW2Q6XLW JMPI^QWZ
[]JKTI[[M[
UWZM [XMKQNQK
3DQWKHU0DQ 7^MZZQLQVO
)ULHG(JJ0DQ
XVH6SHFLDO3RZHU UM\PWL[
SXW2Q6XLW

.ZQML-OO5IV LWM[V¼\ VMML IVa JMPI^QWZ \PI\¼[ ]VQY]M


[W PM LWM[V¼\ W^MZZQLM IVa UM\PWL[ <PM UM\PWL[ IVL
QV[\IVKM ^IZQIJTM[ QV ;]XMZ0MZW IZM []NNQKQMV\
8IV\PMZ5IV \PW]OP PI[ [XMKQNQK ZMY]QZMUMV\[ NWZ PQ[ []Q\
IVL [XMKQIT XW_MZ[ [W       IVL
  IZM JW\P W^MZZQLLMV QV \PM 8IV\PMZ5IV
KTI[[
1V[\IVKM ^IZQIJTM[ IZM VW\ W^MZZQLLMV JMKI][M \PMa
LWV¼\ VMML \W JM <PMa LWV¼\ LMNQVM IVa [XMKQIT JMPI^QWZ [W I
[]JKTI[[ KIV OQ^M IV QVPMZQ\ML QV[\IVKM ^IZQIJTM IVa ^IT]M Q\
KPWW[M[ 8IV\PMZ5IV KIV [M\ PQ[ QVPMZQ\ML 
 \W
X]ZXTM _PQTM .ZQML-OO5IV [M\[ PQ[ \W _PQ\M
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

)VQVPMZQ\IVKMM`IUXTM" ,LQKHULWHGP\
SXEOLFFODVV'RFWRU^ SURFHGXUHVVR,GLGQ·W
ERWKHUZLWKPHGLFDOVFKRRO
ERROHDQZRUNV$W+RVSLWDO 5HOD[WKLVZRQ·WKXUWDELW
QRZZKHUHGLG,SXWWKDW
YRLGWUHDW3DWLHQW ^ SRZHUVDZ
SHUIRUPDFKHFNXS

`
`

SXEOLFFODVV)DPLO\'RFWRUH[WHQGV'RFWRU^

ERROHDQPDNHV+RXVH&DOOV
YRLGJLYH$GYLFH ^
JLYHKRPHVSXQDGYLFH
`

SXEOLFFODVV6XUJHRQH[WHQGV'RFWRU^

YRLGWUHDW3DWLHQW ^
SHUIRUPVXUJHU\
`

YRLGPDNH,QFLVLRQ ^
PDNHLQFLVLRQ \LNHV
`
`

6KDUSHQ \RXU SHQFLO


[]XMZKTI[[

'RFWRU
+RZPDQ\LQVWDQFHYDULDEOHVGRHV
ZRUNV$W+RVSLWDO WVM QV[\IVKM ^IZQIJTM 6XUJHRQKDYH"
WUHDW3DWLHQW WVM UM\PWL +RZPDQ\LQVWDQFHYDULDEOHVGRHV
)DPLO\'RFWRUKDYH"

+RZPDQ\PHWKRGVGRHV'RFWRUKDYH"
[]JKTI[[M[ +RZPDQ\PHWKRGVGRHV6XUJHRQKDYH"

+RZPDQ\PHWKRGVGRHV)DPLO\'RFWRU
6XUJHRQ )DPLO\'RFWRU
$GGV RQH QHZ KDYH"
2YHUULGHV WKH LQKHULWHG PDNHV+RXVH&DOOV
LQVWDQFH YDULDEOH
WUHDW3DWLHQW PHWKRG WUHDW3DWLHQW &DQD)DPLO\'RFWRUGRWUHDW3DWLHQW "
JLYH$GYLFH $GGV RQH QHZ PHWKRG
$GGV RQH QHZ PHWKRG PDNH,QFLVLRQ &DQD)DPLO\'RFWRUGRPDNH,QFLVLRQ "

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVLJQLQJIRULQKHULWDQFH

4M\¼[LM[QOV\PMQVPMZQ\IVKM\ZMMNWZ
IV)VQUIT[QU]TI\QWVXZWOZIU
)MAGINEYOUREASKEDTODESIGNASIMULATIONPROGRAMTHAT
LETSTHEUSERTHROWABUNCHOFDIFFERENTANIMALSINTOAN
ENVIRONMENTTOSEEWHATHAPPENS7EDONTHAVETOCODETHE
THINGNOW WEREMOSTLYINTERESTEDINTHEDESIGN
7EVEBEENGIVENALISTOFSOMEOFTHEANIMALSTHATWILLBE
INTHEPROGRAM BUTNOTALL7EKNOWTHATEACHANIMALWILL
BEREPRESENTEDBYANOBJECT ANDTHATTHEOBJECTSWILLMOVE
AROUNDINTHEENVIRONMENT DOINGWHATEVERITISTHATEACH
PARTICULARTYPEISPROGRAMMEDTODO
!NDWEWANTOTHERPROGRAMMERSTOBEABLETOADDNEW
KINDSOFANIMALSTOTHEPROGRAMATANYTIME
&IRSTWEHAVETOlGUREOUTTHECOMMON ABSTRACT
CHARACTERISTICSTHATALLANIMALSHAVE ANDBUILDTHOSE
CHARACTERISTICSINTOACLASSTHATALLANIMALCLASSESCANEXTEND

 /RRNIRUREMHFWVWKDWKDYHFRPPRQ
DWWULEXWHVDQGEHKDYLRUV

:KDWGRWKHVHVL[W\SHVKDYHLQ
FRPPRQ"7KLVKHOSV\RXWRDEVWUDFW
RXWEHKDYLRUV VWHS

+RZDUHWKHVHW\SHVUHODWHG"7KLV
KHOSV\RXWRGHÀQHWKHLQKHULWDQFH
WUHHUHODWLRQVKLSV VWHS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

=[QVOQVPMZQ\IVKM\WI^WQL
L]XTQKI\QVOKWLMQV[]JKTI[[M[
7EHAVElVEINSTANCEVARIABLES 
PICTUREnTHElLENAMEREPRESENTINGTHE*0%'OFTHISANIMAL 'HVLJQDFODVVWKDWUHSUHVHQWV
FOODnTHETYPEOFFOODTHISANIMALEATS2IGHTNOW THERE WKHFRPPRQVWDWHDQGEHKDYLRU
CANBEONLYTWOVALUESMEATORGRASS
7KHVHREMHFWVDUHDOODQLPDOVVR
HUNGERnANINTREPRESENTINGTHEHUNGERLEVELOFTHEANIMAL ZH·OOPDNHDFRPPRQVXSHUFODVV
)TCHANGESDEPENDINGONWHENANDHOWMUCH THE FDOOHG$QLPDO
ANIMALEATS :H·OOSXWLQPHWKRGVDQGLQVWDQFH
BOUNDARIESnVALUESREPRESENTINGTHEHEIGHTANDWIDTHOF YDULDEOHVWKDWDOODQLPDOVPLJKW
THE@SPACEFOREXAMPLE X THATTHEANIMALSWILL QHHG
ROAMAROUNDIN
LOCATIONnTHE8AND9COORDINATESFORWHERETHEANIMALIS $QLPDO
INTHESPACE
SLFWXUH
7EHAVEFOURMETHODS IRRG
KXQJHU
MAKE.OISE nBEHAVIORFORWHENTHEANIMALISSUPPOSEDTO
ERXQGDULHV
MAKENOISE ORFDWLRQ
EAT nBEHAVIORFORWHENTHEANIMALENCOUNTERSITS
PREFERREDFOODSOURCE MEATORGRASS PDNH1RLVH
HDW
SLEEP nBEHAVIORFORWHENTHEANIMALISCONSIDEREDASLEEP VOHHS
ROAM nBEHAVIORFORWHENTHEANIMALISNOTEATINGOR URDP
SLEEPINGPROBABLYJUSTWANDERINGAROUNDWAITINGTOBUMP
INTOAFOODSOURCEORABOUNDARY 

/LRQ
VL]H
SLFWXUH :ROI
IRRG VL]H
SUH\ SLFWXUH
IRRG
&DW
SUH\
7LJHU
+LSSR VL]H
VL]H SLFWXUH
VL]H SLFWXUH 'RJ IRRG
SLFWXUH IRRG VL]H SUH\
IRRG SUH\ SLFWXUH
SUH\
IRRG
SUH\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVLJQLQJIRULQKHULWDQFH

,WITTIVQUIT[MI\\PM[IUM_Ia'
!SSUMETHATWEALLAGREEONONETHINGTHEINSTANCE
VARIABLESWILLWORKFORALL!NIMALTYPES!LIONWILL
HAVEHISOWNVALUEFORPICTURE FOODWERETHINKING
MEAT HUNGER BOUNDARIES ANDLOCATION!HIPPO
WILLHAVEDIFFERENTVALUESFORHISINSTANCEVARIABLES
'HFLGHLIDVXEFODVV
BUTHELLSTILLHAVETHESAMEVARIABLESTHATTHEOTHER  QHHGVEHKDYLRUV PHWKRG
!NIMALTYPESHAVE3AMEWITHDOG TIGER ANDSOON
"UTWHATABOUTBEHAVIOR LPSOHPHQWDWLRQV WKDWDUHVSHFLÀF
WRWKDWSDUWLFXODUVXEFODVVW\SH

?PQKPUM\PWL[[PW]TL_MW^MZZQLM' /RRNLQJDWWKH$QLPDOFODVV
ZHGHFLGHWKDWHDW DQG

Licensed by
$OESALIONMAKETHESAMENOISEASADOG$OES PDNH1RLVH VKRXOGEHRYHUULGGHQ
ACATEATLIKEAHIPPO-AYBEINYOURVERSION BUT E\WKHLQGLYLGXDOVXEFODVVHV
INOURS EATINGANDMAKINGNOISEARE!NIMAL TYPE
SPECIlC7ECANTlGUREOUTHOWTOCODETHOSE
METHODSINSUCHAWAYTHATTHEYDWORKFORANY

Eduard Simons
ANIMAL/+ THATSNOTTRUE7ECOULDWRITETHE
MAKE.OISE METHOD FOREXAMPLE SOTHATALLITDOES
ISPLAYASOUNDlLEDElNEDINANINSTANCEVARIABLE
,QWKHGRJ
FORTHATTYPE BUTTHATSNOTVERYSPECIALIZED3OME
ANIMALSMIGHTMAKEDIFFERENTNOISES FRPPXQLW\EDUNLQJLVDQ

104038
FORDIFFERENTSITUATIONSLIKEONE LPSRUWDQWSDUWRIRXUFXOWXUDO
FOREATING ANDANOTHERWHEN ,·PRQHEDG VV LGHQWLW\:HKDYHDXQLTXHVRXQG
BUMPINGINTOANENEMY ETC SODQWHDWHU DQGZHZDQWWKDWGLYHUVLW\WR
EHUHFRJQL]HGDQGUHVSHFWHG
3OJUSTASWITHTHE!MOEBA
OVERRIDINGTHE3HAPECLASSROTATE
METHOD TOGETMOREAMOEBA SPECIlCIN
OTHERWORDS UNIQUE BEHAVIOR WELLHAVE
TODOTHESAMEFOROUR!NIMALSUBCLASSES

$QLPDO
SLFWXUH
IRRG
KXQJHU 
ERXQGDULHV WKHVHWZRPHWKRGV\SHDHFW DQ
:HEHWWHURYHUULGHRW WH DFK DQ LPD OW
ORFDWLRQ
DQGPDNH1RLVH V LILKD HKDYLRUIRUHDWLQJDQGG
GHILQHLWVRZQVSHFRZFE ORRNVOLNHVOHHS DQ
PDNH1RLVH
PDNLQJQRLVH)RUQQHULW
HDW
VOHHS
URDP FDQVWD\JH LF
URDP

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

4WWSQVONWZUWZMQVPMZQ\IVKM
WXXWZ\]VQ\QM[ 
4HECLASSHIERARCHYISSTARTINGTOSHAPEUP7E /RRNIRUPRUHRSSRUWXQLWLHVWRXVH
HAVEEACHSUBCLASSOVERRIDETHEMAKE.OISE AND DEVWUDFWLRQE\ÀQGLQJWZRRUPRUH
EAT METHODS SOTHATTHERESNOMISTAKINGA$OG VXEFODVVHVWKDWPLJKWQHHGFRPPRQ
BARKFROMA#ATMEOWQUITEINSULTINGTOBOTH EHKDYLRU
PARTIES !NDA(IPPOWONTEATLIKEA,ION
:HORRNDWRXUFODVVHVDQGVHH
"UTPERHAPSTHERESMOREWECANDO7EHAVETO
WKDW:ROIDQG'RJPLJKWKDYHVRPH
LOOKATTHESUBCLASSESOF!NIMAL ANDSEEIFTWO EHKDYLRULQFRPPRQDQGWKHVDPHJRHV
ORMORECANBEGROUPEDTOGETHERINSOMEWAY IRU/LRQ7LJHUDQG&DW
ANDGIVENCODETHATSCOMMONTOONLYTHATNEW
GROUP7OLFAND$OGHAVESIMILARITIES3ODO
,ION 4IGER AND#AT

$QLPDO
SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ

PDNH1RLVH
HDW
VOHHS
Q
H ULI/LRKDYH URDP :ROIDQG R
,Z R Q G XOG PD\EHWKH' JDUHERWKF
+PPPUDQG&DWZPR RQ DQLQ
%27+FODVVUHH·VVRPHWKLQJWKDWHV
H
7LJ WKLQJLQFR P VFRXOGXVH
VRPH
/LRQ
VL]H
SLFWXUH :ROI
IRRG
PDNH1RLVH VL]H
SUH\
HDW SLFWXUH
IRRG
PDNH1RLVH
&DW
SUH\
HDW
7LJHU
+LSSR VL]H
VL]H SLFWXUH
VL]H SLFWXUH 'RJ IRRG
PDNH1RLVH
SLFWXUH IRRG
PDNH1RLVH VL]H SUH\
HDW
IRRG
PDNH1RLVH SUH\
HDW SLFWXUH
SUH\
HDW IRRG
PDNH1RLVH
SUH\
HDW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVLJQLQJIRULQKHULWDQFH

 )LQLVKWKHFODVVKLHUDUFK\
6LQFHDQLPDOVDOUHDG\KDYHDQRUJDQL]DWLRQDO $QLPDO
KLHUDUFK\ WKHZKROHNLQJGRPJHQXVSK\OXP
WKLQJ ZHFDQXVHWKHOHYHOWKDWPDNHVWKHPRVW SLFWXUH
VHQVHIRUFODVVGHVLJQ:H·OOXVHWKHELRORJLFDO IRRG
´IDPLOLHVµWRRUJDQL]HWKHDQLPDOVE\PDNLQJD KXQJHU
)HOLQHFODVVDQGD&DQLQHFODVV ERXQGDULHV
ORFDWLRQ
:HGHFLGHWKDW&DQLQHVFRXOGXVHDFRPPRQ
URDP PHWKRGEHFDXVHWKH\WHQGWRPRYHLQ
PDNH1RLVH
SDFNV:HDOVRVHHWKDW)HOLQHVFRXOGXVHD HDW
FRPPRQURDP PHWKRGEHFDXVHWKH\WHQGWR VOHHS
DYRLGRWKHUVRIWKHLURZQNLQG:H·OOOHW+LSSR URDP
FRQWLQXHWRXVHLWVLQKHULWHGURDP PHWKRG³
WKHJHQHULFRQHLWJHWVIURP$QLPDO
6RZH·UHGRQHZLWKWKHGHVLJQIRUQRZZH·OO
FRPHEDFNWRLWODWHULQWKHFKDSWHU

)HOLQH

&DQLQH

URDP

+LSSR
URDP
VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW
/LRQ
VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

'RJ
&DW
VL]H
VL]H SLFWXUH
7LJHU
SLFWXUH IRRG
PDNH1RLVH
VL]H IRRG :ROI SUH\
PDNH1RLVH HDW
SLFWXUH SUH\
HDW VL]H
IRRG
PDNH1RLVH
SUH\ SLFWXUH
HDW IRRG
PDNH1RLVH
SUH\
HDW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

?PQKPUM\PWLQ[KITTML'
4HE7OLFCLASSHASFOURMETHODS/NE
INHERITEDFROM!NIMAL ONEINHERITEDFROM
#ANINEWHICHISACTUALLYANOVERRIDDEN
VERSIONOFAMETHODINCLASS!NIMAL AND
TWOOVERRIDDENINTHE7OLFCLASS7HEN
YOUCREATEA7OLFOBJECTANDASSIGNITTO
AVARIABLE YOUCANUSETHEDOTOPERATOR
ONTHATREFERENCEVARIABLETOINVOKEALL
$QLPDO
FOURMETHODS"UTWHICHVERSIONOFTHOSE
METHODSGETSCALLED PDNH1RLVH
HDW
VOHHS
URDP
PDNHDQHZ:ROIREMHFW :ROIZ QHZ:ROI 

FDOOVWKHYHUVLRQLQ:ROI ZPDNH1RLVH 

ZURDP  &DQLQH
FDOOVWKHYHUVLRQLQ&DQLQH
URDP
FDOOVWKHYHUVLRQLQ:ROI ZHDW 

FDOOVWKHYHUVLRQLQ$QLPDO ZVOHHS 

7HENYOUCALLAMETHODONANOBJECT
:ROI
REFERENCE YOURECALLINGTHEMOSTSPECIlC
VL]H
VERSIONOFTHEMETHODFORTHATOBJECTTYPE PDNH1RLVH
SLFWXUH
HDW
IRRG
)NOTHERWORDS THELOWESTONEWINS
SUH\
h,OWESTvMEANINGLOWESTONTHE
INHERITANCETREE#ANINEISLOWERTHAN
!NIMAL AND7OLFISLOWERTHAN#ANINE
SOINVOKINGAMETHODONAREFERENCE
TOA7OLFOBJECTMEANSTHE*6-STARTS
LOOKINGlRSTINTHE7OLFCLASS)FTHE*6-
DOESNTlNDAVERSIONOFTHEMETHODIN
THE7OLFCLASS ITSTARTSWALKINGBACKUP
THEINHERITANCEHIERARCHYUNTILITlNDSA
MATCH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SUDFWLFHGHVLJQLQJDQLQKHULWDQFHWUHH

<QJ[YNW bX^[ YNWLRU


'UDZDQLQKHULWDQFHGLDJUDPKHUH

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 9OUSAIDTHATTHE*6-STARTS A: 'OODQUESTION"UTYOUDONT 7HERETHEINHERITEDMETHODISDEFINED
WALKINGUPTHEINHERITANCETREE HAVETOWORRYABOUTTHAT4HECOMPILER INOTHERWORDS INWHICHSUPERCLASS
STARTINGATTHECLASSTYPEYOUINVOKED GUARANTEESTHATAPARTICULARMETHOD ITISDEFINED MAKESNODIFFERENCETO
THEMETHODONLIKETHE7OLFEXAMPLE ISCALLABLEFORASPECIFICREFERENCETYPE THECOMPILER"UTATRUNTIME THE*6-
ONTHEPREVIOUSPAGE "UTWHAT BUTITDOESNTSAYORCARE FROMWHICH WILLALWAYSPICKTHERIGHTONE!ND
HAPPENSIFTHE*6-DOESNTEVERlND CLASSTHATMETHODACTUALLYCOMESFROM THERIGHTONEMEANS THEMOSTSPECIFIC
AMATCH ATRUNTIME7ITHTHE7OLFEXAMPLE THE VERSIONFORTHATPARTICULAROBJECT
COMPILERCHECKSFORASLEEP METHOD
BUTDOESNTCARETHATSLEEP ISACTUALLY
DEFINEDINANDINHERITEDFROM CLASS
!NIMAL2EMEMBERTHATIFACLASS
INHERITSAMETHOD ITHASTHEMETHOD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

=[QVO1;)IVL0);)
2EMEMBERTHATWHENONECLASS
INHERITSFROMANOTHER WESAYTHATTHE
SUBCLASSEXTENDSTHESUPERCLASS7HEN
YOUWANTTOKNOWIFONETHINGSHOULD
EXTENDANOTHER APPLYTHE)3 !TEST
4RIANGLE)3 !3HAPE YEAH THATWORKS 'RHV LW PDNH VHQVH WR
#AT)3 !&ELINE THATWORKSTOO VD\D7XE,6$%DWKURRP"2UD
3URGEON)3 !$OCTOR STILLGOOD %DWKURRP,6$7XE":HOOLWGRHVQ·WWR

4UBEXTENDS"ATHROOM SOUNDS PH7KHUHODWLRQVKLSEHWZHHQP\7XE


REASONABLE DQGP\%DWKURRPLV+$6$%DWKURRP
5NTILYOUAPPLYTHE)3 !TEST +$6$7XE7KDWPHDQV%DWKURRP
4OKNOWIFYOUVEDESIGNEDYOURTYPES K D VD7XELQVWDQFHYDULDEOH
CORRECTLY ASK h$OESITMAKESENSETO
SAYTYPE8)3 !TYPE9v)FITDOESNT
YOUKNOWTHERESSOMETHINGWRONG
WITHTHEDESIGN SOIFWEAPPLYTHE)3 !
TEST 4UB)3 !"ATHROOMISDElNITELY
FALSE
7HATIFWEREVERSEITTO"ATHROOM
EXTENDS4UB4HATSTILLDOESNTWORK
"ATHROOM)3 !4UBDOESNTWORK
4UBAND"ATHROOMARERELATED BUT
NOTTHROUGHINHERITANCE4UBAND
"ATHROOMAREJOINEDBYA(!3 !
RELATIONSHIP$OESITMAKESENSETO
SAYh"ATHROOM(!3 !4UBv)FYES
THENITMEANSTHAT"ATHROOMHASA
4UBINSTANCEVARIABLE)NOTHERWORDS
"ATHROOMHASAREFERENCETOA4UB BUT
"ATHROOMDOESNOTEXTEND4UBAND
VICE VERSA

7XE
LQWVL]H
%DWKURRP %XEEOHVE
7XEEDWKWXE %XEEOHV
6LQNWKH6LQN
LQWUDGLXV
LQWFRORU$PW

%DWKURRP+$6$7XEDQG7XE+$6$%XEEOHV
%XWQRERG\LQKHULWVIURP H[WHQGV DQ\ERG\HOVH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[SORLWLQJWKHSRZHURI REMHFWV

*]\_IQ\ <PMZM¼[UWZM
4HE)3 !TESTWORKSANYWHEREINTHEINHERITANCETREE)FYOUR
INHERITANCETREEISWELL DESIGNED THE)3 !TESTSHOULDMAKE
SENSEWHENYOUASKANYSUBCLASSIFIT)3 !ANYOFITSSUPERTYPES

,IFODVV%H[WHQGVFODVV$FODVV%,6$FODVV$
7KLVLVWUXHDQ\ZKHUHLQWKHLQKHULWDQFHWUHH,I
FODVV&H[WHQGVFODVV%FODVV&SDVVHVWKH,6$
WHVWIRUERWK%DQG$

&DQLQHH[WHQGV$QLPDO $QLPDO 7ITHANINHERITANCETREELIKETHE


ONESHOWNHERE YOUREALWAYS
:ROIH[WHQGV&DQLQH PDNH1RLVH ALLOWEDTOSAYh7OLFEXTENDS
HDW !NIMALvORh7OLF)3 !!NIMALv
:ROIH[WHQGV$QLPDO VOHHS
URDP
)TMAKESNODIFFERENCEIF!NIMAL
ISTHESUPERCLASSOFTHESUPERCLASS
OF7OLF)NFACT ASLONGAS!NIMAL
&DQLQH,6$$QLPDO ISSOMEWHEREINTHEINHERITANCE
HIERARCHYABOVE7OLF 7OLF)3 !
:ROI,6$&DQLQH !NIMALWILLALWAYSBETRUE
&DQLQH
:ROI,6$$QLPDO 4HESTRUCTUREOFTHE!NIMAL
INHERITANCETREESAYSTOTHEWORLD
URDP
h7OLF)3 !#ANINE SO7OLFCANDO
ANYTHINGA#ANINECANDO!ND
7OLF)3 !!NIMAL SO7OLFCANDO
ANYTHINGAN!NIMALCANDOv
)TMAKESNODIFFERENCEIF7OLF
OVERRIDESSOMEOFTHEMETHODS
:ROI IN!NIMALOR#ANINE!SFARAS
VL]H
THEWORLDOFOTHERCODE IS
PDNH1RLVH
SLFWXUH CONCERNED A7OLFCANDOTHOSE
HDW
IRRG FOURMETHODS(OWHEDOESTHEM
SUH\ ORINWHICHCLASSTHEYREOVERRIDDEN
MAKESNODIFFERENCE!7OLFCAN
MAKE.OISE EAT SLEEP AND
ROAM BECAUSEA7OLFEXTENDS
FROMCLASS!NIMAL

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

LFN
0DNH LW 6W
E
TSAREBLU RUE
SE S A RE RED VIOLE HEREVERSEISNTT
2O H A P E T
S A3
3QUAREI AR
TSAREDE BEER
S A RE R ED VIOLE RINKSARE
2OSE B U T NOTALLD
0W_LWaW]SVW_QNaW]¼^MOW\ "EERIS A
$RI N K
N E T H A
HEONE
TSHOWST MBER IF
KEO ME
TURN-A NSHIP2E
aW]ZQVPMZQ\IVKMZQOP\' /+ YOUR FTHE)3 !RELATIO KESENSE
S O M A
WAY NES !9MU
ST
DS9 8)3
4HERESOBVIOUSLYMORETOITTHANWHATWEVE 8EX TEN
COVEREDSOFAR BUTWELLLOOKATALOTMORE//
ISSUESINTHENEXTCHAPTERWHEREWEEVENTUALLY
RElNEANDIMPROVEONSOMEOFTHEDESIGNWORK
WEDIDINTHISCHAPTER 
&ORNOW THOUGH AGOODGUIDELINEISTOUSETHE
<QJ[YNW bX^[ YNWLRU
)3 !TEST)Fh8)3 !9vMAKESSENSE BOTHCLASSES
8AND9 SHOULDPROBABLYLIVEINTHESAME 3XW D FKHFN QH[W WR WKH UHODWLRQVKLSV WKDW
INHERITANCEHIERARCHY#HANCESARE THEYHAVE PDNH VHQVH
THESAMEOROVERLAPPINGBEHAVIORS
2YHQ H[WHQGV .LWFKHQ
.HHSLQPLQGWKDWWKH
LQKHULWDQFH,6$UHODWLRQVKLS *XLWDU H[WHQGV ,QVWUXPHQW
ZRUNVLQRQO\RQHGLUHFWLRQ 3HUVRQ H[WHQGV (PSOR\HH
4RIANGLE)3 !3HAPEMAKESSENSE SOYOUCAN
)HUUDUL H[WHQGV (QJLQH
HAVE4RIANGLEEXTEND3HAPE
"UTTHEREVERSEˆ3HAPE)3 !4RIANGLEˆDOES )ULHG(JJ H[WHQGV )RRG
NOTMAKESENSE SO3HAPESHOULDNOTEXTEND %HDJOH H[WHQGV 3HW
4RIANGLE2EMEMBERTHATTHE)3 !RELATIONSHIP
IMPLIESTHATIF8)3 !9 THEN8CANDOANYTHING &RQWDLQHU H[WHQGV -DU
A9CANDOANDPOSSIBLYMORE 
0HWDO H[WHQGV 7LWDQLXP
*UDWHIXO'HDG H[WHQGV %DQG
%ORQGH H[WHQGV 6PDUW
%HYHUDJH H[WHQGV 0DUWLQL

+LQW DSSO\ WKH ,6$ WHVW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKRLQKHULWVZKDW

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 3OWESEEHOWASUBCLASSGETS Q: )NASUBCLASS WHATIF)WANTTO
TOINHERITASUPERCLASSMETHOD BUT 9OUCANDESIGNYOURSUPERCLASS
USE"/4(THESUPERCLASSVERSIONAND
WHATIFTHESUPERCLASSWANTSTOUSE METHODSINSUCHAWAYTHATTHEY
MYOVERRIDINGSUBCLASSVERSIONOFA
THESUBCLASSVERSIONOFTHEMETHOD CONTAINMETHODIMPLEMENTATIONS
METHOD)NOTHERWORDS )DONTWANT
THATWILLWORKFORANYSUBCLASS EVEN
TOCOMPLETELYREPLACETHESUPERCLASS
THOUGHTHESUBCLASSESMAYSTILLNEED
A: !SUPERCLASSWONTNECESSARILY
KNOWABOUTANYOFITSSUBCLASSES
VERSION )JUSTWANTTOADDMORESTUFF
TOIT
TO@APPENDMORECODE)NYOURSUBCLASS
OVERRIDINGMETHOD YOUCANCALLTHE
9OUMIGHTWRITEACLASSANDMUCH SUPERCLASSVERSIONUSINGTHEKEYWORD
LATERSOMEONEELSECOMESALONGAND
EXTENDSIT"UTEVENIFTHESUPERCLASS
A: 9OUCANDOTHIS!NDITSAN
IMPORTANTDESIGNFEATURE4HINKOFTHE
VXSHU)TSLIKESAYING hFIRSTGORUNTHE
SUPERCLASSVERSION THENCOMEBACKAND
CREATORDOESKNOWABOUTANDWANTS FINISHWITHMYOWNCODEv
WORDhEXTENDSvASMEANING h)WANT
TOUSE ASUBCLASSVERSIONOFAMETHOD
TOEXTENDTHEFUNCTIONALITYOFTHE
RI
WKLVFDOOVWKHLQKHULWHGYHUVLRQ
THERESNOSORTOFREVERSEORBACKWARDS
SUPERCLASSv
INHERITANCE4HINKABOUTIT CHILDREN
INHERITFROMPARENTS NOTTHEOTHERWAY
SXEOLFYRLGURDP ^
URDP WKHQFRPHVE DFN WRGR
\RXURZQVXEFODVVVSHFLILFFRGH
VXSHUURDP 
AROUND
P\RZQURDPVWXII
`

?PW OM\[ \PM 8WZ[KPM _PW OM\[ \PM XWZKMTIQV' )KKM[[ TM^MT[ KWV\ZWT _PW [MM[ _PI\ IVL IZM KZ]KQIT
PW_ \W SVW_ _PI\ I []JKTI[[ KIV
PW_\WSVW__PI\I[]JKTI[[KIV \W PI^QVO _MTTLM[QOVML ZWJ][\ 2I^I KWLM .WZ VW_ _M¼TT
QVPMZQ\NZWUQ\[[]XMZKTI[[
QVPMZQ\ NZWU Q\¼[ []XMZKTI[[ NWK][ R][\ WV X]JTQK IVL XZQ^I\M <PM Z]TM[ IZM [QUXTM NWZ
\PW[M \_W"
) []JKTI[[ QVPMZQ\[ UMUJMZ[ WN \PM SXEOLF PHPEHUV DUH LQKHULWHG
[]XMZKTI[[ 5MUJMZ[ QVKT]LM QV[\IVKM SULYDWH PHPEHUV DUH QRW LQKHULWHG
^IZQIJTM[ IVL UM\PWL[ IT\PW]OP TI\MZ QV
\PQ[ JWWS _M¼TT TWWS I\ W\PMZ QVPMZQ\ML UMUJMZ[ )
[]XMZKTI[[ KIV KPWW[M _PM\PMZ WZ VW\ Q\ _IV\[ I ?PMV I []JKTI[[ QVPMZQ\[ I UMUJMZ Q\ Q[ I[ QN \PM
[]JKTI[[ \W QVPMZQ\ I XIZ\QK]TIZ UMUJMZ Ja \PM TM^MT WN []JKTI[[ LMNQVML \PM UMUJMZ Q\[MTN 1V \PM ;PIXM
IKKM[[ \PM XIZ\QK]TIZ UMUJMZ Q[ OQ^MV M`IUXTM ;Y]IZM QVPMZQ\ML \PM   IVL

  UM\PWL[ IVL \W \PM W]\[QLM _WZTL W\PMZ
<PMZM IZM NW]Z IKKM[[ TM^MT[ \PI\ _M¼TT KW^MZ QV \PQ[ JWWS KWLM \PM ;Y]IZM KTI[[ [QUXTa PI[ I   IVL
5W^QVO NZWU UW[\ ZM[\ZQK\Q^M \W TMI[\ \PM NW]Z IKKM[[
  UM\PWL
TM^MT[ IZM" <PM UMUJMZ[ WN I KTI[[ QVKT]LM \PM ^IZQIJTM[ IVL
SULYDWH GHIDXOW SURWHFWHG SXEOLF UM\PWL[ LMNQVML QV \PM KTI[[ XT][ IVa\PQVO QVPMZQ\ML
NZWU I []XMZKTI[[

1RWHJHWPRUHGHWDLOVDERXWGHIDXOWDQGSURWHFWHGLQFKDSWHU
 GHSOR\PHQW DQGDSSHQGL[%
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

?PMVLM[QOVQVO_Q\PQVPMZQ\IVKM
IZMaW]][QVOWZIJ][QVO'
!LTHOUGHSOMEOFTHEREASONSBEHINDTHESERULESWONTBE
REVEALEDUNTILLATERINTHISBOOK FORNOW SIMPLYKNOWINGA
FEWRULESWILLHELPYOUBUILDABETTERINHERITANCEDESIGN

'2USEINHERITANCEWHENONECLASSISAMORESPECIlCTYPE
OFASUPERCLASS%XAMPLE7ILLOWISAMORESPECIlCTYPEOF
4REE SO7ILLOWEXTENDS4REEMAKESSENSE

'2CONSIDERINHERITANCEWHENYOUHAVEBEHAVIOR :MDD=LHGAFLK
IMPLEMENTEDCODE THATSHOULDBESHAREDAMONG ƒ $VXEFODVVH[WHQGVDVXSHUFODVV
MULTIPLECLASSESOFTHESAMEGENERALTYPE%XAMPLE
3QUARE #IRCLE AND4RIANGLEALLNEEDTOROTATEANDPLAY ƒ $VXEFODVVLQKHULWVDOOSXEOLFLQVWDQFH
SOUND SOPUTTINGTHATFUNCTIONALITYINASUPERCLASS3HAPE YDULDEOHVDQGPHWKRGVRIWKHVXSHUFODVVEXW
MIGHTMAKESENSE ANDMAKESFOREASIERMAINTENANCEAND GRHVQRWLQKHULWWKHSULYDWHLQVWDQFHYDULDEOHV
EXTENSIBILITY"EAWARE HOWEVER THATWHILEINHERITANCEIS DQGPHWKRGVRIWKHVXSHUFODVV
ONEOFTHEKEYFEATURESOFOBJECT ORIENTEDPROGRAMMING ƒ ,QKHULWHGPHWKRGVFDQEHRYHUULGGHQLQVWDQFH
ITSNOTNECESSARILYTHEBESTWAYTOACHIEVEBEHAVIORREUSE YDULDEOHVFDQQRWEHRYHUULGGHQ DOWKRXJKWKH\
)TLLGETYOUSTARTED ANDOFTENITSTHERIGHTDESIGNCHOICE FDQEHUHGHILQHGLQWKHVXEFODVVEXWWKDW·V
BUTDESIGNPATTERNSWILLHELPYOUSEEOTHERMORESUBTLE QRWWKHVDPHWKLQJDQGWKHUH·VDOPRVWQHYHUD
ANDmEXIBLEOPTIONS)FYOUDONTKNOWABOUTDESIGN QHHGWRGRLW
PATTERNS AGOODFOLLOW ONTOTHISBOOKWOULDBE(EAD&IRST
$ESIGN0ATTERNS ƒ 8VHWKH,6$WHVWWRYHULI\WKDW\RXU
LQKHULWDQFHKLHUDUFK\LVYDOLG,I;H[WHQGV<
WKHQ;,6$<PXVWPDNHVHQVH
'2127USEINHERITANCEJUSTSOTHATYOUCANREUSE
CODEFROMANOTHERCLASS IFTHERELATIONSHIPBETWEENTHE ƒ 7KH,6$UHODWLRQVKLSZRUNVLQRQO\RQH
SUPERCLASSANDSUBCLASSVIOLATEEITHEROFTHEABOVETWO GLUHFWLRQ$+LSSRLVDQ$QLPDOEXWQRWDOO
RULES&OREXAMPLE IMAGINEYOUWROTESPECIALPRINTING $QLPDOVDUH+LSSRV
CODEINTHE!LARMCLASSANDNOWYOUNEEDPRINTINGCODE ƒ :KHQDPHWKRGLVRYHUULGGHQLQDVXEFODVV
INTHE0IANOCLASS SOYOUHAVE0IANOEXTEND!LARMSOTHAT DQGWKDWPHWKRGLVLQYRNHGRQDQLQVWDQFHRI
0IANOINHERITSTHEPRINTINGCODE4HATMAKESNOSENSE! WKHVXEFODVVWKHRYHUULGGHQYHUVLRQRIWKH
0IANOISNOTAMORESPECIlCTYPEOF!LARM3OTHEPRINTING PHWKRGLVFDOOHG 7KHORZHVWRQHZLQV
CODESHOULDBEINA0RINTERCLASS THATALLPRINTABLEOBJECTS
CANTAKEADVANTAGEOFVIAA(!3 !RELATIONSHIP ƒ ,IFODVV%H[WHQGV$DQG&H[WHQGV%FODVV
%,6$FODVV$DQGFODVV&,6$FODVV%DQG
FODVV&DOVR,6$FODVV$
'2127USEINHERITANCEIFTHESUBCLASSANDSUPERCLASS
DONOTPASSTHE)3 !TEST!LWAYSASKYOURSELFIFTHESUBCLASS
)3 !MORESPECIlCTYPEOFTHESUPERCLASS%XAMPLE4EA)3
!"EVERAGEMAKESSENSE"EVERAGE)3 !4EADOESNOT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[SORLWLQJWKHSRZHURI REMHFWV

;W_PI\LWM[ITT\PQ[
QVPMZQ\IVKMZMITTaJ]aaW]'
9OUGETALOTOF//MILEAGEBYDESIGNING
WITHINHERITANCE9OUCANGETRIDOFDUPLICATE
CODEBYABSTRACTINGOUTTHEBEHAVIORCOMMON
TOAGROUPOFCLASSES ANDSTICKINGTHATCODE
 <RXDYRLGGXSOLFDWH
INASUPERCLASS4HATWAY WHENYOUNEEDTO
MODIFYIT YOUHAVEONLYONEPLACETOUPDATE FRGH
ANDTHECHANGEISMAGICALLYREmECTEDINALLTHE 3XWFRPPRQFRGHLQRQHSODFHDQGOHW
CLASSESTHATINHERITTHATBEHAVIOR7ELL THERES WKHVXEFODVVHVLQKHULWWKDWFRGHIURPD
NOMAGICINVOLVED BUTITISPRETTYSIMPLE
VXSHUFODVV:KHQ\RXZDQWWRFKDQJHWKDW

Licensed by
MAKETHECHANGEANDCOMPILETHECLASS
AGAIN4HATSIT9OUDONTHAVETOTOUCHTHE EHKDYLRU\RXKDYHWRPRGLI\LWLQRQO\
SUBCLASSES RQHSODFHDQGHYHU\ERG\HOVH LHDOOWKH
VXEFODVVHV VHHWKHFKDQJH
*USTDELIVERTHENEWLY CHANGEDSUPERCLASS AND

Eduard Simons
ALLCLASSESTHATEXTENDITWILLAUTOMATICALLYUSE
THENEWVERSION  <RXGHÀQHDFRPPRQ
!*AVAPROGRAMISNOTHINGBUTAPILEOFCLASSES SURWRFROIRUDJURXSRI
SOTHESUBCLASSESDONTHAVETOBERECOMPILED
INORDERTOUSETHENEWVERSIONOFTHE
FODVVHV

104038
SUPERCLASS!SLONGASTHESUPERCLASSDOESNT 8PZKDW
BREAKANYTHINGFORTHESUBCLASS EVERYTHINGS WKHKHFNGRHV
7+$7PHDQ"
lNE7ELLDISCUSSWHATTHEWORD@BREAK
MEANSINTHISCONTEXT LATERINTHEBOOK&OR
NOW THINKOFITASMODIFYINGSOMETHINGIN
THESUPERCLASSTHATTHESUBCLASSISDEPENDING
ON LIKEAPARTICULARMETHODSARGUMENTSOR
RETURNTYPE ORMETHODNAME ETC

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

1VPMZQ\IVKMTM\[aW]O]IZIV\MM\PI\
ITTKTI[[M[OZW]XML]VLMZIKMZ\IQV
[]XMZ\ aXMPI^MITT\PMUM\PWL[\PI\
\PM[]XMZ\ aXMPI[
1VW\PMZ_WZL[aW]LMNQVMIKWUUWVXZW\WKWTNWZI $QG,FDUHEHFDXVH
[M\WNKTI[[M[ZMTI\ML\PZW]OPQVPMZQ\IVKM
"ECAUSEYOUGETTOTAKEADVANTAGEOF
7HENYOUDElNEMETHODSINASUPERCLASS THATCANBE POLYMORPHISM
INHERITEDBYSUBCLASSES YOUREANNOUNCINGAKINDOF
PROTOCOLTOOTHERCODETHATSAYS h!LLMYSUBTYPESIE
SUBCLASSES CANDOTHESETHINGS WITHTHESEMETHODS :KLFKPDWWHUVWRPH
THATLOOKLIKETHISv EHFDXVH
)NOTHERWORDS YOUESTABLISHACONTRACT "ECAUSEY OUGETTOREFERTOASUBCLASS
#LASS!NIMALESTABLISHESACOMMONPROTOCOLFORALL OBJECTUSINGAREFERENCEDECLAREDASTHE
!NIMALSUBTYPES SUPERTYPE

RUOGWKDW
$QLPDO
$QGWKDWPHDQVWRPH
<RX·UHWHOOLQJWKHZ HVHIRXU
PDNH1RLVH
DQ\$QLPDOFDQGRWKWKHPHWKRG 9OUGETTOWRITEREALLYmEXIBLECODE
WKLQJV7KDWLQFOXGHVQW\SHV
HDW
VOHHS #ODETHATSCLEANERMOREEFlCIENT
URDP DUJXPHQWVDQGUHWXU SIMPLER #ODETHATSNOTJUSTEASIERTO
DEVELOP BUTALSOMUCH MUCHEASIERTO
EXTEND INWAYSYOUNEVERIMAGINEDAT
!NDREMEMBER WHENWESAYANY!NIMAL WEMEAN THETIMEYOUORIGINALLYWROTEYOURCODE
!NIMALANDANYCLASSTHATEXTENDSFROM!NIMAL7HICH 4HATMEANSYOUCANTAKETHATTROPICAL
AGAINMEANS ANYCLASSTHATHAS!NIMALSOMEWHEREABOVEIT VACATIONWHILEYOURCO WORKERSUPDATE
INTHEINHERITANCEHIERARCHY THEPROGRAM ANDYOURCO WORKERSMIGHT
"UTWERENOTEVENATTHEREALLYCOOLPARTYET BECAUSE NOTEVENNEEDYOURSOURCECODE
WESAVEDTHEBESTˆPOLYMORPHISMˆFORLAST
9OULLSEEHOWITWORKSONTHENEXTPAGE
7HENYOUDElNEASUPERTYPEFORAGROUPOFCLASSES
ANYSUBCLASSOFTHATSUPERTYPECANBESUBSTITUTEDWHERETHE 7EDONTKNOWABOUTYOU BUT
SUPERTYPEISEXPECTED PERSONALLY WElNDTHEWHOLE
TROPICALVACATIONTHING
3AY WHAT
PARTICULARLYMOTIVATING
$ONTWORRY WERENOWHERENEARDONEEXPLAININGIT
4WOPAGESFROMNOW YOULLBEANEXPERT

:KHQZHVD\´DOOWKHPHWKRGVµZHPHDQ´DOOWKHLQKHULWDEOHPHWKRGVµZKLFK
IRUQRZDFWXDOO\PHDQV´DOOWKHSXEOLFPHWKRGVµDOWKRXJKODWHUZH·OOUHILQHWKDW
GHILQLWLRQDELWPRUH
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHZD\SRO\PRUSKLVPZRUNV

7KHVWHSVRIREMHFW
GHFODUDWLRQDQGDVVLJQPHQW

 
7RVHHKRZSRO\PRUSKLVP 
ZRUNVZHKDYHWRVWHSEDFN 'RJP\'RJ QHZ'RJ 
DQGORRNDWWKHZD\ZH
QRUPDOO\GHFODUHDUHIHUHQFH
DQGFUHDWHDQREMHFW 'HFODUHDUHIHUHQFH
 YDULDEOH

'RJP\'RJ QHZ'RJ 
4ELLSTHE*6-TOALLOCATESPACEFORA
REFERENCEVARIABLE4HEREFERENCEVARIABLE
IS FOREVER OFTYPE$OG)NOTHERWORDS eq<g_
AREMOTECONTROLTHATHASBUTTONSTO
CONTROLA$OG BUTNOTA#ATORA"UTTON
ORA3OCKET 'RJ

 &UHDWHDQREMHFW
'RJP\'RJ QHZ'RJ 
4ELLSTHE*6-TOALLOCATESPACEFOR
ANEW$OGOBJECTONTHEGARBAGE
COLLECTIBLEHEAP

'RJREMHFW

/LQNWKHREMHFW
 DQGWKHUHIHUHQFH
'RJP\'RJ QHZ'RJ 
!SSIGNSTHENEW$OGTOTHEREFER
ENCEVARIABLEMY$OG)NOTHERWORDS
PROGRAMTHEREMOTECONTROL

'RJREMHFW
eq<g_

'RJ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

7KHLPSRUWDQWSRLQWLVWKDWWKH
UHIHUHQFHW\SH$1'WKHREMHFW
W\SHDUHWKHVDPH
,QWKLVH[DPSOHERWKDUH'RJ

eq<g_ 'R
JREMHFW
'RJ

7KHVHWZRDUHWKHVDPHW\SH7KHUHIHUHQFH
YDULDEOHW\SHLVGHFODUHGDV'RJDQGWKHREMHFW
LVFUHDWHGDVQHZ'RJ 

%XWZLWKSRO\PRUSKLVPWKH
UHIHUHQFHDQGWKHREMHFWFDQ
EHGLIIHUHQW
$QLPDOP\'RJ QHZ'RJ 

eq<g_ 'R
JREMHFW
$QLPDO

7KHVHWZRDUH127WKHVDPHW\SH7KH
UHIHUHQFHYDULDEOHW\SHLVGHFODUHGDV$QLPDO
EXWWKHREMHFWLVFUHDWHGDVQHZ'RJ 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SRO\PRUSKLVPLQDFWLRQ

:LWKSRO\PRUSKLVPWKHUHIHUHQFH
W\SHFDQEHDVXSHUFODVVRIWKH
DFWXDOREMHFWW\SH XKQRSH
6WLOOQRWJHWWLQ·LW
7HENYOUDECLAREAREFERENCEVARIABLE
ANYOBJECTTHATPASSESTHE)3 !TESTFORTHE
DECLAREDTYPEOFTHEREFERENCEVARIABLE
CANBEASSIGNEDTOTHATREFERENCE)N
OTHERWORDS ANYTHINGTHATEXTENDSTHE
DECLAREDREFERENCEVARIABLETYPECAN
BEASSIGNEDTOTHEREFERENCE
VARIABLE4HISLETSYOUDO
THINGSLIKEMAKEPOLYMORPHIC
ARRAYS

GV
Q LPD O  ,Q  RWKHUZRDUO
W\SH$ $QLP
2.2.PD\EHDQH[DPSOHZLOOKHOS
H FOD U H  D Q DUUD\RIKROGREMHFWVRIW\SH
' KDWZLOO
DQDUUD\W
$QLPDO>@DQLPDOV QHZ$QLPDO>@

DQLPDOV>@ QHZ'RJ 

%XWORRNZKDW\RXJHWWRGR\RXFDQSXW$1<
DQLPDOV>@ QHZ&DW 

DQLPDOV>@ QHZ:ROI  VXEFODVVRI$QLPDOLQWKH$QLPDODUUD\


DQLPDOV>@ QHZ+LSSR 

DQLPDOV>@ QHZ/LRQ  $QGKHUH·VW


UDLVRQG·rWU KHEHVWSRO\PRUSKLFSD
JHWWRORRSWHIRUWKHZKROHH[DPSOHUW WKH
RIWKH$QLP KURXJKWKHDUUD\DQG \RX
REMHFWGRHV DOFODVVPHWKRGVDQGHFDOORQH
IRU LQWL LDQLPDOVOHQJWKL ^
WKHULJKWWK YHU\
 LQJ
DQLPDOV>L@HDW 

 :KHQ¶L·LVD'RJLVDWLQGH[LQWKHDUUD\VR
DQLPDOV>L@URDP  \RXJHWWKH'RJ·VHDW PHWKRG:KHQ¶L·LV\RX
JHWWKH&DW·VHDW PHWKRG
`
6DPHZLWKURDP 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

%XWZDLW7KHUH·VPRUH
<RXFDQKDYHSRO\PRUSKLF
DUJXPHQWVDQGUHWXUQW\SHV
)FYOUCANDECLAREAREFERENCEVARIABLE
OFASUPERTYPE SAY !NIMAL ANDASSIGNA
SUBCLASSOBJECTTOIT SAY $OG THINKOFHOW
THATMIGHTWORKWHENTHEREFERENCEISAN
ARGUMENTTOAMETHOD

FODVV9HW^
Y
SXEOLFYRLGJLYH6KRW $QLPDOD ^
7KH$QLPDOSDU
GRKRUULEOHWKLQJVWRWKH$QLPDODW $QLPDOW\SHDVWDPKHHWHUFDQWDNH$1<
WKHRWKHUHQGRIWKHµD¶SDUDPHWHU WKH9HWLVGRQHJL DUJXPHQW$QGZKHQ
$QLPDOWRPDNH1RLYLQJWKHVKRWLWWHOOVWKH
DPDNH1RLVH  LVUHDOO\RXWWKHUH VH DQGZKDWHYHU$QLPDO
ZKRVHPDNH1RLVH P RQWKHKHDSWKDW·
` HWKRGZLOOUXQ V
`

FODVV3HW2ZQHU^
KRGFDQWDNHDQ\
SXEOLFYRLGVWDUW ^
7KH9HW·VJLYH6KRW PHWQJDVWKHREMHFW
9HWY QHZ9HW  $QLPDO\RXJLYHLW$VORPHQWLVDVXEFODVVRI
\RXSDVVLQDVWKHDUJX
'RJG QHZ'RJ  $QLPDOLWZLOOZRUN
+LSSRK QHZ+LSSR 

YJLYH6KRW G  'RJ·VPDNH1RLVH UXQV


YJLYH6KRW K  +LSSR·VPDNH1RLVH UXQV
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[SORLWLQJWKHSRZHURI SRO\PRUSKLVP

12:,JHWLW,I,ZULWH
P\FRGHXVLQJSRO\PRUSKLFDUJXPHQWV
ZKHUH,GHFODUHWKHPHWKRGSDUDPHWHUDVD
VXSHUFODVVW\SH,FDQSDVVLQDQ\VXEFODVVREMHFWDW
UXQWLPH&RRO%HFDXVHWKDWDOVRPHDQV,FDQZULWHP\
FRGHJRRQYDFDWLRQDQGVRPHRQHHOVHFDQDGGQHZ
VXEFODVVW\SHVWRWKHSURJUDPDQGP\PHWKRGVZLOO
VWLOOZRUN WKHRQO\GRZQVLGHLV,·PMXVWPDNLQJOLIH
HDVLHUIRUWKDWLGLRW-LP 

?Q\PXWTaUWZXPQ[UaW]KIV_ZQ\MKWLM\PI\LWM[V¼\
PI^M\WKPIVOM_PMVaW]QV\ZWL]KMVM_[]JKTI[[
\aXM[QV\W\PMXZWOZIU
2EMEMBERTHAT6ETCLASS)FYOUWRITETHAT6ETCLASSUSING
ARGUMENTSDECLAREDASTYPE!NIMAL YOURCODECANHANDLEANY
!NIMALSUBCLASS4HATMEANSIFOTHERSWANTTOTAKEADVANTAGEOF
YOUR6ETCLASS ALLTHEYHAVETODOISMAKESURETHEIRNEW!NIMAL
TYPESEXTENDCLASS!NIMAL4HE6ETMETHODSWILLSTILLWORK EVEN
THOUGHTHE6ETCLASSWASWRITTENWITHOUTANYKNOWLEDGEOFTHE
NEW!NIMALSUBTYPESTHE6ETWILLBEWORKINGON

YiX`e
gfn\i
7HYISPOLYMORPHISMGUARANTEEDTOWORKTHISWAY7HYIS
ITALWAYSSAFETOASSUMETHATANYSUBCLASSTYPEWILLHAVETHE
METHODSYOUTHINKYOURECALLINGONTHESUPERCLASSTYPETHE
SUPERCLASSREFERENCETYPEYOUREUSINGTHEDOTOPERATORON 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: !RETHEREANYPRACTICALLIMITS Q: #ANYOUEXTENDANYCLASS/R Q: 7HYWOULDYOUEVERWANTTO
ONTHELEVELSOFSUBCLASSING(OW ISITLIKECLASSMEMBERSWHEREIFTHE MAKEAlNALCLASS7HATADVANTAGE
DEEPCANYOUGO CLASSISPRIVATEYOUCANTINHERITIT WOULDTHEREBEINPREVENTINGACLASS
FROMBEINGSUBCLASSED
A: )FYOULOOKINTHE*AVA!0) A:
YOULLSEETHATMOSTINHERITANCE
HIERARCHIESAREWIDEBUTNOTDEEP
4HERESNOSUCHTHINGASA
PRIVATECLASS EXCEPTINAVERYSPECIAL
CASECALLEDANINNERCLASS THATWE
A: 4YPICALLY YOUWONTMAKEYOUR
CLASSESFINAL"UTIFYOUNEEDSECURITY
-OSTARENOMORETHANONEORTWO HAVENTLOOKEDATYET"UTTHEREARE ˆTHESECURITYOFKNOWINGTHATTHE
LEVELSDEEP ALTHOUGHTHEREARE THREETHINGSTHATCANPREVENTACLASS METHODSWILLALWAYSWORKTHEWAY
EXCEPTIONSESPECIALLYINTHE'5) FROMBEINGSUBCLASSED THATYOUWROTETHEMBECAUSETHEY
CLASSES 9OULLCOMETOREALIZETHAT
4HEFIRSTISACCESSCONTROL%VENTHOUGH CANTBEOVERRIDDEN AFINALCLASS
ITUSUALLYMAKESMORESENSETOKEEP
ACLASSCANTBEMARKEDSULYDWH A WILLGIVEYOUTHAT!LOTOFCLASSESIN
YOURINHERITANCETREESSHALLOW BUT
CLASSCANBENON PUBLICWHATYOU THE*AVA!0)AREFINALFORTHATREASON
THEREISNTAHARDLIMITWELL NOTONE
GETIFYOUDONTDECLARETHECLASSAS 4HE3TRINGCLASS FOREXAMPLE ISFINAL
THATYOUDEVERRUNINTO  BECAUSE WELL IMAGINETHEHAVOCIF
SXEOLF !NON PUBLICCLASSCANBE
SUBCLASSEDONLYBYCLASSESINTHE SOMEBODYCAMEALONGANDCHANGED
Q: (EY )JUSTTHOUGHTOF
SOMETHINGIFYOUDONTHAVE
SAMEPACKAGEASTHECLASS#LASSESIN
ADIFFERENTPACKAGEWONTBEABLETO
THEWAY3TRINGSBEHAVE

ACCESSTOTHESOURCECODEFORACLASS
BUTYOUWANTTOCHANGETHEWAYA
SUBCLASSOREVENUSE FORTHATMATTER
THENON PUBLICCLASS
Q: #ANYOUMAKEAMETHODlNAL
WITHOUTMAKINGTHEWHOLECLASS
METHODOFTHATCLASSWORKS COULD 4HESECONDTHINGTHATSTOPSACLASS lNAL
YOUUSESUBCLASSINGTODOTHAT4O FROMBEINGSUBCLASSEDISTHEKEYWORD
EXTENDTHEhBADvCLASSANDOVERRIDE MODIFIER¿QDO!FINALCLASSMEANS
THEMETHODWITHYOUROWNBETTER
CODE
THATITSTHEENDOFTHEINHERITANCE
LINE.OBODY EVER CANEXTENDAFINAL
A: )FYOUWANTTOPROTECTASPECIFIC
METHODFROMBEINGOVERRIDDEN MARK
CLASS THEMETHODWITHTHE¿QDOMODIFIER

A: 9EP4HATSONECOOLFEATURE
OF// ANDSOMETIMESITSAVESYOU
4HETHIRDISSUEISTHATIFACLASSHAS
ONLYSULYDWHCONSTRUCTORSWELL
-ARKTHEWHOLECLASSASFINALIFYOU
WANTTOGUARANTEETHATNONEOFTHE
LOOKATCONSTRUCTORSINCHAPTER IT METHODSINTHATCLASSWILLEVERBE
FROMHAVINGTOREWRITETHECLASS OVERRIDDEN
CANTBESUBCLASSED
FROMSCRATCH ORTRACKDOWNTHE
PROGRAMMERWHOHIDTHESOURCECODE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RYHUULGLQJPHWKRGV

3MMXQVO\PMKWV\ZIK\"Z]TM[NWZW^MZZQLQVO
7HENYOUOVERRIDEAMETHODFROMASUPERCLASS YOUREAGREEINGTO
FULlLLTHECONTRACT4HECONTRACTTHATSAYS FOREXAMPLE h)TAKENO
ARGUMENTSAND)RETURNABOOLEANv)NOTHERWORDS THEARGUMENTS $SSOLDQFH
ANDRETURNTYPESOFYOUROVERRIDINGMETHODMUSTLOOKTOTHEOUTSIDE
WORLDEXACTLYLIKETHEOVERRIDDENMETHODINTHESUPERCLASS ERROHDQWXUQ2Q
4HEMETHODSARETHECONTRACT ERROHDQWXUQ2II
)FPOLYMORPHISMISGOINGTOWORK THE4 OASTERSVERSIONOFTHE
OVERRIDDENMETHODFROM!PPLIANCEHASTOWORKATRUNTIME
2EMEMBER THECOMPILERLOOKSATTHEREFERENCETYPETODECIDE
WHETHERYOUCANCALLAPARTICULARMETHODONTHATREFERENCE7ITH
AN!PPLIANCEREFERENCETOA4OASTER THECOMPILERCARESONLYIFCLASS
!PPLIANCEHASTHEMETHODYOUREINVOKINGONAN!PPLIANCEREFERENCE 7RDVWHU
"UTATRUNTIME THE*6-LOOKSNOTATTHEREFERENCETYPE!PPLIANCE BUT
ATTHEACTUAL4OASTEROBJECTONTHEHEAP3OIFTHECOMPILERHASALREADY ERROHDQWXUQ2Q LQWOHYHO
APPROVEDTHEMETHODCALL THEONLYWAYITCANWORKISIFTHEOVERRIDING
 LV  1 2 7  DQ
METHODHASTHESAMEARGUMENTSANDRETURNTYPES/THERWISE 7KLV H 
RYHUULG
SOMEONEWITHAN!PPLIANCEREFERENCEWILLCALLTURN/N ASANO
JHWKH
ARGMETHOD EVENTHOUGHTHERESAVERSIONIN4OASTERTHATTAKESAN &DQ·WFQKWDVQ LQDQ
INT7HICHONEISCALLEDATRUNTIME4HEONEIN!PPLIANCE)NOTHER DUJXPH LQJPHWKRG
WORDS THETURN/NINTLEVEL METHODIN4OASTERISNOTANOVERRIDE RYHUULG 7KLVLVDFWXDOO\DOHJDO
RYHU/2$'EXWQRWD
RYHU5,'( Q
 $UJXPHQWVPXVWEHWKHVDPHDQGUHWXUQ
W\SHVPXVWEHFRPSDWLEOH
7KHFRQWUDFWRIVXSHUFODVVGH¿QHVKRZRWKHUFRGHFDQXVHDPHWKRG
:KDWHYHUWKHVXSHUFODVVWDNHVDVDQDUJXPHQWWKHVXEFODVVRYHU
ULGLQJWKHPHWKRGPXVWXVHWKDWVDPHDUJXPHQW$QGZKDWHYHUWKH
VXSHUFODVVGHFODUHVDVDUHWXUQW\SHWKHRYHUULGLQJPHWKRGPXVWGH $SSOLDQFH
FODUHHLWKHUWKHVDPHW\SHRUDVXEFODVVW\SH5HPHPEHUDVXEFODVV
REMHFWLVJXDUDQWHHGWREHDEOHWRGRDQ\WKLQJLWVVXSHUFODVVGHFODUHV SXEOLFERROHDQWXUQ2Q
VRLW¶VVDIHWRUHWXUQDVXEFODVVZKHUHWKHVXSHUFODVVLVH[SHFWHG
SXEOLFERROHDQWXUQ2Q
 7KHPHWKRGFDQ·WEHOHVVDFFHVVLEOH
7KDWPHDQVWKHDFFHVVOHYHOPXVWEHWKHVDPHRUIULHQGOLHU7KDW
PHDQV\RXFDQ¶WIRUH[DPSOHRYHUULGHDSXEOLFPHWKRGDQGPDNH
LWSULYDWH:KDWDVKRFNWKDWZRXOGEHWRWKHFRGHLQYRNLQJZKDWLW

127/(*$/
WKLQNV DWFRPSLOHWLPH LVDSXEOLFPHWKRGLIVXGGHQO\DWUXQWLPH
WKH-90VODPPHGWKHGRRUVKXWEHFDXVHWKHRYHUULGLQJYHUVLRQ 7RDVWHU
FDOOHGDWUXQWLPHLVSULYDWH ·V Q R W D O H J DO
,W FDXVH\RXVV
6RIDUZH¶YHOHDUQHGDERXWWZRDFFHVVOHYHOVSULYDWHDQGSXEOLF RYHUULGHEGHW KHDFFH SULYDWHERROHDQWXUQ2Q
7KHRWKHUWZRDUHLQWKHGHSOR\PHQWFKDSWHU 5HOHDVH\RXU&RGH  UHVWULFWH LVLWDOHJDO
DQGDSSHQGL[%7KHUH¶VDOVRDQRWKHUUXOHDERXWRYHUULGLQJUHODWHG OHYHO1RU'EHFDXVH
WRH[FHSWLRQKDQGOLQJEXWZH¶OOZDLWXQWLOWKHFKDSWHURQH[FHSWLRQV RYHU/2$·WFKDQJH
5LVN\%HKDYLRU WRFRYHUWKDW \RXGLGQ V
DUJXPHQW
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

7^MZTWILQVOIUM\PWL
-ETHODOVERLOADINGISNOTHINGMORETHANHAVING
TWOMETHODSWITHTHESAMENAMEBUTDIFFERENT
ARGUMENTLISTS0ERIOD4HERESNOPOLYMORPHISM
INVOLVEDWITHOVERLOADEDMETHODS $QRYHUORDGHGPHWKRGLV
/VERLOADINGLETSYOUMAKEMULTIPLEVERSIONS
OFAMETHOD WITHDIFFERENTARGUMENTLISTS FOR MXVWDGLIIHUHQWPHWKRGWKDW
CONVENIENCETOTHECALLERS&OREXAMPLE IFYOU KDSSHQVWRKDYHWKHVDPH
HAVEAMETHODTHATTAKESONLYANINT THECALLING
CODEHASTOCONVERT SAY ADOUBLEINTOANINT PHWKRGQDPH,WKDVQRWKLQJ
BEFORECALLINGYOURMETHOD"UTIFYOUOVERLOADED WRGRZLWKLQKHULWDQFHDQG
THEMETHODWITHANOTHERVERSIONTHATTAKESA
DOUBLE THENYOUVEMADETHINGSEASIERFORTHE SRO\PRUSKLVP$QRYHUORDGHG
CALLER9OULLSEEMOREOFTHISWHENWELOOKINTO
CONSTRUCTORSINTHEOBJECTLIFECYCLECHAPTER PHWKRGLV127WKHVDPHDV
3INCEANOVERLOADINGMETHODISNTTRYINGTO DQRYHUULGGHQPHWKRG
FULlLLTHEPOLYMORPHISMCONTRACTDElNEDBYITS
SUPERCLASS OVERLOADEDMETHODSHAVEMUCHMORE
mEXIBILITY

 7KHUHWXUQW\SHVFDQEH /HJDOH[DPSOHVRIPHWKRG
GLIIHUHQW RYHUORDGLQJ
<RX¶UHIUHHWRFKDQJHWKHUHWXUQW\SHVLQ SXEOLFFODVV2YHUORDGV^
RYHUORDGHGPHWKRGVDVORQJDVWKHDUJXPHQWOLVWV
DUHGLIIHUHQW 6WULQJXQLTXH,'

 <RXFDQ·WFKDQJH21/<WKH SXEOLFLQWDGG1XPV LQWDLQWE ^


UHWXUQDE
UHWXUQW\SH `
,IRQO\WKHUHWXUQW\SHLVGLIIHUHQWLW¶VQRWD
YDOLGRYHUORDG²WKHFRPSLOHUZLOODVVXPH SXEOLFGRXEOHDGG1XPV GRXEOHDGRXEOHE ^
\RX¶UHWU\LQJWRRYHUULGHWKHPHWKRG$QGHYHQ UHWXUQDE
WKDWZRQ¶WEHOHJDOXQOHVVWKHUHWXUQW\SHLV `
DVXEW\SHRIWKHUHWXUQW\SHGHFODUHGLQWKH
VXSHUFODVV7RRYHUORDGDPHWKRG\RX0867 SXEOLFYRLGVHW8QLTXH,' 6WULQJWKH,' ^
FKDQJHWKHDUJXPHQWOLVWDOWKRXJK\RXFDQ ORWVRIYDOLGDWLRQFRGHDQGWKHQ
FKDQJHWKHUHWXUQW\SHWRDQ\WKLQJ XQLTXH,' WKH,'
`

 <RXFDQYDU\WKHDFFHVV SXEOLFYRLGVHW8QLTXH,' LQWVV1XPEHU ^


OHYHOVLQDQ\GLUHFWLRQ 6WULQJQXP6WULQJ ³´VV1XPEHU
VHW8QLTXH,' QXP6WULQJ 
<RX¶UHIUHHWRRYHUORDGDPHWKRGZLWKDPHWKRG `
WKDW¶VPRUHUHVWULFWLYH,WGRHVQ¶WPDWWHUVLQFHWKH `
QHZPHWKRGLVQ¶WREOLJDWHGWRIXO¿OOWKHFRQWUDFWRI
WKHRYHUORDGHGPHWKRG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH0L[HG0HVVDJHV
!SHORT*AVAPROGRAMISLISTEDBELOW/NEBLOCKOF
8Q[HG THEPROGRAMISMISSING9OURCHALLENGEISTOMATCH
MInZAJM[ THECANDIDATEBLOCKOFCODEONTHELEFT WITHTHE
OUTPUTTHATYOUDSEEIFTHEBLOCKWEREINSERTED
.OTALLTHELINESOFOUTPUTWILLBEUSED ANDSOMEOF
1dQ^OU_Q D   THELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE
E   $RAWLINESCONNECTINGTHECANDIDATEBLOCKSOF
D  
CODEWITHTHEIRMATCHINGCOMMAND LINEOUTPUT
\PMXZWOZIU"

FODVV$^ FODVV&H[WHQGV%^
LQWLYDU  YRLGP ^
YRLGP ^ 6\VWHPRXWSULQW ´&·VP´ LYDU 
6\VWHPRXWSULQW ´$·VP´  `
` `

Licensed by
YRLGP ^
6\VWHPRXWSULQW ´$·VP´  SXEOLFFODVV0L[HG^
` SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
YRLGP ^ $D QHZ$ 
6\VWHPRXWSULQW ´$·VP´  %E QHZ% 

Eduard Simons
` &F QHZ& 
` $D QHZ&  KIVLQLI\MKWLM
OWM[PMZM
FODVV%H[WHQGV$^
\PZMMTQVM[

104038
YRLGP ^
6\VWHPRXWSULQW ´%·VP´ 
` `
` `

KWLM EP  W]\X]\"


KIVLQLI\M["
FP 
DP  ` $·VP$·VP&·VP

%·VP$·VP$·VP

`
FP 
FP  $·VP%·VP$·VP
FP 
%·VP$·VP&·VP

`
DP 
EP  %·VP&·VP$·VP
FP  %·VP$·VP&·VP

`
DP  $·VP$·VP&·VP
DP 
DP 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

"%THE#OMPILER
:KLFKRIWKH$%SDLUVRIPHWKRGVOLVWHGRQWKHULJKWLI
1dQ^OU_Q LQVHUWHGLQWRWKHFODVVHVRQWKHOHIWZRXOGFRPSLOHDQG
SURGXFHWKHRXWSXWVKRZQ" 7KH$PHWKRGLQVHUWHGLQWR
FODVV0RQVWHUWKH%PHWKRGLQVHUWHGLQWRFODVV9DPSLUH

SXEOLFFODVV0RQVWHU7HVW'ULYH^
ERROHDQIULJKWHQ LQWG ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 
6\VWHPRXWSULQWOQ ´DUUUJKµ 
0RQVWHU>@PD QHZ0RQVWHU>@ )
UHWXUQWUXH
PD>@ QHZ9DPSLUH  `
PD>@ QHZ'UDJRQ  ERROHDQIULJKWHQ LQW[ ^
PD>@ QHZ0RQVWHU  * 6\VWHPRXWSULQWOQ ´DELWH"µ 
IRU LQW[ [[ ^ UHWXUQIDOVH
PD>[@IULJKWHQ [  `

`
ERROHDQIULJKWHQ LQW[ ^
` 
) 6\VWHPRXWSULQWOQ ´DUUUJKµ 
`
UHWXUQWUXH
`
FODVV0RQVWHU^ LQWIULJKWHQ LQWI ^
* 6\VWHPRXWSULQWOQ ´DELWH"µ 
) UHWXUQ
` `

FODVV9DPSLUHH[WHQGV0RQVWHU^ ERROHDQIULJKWHQ LQW[ ^



6\VWHPRXWSULQWOQ ´DUUUJKµ 
)
* UHWXUQIDOVH
`
`
ERROHDQVFDUH LQW[ ^
6\VWHPRXWSULQWOQ ´DELWH"µ 
*
FODVV'UDJRQH[WHQGV0RQVWHU^ UHWXUQWUXH
ERROHDQIULJKWHQ LQWGHJUHH ^ `
6\VWHPRXWSULQWOQ ´EUHDWKÀUHµ 
UHWXUQWUXH ERROHDQIULJKWHQ LQW] ^
 6\VWHPRXWSULQWOQ ´DUUUJKµ 
` )
)LOH(GLW:LQGRZ+HOS6DYH<RXUVHOI
)LOH(GLW:LQGRZ+HOS6OHHS UHWXUQWUXH
`
MDYD0RQVWHU7HVW'ULYH
MDYD7HVW$UUD\V `
DELWH" )LML
LVODQG ERROHDQIULJKWHQ E\WHE ^
EUHDWKILUH
LVODQG &R]XPHO * 6\VWHPRXWSULQWOQ ´DELWH"µ 
DUUUJK %HUPXGD
LVODQG UHWXUQWUXH
LVODQG $]RUHV `

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH3RRO3X]]OH

8WWT8]bbTM
9OURJOBISTOTAKECODESNIPPETSFROMTHEPOOLANDPLACETHEMINTO
THEBLANKLINESINTHECODE9OUMAYUSETHESAMESNIPPETMORE
THANONCE ANDYOUMIGHTNOTNEEDTOUSEALLTHESNIPPETS9OUR
GOALISTOMAKEASETOFCLASSESTHATWILLCOMPILEANDRUNTOGETHER
ASAPROGRAM$ONTBEFOOLEDnTHISONESHARDERTHANITLOOKS

SXEOLFFODVV5RZERDWBBBBBBBBBBBBBBBB^ SXEOLFFODVV7HVW%RDWV^
SXEOLFBBBBBBBBBBBURZ7KH%RDW ^ BBBBBBBBBBBBBBBBBBBPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQW ´VWURNHQDWDVKDµ  BBBBBBBBBE QHZ%RDW 
` 6DLOERDWE QHZBBBBBBBBBB 
`
5RZERDWBBBBBBBB QHZ5RZERDW 
SXEOLFFODVVBBBBBBBB^ EVHW/HQJWK  
SULYDWHLQWBBBBBBBBBB EBBBBBBBBBB 
BBBBBBBYRLGBBBBBBBBB BBBBBB ^ EBBBBBBBBBB 
OHQJWK OHQ BBBBBBBPRYH 
` `
SXEOLFLQWJHW/HQJWK ^ `

BBBBBBBBBBBBBBBBB SXEOLFFODVVBBBBBBBBBBBBBBBBBB%RDW^
` SXEOLFBBBBBBBBBBBBBBBB ^
SXEOLFBBBBBBBBBBBPRYH ^ 6\VWHPRXWSULQW ´BBBBBBBBBBBµ 
6\VWHPRXWSULQW ´BBBBBBBBBBBµ  `
`
`
`
 /54054 GULIWGULIWKRLVWVDLO

2OWBOAT
3AILBOAT SUBCLASSES

"OAT 4ESTBOATS EXTENDS


INTLEN DRIFT HOISTSAIL
RETURN STROKENATASHA ROW4HE"OAT
CONTINUE INTLENGTH 3TRING MOVE
B BREAK INTB SET,ENGTH
INTB VOID
INTB PUBLIC
B B LENGTH INT STATIC GET,ENGTH
INTB PRIVATE
LEN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQKHULWDQFHDQGSRO\PRUSKLVP

"%THE#OMPILER
6HWZLOOZRUN

6HWZLOOQRWFRPSLOHEHFDXVHRI9DPSLUH¶VUHWXUQ
%XERCISE W\SH LQW 
3OLUTIONS 7KH9DPSLUH¶VIULJKWHQ PHWKRG % LVQRWDOHJDO
RYHUULGH25RYHUORDGRI0RQVWHU¶VIULJKWHQ PHWKRG
&KDQJLQJ21/<WKHUHWXUQW\SHLVQRWHQRXJK
WRPDNHDYDOLGRYHUORDGDQGVLQFHDQLQWLVQRW
FRPSDWLEOHZLWKDERROHDQWKHPHWKRGLVQRWDYDOLG
RYHUULGH 5HPHPEHULI\RXFKDQJH21/<WKHUHWXUQ
W\SHLWPXVWEHWRDUHWXUQW\SHWKDWLVFRPSDWLEOH
ZLWKWKHVXSHUFODVVYHUVLRQ¶VUHWXUQW\SHDQGWKHQLW¶V
DQRYHUULGH
6HWVDQGZLOOFRPSLOHEXWSURGXFH
DUUUJK
EUHDWK¿UH
DUUUJK
5HPHPEHUFODVV9DPSLUHGLGQRWRYHUULGHFODVV
0RQVWHU¶VIULJKWHQ PHWKRG 7KHIULJKWHQ PHWKRG
LQ9DPSLUH¶VVHWWDNHVDE\WHQRWDQLQW

KWLM
EP  W]\X]\"
KIVLQLI\M[" FP 
DP  ` $·VP$·VP&·VP

8Q[HG %·VP$·VP$·VP

`
FP 

MInZAJM[ FP 
FP 
$·VP%·VP$·VP

%·VP$·VP&·VP
DP 
EP  %·VP&·VP$·VP

`
FP  %·VP$·VP&·VP

DP  $·VP$·VP&·VP
DP 
DP 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

SXEOLFFODVV5RZERDWH[WHQGV%RDW^
SXEOLFYRLGURZ7KH%RDW ^
6\VWHPRXWSULQW ´VWURNHQDWDVKDµ 
`
`
SXEOLFFODVV%RDW^
SULYDWHLQWOHQJWK
SXEOLFYRLGVHW/HQJWK LQWOHQ ^
OHQJWK OHQ
`
SXEOLFLQWJHW/HQJWK ^
UHWXUQOHQJWK
`
SXEOLFYRLGPRYH ^
6\VWHPRXWSULQW ´GULIWµ 
`
`

SXEOLFFODVV7HVW%RDWV^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%RDWE QHZ%RDW 
6DLOERDWE QHZ6DLOERDW 
5RZERDWE QHZ5RZERDW 
EVHW/HQJWK  
EPRYH 
EPRYH 
EPRYH 
`
`
SXEOLFFODVV6DLOERDWH[WHQGV%RDW^
SXEOLFYRLGPRYH ^
6\VWHPRXWSULQW ´KRLVWVDLOµ 
`
`

/54054 GULIWGULIWKRLVWVDLO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGDEVWUDFWFODVVHV

6HULRXV3RO\PRUSKLVP

,QKHULWDQFHLVMXVWWKHEHJLQQLQJ4OEXPLOITPOLYMORPHISM WENEEDINTERFACES
ANDNOTTHE'5)KIND 7ENEEDTOGOBEYONDSIMPLEINHERITANCETOALEVELOFFLEXIBILITYAND
EXTENSIBILITYYOUCANGETONLYBYDESIGNINGANDCODINGTOINTERFACESPECIFICATIONS3OMEOFTHE
COOLESTPARTSOF*AVAWOULDNTEVENBEPOSSIBLEWITHOUTINTERFACES SOEVENIFYOUDONTDESIGN
WITHTHEMYOURSELF YOUSTILLHAVETOUSETHEM"UTYOULLWANTTODESIGNWITHTHEM9OULLNEED
TODESIGNWITHTHEM9OULLWONDERHOWYOUEVERLIVEDWITHOUTTHEM7HATSANINTERFACE)TS
AABSTRACTCLASS7HATSANABSTRACTCLASS)TSACLASSTHATCANTBEINSTANTIATED7HATSTHAT
GOODFOR9OULLSEEINJUSTAFEWMOMENTS"UTIFYOUTHINKABOUTTHEENDOFTHELASTCHAPTER
ANDHOWWEUSEDPOLYMORPHICARGUMENTSSOTHATASINGLE6ETMETHODCOULDTAKE!NIMAL
SUBCLASSESOFALLTYPES WELL THATWASJUSTSCRATCHINGTHESURFACE)NTERFACESARETHEPOLYIN
POLYMORPHISM4HEABINABSTRACT4HECAFFEINEIN*AVA

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVLJQLQJZLWKLQKHULWDQFH

,QL_MNWZOM\IJW]\[WUM\PQVO
_PMV_MLM[QOVML\PQ[' $QLPDO
4HECLASSSTRUCTUREISNTTOOBAD7EVEDESIGNED
SLFWXUH
ITSOTHATDUPLICATECODEISKEPTTOAMINIMUM
IRRG
ANDWEVEOVERRIDDENTHEMETHODSTHATWETHINK KXQJHU
SHOULDHAVESUBCLASS SPECIlCIMPLEMENTATIONS ERXQGDULHV
7EVEMADEITNICEANDmEXIBLEFROMA ORFDWLRQ
POLYMORPHICPERSPECTIVE BECAUSEWECANDESIGN
!NIMAL USINGPROGRAMSWITH!NIMALARGUMENTS PDNH1RLVH
ANDARRAYDECLARATIONS SOTHATANY!NIMAL HDW
SUBTYPEˆINCLUDINGTHOSEWENEVERIMAGINEDATTHE VOHHS
TIMEWEWROTEOURCODEˆCANBEPASSEDINANDUSED URDP
ATRUNTIME7EVEPUTTHECOMMONPROTOCOLFOR
ALL!NIMALSTHEFOURMETHODSTHATWEWANTTHE
WORLDTOKNOWALL!NIMALSHAVE INTHE!NIMAL
SUPERCLASS ANDWEREREADYTOSTARTMAKINGNEW
,IONSAND4IGERSAND(IPPOS
)HOLQH

&DQLQH

URDP
+LSSR
URDP
VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

/LRQ
VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

'RJ

&DW VL]H
SLFWXUH
VL]H IRRG
7LJHU PDNH1RLVH
SLFWXUH :ROI SUH\
VL]H IRRG HDW
PDNH1RLVH
SLFWXUH SUH\ VL]H
HDW SLFWXUH
IRRG
PDNH1RLVH
SUH\ IRRG
PDNH1RLVH
HDW
SUH\
HDW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

:HNQRZZHFDQVD\
:ROID:ROI QHZ:ROI 

YOgd^
:
$:ROIUHIHUHQFHWRD ROIREMHFW
:ROIREMHFW :ROI

7KHVHWZRDUHWKHVDPHW\SH

$QGZHNQRZZHFDQVD\
$QLPDOD+LSSR QHZ+LSSR 

Y@ahhg
$QLPDOUHIHUHQFHWR +L W
SSR
D+LSSRREMHFW REMHF
$QLPDO

7KHVHWZRDUH127WKHVDPHW\SH

%XWKHUH·VZKHUHLWJHWVZHLUG
$QLPDODQLP QHZ$QLPDO 

$QLPDOUHIHUHQFHWR Yfae
"
DQ$QLPDOREMHFW $Q
LPDO EMHFW


R
$QLPDO

7KHVHWZRDUHWKHVDPHW\SHEXW
ZKDWWKHKHFNGRHVDQ$QLPDOREMHFWORRNOLNH"

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQREMHFWVJREDG

:KDWGRHVDQHZ$QLPDO REMHFW
ORRNOLNH"

VFDU\REMHFWV

:KDWDUHWKHLQVWDQFHYDULDEOHYDOXHV"

6RPHFODVVHVMXVWVKRXOGQRWEH
LQVWDQWLDWHG

)TMAKESSENSETOCREATEA7OLFOBJECTORA(IPPO 9OUCANSTILLUSETHATABSTRACTTYPEASAREFERENCETYPE
OBJECTORA4IGEROBJECT BUTWHATEXACTLYISAN )NFACT THATSABIGPARTOFWHYYOUHAVETHATA BSTRACT
!NIMALOBJECT7HATSHAPEISIT7HATCOLOR SIZE CLASSINTHElRSTPLACETOUSEITASAPOLYMORPHIC
NUMBEROFLEGS ARGUMENTORRETURNTYPE ORTOMAKEAPOLYMORPHIC
4RYINGTOCREATEANOBJECTOFTYPE!NIMALISLIKEA ARRAY 
NIGHTMARE3TAR4REK©TRANSPORTERACCIDENT4HE 7HENYOUREDESIGNINGYOURCLASSINHERITANCE
ONEWHERESOMEWHEREINTHEBEAM ME UPPROCESS STRUCTURE YOUHAVETODECIDEWHICHCLASSESARE
SOMETHINGBADHAPPENEDTOTHEBUFFER ABSTRACTANDWHICHARECONCRETE#ONCRETECLASSESARE
"UTHOWDOWEDEALWITHTHIS7ENEEDAN!NIMAL THOSETHATARESPECIlCENOUGHTOBEINSTANTIATED!
CLASS FORINHERITANCEANDPOLYMORPHISM"UTWE CONCRETECLASSJUSTMEANSTHATITS/+TOMAKEOBJECTS
WANTPROGRAMMERSTOINSTANTIATEONLYTHELESS OFTHATTYPE
ABSTRACTSUBCLASSESOFCLASS!NIMAL NOT!NIMALITSELF -AKINGACLASSABSTRACTISEASYˆPUTTHEKEYWORD
7EWANT4IGEROBJECTSAND,IONOBJECTS NOT!NIMAL DEVWUDFWBEFORETHECLASSDECLARATION
OBJECTS
&ORTUNATELY THERESASIMPLEWAYTOPREVENTACLASS DEVWUDFWFODVV&DQLQHH[WHQGV$QLPDO^
FROMEVERBEINGINSTANTIATED)NOTHERWORDS TOSTOP
ANYONEFROMSAYINGhQHZvONTHATTYPE"YMARKING SXEOLFYRLGURDP ^`
THECLASSASDEVWUDFW THECOMPILERWILLSTOPANY `
CODE ANYWHERE FROMEVERCREATINGANINSTANCEOF
THATTYPE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

<PMKWUXQTMZ_WV¼\TM\aW]QV[\IV\QI\M
IVIJ[\ZIK\KTI[[
!NABSTRACTCLASSMEANSTHATNOBODYCANEVERMAKEANEW
INSTANCEOFTHATCLASS9OUCANSTILLUSETHATABSTRACTCLASSASA
DECLAREDREFERENCETYPE FORTHEPURPOSEOFPOLYMORPHISM BUT
YOUDONTHAVETOWORRYABOUTSOMEBODYMAKINGOBJECTSOFTHAT
TYPE4HECOMPILERGUARANTEESIT

DEVWUDFWSXEOLFFODVV&DQLQHH[WHQGV$QLPDO
^
SXEOLFYRLGURDP ^`
`

LJQ
QDOZD\VDVVUHQFH
SXEOLFFODVV0DNH&DQLQH^
D X VH  \RX  F D
EHF HIH
SXEOLFYRLGJR ^
7KLVLV2.EMHFWWRDVXSHUFODVVU
&DQLQHF  R
DVXEFODVV VXSHUFODVVLVDEVWUDF W
F QHZ'RJ  HYHQLIWKH
F QHZ&DQLQH 
FODVV&DQLQH
FURDP  VRWKHFRPS LVPDUNHGDEVWUDFW
LOHUZLOO127
` OHW\RXGRW
KLV
`
)LOH(GLW:LQGRZ+HOS%HDP0H8S

MDYDF0DNH&DQLQHMDYD
0DNH&DQLQHMDYD&DQLQHLVDEVWUDFW
FDQQRWEHLQVWDQWLDWHG
F QHZ&DQLQH 
A
HUURU

$QDEVWUDFWFODVVKDVYLUWXDOO\ QRXVHQRYDOXHQR
SXUSRVHLQOLIHXQOHVVLWLVH[WHQGHG

:LWKDQDEVWUDFWFODVVWKHJX\VGRLQJWKHZRUNDWUXQWLPH
DUHLQVWDQFHVRIDVXEFODVVRI\RXUDEVWUDFWFODVV

7KHUHLVDQH[FHSWLRQWRWKLV³DQDEVWUDFWFODVVFDQ
KDYHVWDWLFPHPEHUV VHHFKDSWHU 
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DEVWUDFWDQGFRQFUHWHFODVVHV

)J[\ZIK\^[+WVKZM\M DEVWUDFW
!CLASSTHATSNOTABSTRACTISCALLED $QLPDO
ACONCRETECLASS)NTHE!NIMAL
INHERITANCETREE IFWEMAKE
!NIMAL #ANINE AND&ELINE
ABSTRACT THATLEAVES(IPPO 7OLF
$OG 4IGER ,ION AND#ATASTHE
DEVWUDFW
&DQLQH
CONCRETESUBCLASSES FRQFUHWH
&LIPTHROUGHTHE*AVA!0)AND +LSSR
YOULLlNDALOTOFABSTRACTCLASSES DEVWUDFW
ESPECIALLYINTHE'5)LIBRARY7HAT
DOESA'5)#OMPONENTLOOK
)HOLQH
FRQFUHWH

Licensed by
LIKE4HE#OMPONENTCLASSISTHE 'RJ
SUPERCLASSOF'5) RELATEDCLASSES
FORTHINGSLIKEBUTTONS TEXTAREAS FRQFUHWH
SCROLLBARS DIALOGBOXES YOUNAME FRQFUHWH
&DW
IT9OUDONTMAKEANINSTANCEOF :ROI
FRQFUHWH
Eduard Simons
AGENERIC#OMPONENTANDPUTITON FRQFUHWH
THESCREEN YOUMAKEA*"UTTON)N /LRQ
OTHERWORDS YOUINSTANTIATEONLYA 7LJHU
CONCRETESUBCLASSOF#OMPONENT BUT
NEVER#OMPONENTITSELF

YiX`e
gfn\i
104038 DEVWUDFWRUFRQFUHWH"
(OWDOYOUKNOWWHENACLASSSHOULDBE
ABSTRACT7INEISPROBABLYABSTRACT"UTWHAT
+PPPPGR, +PPPPWKH&DPHORW ABOUT2EDAND7HITE!GAINPROBABLYABSTRACT
IHHOOLNHUHGRU 9LQH\DUGV3LQRW
ZKLWHWRQLJKW" 1RLUZDVDSUHWW\
FORSOMEOFUS ANYWAY "UTATWHATPOINTINTHE
GHFHQW\HDU HIERARCHYDOTHINGSBECOMECONCRETE

$OYOUMAKE0INOT.OIRCONCRETE ORISITABSTRACT
TOO)TLOOKSLIKETHE#AMELOT6INEYARDS
0INOT.OIRISPROBABLYCONCRETENOMATTERWHAT
"UTHOWDOYOUKNOWFORSURE

,OOKATTHE!NIMALINHERITANCETREEABOVE$OTHE
CHOICESWEVEMADEFORWHICHCLASSESAREABSTRACT
ANDWHICHARECONCRETESEEMAPPROPRIATE
7OULDYOUCHANGEANYTHINGABOUTTHE!NIMAL
INHERITANCETREEOTHERTHANADDINGMORE!NIMALS
OFCOURSE 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

)J[\ZIK\UM\PWL[
"ESIDESCLASSES YOUCANMARKMETHODSABSTRACT TOO!NABSTRACT
CLASSMEANSTHECLASSMUSTBEEXTENDEDANABSTRACTMETHODMEANS
THEMETHODMUSTBEOVERRIDDEN9OUMIGHTDECIDETHATSOMEORALL ,WUHDOO\VXFNVWR
BEHAVIORSINANABSTRACTCLASSDONTMAKEANYSENSEUNLESSTHEYRE
EHDQDEVWUDFWPHWKRG
IMPLEMENTEDBYAMORESPECIlCSUBCLASS)NOTHERWORDS YOUCANT
THINKOFANYGENERICMETHODIMPLEMENTATIONTHATCOULDPOSSIBLYBE <RXGRQ·WKDYHDERG\
USEFULFORSUBCLASSES7HATWOULDAGENERICEAT METHODLOOKLIKE
$QDEVWUDFWPHWKRGKDVQRERG\
"ECAUSEYOUVEALREADYDECIDEDTHEREISNTANYCODETHATWOULDMAKE
SENSEINTHEABSTRACTMETHOD YOUWONTPUTINAMETHODBODY3ONO
CURLYBRACESˆJUSTENDTHEDECLARATIONWITHASEMICOLON

SXEOLFDEVWUDFWYRLGHDW 


1RPHWKRGERDG\VHPLFRORQ
(QGLWZLW K

,I\RXGHFODUHDQDEVWUDFWPHWKRG\RX0867
PDUNWKHFODVVDEVWUDFWDVZHOO<RXFDQ·WKDYH
DQDEVWUDFWPHWKRGLQDQRQDEVWUDFWFODVV

)FYOUPUTEVENASINGLEABSTRACTMETHODINACLASS YOUHAVETO
MAKETHECLASSABSTRACT"UTYOUCANMIXBOTHABSTRACTANDNON
ABSTRACTMETHODSINTHEABSTRACTCLASS

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HATISTHEPOINTOFANABSTRACTMETHOD)THOUGHT
THEWHOLEPOINTOFANABSTRACTCLASSWASTOHAVECOMMON
Q: 7HICHISGOODBECAUSE

CODETHATCOULDBEINHERITEDBYSUBCLASSES
A: 0OLYMORPHISM2EMEMBER WHATYOUWANTISTHE

A: )NHERITABLEMETHODIMPLEMENTATIONSINOTHERWORDS
METHODSWITHACTUALBODIES ARE!'OOD4HINGTOPUTINA
ABILITYTOUSEASUPERCLASSTYPEOFTENABSTRACT ASAMETHOD
ARGUMENT RETURNTYPE ORARRAYTYPE4HATWAY YOUGETTO
ADDNEWSUBTYPESLIKEANEW!NIMALSUBCLASS TOYOUR
SUPERCLASS7HENITMAKESSENSE!NDINANABSTRACTCLASS IT PROGRAMWITHOUTHAVINGTOREWRITEORADD NEWMETHODS
OFTENDOESNTMAKESENSE BECAUSEYOUCANTCOMEUPWITH TODEALWITHTHOSENEWTYPES)MAGINEHOWYOUDHAVETO
ANYGENERICCODETHATSUBCLASSESWOULDFINDUSEFUL4HE CHANGETHE6ETCLASS IFITDIDNTUSE!NIMALASITSARGUMENT
POINTOFANABSTRACTMETHODISTHATEVENTHOUGHYOUHAVENT TYPEFORMETHODS9OUDHAVETOHAVEASEPARATEMETHOD
PUTINANYACTUALMETHODCODE YOUVESTILLDEFINEDPARTOF FOREVERYSINGLE!NIMALSUBCLASS/NETHATTAKESA,ION ONE
THEPROTOCOLFORAGROUPOFSUBTYPESSUBCLASSES  THATTAKESA7OLF ONETHATTAKESAYOUGETTHEIDEA3OWITH
ANABSTRACTMETHOD YOURESAYING h!LLSUBTYPESOFTHISTYPE
HAVE4()3METHODvFORTHEBENEFITOFPOLYMORPHISM

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
\RXPXVWLPSOHPHQWDEVWUDFWPHWKRGV

AW]5=;<QUXTMUMV\ITTIJ[\ZIK\UM\PWL[

,KDYHZRQGHUIXOQHZV
PRWKHU-RHÀQDOO\LPSOHPHQWHG
DOOKLVDEVWUDFWPHWKRGV1RZ
HYHU\WKLQJLVZRUNLQJMXVWWKH
ZD\ZHSODQQHG

,PSOHPHQWLQJDQDEVWUDFW
PHWKRGLVMXVWOLNH
RYHUULGLQJDPHWKRG

!BSTRACTMETHODSDONTHAVEABODYTHEYEXISTSOLELYFORPOLYMORPHISM4HAT
MEANSTHElRSTCONCRETECLASSINTHEINHERITANCETREEMUSTIMPLEMENTALLABSTRACT
METHODS
9OUCAN HOWEVER PASSTHEBUCKBYBEINGABSTRACTYOURSELF)FBOTH!NIMALAND
#ANINEAREABSTRACT FOREXAMPLE ANDBOTHHAVEABSTRACTMETHODS CLASS#ANINE
DOESNOTHAVETOIMPLEMENTTHEABSTRACTMETHODSFROM!NIMAL"UTASSOONASWE
GETTOTHElRSTCONCRETESUBCLASS LIKE$OG THATSUBCLASSMUSTIMPLEMENTALLOFTHE
ABSTRACTMETHODSFROMBOTH!NIMALAND#ANINE
"UTREMEMBERTHATANABSTRACTCLASSCANHAVEBOTHABSTRACTANDNON ABSTRACT
METHODS SO#ANINE FOREXAMPLE COULDIMPLEMENTANABSTRACTMETHODFROM
!NIMAL SOTHAT$OGDIDNTHAVETO"UTIF#ANINESAYSNOTHINGABOUTTHEABSTRACT
METHODSFROM!NIMAL $OGHASTOIMPLEMENTALLOF!NIMALSABSTRACTMETHODS
7HENWESAYhYOUMUSTIMPLEMENTTHEABSTRACTMETHODv THATMEANSYOUMUST
PROVIDEABODY4HATMEANSYOUMUSTCREATEANON ABSTRACTMETHODINYOURCLASS
WITHTHESAMEMETHODSIGNATURENAMEANDARGUMENTS ANDARETURNTYPETHATIS
COMPATIBLEWITHTHEDECLAREDRETURNTYPEOFTHEABSTRACTMETHOD7HATYOUPUTIN
THATMETHODISUPTOYOU!LL*AVACARESABOUTISTHATTHEMETHODISTHERE INYOUR
CONCRETESUBCLASS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

6KDUSHQ \RXU SHQFLO !BSTRACTVS#ONCRETE#LASSES


,ETSPUTALLTHISABSTRACTRHETORICINTOSOMECONCRETEUSE)NTHEMIDDLE
COLUMNWEVELISTEDSOMECLASSES9OURJOBISTOIMAGINEAPPLICATIONS
WHERETHELISTEDCLASSMIGHTBECONCRETE ANDAPPLICATIONSWHERETHELISTED
CLASSMIGHTBEABSTRACT7ETOOKASHOTATTHElRSTFEWTOGETYOUGOING
&OREXAMPLE CLASS4REEWOULDBEABSTRACTINATREENURSERYPROGRAM WHERE
DIFFERENCESBETWEENAN/AKANDAN!SPENMATTER"UTINAGOLFSIMULATION
PROGRAM 4REEMIGHTBEACONCRETECLASSPERHAPSASUBCLASSOF/BSTACLE
BECAUSETHEPROGRAMDOESNTCAREABOUTORDISTINGUISHBETWEENDIFFERENT
TYPESOFTREES4HERESNOONERIGHTANSWERITDEPENDSONYOURDESIGN

#ONCRETE 3AMPLECLASS !BSTRACT

OWTNKW]Z[M[QU]TI\QWV   4REE   \ZMMV]Z[MZaIXXTQKI\QWV

????????????????????  (OUSE   IZKPQ\MK\IXXTQKI\QWV

[I\MTTQ\MXPW\WIXXTQKI\QWV   4OWN   ?????????????????????

????????????????????   &OOTBALL0LAYER  KWIKPQVOIXXTQKI\QWV

???????????????????? #HAIR ?????????????????????

???????????????????? #USTOMER ?????????????????????

???????????????????? 3ALES/RDER ?????????????????????

???????????????????? "OOK ?????????????????????

???????????????????? 3TORE ?????????????????????

???????????????????? 3UPPLIER ?????????????????????

???????????????????? 'OLF#LUB ?????????????????????

???????????????????? #ARBURETOR ?????????????????????

???????????????????? /VEN ?????????????????????

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SRO\PRUSKLVPH[DPSOHV

8WTaUWZXPQ[UQVIK\QWV
,ETSSAYTHATWEWANTTOWRITEOUROWNKINDOFLISTCLASS ONETHATWILLHOLD
$OGOBJECTS BUTPRETENDFORAMOMENTTHATWEDONTKNOWABOUTTHE
!RRAY,ISTCLASS&ORTHElRSTPASS WELLGIVEITJUSTANADD METHOD7ELLUSE
ASIMPLE$OGARRAY$OG;= TOKEEPTHEADDED$OGOBJECTS ANDGIVEITA
LENGTHOF7HENWEREACHTHELIMITOF$OGOBJECTS YOUCANSTILLCALLTHE
ADD METHODBUTITWONTDOANYTHING)FWERENOTATTHELIMIT THEADD
METHODPUTSTHE$OGINTHEARRAYATTHENEXTAVAILABLEINDEXP OSITION THEN
INCREMENTSTHATNEXTAVAILABLEINDEXNEXT)NDEX 

%XLOGLQJRXURZQ'RJVSHFLÀFOLVW
3HUKDSVWKHZRUOG·VZRUVWDWWHPSWDWPDNLQJRXU
RZQ$UUD\/LVWNLQGRI FODVVIURPVFUDWFK

E RSI O 'RJDUUD\
SXEOLFFODVV0\'RJ/LVW^ 8VHDSODLQRVFOGHQHV
N
V


SULYDWH'RJ>@GRJV QHZ'RJ>@
EHKLQGWKH
0\'RJ/LVW
K
'RJ>@GRJV
SULYDWHLQWQH[W,QGH[  :H·OOLQFUHPHQWWKLVHGGDFHG
LQWQH[W,QGH[ WLPHDQHZ'RJ LV D

DGG 'RJG SXEOLFYRLGDGG 'RJG ^
WKHOLPLW
,IZH·UHQRWDOUHDG\DGGWWKH'RJ
LI QH[W,QGH[GRJVOHQJWK ^
RIWKHGRJVDUUD\D
GRJV>QH[W,QGH[@ G DQGSULQWDPHVVDJH
6\VWHPRXWSULQWOQ ³'RJDGGHGDW³QH[W,QGH[ 

QH[W,QGH[
LQFUHPHQW
` QH[WLQGH[WWRJLYHXVWKH
RXVH
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

=PWPVW__MVMML\WSMMX+I\[\WW
7EHAVEAFEWOPTIONSHERE
 -AKEASEPARATECLASS -Y#AT,IST TOHOLD#ATOBJECTS0RETTYCLUNKY
 -AKEASINGLECLASS $OG!ND#AT,IST THATKEEPSTWODIFFERENTARRAYSASINSTANCE
VARIABLESANDHASTWODIFFERENTADD METHODSADD#AT#ATC ANDADD$OG$OG
D !NOTHERCLUNKYSOLUTION
 -AKEHETEROGENEOUS!NIMAL,ISTCLASS THATTAKESANYKINDOF!NIMALSUBCLASS
SINCEWEKNOWTHATIFTHESPECCHANGEDTOADD#ATS SOONERORLATERWELLHAVE
SOMEOTHERKINDOFANIMALADDEDASWELL 7ELIKETHISOPTIONBEST SOLETSCHANGE
OURCLASSTOMAKEITMOREGENERIC TOTAKE!NIMALSINSTEADOFJUST$OGS7EVE
HIGHLIGHTEDTHEKEYCHANGESTHELOGICISTHESAME OFCOURSE BUTTHETYPEHAS
CHANGEDFROM$OGTO!NIMALEVERYWHEREINTHECODE

%XLOGLQJRXURZQ$QLPDOVSHFLÀFOLVW D
·W S D Q LF : H· UHQRWPDNLQNJLQJD
'RQ MHFWZH·UHPD
SXEOLFFODVV0\$QLPDO/LVW^
QHZ$QLPDOREEMHFWRIW\SH$QLPDO
E RSI O
QHZDUUD\R \RXFDQQRWPDNHDQHZ
N
V

5HPHPEHUDQDEVWUDFWW\SHEXW
 SULYDWH$QLPDO>@DQLPDOV QHZ$QLPDO>@
SULYDWHLQWQH[W,QGH[ 
0\$QLPDO/LVW  LQVWDQFHRI DNHDQDUUD\REMHFW
SXEOLFYRLGDGG $QLPDOD ^ \RX&$1P +2/'WKDWW\SH
$QLPDO>@DQLPDOV
LI QH[W,QGH[DQLPDOVOHQJWK ^
DQLPDOV>QH[W,QGH[@ D
GHFODUHGWR
LQWQH[W,QGH[
6\VWHPRXWSULQWOQ ³$QLPDODGGHGDW³QH[W,QGH[ 
DGG $QLPDOD QH[W,QGH[

`
`
`

SXEOLFFODVV$QLPDO7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0\$QLPDO/LVWOLVW QHZ0\$QLPDO/LVW 
'RJD QHZ'RJ 
&DWF QHZ&DW 
OLVWDGG D 
OLVWDGG F 
`
`
 )LOH(GLW:LQGRZ+HOS+DUP

MDYD$QLPDO7HVW'ULYH
$QLPDODGGHGDW
$QLPDODGGHGDW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHXOWLPDWHVXSHUFODVV2EMHFW

?PI\IJW]\VWV)VQUIT['?PaVW\UISM
IKTI[[OMVMZQKMVW]OP\W\ISMIVa\PQVO'
DIHZRIWKH
9OUKNOWWHERETHISISHEADING7EWANTTOCHANGETHE
7KHVHDUHMXVWD\/LVWWKHUH
TYPEOFTHEARRAY ALONGWITHTHEADD METHODARGUMENT TO E RSI O
PHWKRGVLQ$UU 

N
V
DUHPDQ\PRUH
SOMETHINGABOVE!NIMAL3OMETHINGEVENMOREGENERIC MORE 
ABSTRACTTHAN!NIMAL"UTHOWCANWEDOIT7EDONTHAVEA
SUPERCLASSFOR!NIMAL
4HENAGAIN MAYBEWEDO
!RRAY,IST
2EMEMBERTHOSEMETHODSOF!RRAY,IST
,OOKHOWTHEREMOVE CONTAINS AND
INDEX/FMETHODALLUSEANOBJECTOFTYPE LEM
N R E M OVE/BJECTE ER2ETURNS
/BJECT BO O LE A DEXPARAMET
JECTATTHEIN
OB
2EMOVESTHE THELIST
LEMENTWASIN
(YHU\FODVVLQ-DYDH[WHQGV @TRUEIFTHEE
ELEM
FODVV2EMHFW TAINS/BJECT BJEC TPARAM
ETER
BOOLEANCON ATCHFORTHEO
IFTHERESAM
#LASS/BJECTISTHEMOTHEROFALLCLASSESITS 2ETURNS@TRUE
THESUPERCLASSOFEVERYTHING MPTY
BOOLEANIS% LISTHASNOEL
EMENTS
IFTHE
%VENIFYOUTAKEADVANTAGEOFPOLYMORPHISM 2ETURNS@TRUE

YOUSTILLHAVETOCREATEACLASSWITHMETHODS
/BJECTELEM AMETER OR 
THATTAKEANDR ETURNYOURPOLYMORPHICTYPE INTINDEX/F ERTHEINDEXOFTHEOBJECTPAR
7ITHOUTACOMMONSUPERCLASSFOREVERYTHING 2ETURNSEITH
TINDEX
/BJECTGETIN
IN*AVA THEREDBENOWAYFORTHEDEVELOPERS THELIST
SPOSITIONIN
HI
OF*AVATOCREATECLASSESWITHMETHODSTHAT ELEMENTATT
2ETURNSTHE
COULDTAKEYOURCUSTOMTYPESTYPESTHEYNEVER
/BJECTELEM RETURNS@TRUE 
KNEWABOUTWHENTHEYWROTETHE!RRAY,ISTCLASS BOOLEANADD TTOTHELIST
EN
!DDSTHEELEM
3OYOUWEREMAKINGSUBCLASSESOFCLASS/BJECT
FROMTHEVERYBEGINNINGANDYOUDIDNTEVEN MORE
KNOWIT%VERYCLASSYOUWRITEEXTENDS/BJECT
WITHOUTYOUREVERHAVINGTOSAYIT"UTYOUCAN

THINKOFITASTHOUGHACLASSYOUWRITELOOKSLIKE
\ RIW KH $ UU D\ / LVWPHWKRGVXVHWKH
THIS 0DQ LFW\SH2EMHFW6LQ
FH
SXEOLFFODVV'RJH[WHQGV2EMHFW^` XOWLPDWHSRO\PRUSK LVDVXEFODVVRI2EMHFW
HYHU\FODVVLQ-DYDHWKRGVFDQWDNHDQ\WKLQJ 
WKHVH$UUD\/LVWP
"UTWAITAMINUTE $OGALREADYEXTENDSSOMETHING #ANINE
4HATS/+4HECOMPILERWILLMAKE#ANINEEXTEND/BJECT
D V RI -DY D  W KHJHW DQGDGG 
INSTEAD%XCEPT#ANINEEXTENDS!NIMAL.OPROBLEM THENTHE 1RWH RNDOLWWOHGLIIHUHQW

COMPILERWILLJUSTMAKE!NIMALEXTEND/BJECT
PHWKRGVDFWXDOO\ORQKHUHEXWIRUQRZWKLV
$Q\FODVVWKDWGRHVQ·WH[SOLFLWO\H[WHQGDQRWKHU WKDQWKHRQHVVKRZ DERXWLW:H·OOJHWLQWR
FODVVLPSOLFLWO\H[WHQGV2EMHFW LVWKHZD\WRWKLQNWOHODWHU
3O SINCE$OGEXTENDS#ANINE ITDOESNTDIRECTLYEXTEND/BJECT WKHIXOOVWRU\DOLW
ALTHOUGHITDOESEXTENDITINDIRECTLY ANDTHESAMEISTRUE
FOR#ANINE BUT!NIMALDOESDIRECTLYEXTEND/BJECT
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

;W_PI\¼[QV\PQ[]T\ZI[]XMZUMOIKTI[[7JRMK\'
)FYOUWERE*AVA WHATBEHAVIORWOULDYOUWANTEVERY
OBJECTTOHAVE(MMMMLETSSEEHOWABOUTA 2EMHFW
METHODTHATLETSYOUlNDOUTIFONEOBJECTISEQUAL
TOANOTHEROBJECT7HATABOUTAMETHODTHATCAN ERROHDQHTXDOV
TELLYOUTHEACTUALCLASSTYPEOFTHATOBJECT-AYBEA WKHPHWKRGV
-XVW620(RI 
&ODVVJHW&ODVV
METHODTHATGIVESYOUAHASHCODEFORTHEOBJECT SO
RIFODVV2EMHFW
LQWKDVK&RGH
YOUCANUSETHEOBJECTINHASHTABLESWELLTALKABOUT 6WULQJWR6WULQJ
*AVASHASHTABLESINCHAPTERANDAPPENDIX" 
/H HERESAGOODONEˆAMETHODTHATPRINTSOUTA
3TRINGMESSAGEFORTHATOBJECT
<RXU&ODVV+HUH (YHU\FODVV\RXZULWHLQKHULWVDOOWKH
!NDWHATDOYOUKNOW!SIFBYMAGIC CLASS/BJECT
DOESINDEEDHAVEMETHODSFORTHOSEFOURTHINGS
PHWKRGVRIFODVV2EMHFW7KHFODVVHV
4HATSNOTALL THOUGH BUTTHESEARETHEONESWE \RX·YHZULWWHQLQKHULWHGPHWKRGV\RX
REALLYCAREABOUT GLGQ·WHYHQN QRZ\RXKDG

 HTXDOV 2EMHFWR
 KDVK&RGH
'RJD QHZ'RJ 
&DWF QHZ&DW  &DWF QHZ&DW 
 6\VWHPRXWSULQWOQ FKDVK&RGH 
LI DHTXDOV F ^ )LOH(GLW:LQGRZ+HOS'URS
KFRGH
3ULQWVRXWDKDV IRU
6\VWHPRXWSULQWOQ ³WUXH´ 
`HOVH^ MDYD7HVW2EMHFW
6\VWHPRXWSULQWOQ ³IDOVH´  IRUWKHREMHFW WDVD
` 
QRZWKLQNRIL
)LOH(GLW:LQGRZ+HOS6WRS XQLTXH,' 
MDYD7HVW2EMHFW
7HOOV\RXLIWZRREMHFWVDUH
IDOVH FRQVLGHUHG¶HTXDO· ZH·OOWDON
DERXWZKDW¶HTXDO·UHDOO\  WR6WULQJ
PHDQVLQDSSHQGL[%  &DWF QHZ&DW 
6\VWHPRXWSULQWOQ FWR6WULQJ 
)LOH(GLW:LQGRZ+HOS/DSVH,QWR&RPD

MDYD7HVW2EMHFW
 JHW&ODVV
&DWF QHZ&DW  &DW#GI
6\VWHPRXWSULQWOQ FJHW&ODVV 
ULQJPHVVDJH
3ULQWVRXWD6WRIWKHFODVV
)LOH(GLW:LQGRZ+HOS)DLQW

MDYD7HVW2EMHFW *LYHV\RXEDFNWKH ZLWKWKHQDPH QXPEHUZH


FODVVWKDWREMHFWZDV DQGVRPHRWKHU W
FODVV&DW
LQVWDQWLDWHGIURP UDUHO\FDUHDERX

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
2EMHFWDQGDEVWUDFWFODVVHV

WKHUH DUH QR
'XPE 4XHVWLRQV Q: /+ BACKTOCLASS/BJECT Q: )FITSSOGOODTOUSE

Q: )SCLASS/BJECTABSTRACT
BEINGNON ABSTRACTSO)GUESS
THATMEANSITSCONCRETE (/7
CANYOULETSOMEBODYMAKEAN
POLYMORPHICTYPES WHY
DONTYOUJUSTMAKE!,,YOUR
METHODSTAKEANDRETURNTYPE
A: .O7ELL NOTINTHEFORMAL
*AVASENSEANYWAY/BJECTISA
/BJECTOBJECT)SNTTHATJUST
ASWEIRDASMAKINGAN!NIMAL
/BJECT

NON ABSTRACTCLASSBECAUSEITS
GOTMETHODIMPLEMENTATION
OBJECT
A: !HHHHTHINKABOUTWHAT
WOULDHAPPEN&ORONETHING
CODETHATALLCLASSESCANINHERIT
ANDUSEOUT OF THE BOX WITHOUT
A: 'OODQUESTION7HYIS
ITACCEPTABLETOMAKEANEW
YOUWOULDDEFEATTHEWHOLE
POINTOF@TYPE SAFETY ONE
HAVINGTOOVERRIDETHEMETHODS /BJECTINSTANCE"ECAUSE OF*AVASGREATESTPROTECTION
SOMETIMESYOUJUSTWANTA MECHANISMSFORYOURCODE7ITH
TYPE SAFETY *AVAGUARANTEESTHAT
Q: 4HENCANYOUOVERRIDE
GENERICOBJECTTOUSEAS WELL AS
ANOBJECT!LIGHTWEIGHTOBJECT
"YFAR THEMOSTCOMMONUSEOF
YOUWONTASKTHEWRONGOBJECT
TODOSOMETHINGYOUMEANTTO
THEMETHODSIN/BJECT
ANINSTANCEOFTYPE/BJECTISFOR ASKOFANOTHEROBJECTTYPE,IKE

A: 3OMEOFTHEM"UTSOMEOF
THEMAREMARKED¿QDO WHICH
THREADSYNCHRONIZATIONWHICH
YOULLLEARNABOUTINCHAPTER 
ASKA&ERRARIWHICHYOUTHINKISA
4OASTER TOCOOKITSELF
"UTTHETRUTHIS YOUDONTHAVE
&ORNOW JUSTSTICKTHATONTHE
MEANSYOUCANTOVERRIDETHEM BACKBURNERANDASSUMETHAT TOWORRYABOUTTHATFIERY&ERRARI
9OUREENCOURAGEDSTRONGLY TO YOUWILLRARELYMAKEOBJECTSOF SCENARIO EVENIFYOUDOUSE
OVERRIDEHASH#ODE EQUALS TYPE/BJECT EVENTHOUGHYOU /BJECTREFERENCESFOREVERYTHING
ANDTO3TRING INYOUROWN CAN "ECAUSEWHENOBJECTSARE
CLASSES ANDYOULLLEARNHOWTO REFERREDTOBYAN/BJECT
DOTHATALITTLELATERINTHEBOOK
"UTSOMEOFTHEMETHODS LIKE Q: 3OISITFAIRTOSAYTHATTHE
REFERENCETYPE *AVATHINKSITS
REFERRINGTOANINSTANCEOFTYPE
GET#LASS DOTHINGSTHATMUST MAINPURPOSEFORTYPE/BJECT /BJECT!NDTHATMEANSTHE
WORKINASPECIFIC GUARANTEED ISSOTHATYOUCANUSEITFORA ONLYMETHODSYOUREALLOWEDTO
WAY POLYMORPHICARGUMENTAND CALLONTHATOBJECTARETHEONES
RETURNTYPE,IKEIN!RRAY,IST DECLAREDINCLASS/BJECT3OIF
Q: )F!RRAY,ISTMETHODSARE
GENERICENOUGHTOUSE/BJECT A: 4HE/BJECTCLASSSERVES
YOUWERETOSAY

2EMHFWR QHZ)HUUDUL 
THENWHATDOESITMEANTOSAY TWOMAINPURPOSESTOACTASA RJR)DVW 1RWOHJDO
!RRAY,IST$OT#OM)THOUGHT POLYMORPHICTYPEFORMETHODS
)WASRESTRICTINGTHE!RRAY,ISTTO THATNEEDTOWORKONANYCLASS 9OUWOULDNTEVENMAKEITPAST
HOLDONLY$OT#OMOBJECTS THATYOUORANYONEELSEMAKES THECOMPILER
ANDTOPROVIDEREALMETHODCODE

A: 9OUWERERESTRICTINGIT
0RIORTO*AVA !RRAY,ISTS
THATALLOBJECTSIN*AVANEEDAT
RUNTIMEANDPUTTINGTHEMIN
"ECAUSE*AVAISASTRONGLY TYPED
LANGUAGE THECOMPILERCHECKS
CLASS/BJECTMEANSALLOTHER TOMAKESURETHATYOURECALLING
COULDNTBERESTRICTED4HEY CLASSESINHERITTHEM 3OMEOF AMETHODONANOBJECTTHATS
WEREALLESSENTIALLYWHATYOU THEMOSTIMPORTANTMETHODSIN ACTUALLYCAPABLEOFRESPONDING
GETIN*AVATODAYIFYOUWRITE /BJECTARERELATEDTOTHREADS )NOTHERWORDS YOUCANCALLA
!RRAY,IST/BJECT)NOTHER ANDWELLSEETHOSELATERINTHE METHODONANOBJECTREFERENCE
WORDS AN!RRAY,ISTRESTRICTED BOOK ONLYIFTHECLASSOFTHEREFERENCE
TOANYTHINGTHATSAN/BJECT
TYPEACTUALLYHASTHEMETHOD
WHICHMEANSANYOBJECTIN*AVA
7ELLCOVERTHISINMUCHGREATER
INSTANTIATEDFROMANYCLASSTYPE
DETAILALITTLELATER SODONTWORRY
7ELLCOVERTHEDETAILSOFTHISNEW
IFTHEPICTUREISNTCRYSTALCLEAR
TYPESYNTAXLATERINTHEBOOK

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

=[QVOXWTaUWZXPQKZMNMZMVKM[WN\aXM7JRMK\PI[IXZQKM
"EFOREYOURUNOFFANDSTARTUSINGTYPE/BJECTFORALLYOURULTRA mEXIBLEARGUMENTANDRETURN
TYPES YOUNEEDTOCONSIDERALITTLEISSUEOFUSINGTYPE/BJECTASAREFERENCE!NDKEEPINMIND
THATWERENOTTALKINGABOUTMAKINGINSTANCESOFTYPE/BJECTWERETALKINGABOUTMAKING
INSTANCESOFSOMEOTHERTYPE BUTUSINGAREFERENCEOFTYPE/BJECT
7HENYOUPUTANOBJECTINTOAN!RRAY,IST$OG ITGOESINASA$OG ANDCOMESOUTASA$OG
G
0DNHDQ$UUD\/LVWGHFODUH
$UUD\/LVW'RJ!P\'RJ$UUD\/LVW QHZ$UUD\/LVW'RJ!  V
WRKROG'RJREMHFW
'RJD'RJ QHZ'RJ  0DNHD'RJ
P\'RJ$UUD\/LVWDGG D'RJ  $GGWKH'RJWRWKHOLVW ULDEOH
WRDQHZ'RJUHIHUHQFHYD UHWXUQ
$VVLJQWKH'RJIURPWKHOLVW
JHW PHWKRGGHFO DUH VD ' RJ
'RJG P\'RJ$UUD\/LVWJHW  
7KLQNRILWDVWKRXJKWKH \/LVW'RJ!
W\SHEHFDXVH\RXXVHG $ UUD
"UTWHATHAPPENSWHENYOUDECLAREITAS!RRAY,IST/BJECT)FYOUWANTTOMAKEAN!RRAY,IST
THATWILLLITERALLYTAKEANYKINDOF/BJECT YOUDECLAREITLIKETHIS
G
$UUD\/LVW2EMHFW!P\'RJ$UUD\/LVW QHZ$UUD\/LVW2EMHFW! 
0DNHDQ$UUD\/LVWGHFODUH
WRKROGD Q\ W\S HR I2EMHFW
'RJD'RJ QHZ'RJ  0DNHD'RJ 7KHVHWZRVWHSVDUHWKHVDPH
P\'RJ$UUD\/LVWDGG D'RJ  $GGWKH'RJWRWKHOLVW
"UTWHATHAPPENSWHENYOUTRYTOGETTHE$OGOBJECTANDASSIGNITTOA$OGREFERENCE

'RJG
G P\'RJ$UUD\/LVWJHW  
P\'
P
P 12:RQ·WFRPSLOH:KHQ\RXXVH$UUD\/LVW2EMHFW!WKHJHW PHWKRG
UHWXUQVW\SH2EMHFW7KH&RPSLOHUNQRZVRQO\WKDWWKHREMHFWLQKHULWVIURP
2EMHFW VRPHZKHUHLQLWVLQKHULWDQFHWUHH EXWLWGRHVQ·WNQRZLW·VD'RJ 
%VERYTHINGCOMESOUTOFAN!RRAY,IST/BJECTASAREFERENCEOFTYPE/BJECT REGARDLESSOFWHATTHE
ACTUALOBJECTIS ORWHATTHEREFERENCETYPEWASWHENYOUADDEDTHEOBJECTTOTHELIST

7KHREMHFWVJR,1
DV6RFFHU%DOO 2EMHFWVFRPHRXWRI
)LVK*XLWDUDQG DQ$UUD\/LVW2EMHFW!
&DU DFWLQJOLNHWKH\·UH
JHQHULFLQVWDQFHV
RIFODVV2EMHFW7KH
$UUD\/LVW2EMHFW! &RPSLOHUFDQQRW
DVVXPHWKHREMHFW
%XWWKH\FRPH WKDWFRPHVRXWLVRI
287DVWKRXJK DQ\W\SHRWKHUWKDQ
WKH\ZHUHRIW\SH 2EMHFW
2EMHFW 2EMHFW 2EMHFW 2EMHFW 2EMHFW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
:KHQD'RJORVHVLWV'RJQHVV

?PMVI,WO_WV¼\IK\TQSMI,WO ,GRQ·WNQRZZKDW\RX·UH
WDONLQJDERXW6LW"6WD\"
4HEPROBLEMWITHHAVINGEVERYTHINGTREATED EDUN"+PPPP,GRQ·W
POLYMORPHICALLYASAN/BJECTISTHATTHEOBJECTS UHFDOONQRZLQJWKRVH
APPEARTOLOSEBUTNOTPERMANENTLY THEIR
TRUEESSENCE4HE$OGAPPEARSTOLOSEITSDOGNESS
,ETSSEEWHATHAPPENSWHENWEPASSA$OGTO
AMETHODTHATRETURNSAREFERENCETOTHESAME
$OGOBJECT BUTDECLARESTHERETURNTYPEASTYPE
/BJECTRATHERTHAN$OG

KHPHWKRGKH
Licensed by Q W K RX J KW
Q·WZRUN(
YH RJW
SXEOLFYRLGJR ^
HU\VDPH'
'RJD'RJ QHZ'RJ  7KLVOLQHZRUHIHUHQFHWRWKHYHWXUQW\SH2EMHFW UQHG
%$' 'RJVDPH'RJ JHW2EMHFW D'RJ 
J J
 UHWXUQHGDUHIHUUHGWRWKHU \RXDVVLJQWKHUHWX
/ ` DUJXPHQW FRPSLOHUZRQ·WOHW EMHFW
PHDQVWKH WRDQ\WKLQJEXW2

UHWXUQR
`
Eduard Simons
SXEOLF2EMHFWJHW2EMHFW 2EMHFWR ^
UHIHUHQFH
QFHWRWKHVDPH'RJEXW
DVD
:H·UHUHWXUQLQJDUHIHUH7KLVSDUWLVSHUIHFWO\OHJDO1RWH
UHWXUQW\SHRI2EMHFW JHW PHWKRGZRUNVZKHQ\RXKDYH

104038
WKLVLVVLPLODUWRKRZWKH WKHUWKDQDQ$UUD\/LVW'RJ!
DQ$UUD\/LVW2EMHFW!UD
)LOH(GLW:LQGRZ+HOS5HPHPEHU

'RJ3RO\7HVWMDYDLQFRPSDWLEOHW\SHV
7KHFRPSLOHUGRHVQ·WNQRZWKDWWKH
IRXQGMDYDODQJ2EMHFW
WKLQJUHWXUQHGIURPWKHPHWKRGLV
DFWXDOO\D'RJVRLWZRQ·WOHW\RX
UHTXLUHG'RJ
DVVLJQLWWRD'RJUHIHUHQFH <RX·OO
'RJVDPH'RJ WDNH2EMHFWV D'RJ 
VHHZK\RQWKHQH[WSDJH
HUURUA

SXEOLFYRLGJR ^ 7KLVZRUNV DOWKRXJKLWPD\QRWEHYHU\


'RJD'RJ QHZ'RJ  XVHIXODV\RX·OOVHHLQDPRPHQW EHFDXVH\RX
*22' 2EMHFWVDPH'RJ JHW2EMHFW D'RJ  FDQDVVLJQ$1<7+,1*WRDUHIHUHQFHRIW\SH
- ` 2EMHFWVLQFHHYHU\FODVVSDVVHVWKH,6 $WHVW
IRU2EMHFW(YHU\REMHFWLQ-DYDLVDQLQVWDQFH
SXEOLF2EMHFWJHW2EMHFW 2EMHFWR ^ RIW\SH2EMHFWEHFDXVHHYHU\FODVVLQ-DYDKDV
UHWXUQR 2EMHFWDWWKHWRSRILWVLQKHULWDQFHWUHH
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

7JRMK\[LWV¼\JIZS
3ONOWWEKNOWTHATWHENANOBJECTIS
REFERENCEDBYAVARIABLEDECLAREDASTYPE
/BJECT ITCANTBEASSIGNEDTOAVARIABLE
g
DECLAREDWITHTHEACTUALOBJECTSTYPE 
' RJ W
!NDWEKNOWTHATTHISCANHAPPENWHEN REMHF
2EMHFW
ARETURNTYPEORARGUMENTISDECLARED
ASTYPE/BJECT ASWOULDBETHECASE
FOREXAMPLE WHENTHEOBJECTISPUT :KHQ\RXJHWDQREMHFWUHIHUHQFHIURP
INTOAN!RRAY,ISTOFTYPE/BJECTUSING
!RRAY,IST/BJECT"UTWHATARETHE
DQ$UUD\/LVW2EMHFW! RUDQ\PHWKRG
IMPLICATIONSOFTHIS)SITAPROBLEMTO WKDWGHFODUHV2EMHFWDVWKHUHWXUQW\SH 
HAVETOUSEAN/BJECTREFERENCEVARIABLE LWFRPHVEDFNDVDSRO\PRUSKLFUHIHUHQFH
TOREFERTOA$OGOBJECT,ETSTRYTOCALL W\SHRI2EMHFW6R\RXKDYHDQ2EMHFW
$OGMETHODSONOUR$OG 4HAT #OMPILER UHIHUHQFHWR LQWKLVFDVH D'RJLQVWDQFH
4HINKS )S !N /BJECT
DVD
2EMHFWR DOJHW LQGH[  LQ H  & OD VV 2EMHFWK FDQFDOO

7KLVLVI PHWKRGVR\RX WLQ-DYD
LQWL RKDVK&RGH  KDVK&RGH KRGRQ$1<REMHF
WKDWPHW
REDUN 
RED
RE
:RQ·WFRPSLOH &DQ·WGRWKLV7KH2EMHFWFODVVKDVQRLGHDZKDW
LWPHDQVWREDUN (YHQWKRXJK<28NQRZLW·V
UHDOO\D'RJDWWKDWLQGH[WKHFRPSLOHUGRHVQ·W

KDVK&RG
H
7KHFRPSLOHUGHFLGHVZKHWKHU
\RXFDQFDOODPHWKRGEDVHG
RQWKHUHIHUHQFHW\SHQRWWKH
DFWXDOREMHFWW\SH g
 W
' RJ
REMHF
%VENIFYOUKNOWTHEOBJECTISCAPABLE 2EMHFW
hBUTITREALLYISA$OG HONESTv THE
COMPILERSEESITONLYASAGENERIC/BJECT 2EMHFW
7KHPHWKRG\RX·UHFDOOLQJRQD
&ORALLTHECOMPILERKNOWS YOUPUTA HTXDOV UHIHUHQFH0867EHLQWKHFODVVRI
"UTTONOBJECTOUTTHERE/RA-ICROWAVE JHW&ODVV WKDWUHIHUHQFHW\SH'RHVQ·WPDWWHU
OBJECT/RSOMEOTHERTHINGTHATREALLY KDVK&RGH ZKDWWKHDFWXDOREMHFWLV
DOESNTKNOWHOWTOBARK WR6WULQJ
4HECOMPILERCHECKSTHECLASSOFTHE
REFERENCETYPEˆNOTTHEOBJECTTYPEˆTO RKDVK&RGH 
SEEIFYOUCANCALLAMETHODUSINGTHAT
REFERENCE
7KH´RµUHIHUHQFHZDVGHFODUHGDVW\SH
2EMHFWVR\RXFDQFDOOPHWKRGVRQO\LI
WKRVHPHWKRGVDUHLQFODVV2EMHFW
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWVDUH2EMHFWV

+HWUHDWVPHOLNHDQ
2EMHFW%XW,FDQGRVR
PXFKPRUHLIRQO\KH·GVHH
PHIRUZKDW,UHDOO\DP

/M\QV\W]KP_Q\Pa W]ZQVVMZ7JRMK\
!NOBJECTCONTAINSEVERYTHINGITINHERITSFROMEACHOFITS
SUPERCLASSES4HATMEANSEVERYOBJECTˆREGARDLESSOFITS
ACTUALCLASSTYPEˆISALSOANINSTANCEOFCLASS/BJECT4HAT
MEANSANYOBJECTIN*AVACANBETREATEDNOTJUSTASA$OG
"UTTON OR3NOWBOARD BUTALSOASAN/BJECT7HENYOU
SAYQHZ6QRZERDUG YOUGETASINGLEOBJECTONTHE
HEAPˆA3NOWBOARDOBJECTˆBUTTHAT3NOWBOARDWRAPS
ITSELFAROUNDANINNERCOREREPRESENTINGTHE/BJECT
CAPITALh/v PORTIONOFITSELF

2EMHFW

HTXDOV $VLQJOHREMHFW
JHW&ODVV RQWKHKHDS
KDVK&RGH

WR6WULQJ G WXUQ

UH

KDVK
VK

U LQJ
&R
W
W R6

GH

2EMHFW

6QRZERDUG 6QRZERDUGLQKHULWVPHWKRGV
HTX

IURPVXSHUFODVV2EMHFWDQG V
DO

HTXDOV V


JHW

OD
V

JHW&
URO

JHW&ODVV DGGVIRXUPRUH
$L


QW

R
U

KDVK&RGH
ORVH&
WR6WULQJ
6QRZERDUG
WXUQ W
6Q MHF
RZ E
VKUHG
RDUGRE
JHW$LU
ORVH&RQWURO

7KHUHLVRQO\21(REMHFWRQWKHKHDSKHUH$6QRZERDUG
REMHFW%XWLWFRQWDLQVERWKWKH6QRZERDUGFODVVSDUWVRI
LWVHOIDQGWKH2EMHFWFODVVSDUWVRILWVHOI
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

¶3RO\PRUSKLVP·PHDQV :KHQ\RXSXW
¶PDQ\IRUPV· DQREMHFWLQDQ
<RXFDQWUHDWD6QRZERDUGDVD $UUD\/LVW2EMHFW!\RX
6QRZERDUGRUDVDQ2EMHFW FDQWUHDWLWRQO\DVDQ
)FAREFERENCEISLIKEAREMOTECONTROL THE
2EMHFWUHJDUGOHVVRI
REMOTECONTROLTAKESONMOREANDMOREBUTTONS WKHW\SHLWZDVZKHQ
ASYOUMOVEDOWNTHEINHERITANCETREE! \RXSXWLWLQ
REMOTECONTROLREFERENCE OFTYPE/BJECTHAS
ONLYAFEWBUTTONSˆTHEBUTTONSFORTHEEXPOSED :KHQ\RXJHWD
METHODSOFCLASS/BJECT"UTAREMOTECONTROL UHIHUHQFHIURPDQ
OFTYPE3NOWBOARDINCLUDESALLTHEBUTTONSFROM $UUD\/LVW2EMHFW!WKH
CLASS/BJECT PLUSANYNEWBUTTONSFORNEW UHIHUHQFHLVDOZD\VRI
METHODS OFCLASS3NOWBOARD4HEMORESPECIlC
W\SH2EMHFW
THECLASS THEMOREBUTTONSITMAYHAVE
/FCOURSETHATSNOTALWAYSTRUEASUBCLASSMIGHT 7KDWPHDQV\RXJHWDQ
NOTADDANYNEWMETHODS BUTSIMPLYOVERRIDE 2EMHFWUHPRWHFRQWURO
THEMETHODSOFITSSUPERCLASS4HEKEYPOINTIS
THATEVENIFTHEOBJECTISOFTYPE3NOWBOARD AN
/BJECTREFERENCETOTHE3NOWBOARDOBJECTCANTSEE
THE3NOWBOARD SPECIlCMETHODS


6QRZERDUGV QHZ6QRZERDUG  UH G WXUQ

K
VK
J DVK
2EMHFWR V ULQ

&R
W
W R6

GH
2EMHFW


HTX


V
DO


JH

OD
V
JHW&
URO
W$

QW
R
LU

ORVH&
V

6QRZERDUG
7KH6QRZERDUGUHPRWHFRQWURO 6Q
RZ E MHF
W
UHIHUHQFH KDVPRUHEXWWRQVWKDQ IHZHUPHWKRGVKHUH RDUGRE
DQ2EMHFWUHPRWHFRQWURO7KH R
6QRZERDUGUHPRWHFDQVHHWKHIXOO
6QRZERDUGQHVVRIWKH6QRZERDUG 7KH2EMHFWUHIHUHQFHFDQVHHRQO\WKH
REMHFW,WFDQDFFHVVDOOWKHPHWKRGV 2EMHFWSDUWVRIWKH6QRZERDUGREMHFW
LQ6QRZERDUGLQFOXGLQJERWKWKH ,WFDQDFFHVVRQO\WKHPHWKRGVRIFODVV
LQKHULWHG2EMHFWPHWKRGVDQGWKH 2EMHFW,WKDVIHZHUEXWWRQVWKDQWKH
PHWKRGVIURPFODVV6QRZERDUG 6QRZERDUGUHPRWHFRQWURO
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FDVWLQJREMHFWV

:DLWDPLQXWHZKDWJRRG
LVD'RJLILWFRPHVRXWRIDQ
$UUD\/LVW2EMHFW!DQGLWFDQ·WGR &DVWLQJDQREMHFWUHIHUHQFH
DQ\'RJWKLQJV"7KHUH·VJRWWDEHD EDFNWRLWVUHDOW\SH
ZD\WRJHWWKH'RJEDFNWRDVWDWH
RI'RJQHVV

g
 W
' RJ
REMHF
2EMHFW
,KRSHLWGRHVQ·WKXUW
)TSREALLYSTILLA$OGOBJECT BUTIFYOUWANTTOCALL
$QGZKDW·VVRZURQJZLWK
VWD\LQJDQ2EMHFW"2.,FDQ·W
$OG SPECIlCMETHODS YOUNEEDAREFERENCEDECLARED
IHWFKVXUHEXW,FDQJLYH\RX
ASTYPE$OG)FYOURESURE
THEOBJECTISREALLYA
DUHDOQLFHKDVKFRGH
$OG YOUCANMAKEANEW$OGREFERENCETOITBY
COPYINGTHE/BJECTREFERENCE ANDFORCINGTHAT
COPYTOGOINTOA$OGREFERENCEVARIABLE USINGA
CAST$OG 9OUCANUSETHENEW$OGREFERENCETO
CALL$OGMETHODS

EMHFWEDFNUHWR
2EMHFWR DOJHW LQGH[ 
'RJG  'RJ R FDVWWKH2NQ LVWKH
GURDP  D'RJZH RZ

 g 
' RJ W
REMHF
2EMHFW

&DVWWKHVRFDOOHG¶2EMHFW· EXW
ZHNQRZKH·VDFWXDOO\D'RJ WR \
W\SH'RJVRWKDW\RXFDQWUHDW
'RJ
KLPOLNHWKH'RJKHUHDOO\LV

)FYOURENOTSUREITSA$OG YOUCANUSETHE
LQVWDQFHRIOPERATORTOCHECK"ECAUSEIF
YOUREWRONGWHENYOUDOTHECAST YOULLGETA
#LASS#AST%XCEPTIONATRUNTIMEANDCOMETOA
GRINDINGHALT
LI RLQVWDQFHRI'RJ ^
'RJG  'RJ R
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

6RQRZ\RX·YHVHHQKRZPXFK-DYD
FDUHVDERXWWKHPHWKRGVLQWKH
FODVVRIWKHUHIHUHQFHYDULDEOH
<RXFDQFDOODPHWKRGRQDQREMHFWRQO\LI
WKHFODVVRIWKHUHIHUHQFHYDULDEOHKDVWKDW
PHWKRG
7KLQNRIWKHSXEOLFPHWKRGVLQ\RXUFODVVDV
\RXUFRQWUDFW\RXUSURPLVHWRWKHRXWVLGH
ZRUOGDERXWWKHWKLQJV\RXFDQGR

7HENYOUWRITEACLASS YOUALMOSTALWAYSEXPOSESOME
OFTHEMETHODSTOCODEOUTSIDETHECLASS4OEXPOSEA
METHODMEANSYOUMAKEAMETHODACCESSIBLE USUALLYBY
MARKINGITPUBLIC
)MAGINETHISSCENARIOYOUREWRITINGCODEFORASMALL
BUSINESSACCOUNTINGPROGRAM!CUSTOMAPPLICATION
FORh3IMONS3URF3HOPv4HEGOODRE
$FFRXQW
USERTHATYOUARE YOUFOUNDAN!CCOUNT
CLASSTHATAPPEARSTOMEETYOURNEEDS GHELW GRXEOHDPW
PERFECTLY ACCORDINGTOITSDOCUMENTATION
ANYWAY%ACHACCOUNTINSTANCEREPRESENTS FUHGLW GRXEOHDPW
ANINDIVIDUALCUSTOMERSACCOUNTWITHTHE
GRXEOHJHW%DODQFH
STORE3OTHEREYOUAREMINDINGYOUROWN
BUSINESSINVOKINGTHECREDIT ANDDEBIT
METHODSONANACCOUNTOBJECTWHENYOUREALIZEYOU
NEEDTOGETABALANCEONANACCOUNT.OPROBLEMˆ
THERESAGET"ALANCE METHODTHATSHOULDDONICELY
%XCEPTWHENYOUINVOKETHEGET"ALANCE METHOD
THEWHOLETHINGBLOWSUPATRUNTIME&ORGETTHE
DOCUMENTATION THECLASSDOESNOTHAVETHATMETHOD
9IKES
"UTTHATWONTHAPPENTOYOU BECAUSEEVERYTIMEYOU
USETHEDOTOPERATORONAREFERENCEADO3TUFF THE
COMPILERLOOKSATTHEREFERENCETYPETHETYPE@AWAS
DECLAREDTOBE ANDCHECKSTHATCLASSTOGUARANTEETHE
CLASSHASTHEMETHOD ANDTHATTHEMETHODDOESINDEED
TAKETHEARGUMENTYOUREPASSINGANDRETURNTHEKINDOF
VALUEYOUREEXPECTINGTOGETBACK
*USTREMEMBERTHATTHECOMPILERCHECKSTHECLASSOFTHE
REFERENCEVARIABLE NOTTHECLASSOFTHEACTUALOBJECTATTHE
OTHERENDOFTHEREFERENCE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PRGLI\LQJDFODVVWUHH

?PI\QNaW]VMML\WKPIVOM
\PMKWV\ZIK\'
/+ PRETENDYOUREA$OG9OUR$OGCLASS
ISNTTHEONLYCONTRACTTHATDElNESWHOYOU
ARE2EMEMBER YOUINHERITACCESSIBLEWHICH
USUALLYMEANSPUBLIC METHODSFROMALLOF
YOURSUPERCLASSES
4RUE YOUR$OGCLASSDElNESACONTRACT
"UTNOTALLOFYOURCONTRACT YiX`e
%VERYTHINGINCLASS#ANINEISPARTOFYOUR gfn\i
CONTRACT
%VERYTHINGINCLASS!NIMALISPARTOFYOUR
CONTRACT 7KLQNDERXWZKDW<28ZRXOGGRLI<28ZHUH
%VERYTHINGINCLASS/BJECTISPARTOFYOUR WKH'RJFODVVSURJUDPPHUDQGQHHGHGWR
CONTRACT PRGLI\WKH'RJVRWKDWLWFRXOGGR3HWWKLQJV
!CCORDINGTOTHE)3 !TEST YOUAREEACHOF WRR:HNQRZWKDWVLPSO\DGGLQJQHZ3HWEH
THOSETHINGSˆ#ANINE !NIMAL AND/BJECT KDYLRUV PHWKRGV WRWKH'RJFODVVZLOOZRUN

"UTWHATIFTHEPERSONWHODESIGNEDYOUR DQGZRQ·WEUHDNDQ\RQHHOVH·VFRGH
CLASSHADINMINDTHE!NIMALSIMULATION %XWWKLVLVD3HW6KRSSURJUDP,WKDVPRUH
PROGRAM ANDNOWHEWANTSTOUSEYOUCLASS
WKDQMXVW'RJV$QGZKDWLIVRPHRQHZDQWV
$OG FORA3CIENCE&AIR4UTORIALON!NIMAL
OBJECTS WRXVH\RXU'RJFODVVIRUDSURJUDPWKDWKDV
ZLOG'RJV":KDWGR\RXWKLQN\RXURSWLRQV
4HATS/+ YOUREPROBABLYREUSABLEFORTHAT
PLJKWEHDQGZLWKRXWZRUU\LQJDERXWKRZ
"UTWHATIFLATERHEWANTSTOUSEYOUFORA -DYDKDQGOHVWKLQJVMXVWWU\WRLPDJLQHKRZ
0ET3HOPPROGRAM9OUDONTHAVEANY0ET
\RX·GOLNHWRVROYHWKHSUREOHPRIPRGLI\LQJ
BEHAVIORS!0ETNEEDSMETHODSLIKEBE&RIENDLY
ANDPLAY  VRPHRI\RXU$QLPDOFODVVHVWRLQFOXGH3HW
EHKDYLRUV
/+ NOWPRETENDYOURETHE$OGCLASS
PROGRAMMER.OPROBLEM RIGHT*USTADD 6WRSULJKWQRZDQGWKLQNDERXWLW
SOMEMOREMETHODSTOTHE$OGCLASS9OU EHIRUH\RXORRNDWWKHQH[WSDJHZKHUHZH
WONTBEBREAKINGANYONEELSESCODEBY
EHJLQWRUHYHDOHYHU\WKLQJ
ADDINGMETHODS SINCEYOUARENTTOUCHING
THEEXISTINGMETHODSTHATSOMEONEELSESCODE WKXVUHQGHULQJWKHZKROHH[HUFLVHFRPSOHWHO\XVHOHVVUREELQJ
MIGHTBECALLINGON$OGOBJECTS \RXRI\RXU2QH%LJ&KDQFHWREXUQVRPHEUDLQFDORULHV 
#ANYOUSEEANYDRAWBACKSTOTHATAPPROACH
ADDING0ETMETHODSTOTHE$OGCLASS 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

4M\¼[M`XTWZM[WUMLM[QOVWX\QWV[
NWZZM][QVO[WUMWNW]ZM`Q[\QVO
KTI[[M[QVI8M\;PWXXZWOZIU
/NTHENEXTFEWPAGES WEREGOINGTOWALKTHROUGH
SOMEPOSSIBILITIES7ERENOTYETWORRIEDABOUT
WHETHER*AVACANACTUALLYDOWHATWECOMEUPWITH
7ELLCROSSTHATBRIDGEONCEWEHAVEAGOODIDEAOF
SOMEOFTHETRADEOFFS

 7X\QWVWVM
:HWDNHWKHHDV\SDWKDQGSXWSHW
PHWKRGVLQFODVV$QLPDO 
 D O O  W KHSHW SKHUH
8ZW[" SXW GFRGHX
$OOWKH$QLPDOVZLOOLQVWDQWO\LQKHULW PHWKR KHULWDQFH
WKHSHWEHKDYLRUV:HZRQ·WKDYHWR IRULQ
WRXFKWKHH[LVWLQJ$QLPDOVXEFODVVHV
DWDOODQGDQ\$QLPDOVXEFODVVHV $QLPDO
FUHDWHGLQWKHIXWXUHZLOODOVRJHWWR
WDNHDGYDQWDJHRILQKHULWLQJWKRVH
PHWKRGV7KDWZD\FODVV$QLPDOFDQ
EHXVHGDVWKHSRO\PRUSKLFW\SHLQ
DQ\SURJUDPWKDWZDQWVWRWUHDWWKH
$QLPDOVDVSHWV &DQLQH

+WV[" +LSSR

6RZKHQZDVWKHODVWWLPH\RX
VDZD+LSSRDWDSHWVKRS"/LRQ" )HOLQH
:ROI"&RXOGEHGDQJHURXVWRJLYH
QRQSHWVSHWPHWKRGV 'RJ

$OVRZHDOPRVWFHUWDLQO\:,//
KDYHWRWRXFKWKHSHWFODVVHV
&DW
OLNH'RJDQG&DWEHFDXVH LQ :ROI
RXUKRXVHDQ\ZD\ 'RJV
DQG&DWVWHQGWRLPSOH /LRQ
PHQWSHWEHKDYLRUV 7LJHU
9(5<GLIIHUHQWO\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PRGLI\LQJH[LVWLQJFODVVHV


 7X\QWV\ _W
:HVWDUWZLWK2SWLRQ2QHSXWWLQJWKHSHWPHWKRGV
LQFODVV$QLPDOEXWZHPDNHWKHPHWKRGVDEVWUDFW
IRUFLQJWKH$QLPDOVXEFODVVHVWRRYHUULGHWKHP

8ZW["

7KDWZRXOGJLYHXVDOOWKHEHQHÀWVRI2SWLRQ2QHEXWZLWK
S HW P HWKRGV
OWKH KQR 
RXWWKHGUDZEDFNRIKDYLQJQRQSHW$QLPDOVUXQQLQJDURXQG
ZLWKSHWPHWKRGV OLNHEH)ULHQGO\ $OO$QLPDOFODVVHV SXWDHOUHEXWZLQWV0DNHDOO
ZRXOGKDYHWKHPHWKRG EHFDXVHLW·VLQFODVV$QLPDO EXW XSK HPHQWDWLR DEVWUDFW
EHFDXVHLW·VDEVWUDFWWKHQRQSHW$QLPDOFODVVHVZRQ·W LPSO PHWKRGV
LQKHULWDQ\IXQFWLRQDOLW\$OOFODVVHV0867RYHUULGHWKH SHW
PHWKRGVEXWWKH\FDQPDNHWKHPHWKRGV´GRQRWKLQJVµ

$QLPDO
+WV["
%HFDXVHWKHSHWPHWKRGVLQWKH$QLPDOFODVVDUHDOO
DEVWUDFWWKHFRQFUHWH$QLPDOVXEFODVVHVDUHIRUFHGWR
LPSOHPHQWDOORIWKHP 5HPHPEHUDOODEVWUDFWPHWKRGV
0867EHLPSOHPHQWHGE\WKHÀUVWFRQFUHWHVXEFODVV
GRZQWKHLQKHULWDQFHWUHH :KDWDZDVWHRIWLPH &DQLQH
<RXKDYHWRVLWWKHUHDQGW\SHLQHDFKDQGHYHU\
+LSSR
SHWPHWKRGLQWRHDFKDQGHYHU\FRQFUHWHQRQ
SHWFODVVDQGDOOIXWXUHVXEFODVVHVDVZHOO
$QGZKLOHWKLVGRHVVROYHWKHSUREOHPRI )HOLQH
QRQSHWVDFWXDOO\'2,1*SHWWKLQJV
DVWKH\ZRXOGLIWKH\LQKHULWHGSHW 'RJ
IXQFWLRQDOLW\IURPFODVV$QLPDO WKH
FRQWUDFWLVEDG(YHU\QRQSHW
FODVVZRXOGEHDQQRXQFLQJWRWKH
ZRUOGWKDWLWWRRKDVWKRVH &DW
:ROI
SHWPHWKRGVHYHQWKRXJK
WKHPHWKRGVZRXOGQ·W
DFWXDOO\'2DQ\WKLQJ /LRQ
ZKHQFDOOHG 7LJHU

7KLVDSSURDFKGRHVQ·W
ORRNJRRGDWDOO,WMXVW $VNPHWREHIULHQGO\
VHHPVZURQJWRVWXII 1RVHULRXVO\DVNPH
HYHU\WKLQJLQWRFODVV$QLPDO ,KDYHWKHPHWKRG
WKDWPRUHWKDQRQH$QLPDOW\SH
PLJKWQHHG81/(66LWDSSOLHVWR
$//$QLPDOVXEFODVVHV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

 7X\QWV\PZMM
3XWWKHSHWPHWKRGV21/<LQWKH
FODVVHVZKHUHWKH\EHORQJ

8ZW["
1RPRUHZRUULHVDERXW+LSSRVJUHHWLQJ\RXDWWKH
GRRURUOLFNLQJ\RXUIDFH7KHPHWKRGVDUHZKHUH
WKH\EHORQJDQG21/<ZKHUHWKH\EHORQJ'RJVFDQ
LQWKH
WKRGV21E/H<SHWV
LPSOHPHQWWKHPHWKRGVDQG&DWVFDQLPSOHPHQWWKH
PHWKRGVEXWQRERG\HOVHKDVWRNQRZDERXWWKHP K H S H W P H
3XWW ODVVHVWKDWFDQ
$QLPDOF ILQ$QLPDO
+WV[" LQVWHDGR
7ZR%LJ3UREOHPVZLWKWKLVDSSURDFK)LUVWRII\RX·G
KDYHWRDJUHHWRDSURWRFRODQGDOOSURJUDPPHUVRI
SHW$QLPDOFODVVHVQRZDQGLQWKHIXWXUHZRXOGKDYH
WR.12:DERXWWKHSURWRFRO%\SURWRFROZHPHDQ $QLPDO
WKHH[DFWPHWKRGVWKDWZH·YHGHFLGHGDOOSHWVVKRXOG
KDYH7KHSHWFRQWUDFWZLWKRXWDQ\WKLQJWREDFNLWXS
%XWZKDWLIRQHRIWKHSURJUDPPHUVJHWVLWMXVWDWLQ\
ELWZURQJ"/LNHDPHWKRGWDNHVD6WULQJZKHQLWZDV
VXSSRVHGWRWDNHDQLQW"2UWKH\QDPHGLWGR)ULHQGO\ 
LQVWHDGRIEH)ULHQGO\ "6LQFHLWLVQ·WLQDFRQWUDFW &DQLQH
WKHFRPSLOHUKDVQRZD\WRFKHFN\RXWRVHHLI\RX·YH
+LSSR
LPSOHPHQWHGWKHPHWKRGVFRUUHFWO\6RPHRQH
FRXOGHDVLO\FRPHDORQJWRXVHWKHSHW$QLPDO
FODVVHVDQGÀQGWKDWQRWDOORIWKHPZRUN )HOLQH
TXLWHULJKW
'RJ
$QGVHFRQG\RXGRQ·WJHWWRXVH
SRO\PRUSKLVPIRUWKHSHWPHWKRGV
(YHU\FODVVWKDWQHHGVWRXVH
SHWEHKDYLRUVZRXOGKDYHWR &DW
:ROI
NQRZDERXWHDFKDQGHYHU\
FODVV,QRWKHUZRUGV
/LRQ
\RXFDQ·WXVH$QLPDO
7LJHU
DVWKHSRO\PRUSKLF
W\SHQRZEHFDXVHWKH
FRPSLOHUZRQ·WOHW\RXFDOO
D3HWPHWKRGRQDQ$QLPDO
UHIHUHQFH HYHQLILW·VUHDOO\D
'RJREMHFW EHFDXVHFODVV$QLPDO
GRHVQ·WKDYHWKHPHWKRG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PXOWLSOHLQKHULWDQFH"

6RZKDWZH5($//<QHHGLV
“ $ZD\WRKDYHSHWEHKDYLRULQMXVWWKHSHWFODVVHV
“ $ZD\WRJXDUDQWHHWKDWDOOSHWFODVVHVKDYHDOORIWKHVDPH
PHWKRGVGHILQHG VDPHQDPHVDPHDUJXPHQWVVDPHUHWXUQ
W\SHVQRPLVVLQJPHWKRGVHWF ZLWKRXWKDYLQJWRFURVV\RXU
ILQJHUVDQGKRSHDOOWKHSURJUDPPHUVJHWLWULJKW
“ $ZD\WRWDNHDGYDQWDJHRISRO\PRUSKLVPVRWKDWDOOSHWVFDQKDYH
WKHLUSHWPHWKRGVFDOOHGZLWKRXWKDYLQJWRXVHDUJXPHQWVUHWXUQ
W\SHVDQGDUUD\VIRUHDFKDQGHYHU\SHWFODVV

Licensed by
,WORRNVOLNHZHQHHG7:2
VXSHUFODVVHVDWWKHWRS

W UDFW 

Eduard Simons
 D E V
HZ HWDQG
NHDQ 3
:HPD ODVVFDOOHG WPHWKRGV
U F
VXSH DOOWKH S H
JLYHLW 3HW $QLPDO

104038
&DQLQH

+LSSR

)HOLQH

'RJ

'RJH
&DW /LRQ 3HWDQ[WHQGVERWK
:ROI
G$QLP
DO
HQGV
&DWQRZH[W QLPDO 7LJHU

IURPERWK$ LWJHWV
$1'3HWVR RIERWK
WKHPHWKRGV 7KHQRQSHW$QLPDOV
GRQ·WKDYHDQ\LQKHULWHG
3HWVWXII

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

7KHUH·VMXVWRQHSUREOHPZLWKWKH´WZRVXSHUFODVVHVµDSSURDFK

,W·VFDOOHG´PXOWLSOHLQKHULWDQFHµ
DQGLWFDQEHD5HDOO\%DG7KLQJ
7KDWLVLILWZHUHSRVVLEOHWRGRLQ-DYD

%XWLWLVQ·WEHFDXVHPXOWLSOHLQKHULWDQFHKDVDSUREOHP
NQRZQDV7KH'HDGO\'LDPRQGRI'HDWK

'HDGO\'LDPRQGRI'HDWK

UQHUERWK
'LJLWDO5HFRUGHU
G  ' 9' % X LQWL
DQ
&'%XUQHU P'LJLWDO5HFRUGHU
U R
LQKHULW YHUULGHWKHEXUQ 
I EXUQ

DQGERWKRRWKLQKHULWWKH´Lµ
PHWKRG% ULDEOH 
LQVWDQFHYD  W K H ´ Lµ LQVWDQFH XUQHU
KDW ' %
,PDJLQHWLVXVHGE\ERWK&LIIHUHQW
&'%XUQHU '9'%XUQHU


YDULDEOH %XUQHUZLWK &RPER'ULYHG
DQG'9'KDWKDSSHQVLI RI´Lµ"
EXUQ EXUQ

YDOXHV: XVHERWKYDOXHV
QHHGVWR
&RPER'ULYH
3UREOHPZLW
:KLFKEXUQ KPXOWLSOHLQKHULWDQFH
FDOOEXUQ R PHWKRGUXQVZKHQ\RX
QWKH&RPER
'ULYH"

!LANGUAGETHATALLOWSTHE$EADLY$IAMONDOF$EATHCANLEADTO
SOMEUGLYCOMPLEXITIES BECAUSEYOUHAVETOHAVESPECIALRULESTO
DEALWITHTHEPOTENTIALAMBIGUITIES!NDEXTRARULESMEANSEXTRA
WORKFORYOUBOTHINLEARNINGTHOSERULESANDWATCHINGOUTFOR
THOSEhSPECIALCASESv*AVAISSUPPOSEDTOBESIMPLE WITHCONSISTENT
RULESTHATDONTBLOWUPUNDERSOMESCENARIOS3O*AVAUNLIKE
# PROTECTSYOUFROMHAVINGTOTHINKABOUTTHE$EADLY$IA
MONDOF$EATH"UTTHATBRINGSUSBACKTOTHEORIGINALPROBLEM
(OWDOWEHANDLETHE!NIMAL0ETTHING

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHV

1V\MZNIKM\W\PMZM[K]M
*AVAGIVESYOUASOLUTION!NINTERFACE.OTA'5)INTERFACE NOTTHEGENERIC
USEOFTHEWORDINTERFACEASIN h4HATSTHEPUBLICINTERFACEFORTHE"UTTON
CLASS!0) vBUTTHE*AVAKEYWORDLQWHUIDFH
!*AVAINTERFACESOLVESYOURMULTIPLEINHERITANCEPROBLEMBYGIVINGYOU
MUCHOFTHEPOLYMORPHICBENElTSOFMULTIPLEINHERITANCEWITHOUTTHEPAIN
ANDSUFFERINGFROMTHE$EADLY$IAMONDOF$EATH$$$ 
4HEWAYINWHICHINTERFACESSIDE STEPTHE$$$ISSURPRISINGLYSIMPLEMAKE
ALLTHEMETHODSABSTRACT4HATWAY THESUBCLASSMUSTIMPLEMENTTHEMETHODS
REMEMBER ABSTRACTMETHODSMUSTBEIMPLEMENTEDBYTHElRSTCONCRETE
SUBCLASS SOATRUNTIMETHE*6-ISNTCONFUSEDABOUTWHICHOFTHETWO
INHERITEDVERSIONSITSSUPPOSEDTOCALL

7L[ $-DYDLQWHUIDFHLVOLNHD
SXUHDEVWUDFWFODVV

HIZ[YHJ[]VPKIL-YPLUKS`"
K R G VLQ D Q L QWHUIDFHDUH $
$OOPH W ,6
HIZ[YHJ[]VPKWSH`" Q\FODVVWKDW
DEVWUDFWVRDPSOHPHQW LHRYHUULGH 
3HW0867L RI3HW
WKHPHWKRGV

7R'(),1(DQLQWHUIDFH
SXEOLFLQWHUIDFH3HW^`

8VHWKHNH
LQVWHDGRI\ZRUG´LQWHUIDFHµ
´FODVVµ

7R,03/(0(17DQLQWHUIDFH
SXEOLFFODVV'RJH[WHQGV&DQLQHLPSOHPHQWV3HW^`
ZHG
N H\ Z RU G ´ LP SOHPHQWVµIROOR
8VHWKH KDW
HQDPH1RWHW H\RX
E\ W KH L QW HUI DF DF
HQWDQLQWHUI
ZKHQ\RXLPSOHPHQGDFODVV
VWLOOJHWWRH[W
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

5ISQVOIVL1UXTMUMV\QVO LQWHUIDFHP
\PM8M\QV\MZNIKM DEVWUDFWVRHWW\KRSLGVDUHLPSOLFLWO\SXE
OLFDQG
LVRSWLRQDO LQIDFQJLQ¶SXEOLF·DQG¶DEVWUDFW·
VW\OH·WRW\SHWKH W LW·V QRWFR
 MXVWWRUHLQIRUF ZRUGVLQEXWQVZLGHHUHG¶JRRG
IDFH·LQVWHDG GLGKHUH
EHHQVODYHVWRIDVHLWDQGEHFDXVHZH·YHQHYHU
<RXVD\¶LQKWHUHUH KLRQ 
RI¶FODVV·

PHWKRGVDUH
SXEOLFLQWHUIDFH3HW^ $OOLQWHUIDFHWKH\0867HQGLQ
DEVWUDFWVR HPHPEHUWKH\KDYH
SXEOLFDEVWUDFWYRLGEH)ULHQGO\  VHPLFRORQV5
SXEOLFDEVWUDFWYRLGSOD\  QRERG\
`

·
QLPDO <RXVD\¶LPSOHPKHHQQWVDPH
'RJ,6$,$
6  $3HW E\ W
IROORZHG DFH
DQG'RJ SXEOLFFODVV'RJH[WHQGV&DQLQHLPSOHPHQWV3HW^ RIW
KHLQWHUI

SXEOLFYRLGEH)ULHQGO\ ^`
<RX6$,'
SXEOLFYRLGSOD\ ^` LPSOHPHQWW\KRXDUHD3HWVR\RX0
FRQWUDFW R H3HWPHWKRGV,W·V\ 867
LQVWHDGRIV1HP
WLFHWKHFXUO\ RXU
EUDFHV 
LFRORQV
SXEOLFYRLGURDP ^`
7KHVHDUHMXV
RYHUULGLQJPHWWKRQRGVUP
SXEOLFYRLGHDW ^` DO

`

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7AITAMINUTE INTERFACESDONT
TYPES YOUCANPASSANYTHINGTHAT
IMPLEMENTSTHATINTERFACE!NDTHINK
TOEXTEND9OUCOULDJUSTGIVETHEM
THEINTERFACEANDSAY h(ERE )DONT
REALLYGIVEYOUMULTIPLEINHERITANCE ABOUTITˆWITHANINTERFACE ACLASS CAREWHATKINDOFCLASSINHERITANCE
BECAUSEYOUCANTPUTANY DOESNTHAVETOCOMEFROMJUSTONE STRUCTUREYOUCOMEFROM JUST
IMPLEMENTATIONCODEINTHEM)FALL INHERITANCETREE!CLASSCANEXTEND IMPLEMENTTHISINTERFACEANDYOULLBE
THEMETHODSAREABSTRACT WHATDOES ONECLASS ANDIMPLEMENTANINTERFACE GOODTOGOv
ANINTERFACEREALLYBUYYOU "UTANOTHERCLASSMIGHTIMPLEMENT 4HEFACTTHATYOUCANTPUTIN
THESAMEINTERFACE YETCOMEFROMA
IMPLEMENTATIONCODETURNSOUTNOTTO
COMPLETELYDIFFERENTINHERITANCETREE
A: 0OLYMORPHISM POLYMORPHISM
POLYMORPHISM)NTERFACESARETHE
3OYOUGETTOTREATANOBJECTBYTHE
ROLEITPLAYS RATHERTHANBYTHECLASS
BEAPROBLEMFORMOSTGOODDESIGNS
BECAUSEMOSTINTERFACEMETHODS
WOULDNTMAKESENSEIFIMPLEMENTED
ULTIMATEINFLEXIBILITY BECAUSEIFYOU TYPEFROMWHICHITWASINSTANTIATED INAGENERICWAY)NOTHERWORDS MOST
USEINTERFACESINSTEADOFCONCRETE )NFACT IFYOUWROTEYOURCODETOUSE INTERFACEMETHODSWOULDNEEDTO
SUBCLASSESOREVENABSTRACTSUPERCLASS INTERFACES YOUWOULDNTEVENHAVETO BEOVERRIDDENEVENIFTHEMETHODS
TYPES ASARGUMENTSANDRETURN GIVEANYONEASUPERCLASSTHATTHEYHAD WERENTFORCEDTOBEABSTRACT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHSRO\PRUSKLVP

&ODVVHVIURPGLIIHUHQWLQKHULWDQFHWUHHV
FDQLPSOHPHQWWKHVDPHLQWHUIDFH
5RERW

3HW $QLPDO

$JHQW
5RER'RJ
&DQLQH

&ODVV5RER' GRH
FRPHIURPWRJ
+LSSR
VQ·W
LQKHULWDQFHWUKHHH$EQLPDO
JHWVWREHD3HW  XWLWVWLOO )HOLQH

'RJ

&DW /LRQ :ROI

7LJHU

7HENYOUUSEACLASSASAPOLYMORPHICTYPELIKEAN THEIRMETHODSINASEPARATETHREADOFEXECUTION
ARRAYOFTYPE!NIMALORAMETHODTHATTAKESA#ANINE )MPLEMENT2UNNABLE9OUGETTHEIDEA9OULL
ARGUMENT THEOBJECTSYOUCANSTICKINTHATTYPE LEARNMOREABOUT3ERIALIZABLEAND2UNNABLEINLATER
MUSTBEFROMTHESAMEINHERITANCETREE"UTNOTJUST CHAPTERS BUTFORNOW REMEMBERTHATCLASSESFROM
ANYWHEREINTHEINHERITANCETREETHEOBJECTSMUSTBE ANYPLACEINTHEINHERITANCETREEMIGHTNEEDTO
FROMACLASSTHATISASUBCLASSOFTHEPOLYMORPHICTYPE IMPLEMENTTHOSEINTERFACES.EARLYANYCLASSMIGHT
!NARGUMENTOFTYPE#ANINECANACCEPTA7OLFANDA WANTTOBESAVEABLEORRUNNABLE
$OG BUTNOTA#ATORA(IPPO
%HWWHUVWLOODFODVVFDQLPSOHPHQW
"UTWHENYOUUSEANINTERFACEASAPOLYMORPHIC PXOWLSOHLQWHUIDFHV
TYPELIKEANARRAYOF0ETS THEOBJECTSCANBE
FROMANYWHEREINTHEINHERITANCETREE4HEONLY !$OGOBJECT)3 !#ANINE AND)3 !!NIMAL AND
REQUIREMENTISTHATTHEOBJECTSAREFROMACLASSTHAT )3 !/BJECT ALLTHROUGHINHERITANCE"UTA$OG)3 !
IMPLEMENTSTHEINTERFACE!LLOWINGCLASSESINDIFFERENT 0ETTHROUGHINTERFACEIMPLEMENTATION ANDTHE$OG
INHERITANCETREESTOIMPLEMENTACOMMONINTERFACE MIGHTIMPLEMENTOTHERINTERFACESASWELL9OUCOULD
ISCRUCIALINTHE*AVA!0)$OYOUWANTANOBJECT SAY
TOBEABLETOSAVEITSSTATETOAlLE)MPLEMENTTHE SXEOLFFODVV'RJH[WHQGV$QLPDOLPSOHPHQWV
3ERIALIZABLEINTERFACE$OYOUNEEDOBJECTSTORUN 3HW6DYHDEOH3DLQWDEOH^`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

W LFN
0DNH LW 6
BLUE
LETSARE TT WO
S E S A RE RED VIO PLEMEN
2O E B U T IM
ONLYON
%X TEND
ALUES
S I N O N FAMILYV CANHA
VE
*AVAWE
IGH
 ! * A VACLASS TPARENT
ARENTS/
NLY DTHA
LASS AN MPLE
3INGLE0 ARENTSUPERC "UTYOUCANI CES
LY O N E P O U A RE  I N TE R FA
ON HOY HOSE
FINESW S ANDT
CLASSDE IPLEINTER FACE
ULT 
MENTM SYOUCANPLAY
E R OLE
DEFIN

+RZGR\RXNQRZZKHWKHUWRPDNHD
FODVVDVXEFODVVDQDEVWUDFWFODVVRU
DQLQWHUIDFH"

  0DNHDFODVVWKDWGRHVQ·WH[WHQGDQ\WKLQJ
RWKHUWKDQ2EMHFW ZKHQ\RXUQHZFODVVGRHVQ·W
SDVVWKH,6$WHVWIRUDQ\RWKHUW\SH

  0DNHDVXEFODVV LQRWKHUZRUGVH[WHQGDFODVV 
RQO\ZKHQ\RXQHHGWRPDNHDPRUHVSHFLÀF
YHUVLRQRIDFODVVDQGQHHGWRRYHUULGHRUDGG
QHZEHKDYLRUV

  8VHDQDEVWUDFWFODVVZKHQ\RXZDQWWRGHÀQH
DWHPSODWHIRUDJURXSRIVXEFODVVHVDQG\RX
KDYHDWOHDVWVRPHLPSOHPHQWDWLRQFRGHWKDWDOO
VXEFODVVHVFRXOGXVH0DNHWKHFODVVDEVWUDFW
ZKHQ\RXZDQWWRJXDUDQWHHWKDWQRERG\FDQ
PDNHREMHFWVRIWKDWW\SH

  8VHDQLQWHUIDFHZKHQ\RXZDQWWRGHÀQHDUROH
WKDWRWKHUFODVVHVFDQSOD\UHJDUGOHVVRIZKHUH
WKRVHFODVVHVDUHLQWKHLQKHULWDQFHWUHH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVXSHU

,QYRNLQJWKHVXSHUFODVV WKH 
YHUVLRQRI
YHUVLRQRIDPHWKRG VXSHUFODVVRHVLPSRUWDQWVWXII
PHWKRGGFODVVHVFRXOGXVH
Q: 7HATIFYOUMAKEACONCRETESUBCLASS DEVWUDFWFODVV5HSRUW^
YRLGUXQ5HSRUW ^
WKDWVXE
ANDYOUNEEDTOOVERRIDEAMETHOD BUTYOU
VHWXSUHSRUW
WANTTHEBEHAVIORINTHESUPERCLASSVERSIONOF
`
THEMETHOD)NOTHERWORDS WHATIFYOUDONT YRLGSULQW5HSRUW ^
NEEDTOREPLACETHEMETHODWITHANOVERRIDE JHQHULFSULQWLQJ
BUTYOUJUSTWANTTOADDTOITWITHSOME `
ADDITIONALSPECIlCCODE `

A: !HHHTHINKABOUTTHEMEANINGOFTHE
FODVV%X]]ZRUGV5HSRUWH[WHQGV5HSRUW^

UVLRQ
WORD@EXTENDS/NEAREAOFGOOD//DESIGNLOOKS YRLGUXQ5HSRUW ^
F DOO V XSHUFODVVYNHDQG
DF
WKHQFRPHXEEFODVV
ATHOWTODESIGNCONCRETECODETHATSMEANTTO VXSHUUXQ5HSRUW 
BEOVERRIDDEN)NOTHERWORDS YOUWRITEMETHOD EX]]ZRUG&RPSOLDQFH 
CODEIN SAY ANABSTRACTCLASS THATDOESWORK SULQW5HSRUW  GRVRPHV WXII
THATSGENERICENOUGHTOSUPPORTTYPICALCONCRETE VSHFLILFV
IMPLEMENTATIONS"UT THECONCRETECODEISNT `
ENOUGHTOHANDLEALLOFTHESUBCLASS SPECIFIC YRLGEX]]ZRUG&RPSOLDQFH ^`
WORK3OTHESUBCLASSOVERRIDESTHEMETHOD `
ANDEXTENDSITBYADDINGTHERESTOFTHECODE
4HEKEYWORDSUPERLETSYOUINVOKEASUPERCLASS
VERSIONOFANOVERRIDDENMETHOD FROMWITHINTHE
SUBCLASS
,IPHWKRGFRGHLQVLGHD LGHV
%X]]ZRUG5HSRUWVXEFODVVVD\V V V  P HW K RG RYHUU
VXEFOD UFODVVYHUVLRQ
VXSHUUXQ5HSRUW 
WKHVXSH
WKHUXQ5HSRUW PHWKRGLQVLGH UXQ5HSRUW
WKHVXSHUFODVV5HSRUWZLOOUXQ EX]]ZRUG&RPSOLDQFH VXSHUFODVVPHWKRGV GGHQ
UXQ5HSRUW
LQFOXGLQJWKHRYHUUL
SULQW5HSRUW UXQ5HSRUW
5HSRUW
VXSHUUXQ5HSRUW 
%X]]ZRUG5HSRUW
$UHIHUHQFHWRWKHVXEFODVVREMHFW
%X]]ZRUG5HSRUW ZLOODOZD\VFDOO
WKHVXEFODVVYHUVLRQRIDQRYHUULGGHQ
PHWKRG7KDW·VSRO\PRUSKLVP 7KHVXSHUNH\ZRUGLVUHDOO\DUHIHUHQFH
%XWWKHVXEFODVVFRGHFDQFDOO WRWKHVXSHUFODVVSRUWLRQRIDQREMHFW
VXSHUUXQ5HSRUW WRLQYRNHWKH :KHQVXEFODVVFRGHXVHVVXSHUDVLQ
VXSHUFODVVYHUVLRQ VXSHUUXQ5HSRUW WKHVXSHUFODVVYHUVLRQRI
WKHPHWKRGZLOOUXQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

:MDD=LHGAFLK Q: 4HERESSTILLSOMETHING
STRANGEHEREYOUNEVER
 :KHQ\RXGRQ·WZDQWDFODVVWREHLQVWDQWLDWHG LQRWKHUZRUGV\RXGRQ·W
ZDQWDQ\RQHWRPDNHDQHZREMHFWRIWKDWFODVVW\SH PDUNWKHFODVVZLWKWKH
EXPLAINEDHOWITISTHAT
!RRAY,IST$OGGIVESBACK$OG
DEVWUDFWNH\ZRUG REFERENCESTHATDONTNEEDTOBE
CAST YETTHE!RRAY,ISTCLASSUSES
 $QDEVWUDFWFODVVFDQKDYHERWKDEVWUDFWDQGQRQDEVWUDFWPHWKRGV /BJECTINITSMETHODS NOT$OG
OR$OT#OMORANYTHINGELSE 
 ,IDFODVVKDVHYHQRQHDEVWUDFWPHWKRGWKHFODVVPXVWEHPDUNHGDEVWUDFW
7HATSTHESPECIALTRICKGOINGON
 $QDEVWUDFWPHWKRGKDVQRERG\DQGWKHGHFODUDWLRQHQGVZLWKDVHPLFRORQ QR
FXUO\EUDFHV 
WHENYOUSAY!RRAY,IST$OG

 $OODEVWUDFWPHWKRGVPXVWEHLPSOHPHQWHGLQWKHILUVWFRQFUHWHVXEFODVVLQWKH
LQKHULWDQFHWUHH
A: 9OURERIGHTFORCALLINGITA
SPECIALTRICK)NFACTITISASPECIAL
TRICKTHAT!RRAY,IST$OGGIVES
 (YHU\FODVVLQ-DYDLVHLWKHUDGLUHFWRULQGLUHFWVXEFODVVRIFODVV2EMHFW MDYDODQJ
2EMHFW 
BACK$OGSWITHOUTYOUHAVING
TODOANYCAST SINCEITLOOKSLIKE
!RRAY,ISTMETHODSDONTKNOW
 0HWKRGVFDQEHGHFODUHGZLWK2EMHFWDUJXPHQWVDQGRUUHWXUQW\SHV
ANYTHINGABOUT$OGS ORANYTYPE
 <RXFDQFDOOPHWKRGVRQDQREMHFWRQO\LIWKHPHWKRGVDUHLQWKHFODVV RULQWHUIDFH 
XVHGDVWKHUHIHUHQFHYDULDEOHW\SHUHJDUGOHVVRIWKHDFWXDOREMHFWW\SH6RD
BESIDES/BJECT
4HESHORTANSWERISTHATTHE
UHIHUHQFHYDULDEOHRIW\SH2EMHFWFDQEHXVHGRQO\WRFDOOPHWKRGVGHILQHGLQFODVV COMPILERPUTSINTHECASTFORYOU
2EMHFWUHJDUGOHVVRIWKHW\SHRIWKHREMHFWWRZKLFKWKHUHIHUHQFHUHIHUV 7HENYOUSAY!RRAY,IST$OG
THEREISNOSPECIALCLASSTHATHAS
 $UHIHUHQFHYDULDEOHRIW\SH2EMHFWFDQ·WEHDVVLJQHGWRDQ\RWKHUUHIHUHQFHW\SH
ZLWKRXWDFDVW$FDVWFDQEHXVHGWRDVVLJQDUHIHUHQFHYDULDEOHRIRQHW\SHWRD
METHODSTOTAKEANDRETURN$OG
OBJECTS BUTINSTEADTHE$OG
UHIHUHQFHYDULDEOHRIDVXEW\SHEXWDWUXQWLPHWKHFDVWZLOOIDLOLIWKHREMHFWRQWKH ISASIGNALTOTHECOMPILERTHAT
KHDSLV127RIDW\SHFRPSDWLEOHZLWKWKHFDVW YOUWANTTHECOMPILERTOLET
([DPSOH'RJG  'RJ [JHW2EMHFW D'RJ  YOUPUT/.,9$OGOBJECTSIN
ANDTOSTOPYOUIFYOUTRYTOADD
 $OOREMHFWVFRPHRXWRIDQ$UUD\/LVW2EMHFW!DVW\SH2EMHFW PHDQLQJWKH\FDQEH
UHIHUHQFHGRQO\E\DQ2EMHFWUHIHUHQFHYDULDEOHXQOHVV\RXXVHDFDVW 
ANYOTHERTYPETOTHELIST!ND
SINCETHECOMPILERSTOPSYOU
FROMADDINGANYTHINGBUT$OGS
 0XOWLSOHLQKHULWDQFHLVQRWDOORZHGLQ-DYDEHFDXVHRIWKHSUREOHPVDVVRFLDWHGZLWK
WKH´'HDGO\'LDPRQGRI'HDWKµ7KDWPHDQV\RXFDQH[WHQGRQO\RQHFODVV LH\RX
TOTHE!RRAY,IST THECOMPILER
ALSOKNOWSTHATITSSAFETOCAST
FDQKDYHRQO\RQHLPPHGLDWHVXSHUFODVV  ANYTHINGTHATCOMESOUTOFTHAT
!RRAY,ISTDOA$OGREFERENCE)N
 $QLQWHUIDFHLVOLNHDSXUHDEVWUDFWFODVV,WGHILQHVRQO\DEVWUDFWPHWKRGV
OTHERWORDS USING!RRAY,IST$OG
 &UHDWHDQLQWHUIDFHXVLQJWKHLQWHUIDFHNH\ZRUGLQVWHDGRIWKHZRUGFODVV SAVESYOUFROMHAVINGTOCAST
THE$OGYOUGETBACK"UTITS
 ,PSOHPHQWDQLQWHUIDFHXVLQJWKHNH\ZRUGLPSOHPHQWV
([DPSOH'RJLPSOHPHQWV3HW
MUCHMOREIMPORTANTTHANTHAT
BECAUSEREMEMBER ACASTCAN
FAILATRUNTIME ANDWOULDNTYOU
 <RXUFODVVFDQLPSOHPHQWPXOWLSOHLQWHUIDFHV
RATHERHAVEYOURERRORSHAPPEN
 $FODVVWKDWLPSOHPHQWVDQLQWHUIDFHPXVWLPSOHPHQWDOOWKHPHWKRGVRIWKH
LQWHUIDFHVLQFHDOOLQWHUIDFHPHWKRGVDUHLPSOLFLWO\SXEOLFDQGDEVWUDFW
ATCOMPILETIMERATHERTHAN SAY
WHENYOURCUSTOMERISUSINGITFOR
SOMETHINGCRITICAL
 7RLQYRNHWKHVXSHUFODVVYHUVLRQRIDPHWKRGIURPDVXEFODVVWKDW·VRYHUULGGHQWKH
PHWKRGXVHWKHVXSHUNH\ZRUG([DPSOHVXSHUUXQ5HSRUW 
"UTTHERESALOTMORETOTHISSTORY
ANDWELLGETINTOALLTHEDETAILSIN
THE#OLLECTIONSCHAPTER

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH:KDW·VWKH3LFWXUH"

(ERESYOURCHANCETODEMONSTRATEYOURARTISTICABILITIES/NTHELEFTYOULL
1dQ^OU_Q lNDSETSOFCLASSANDINTERFACEDECLARATIONS9OURJOBISTODRAWTHEASSOCIATED
CLASSDIAGRAMSONTHERIGHT7EDIDTHElRSTONEFORYOU5SEADASHEDLINEFOR
hIMPLEMENTSvANDASOLIDLINEFORhEXTENDSv
/Q^MV" ?PI\¼[\PM8QK\]ZM'
LQWHUIDFH
 )RR
 SXEOLFLQWHUIDFH)RR^`
SXEOLFFODVV%DULPSOHPHQWV)RR^`



 SXEOLFLQWHUIDFH9LQQ^`
SXEOLFDEVWUDFWFODVV9RXWLPSOHPHQWV9LQQ^` %DU

 SXEOLFDEVWUDFWFODVV0XIÀHLPSOHPHQWV:KXIÀH^`
SXEOLFFODVV)OXIÀHH[WHQGV0XIÀH^` 
SXEOLFLQWHUIDFH:KXIÀH^`

 SXEOLFFODVV=RRS^` 
SXEOLFFODVV%RRSH[WHQGV=RRS^`
SXEOLFFODVV*RRSH[WHQGV%RRS^`

 SXEOLFFODVV*DPPDH[WHQGV'HOWDLPSOHPHQWV(SVLORQ^`
SXEOLFLQWHUIDFH(SVLORQ^`
SXEOLFLQWHUIDFH%HWD^` 
SXEOLFFODVV$OSKDH[WHQGV*DPPDLPSOHPHQWV%HWD^`
SXEOLFFODVV'HOWD^`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

/NTHELEFTYOULLlNDSETSOFCLASSDIAGRAMS9OURJOBISTOTURN
1dQ^OU_Q THESEINTOVALID*AVADECLARATIONS7EDIDNUMBERFORYOU
ANDITWASATOUGHONE 

?PI\¼[\PM,MKTIZI\QWV'
/Q^MV"
&OLFN  SXEOLFFODVV&OLFN^`

SXEOLFFODVV&ODFNH[WHQGV&OLFN^`
7RS


&ODFN

7LS


)HH


)RR

)L

%DU 

=HWD

%D]

%HWD
$OSKD .(<
EXTENDS

IMPLEMENTS
&ODFN CLASS
'HOWD
&ODFN INTERFACE

&ODFN ABSTRACTCLASS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH3RRO3X]]OH

9OURJOBISTOTAKECODESNIPPETSFROMTHEPOOLAND
3RRO PLACETHEMINTOTHEBLANKLINESINTHECODEANDOUT
PUT9OUMAYUSETHESAMESNIPPETMORETHANONCE
3X]]OH ANDYOUWONTNEEDTOUSEALLTHESNIPPETS9OUR
GOALISTOMAKEASETOFCLASSESTHATWILLCOMPILE
ANDRUNANDPRODUCETHEOUTPUTLISTED

BBBBBBBBBBBB1RVH^
SXEOLFBBBBBBBBBBBBBBBBBBBH[WHQGV&ORZQV^
BBBBBBBBBBBBBBBBBBBBBBBB
` SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBB

Licensed by
DEVWUDFWFODVV3LFDVVRLPSOHPHQWVBBBBBB^
L>@ QHZBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBB
L>@ QHZBBBBBBBBBB
UHWXUQ
` L>@ QHZBBBBBBBBBB

Eduard Simons
` IRU LQW[ [[ ^
6\VWHPRXWSULQWOQ BBBBBBBBBBBBBBBBBB
FODVVBBBBBBBBBBBBBBBBBBBBBBBBBBB^`   ´´BBBBBBBJHW&ODVV   
`

104038
FODVVBBBBBBBBBBBBBBBBBBBBBBBBBBB^ `
BBBBBBBBBBBBBBBBBBBBBBBBBBB ` /UTPUT )LOH(GLW:LQGRZ+HOS%H$IUDLG

UHWXUQ MDYDBBBBBBBBBBBBBB
` FODVV$FWV
` FODVV&ORZQV
BBBBBBBB2I
.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE
CLASS
!CTS  EXTENDS I
.OSE  INTERFACE I
/F  IMPLEMENTS IX
#LOWNS  I;X= CLASS
0ICASSO  CLASS
CLASS !CTS
PUBLICINTI-ETHOD  PUBLICCLASS .OSE
/F;=INEW.OSE;= PUBLICINTI-ETHOD[] /F
/F;=I PUBLICINTI-ETHOD [ II-ETHODX #LOWNS
.OSE;=INEW.OSE  PUBLICINTI-ETHOD [] IX I-ETHOD;= 0ICASSO
.OSE;=INEW.OSE;= I;X=I-ETHOD
I;X=I-ETHOD;=

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQWHUIDFHVDQGSRO\PRUSKLVP

%XERCISE3OLUTIONS

?PI\¼[\PM8QK\]ZM'

LQWHUIDFH
 9LQQ
LQWHUIDFH
 :KXIILH

9RXW ?PI\¼[\PM,MKTIZI\QWV'
0XIILH

 SXEOLFDEVWUDFWFODVV7RS^`
SXEOLFFODVV7LSH[WHQGV7RS^`
 =RRS )OXIILH

 SXEOLFDEVWUDFWFODVV)HH^`
SXEOLFDEVWUDFWFODVV)LH[WHQGV)HH^`
%RRS
SXEOLFLQWHUIDFH)RR^`

SXEOLFFODVV%DULPSOHPHQWV)RR^`
*RRS SXEOLFFODVV%D]H[WHQGV%DU^`

 SXEOLFLQWHUIDFH=HWD^`
 'HOWD
LQWHUIDFH
(SVLORQ
SXEOLFFODVV$OSKDLPSOHPHQWV=HWD^`
SXEOLFLQWHUIDFH%HWD^`
LQWHUIDFH
SXEOLFFODVV'HOWDH[WHQGV$OSKDLPSOHPHQWV%HWD^`
*DPPD %HWD

$OSKD

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHVROXWLRQ

LQWHUIDFH1RVH^ SXEOLFFODVV2IH[WHQGV&ORZQV^
SXEOLFLQWL0HWKRG   SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
` 1RVH>@L QHZ1RVH>@
DEVWUDFWFODVV3LFDVVRLPSOHPHQWV1RVH^ L>@ QHZ$FWV  
SXEOLFLQWL0HWKRG  ^
L>@ QHZ&ORZQV  
UHWXUQ
L>@ QHZ2I  
`
IRU LQW[ [[ ^
`
FODVV&ORZQVH[WHQGV3LFDVVR^` 6\VWHPRXWSULQWOQ L>[@L0HWKRG  
  ´´L>[@JHW&ODVV   
FODVV$FWVH[WHQGV3LFDVVR^ `
SXEOLFLQWL0HWKRG  ^ `
UHWXUQ `
`
`

/UTPUT )LOH(GLW:LQGRZ+HOS.LOO7KH0LPH

MDYD2I
FODVV$FWV
FODVV&ORZQV
FODVV2I

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJDUEDJHFROOHFWLRQ

/LIHDQG'HDWK WKHQKHVDLG
RIDQ2EMHFW ´,FDQ·WIHHOP\OHJVµDQG
,VDLG´-RH6WD\ZLWKPH-RHµ
%XWLWZDVWRRODWH7KHJDUEDJH
FROOHFWRUFDPHDQGKHZDVJRQH
%HVWREMHFW,HYHUKDG

2EMHFWVDUHERUQDQGREMHFWVGLH9OUREINCHARGEOFANOBJECTSLIFECYCLE
9OUDECIDEWHENANDHOWTOCONSTRUCTIT9OUDECIDEWHENTODESTROYIT%XCEPTYOUDONT
ACTUALLYDESTROYTHEOBJECTYOURSELF YOUSIMPLYABANDONIT"UTONCEITSABANDONED THE
HEARTLESS'ARBAGE#OLLECTORGC CANVAPORIZEIT RECLAIMINGTHEMEMORYTHATOBJECTWAS
USING)FYOUREGONNAWRITE*AVA YOUREGONNACREATEOBJECTS3OONERORLATER YOUREGONNA
HAVETOLETSOMEOFTHEMGO ORRISKRUNNINGOUTOF2!-)NTHISCHAPTERWELOOKATHOWOBJECTS
ARECREATED WHERETHEYLIVEWHILETHEYREALIVE ANDHOWTOKEEPORABANDONTHEMEFFICIENTLY
4HATMEANSWELLTALKABOUTTHEHEAP THESTACK SCOPE CONSTRUCTORS SUPERCONSTRUCTORS NULL
REFERENCES ANDMORE7ARNINGTHISCHAPTERCONTAINSMATERIALABOUTOBJECTDEATHTHATSOME
MAYFINDDISTURBING"ESTNOTTOGETTOOATTACHED

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHVWDFNDQGWKHKHDS

<PM;\IKSIVL\PM0MIX"_PMZM\PQVO[TQ^M
"EFOREWECANUNDERSTANDWHATREALLYHAPPENSWHEN RUNNING"UTUSUALLYYOUWONTHAVEANYTHINGTOSAY
YOUCREATEANOBJECT WEHAVETOSTEPBACKABIT7E ABOUTIT!NDWITHGOODPROGRAMMING YOUPROBABLY
NEEDTOLEARNMOREABOUTWHEREEVERYTHINGLIVES WONTCAREMOREONTHATALITTLELATER 
ANDFORHOWLONG IN*AVA4HATMEANSWENEEDTO 7EKNOWTHATALLOBJECTSLIVEONTHEGARBAGE COLLECTIBLE
LEARNMOREABOUTTHE3TACKANDTHE(EAP)N*AVA WE HEAP BUTWEHAVENTYETLOOKEDATWHEREVARIABLES
PROGRAMMERS CAREABOUTTWOAREASOFMEMORYˆTHE LIVE!NDWHEREAVARIABLELIVESDEPENDSONWHATKIND
ONEWHEREOBJECTSLIVETHEHEAP ANDTHEONE OFVARIABLEITIS!NDBYhKINDv WEDONTMEANTYPE
WHEREMETHODINVOCATIONSANDLOCALVARIABLESLIVE IEPRIMITIVEOROBJECTREFERENCE 4HETWOKINDSOF
THESTACK 7HENA*6-STARTSUP ITGETSACHUNKOF VARIABLESWHOSELIVESWECAREABOUTNOWAREINSTANCE
MEMORYFROMTHEUNDERLYING/3 ANDUSESITTORUN VARIABLESANDLOCALVARIABLES,OCALVARIABLESAREALSO
YOUR*AVAPROGRAM(OWMUCHMEMORY ANDWHETHER KNOWNASSTACKVARIABLES WHICHISABIGCLUEFORWHERE
ORNOTYOUCANTWEAKIT ISDEPENDENTONWHICH THEYLIVE
VERSIONOFTHE*6-ANDONWHICHPLATFORM YOURE

<PM;\IKS <PM0MIX
QDV
7HEREMETHODINVOCATIONS DOVRNQRZUEDJH
´7KH*D OH+HDSµ
7HERE!,,OBJECTSLIVE
ANDLOCALVARIABLESLIVE
&ROOHFWLE
JR

HFW
'X
GR6WXII
W
FNREMHF

6Q
RZ

EM
E R DUG  R

PDLQ
%X FW
WWRQREMH

,QVWDQFH9DULDEOHV /RFDO9DULDEOHV
)NSTANCEVARIABLESAREDECLAREDINSIDEACLASSBUTNOT ,OCALVARIABLESAREDECLAREDINSIDEAMETHOD INCLUDING
INSIDEAMETHOD4HEYREPRESENTTHEhlELDSvTHATEACH METHODPARAMETERS4HEYRETEMPORARY ANDLIVEONLYAS
INDIVIDUALOBJECTHASWHICHCANBElLLEDWITHDIFFERENT LONGASTHEMETHODISONTHESTACKINOTHERWORDS ASLONGAS
VALUESFOREACHINSTANCEOFTHECLASS )NSTANCEVARIABLES THEMETHODHASNOTREACHEDTHECLOSINGCURLYBRACE 
LIVEINSIDETHEOBJECTTHEYBELONGTO
SXEOLFYRLGIRR LQW[ ^

SXEOLFFODVV'XFN^
HWHU[DQG
Hµ LQWL [ 7KHSDUDP LDQGE
LQWVL]H
Y H U \  'X F NKDVD´VL] WUXHWKHYDULDE
OHV
(
OYDULDEOHV
ERROHDQE
ULDEOH
` LQVWDQFHYD ` DUHDOOORFD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

5M\PWL[IZM[\IKSML
7HENYOUCALLAMETHOD THEMETHODLANDSON $FDOOVWDFNZLWKWZRPHWKRGV
THETOPOFACALLSTACK4HATNEWTHINGTHATS
ACTUALLYPUSHEDONTOTHESTACKISTHESTACK WRSRIWKHVWDFN
DPHV
FRAME ANDITHOLDSTHESTATEOFTHEMETHOD VWDFNIU EDU V
INCLUDINGWHICHLINEOFCODEISEXECUTING AND ORFDOYDULDEOHV
THEVALUESOFALLLOCALVARIABLES
4HEMETHODATTHETOPOFTHESTACKISALWAYS
IRR [ L E LQFOXGLQJ
SDUDPHWHU[
THECURRENTLY RUNNINGMETHODFORTHATSTACK
FORNOW ASSUMETHERESONLYONESTACK BUTIN ERWWRPRIWKHVWDF
CHAPTERWELLADDMORE !METHODSTAYSON
N
THESTACKUNTILTHEMETHODHITSITSCLOSINGCURLY 7KHPHWKRGRQWKHWRSRIWKH
BRACEWHICHMEANSTHEMETHODSDONE )F VWDFNLVDOZD\VWKHFXUUHQWO\
METHODFOO CALLSMETHODBAR METHODBAR IS
H[HFXWLQJPHWKRG
STACKEDONTOPOFMETHODFOO 

SXEOLFYRLGGR6WXII ^ )[\IKS[KMVIZQW
ERROHDQE WUXH
JR   4HECODEONTHELEFTISASNIPPETWEDONTCAREWHATTHERESTOFTHE
` CLASSLOOKSLIKE WITHTHREEMETHODS4HElRSTMETHODDO3TUFF CALLS
SXEOLFYRLGJR LQW[ ^ THESECONDMETHODGO ANDTHESECONDMETHODCALLSTHETHIRD
LQW] [ CRAZY %ACHMETHODDECLARESONELOCALVARIABLEWITHINTHEBODY
FUD]\  OFTHEMETHOD ANDMETHODGO ALSODECLARESAPARAMETERVARIABLE
LPDJLQHPRUHFRGHKHUH WHICHMEANSGO HASTWOLOCALVARIABLES 
`
SXEOLFYRLGFUD]\ ^
FKDUF µD¶
`

 &RGHIURPDQRWKHU  GR6WXII FDOOVJR   JR FDOOVFUD]\   FUD]\ FRPSOHWHV


FODVVFDOOVGR6WXII  JR LVSXVKHGRQ FUD]\ LVQRZRQWKH DQGLWVVWDFNIUDPHLV
DQGGR6WXII JRHV WRSRIWKHVWDFN WRSRIWKHVWDFN SRSSHGRIIWKHVWDFN
LQWRDVWDFNIUDPH 9DULDEOHV¶[·DQG¶]· ZLWKYDULDEOH¶F·LQ ([HFXWLRQJRHVEDFN
DWWKHWRSRIWKH DUHLQWKHJR VWDFN WKHIUDPH WRWKHJR PHWKRG
VWDFN7KHERROHDQ IUDPH DQGSLFNVXSDWWKH
YDULDEOHQDPHG¶E· OLQHIROORZLQJWKHFDOO
JRHVRQWKHGR6WXII  WRFUD]\ 
VWDFNIUDPH
FUD]\ F
JR [ ] JR [ ] JR [ ]
GR6WXII E GR6WXII E GR6WXII E GR6WXII E

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWUHIHUHQFHVRQWKHVWDFN

?PI\IJW]\TWKIT^IZQIJTM[\PI\IZMWJRMK\['
2EMEMBER ANON PRIMITIVEVARIABLEHOLDSAREFERENCETOAN
OBJECT NOTTHEOBJECTITSELF9OUALREADYKNOWWHEREOBJECTS
LIVEˆONTHEHEAP)TDOESNTMATTERWHERETHEYREDECLAREDOR
CREATED)FTHELOCALVARIABLEISAREFERENCETOANOBJECT ONLY
THEVARIABLETHEREFERENCEREMOTECONTROL GOESONTHESTACK
QHZ
4HEOBJECTITSELFSTILLGOESINTHEHEAP V  DQ G  F UHDWHVD LQFHLW·V
HFODUH ¶G· V
EDUI G IHUHQFHYDULDEOH KRGLW·VDORFDO
'XFNUH LQVLGHWKHPHW VWDFN
GHFODUHG DQGJRHVRQWKH
YDULDEOH
SXEOLFFODVV6WDFN5HI^
SXEOLFYRLGIRRI ^
EDUI  EDUI \ 'X

W
FNREMHF
`
+HDS
SXEOLFYRLGEDUI ^ IRRI
'XFNG QHZ'XFN   1RPDWWHU:+(5
` UHIHUHQFHYDULDEOH(WKHREMHFW
` DPHWKRGYVDVD LVGHFODUHG LQVLGH
RIDFODVV WKHREQLQVWDQFHYDULDEOH
DOZD\VJRHVRQWK MHFWDOZD\VDOZD\V
HKHDS

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: /NEMORETIME 7(9AREWELEARNINGTHE
WHOLESTACKHEAPTHING(OWDOESTHISHELPME
:MDD=LHGAFLK

$O)REALLYNEEDTOLEARNABOUTIT  -DYDKDVWZRDUHDVRIPHPRU\ZHFDUHDERXW
WKH6WDFNDQGWKH+HDS

A: +NOWINGTHEFUNDAMENTALSOFTHE*AVA
 ,QVWDQFHYDULDEOHVDUHYDULDEOHVGHFODUHG
LQVLGHDFODVVEXWRXWVLGHDQ\PHWKRG
3TACKAND(EAPISCRUCIALIFYOUWANTTOUNDERSTAND
VARIABLESCOPE OBJECTCREATIONISSUES MEMORY
MANAGEMENT THREADS ANDEXCEPTIONHANDLING
 /RFDOYDULDEOHVDUHYDULDEOHVGHFODUHGLQVLGHD
PHWKRGRUPHWKRGSDUDPHWHU
7ECOVERTHREADSANDEXCEPTIONHANDLINGINLATER
CHAPTERSBUTTHEOTHERSYOULLLEARNINTHISONE9OU  $OOORFDOYDULDEOHVOLYHRQWKHVWDFNLQWKH
IUDPHFRUUHVSRQGLQJWRWKHPHWKRGZKHUHWKH
DONOTNEEDTOKNOWANYTHINGABOUTHOWTHE3TACK
YDULDEOHVDUHGHFODUHG
AND(EAPAREIMPLEMENTEDINANYPARTICULAR*6-
ANDORPLATFORM%VERYTHINGYOUNEEDTOKNOW
ABOUTTHE3TACKAND(EAPISONTHISPAGEANDTHE
 2EMHFWUHIHUHQFHYDULDEOHVZRUNMXVWOLNHSULPL
WLYHYDULDEOHV³LIWKHUHIHUHQFHLVGHFODUHGDVD
PREVIOUSONE)FYOUNAILTHESEPAGES ALLTHEOTHER ORFDOYDULDEOHLWJRHVRQWKHVWDFN
TOPICSTHATDEPENDONYOURKNOWINGTHISSTUFFWILL
GOMUCH MUCH MUCHEASIER/NCEAGAIN SOMEDAY
YOUWILL3/THANKUSFORSHOVING3TACKSAND(EAPS
 $OOREMHFWVOLYHLQWKHKHDSUHJDUGOHVVRI
ZKHWKHUWKHUHIHUHQFHLVDORFDORULQVWDQFH
DOWNYOURTHROAT YDULDEOH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

1NTWKIT^IZQIJTM[TQ^MWV\PM[\IKS &HOO3KRQHREMHFW

_PMZMLWQV[\IVKM^IZQIJTM[TQ^M'
p q
7HENYOUSAYNEW#ELL0HONE *AVAHASTOMAKE
SPACEONTHE(EAPFORTHAT#ELL0HONE"UTHOWMUCH LQW ORQJ

SPACE%NOUGHFORTHEOBJECT WHICHMEANSENOUGHTO
HOUSEALLOFTHEOBJECTSINSTANCEVARIABLES4HATSRIGHT
INSTANCEVARIABLESLIVEONTHE(EAP INSIDETHEOBJECT 2EMHFWZLWKWZRSULPLWLYHLQVWDQFHYDULDEOHV
THEYBELONGTO 6SDFHIRUWKHYDULDEOHVOLYHVLQWKHREMHFW
2EMEMBERTHATTHEVALUESOFANOBJECTSINSTANCE
VARIABLESLIVEINSIDETHEOBJECT)FTHEINSTANCEVARIABLES
AREALLPRIMITIVES *AVAMAKESSPACEFORTHEINSTANCE &HOO3KRQHREMHFW
VARIABLESBASEDONTHEPRIMITIVETYPE!NINTNEEDS
BITS ALONGBITS ETC*AVADOESNTCAREABOUTTHE
VALUEINSIDEPRIMITIVEVARIABLESTHEBIT SIZEOFANINT Yfl
VARIABLEISTHESAMEBITS WHETHERTHEVALUEOFTHE
INTIS  OR $QWHQQD

"UTWHATIFTHEINSTANCEVARIABLESAREOBJECTS7HATIF
#ELL0HONE(!3 !!NTENNA)NOTHERWORDS #ELL0HONE
HASAREFERENCEVARIABLEOFTYPE!NTENNA 2EMHFWZLWKRQHQRQSULPLWLYHLQVWDQFHYDULDEOH³
7HENTHENEWOBJECTHASINSTANCEVARIABLESTHATARE
DUHIHUHQFHWRDQ$QWHQQDREMHFWEXWQRDFWXDO
OBJECTREFERENCESRATHERTHANPRIMITIVES THEREAL $QWHQQDREMHFW7KLVLVZKDW\RXJHWLI\RX
QUESTIONISDOESTHEOBJECTNEEDSPACEFORALLOF GHFODUHWKHYDULDEOHEXWGRQ·WLQLWLDOL]HLWZLWK
THEOBJECTSITHOLDSREFERENCESTO4HEANSWERIS NOT DQDFWXDO$QWHQQDREMHFW
EXACTLY.OMATTERWHAT *AVAHASTOMAKESPACEFORTHE
SXEOLFFODVV&HOO3KRQH^
INSTANCEVARIABLEVALUES"UTREMEMBERTHATAREFERENCE
SULYDWH$QWHQQDDQW
VARIABLEVALUEISNOTTHEWHOLEOBJECT BUTMERELYAREMOTE
`
CONTROLTOTHEOBJECT3OIF#ELL0HONEHASANINSTANCE
VARIABLEDECLAREDASTHENON PRIMITIVETYPE!NTENNA
*AVAMAKESSPACEWITHINTHE#ELL0HONEOBJECTONLYFOR
THE!NTENNASREMOTECONTROLIEREFERENCEVARIABLE BUT
NOTTHE!NTENNAOBJECT &HOO3KRQHREMHFW $QWHQQDREMHFW
7ELLTHENWHENDOESTHE!NTENNAOBJECTGETSPACEON
THE(EAP&IRSTWEHAVETOlNDOUTWHENTHE!NTENNA
OBJECTITSELFISCREATED4HATDEPENDSONTHEINSTANCE Yfl
VARIABLEDECLARATION)FTHEINSTANCEVARIABLEISDECLARED
$QWHQQD
BUTNOOBJECTISASSIGNEDTOIT THENONLYTHESPACEFOR
THEREFERENCEVARIABLETHEREMOTECONTROL ISCREATED
SULYDWH$QWHQQDDQW 2EMHFWZLWKRQHQRQSULPLWLYHLQVWDQFHYDULDEOH
DQGWKH$QWHQQDYDULDEOHLVDVVLJQHGDQHZ
.OACTUAL!NTENNAOBJECTISMADEONTHEHEAPUNLESS $QWHQQDREMHFW
ORUNTILTHEREFERENCEVARIABLEISASSIGNEDANEW
!NTENNAOBJECT SXEOLFFODVV&HOO3KRQH^
SULYDWH$QWHQQDDQW QHZ$QWHQQD 
SULYDWH$QWHQQDDQW QHZ$QWHQQD  `

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWFUHDWLRQ

<PMUQZIKTMWNWJRMK\KZMI\QWV
.OWTHATYOUKNOWWHEREVARIABLESANDOBJECTSLIVE WECANDIVEINTO
THEMYSTERIOUSWORLDOFOBJECTCREATION2EMEMBERTHETHREESTEPS
OFOBJECTDECLARATIONANDASSIGNMENTDECLAREAREFERENCEVARIABLE
CREATEANOBJECT ANDASSIGNTHEOBJECTTOTHEREFERENCE
"UTUNTILNOW STEPTWOˆWHEREAMIRACLEOCCURSANDTHENEWOBJECT
IShBORNvˆHASREMAINEDA"IG-YSTERY0REPARETOLEARNTHEFACTSOF
OBJECTLIFE(OPEYOURENOTSQUEAMISH

5HYLHZWKHVWHSVRIREMHFW
GHFODUDWLRQFUHDWLRQDQGDVVLJQPHQW

 'HFODUHDUHIHUHQFH
YDULDEOH
H
D  QH Z UHIHUHQFU 'XFNP\'XFN eq<m[c
0DNH RIDFODVVR QHZ'XFN 
YDULDEOH FHW\SH 'XFNUHIHUHQFH
LQWHUID

 &UHDWHDQREMHFW
H
$PXLUUDVFKO HUH
'XFNP\'XFN QHZ'XFN 
'XFNREMHFW
RFF

KHQHZ  /LQNWKHREMHFWDQG
$VVLJQW RWKH WKHUHIHUHQFH
REMHFWW H 'XFNP\'XFN QHZ'XFN 
UHIHUHQF
'XFNREMHFW

eq<m[c

'XFNUHIHUHQFH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

$UHZHFDOOLQJDPHWKRGQDPHG'XFN "
%HFDXVHLWVXUHORRNVOLNHLW

R N V OL NH  Z H·UHFDOOLQJ
,W OR 
'XFNP\'XFN
DPHG'XFN
QHZ'XFN  DPHWKRGQ HSDUHQWKHVHV
WK
EHFDXVHRI
1R
:H·UHFDOOLQJWKH'XFNFRQVWUXFWRU

!CONSTRUCTORDOESLOOKANDFEELALOTLIKEAMETHOD BUTITSNOT
AMETHOD)TSGOTTHECODETHATRUNSWHENYOUSAYQHZ)NOTHER )KWV[\Z]K\WZPI[\PM
WORDS THECODETHATRUNSWHENYOUINSTANTIATEANOBJECT
KWLM\PI\Z]V[_PMVaW]
4HEONLYWAYTOINVOKEACONSTRUCTORISWITHTHEKEYWORDQHZ QV[\IV\QI\MIVWJRMK\1V
FOLLOWEDBYTHECLASSNAME4HE*6-lNDSTHATCLASSANDINVOKES
W\PMZ_WZL[\PMKWLM\PI\
THECONSTRUCTORINTHATCLASS/+ TECHNICALLYTHISISNTTHEONLY
WAYTOINVOKEACONSTRUCTOR"UTITSTHEONLYWAYTODOITFROM Z]V[_PMVaW][IaQHZWV
OUTSIDEACONSTRUCTOR9OUCANCALLACONSTRUCTORFROMWITHIN IKTI[[\aXM
ANOTHERCONSTRUCTOR WITHRESTRICTIONS BUTWELLGETINTOALLTHAT
-^MZaKTI[[aW]KZMI\MPI[
LATERINTHECHAPTER
IKWV[\Z]K\WZM^MVQNaW]
%XWZKHUHLVWKHFRQVWUXFWRU" LWV¼\_ZQ\MQ\aW]Z[MTN
,IZHGLGQ·WZULWHLWZKRGLG"

9OUCANWRITEACONSTRUCTORFORYOURCLASSWEREABOUTTODO
THAT BUTIFYOUDONT THECOMPILERWRITESONEFORYOU
(ERESWHATTHECOMPILERSDEFAULTCONSTRUCTORLOOKSLIKE

SXEOLF'XFN ^

`
1RWLFHVRPHWKLQJPLVVLQJ"+RZLVWKLV
WKH
GLIIHUHQWIURPDPHWKRG"
V Q D PH  LV  WKHVDPHDVGDWRU\
,W 7KDW·VPDQ
FODVVQDPH
SXEOLF'XFN ^
:KHUH·VWKHU
,IWKLVZHUHDHWXUQW\SH"
FRQVWUXFWRUFRGHJRHVKHUH
`
\RX·GQHHGDU PHWKRG
EHWZHHQ´SXE HWXUQW\SH
´'XFN µ OLFµDQG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWLQJDQHZ'XFN

+WV[\Z]K\I,]KS ,ILW4XDFNVOLNHD
4HEKEYFEATUREOFACONSTRUCTORISTHATITRUNS FRQVWUXFWRU
BEFORETHEOBJECTCANBEASSIGNEDTOAREFERENCE
4HATMEANSYOUGETACHANCETOSTEPINAND
DOTHINGSTOGETTHEOBJECTREADYFORUSE)N
OTHERWORDS BEFOREANYONECANUSETHEREMOTE
CONTROLFORANOBJECT THEOBJECTHASACHANCETO
HELPCONSTRUCTITSELF)NOUR$UCKCONSTRUCTOR
WERENOTDOINGANYTHINGUSEFUL BUTITSTILL
DEMONSTRATESTHESEQUENCEOFEVENTS

SXEOLFFODVV'XFN^

SXEOLF'XFN ^
Licensed by
Eduard Simons
6\VWHPRXWSULQWOQ ³4XDFN´ 
` 7KHFRQVWUXFWRUJLYHV
RUFRGH
` \RXDFKDQFHWRVWHSLQWR
&RQVWUXFW WKHPLGGOHRIQHZ

SXEOLFFODVV8VH$'XFN^ 104038 )LOH(GLW:LQGRZ+HOS4XDFN

MDYD8VH$'XFN
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 4XDFN
'XFNG QHZ'XFN 
` 7KLVF
` FRQVWU DOOVWKH'XFN XFWRU

6KDUSHQ \RXU SHQFLO


… ,QFUHPHQWDFRXQWHUWRWUDFNKRZPDQ\REMHFWVRIWKLVFODVVW\SH
KDYHEHHQPDGH
!CONSTRUCTORLETSYOUJUMPINTOTHEMIDDLE
… $VVLJQUXQWLPHVSHFLILFVWDWH GDWDDERXWZKDW·VKDSSHQLQJ12: 
OFTHEOBJECTCREATIONSTEPˆINTOTHEMIDDLE
… $VVLJQYDOXHVWRWKHREMHFW·VLPSRUWDQWLQVWDQFHYDULDEOHV
OFQHZ#ANYOUIMAGINECONDITIONSWHERE
… *HWDQGVDYHDUHIHUHQFHWRWKHREMHFWWKDW·VFUHDWLQJWKHQHZREMHFW
THATWOULDBEUSEFUL7HICHOFTHESEMIGHT
BEUSEFULINA#ARCLASSCONSTRUCTOR IFTHE#AR
… $GGWKHREMHFWWRDQ$UUD\/LVW
ISPARTOFA2ACING'AME#HECKOFFTHEONES
… &UHDWH+$6$REMHFWV
THATYOUCAMEUPWITHASCENARIOFOR
… BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB \RXULGHDKHUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

1VQ\QITQbQVO\PM[\I\MWNIVM_,]KS WKHUH DUH QR


'XPE 4XHVWLRQV
-OSTPEOPLEUSECONSTRUCTORSTOINITIALIZETHESTATEOFANOBJECT
)NOTHERWORDS TOMAKEANDASSIGNVALUESTOTHEOBJECTS
INSTANCEVARIABLES
Q: 7HYDOYOUNEEDTOWRITE
ACONSTRUCTORIFTHECOMPILER
WRITESONEFORYOU
SXEOLF'XFN ^
VL]H 
` A: )FYOUNEEDCODETOHELP
INITIALIZEYOUROBJECTANDGET
4HATSALLWELLANDGOODWHENTHE$UCKCLASSDEVELOPERKNOWS ITREADYFORUSE YOULLHAVETO
HOWBIGTHE$UCKOBJECTSHOULDBE"UTWHATIFWEWANTTHE WRITEYOUROWNCONSTRUCTOR9OU
PROGRAMMERWHOISUSING$UCKTODECIDEHOWBIGAPARTICULAR MIGHT FOREXAMPLE BEDEPEN
$UCKSHOULDBE DENTONINPUTFROMTHEUSER
BEFOREYOUCANFINISHMAKING
)MAGINETHE$UCKHASASIZEINSTANCEVARIABLE ANDYOUWANTTHE THEOBJECTREADY4HERESANOTHER
PROGRAMMERUSINGYOUR$UCKCLASSTOSETTHESIZEOFTHENEW REASONYOUMIGHTHAVETOWRITE
$UCK(OWCOULDYOUDOIT ACONSTRUCTOR EVENIFYOUDONT
NEEDANYCONSTRUCTORCODE
7ELL YOUCOULDADDASET3IZE SETTERMETHODTOTHECLASS"UT YOURSELF)THASTODOWITHYOUR
THATLEAVESTHE$UCKTEMPORARILYWITHOUTASIZE
ANDFORCESTHE SUPERCLASSCONSTRUCTOR ANDWELL
$UCKUSERTOWRITETWOSTATEMENTSˆONETOCREATETHE$UCK AND TALKABOUTTHATINAFEWMINUTES
ONETOCALLTHESET3IZE METHOD4HECODEBELOWUSESASETTER
METHODTOSETTHEINITIALSIZEOFTHENEW$UCK

SXEOLFFODVV'XFN^
Q: (OWCANYOUTELLACON
STRUCTORFROMAMETHOD#AN
EOH
LQWVL]H VWDQFHYDULDLQ YOUALSOHAVEAMETHODTHATS
THESAMENAMEASTHECLASS
SXEOLF'XFN ^

6\VWHPRXWSULQWOQ ³4XDFN´  FRQVWUXFWRU A: *AVALETSYOUDECLAREA
` METHODWITHTHESAMENAMEAS
YOURCLASS4HATDOESNTMAKEIT
KRG
VHWWHUPHW
SXEOLFYRLGVHW6L]H LQWQHZ6L]H ^ ACONSTRUCTOR THOUGH4HETHING
VL]H QHZ6L]H THATSEPARATESAMETHODFROMA
` CONSTRUCTORISTHERETURNTYPE
` -ETHODSMUSTHAVEARETURN
TYPE BUTCONSTRUCTORSCANNOT
HAVEARETURNTYPE
SXEOLFFODVV8VH$'XFN^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
Q: !RECONSTRUCTORSINHER
ITED)FYOUDONTPROVIDEA
'XFNG QHZ'XFN  CONSTRUCTORBUTYOURSUPERCLASS
7KHUH·VD

WKLVSRLQWLEQDGWKLQJKHUH7KH DOES DOYOUGETTHESUPERCLASS
GVHW6L]H  
$QGWKH \ WKHFRGHEXWZLW'XFNLVDOLYHDW CONSTRUCTORINSTEADOFTHE
` WR.12:QW RX·UHUHO\LQJ K
RQWKH'RXXWFDVL]H 
DEFAULT
` SURF K D W ' XFNF NXVHU
HVV UHD 
WRFDOOWKRHQVHWRFDOOWKHFRQWVWLRUQLVDWZRSDUW A: .OPE#ONSTRUCTORSARE
HWWHU XFWRUDQGR
,QVWDQFHYDULDEOHVGRKDYHDGHIDXOWYDOXHRU
QH NOTINHERITED7ELLLOOKATTHATIN
IRUQXPHULFSULPLWLYHVIDOVHIRUERROHDQVDQG JUSTAFEWPAGES
QXOOIRUUHIHUHQFHV
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQLWLDOL]LQJREMHFWVWDWH

=[QVO\PMKWV[\Z]K\WZ\WQVQ\QITQbM
QUXWZ\IV\,]KS[\I\M /HWWKHXVHUPDNHDQHZ'XFN
)FANOBJECTSHOULDNTBEUSEDUNTILONEOR DQGVHWWKH'XFN·VVL]HDOOLQ
RQHFDOO7KHFDOOWRQHZ
MOREPARTSOFITSSTATEINSTANCEVARIABLES HAVE 7KHFDOOWRWKH'XFN
BEENINITIALIZED DONTLETANYONEGETAHOLDOF FRQVWUXFWRU
A$UCKOBJECTUNTILYOURElNISHEDINITIALIZING
)TSUSUALLYWAYTOORISKYTOLETSOMEONEMAKEˆ
ANDGETAREFERENCETOˆANEW$UCKOBJECTTHAT
ISNTQUITEREADYFORUSEUNTILTHATSOMEONETURNS
AROUNDANDCALLSTHESET3IZE METHOD(OWWILL
THE$UCK USEREVENKNOWTHATHESREQUIREDTOCALL
THESETTERMETHODAFTERMAKINGTHENEW$UCK
4HEBESTPLACETOPUTINITIALIZATIONCODEISINTHE
CONSTRUCTOR!NDALLYOUNEEDTODOISMAKEA
RWKH
CONSTRUCTORWITHARGUMENTS
W
 S D U D PHWHU
SXEOLFFODVV'XFN^ QLQW U
LQWVL]H $GGD FRQVWUXFWR
'XFN 
SXEOLF'XFN LQWGXFN6L]H ^
6\VWHPRXWSULQWOQ ³4XDFN´  W
8VHWKHDUJXPHQWYDOXHWRVH
VL]H GXFN6L]H WKHVL]HLQVWDQFHYDULDEOH
6\VWHPRXWSULQWOQ ³VL]HLV³VL]H 
`
`

SXEOLFFODVV8VH$'XFN^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'XFNG QHZ'XFN  
R Q O\  3DVVDYDOXHW
HUH·V PDNH `
`
P H  W K F RWKH
WL H RQVW UXFWRU
7KLV DWHPHQW: GVHW
RQHVW HZ'XFNDQ DWHPHQW )LOH(GLW:LQGRZ+HOS+RQN

WKHQ HLQRQHVW MDYD8VH$'XFN


LWVVL]
4XDFN
VL]HLV

1RWWRLPSO\WKDWQRWDOO'XFNVWDWHLVQRWXQLPSRUWDQW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

5ISMQ\MI[a\WUISMI,]KS
*M[]ZMaW]PI^MIVWIZOKWV[\Z]K\WZ
7HATHAPPENSIFTHE$UCKCONSTRUCTORTAKESANARGUMENT
4HINKABOUTIT/NTHEPREVIOUSPAGE THERESONLYONE$UCK
CONSTRUCTORˆANDITTAKESANINTARGUMENTFORTHESIZEOFTHE
$UCK4HATMIGHTNOTBEABIGPROBLEM BUTITDOESMAKEIT 9OUREALLYWANT47/WAYSTO
HARDERFORAPROGRAMMERTOCREATEANEW$UCKOBJECT ESPECIALLY
MAKEANEW$UCK
IFTHEPROGRAMMERDOESNTKNOWWHATTHESIZEOFA$UCKSHOULD
BE7OULDNTITBEHELPFULTOHAVEADEFAULTSIZEFORA$UCK SO
THATIFTHEUSERDOESNTKNOWANAPPROPRIATESIZE HECANSTILL SXEOLFFODVV'XFN^
MAKEA$UCKTHATWORKS LQWVL]H

,PDJLQHWKDW\RXZDQW'XFNXVHUVWRKDYH7:2RSWLRQV SXEOLF'XFN ^
IRUPDNLQJD'XFN²RQHZKHUHWKH\VXSSO\WKH'XFN VXSSO\GHIDXOWVL]H
VL]H DVWKHFRQVWUXFWRUDUJXPHQW DQGRQHZKHUHWKH\ VL]H 
GRQ¶WVSHFLI\DVL]HDQGWKXVJHW\RXUGHIDXOW'XFNVL]H `

9OUCANTDOTHISCLEANLYWITHJUSTASINGLECONSTRUCTOR SXEOLF'XFN LQWGXFN6L]H ^


2EMEMBER IFAMETHODORCONSTRUCTORˆSAMERULES HAS XVHGXFN6L]HSDUDPHWHU
VL]H GXFN6L]H
APARAMETER YOUMUSTPASSANAPPROPRIATEARGUMENTWHEN
`
YOUINVOKETHATMETHODORCONSTRUCTOR9OUCANTJUSTSAY h)F `
SOMEONEDOESNTPASSANYTHINGTOTHECONSTRUCTOR THENUSE
THEDEFAULTSIZEv BECAUSETHEYWONTEVENBEABLETOCOMPILE
WITHOUTSENDINGANINTARGUMENTTOTHECONSTRUCTORCALL9OU 4OMAKEA$UCKWHENYOUKNOWTHESIZE
COULDDOSOMETHINGCLUNKLYLIKETHIS 'XFNG QHZ'XFN  
SXEOLFFODVV'XFN^
OXHLV 4OMAKEA$UCKWHENYOUDONOTKNOW
PHWHUYD'XFND
LQWVL]H
K H S D U D THESIZE
,IW JLYHWKHQHZ ZLVHXVH
SXEOLF'XFN LQWQHZ6L]H ^
]HUR OWVL]HRWKHU HIRU 'XFNG QHZ'XFN 
LI QHZ6L]H  ^
GHIDX DUDPHWHUYDOX U\JRRG
VL]H 
WKHS H127DYH 3OTHISTWO OPTIONS TO MAKE A $UCKIDEA
`HOVH^
WKHVL]Q NEEDSTWOCONSTRUCTORS/NETHATTAKES
VL]H QHZ6L]H
`
VROXWLR ANINTANDONETHATDOESNT)FYOUHAVE
` MORETHANONECONSTRUCTORINACLASS
` ITMEANSYOUHAVEOVERLOADED
CONSTRUCTORS
"UTTHATMEANSTHEPROGRAMMERMAKINGANEW$UCKOBJECTHAS
TOKNOWTHATPASSINGAhvISTHEPROTOCOLFORGETTINGTHEDEFAULT
$UCKSIZE0RETTYUGLY7HATIFTHEOTHERPROGRAMMERDOESNT
KNOWTHAT/RWHATIFHEREALLYDOESWANTAZERO SIZE$UCK
!SSUMINGAZERO SIZED$UCKISALLOWED)FYOUDONTWANT
ZERO SIZED$UCKOBJECTS PUTVALIDATIONCODEINTHECONSTRUCTOR
TOPREVENTIT 4HEPOINTIS ITMIGHTNOTALWAYSBEPOSSIBLE
TODISTINGUISHBETWEENAGENUINEh)WANTZEROFORTHESIZEv
CONSTRUCTORARGUMENTANDAh)MSENDINGZEROSOYOULLGIVE
METHEDEFAULTSIZE WHATEVERTHATISvCONSTRUCTORARGUMENT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RYHUORDGHGDQGGHIDXOWFRQVWUXFWRUV

,WM[V¼\\PMKWUXQTMZIT_Ia[
UISMIVWIZOKWV[\Z]K\WZ 2.OHW·VVHHKHUH´<RX
KDYHWKHULJKWWR\RXURZQ
NWZaW]' 1R  FRQVWUXFWRUµ0DNHVVHQVH
9OUMIGHTTHINKTHATIFYOUWRITEONLY ´,I\RXFDQQRWDIIRUGDFRQVWUXFWRU
ACONSTRUCTORWITHARGUMENTS THE
RQHZLOOEHSURYLGHGIRU\RXE\WKH
COMPILERWILLSEETHATYOUDONTHAVEA
NO ARGCONSTRUCTOR ANDSTICKONEINFOR FRPSLOHUµ*RRGWRNQRZ
YOU"UTTHATSNOTHOWITWORKS4HE
COMPILERGETSINVOLVEDWITHCONSTRUCTOR
MAKINGONLYIFYOUDONTSAYANYTHINGATALL
ABOUTCONSTRUCTORS

,I\RXZULWHDFRQVWUXFWRUWKDW
WDNHVDUJXPHQWVDQG\RXVWLOO
ZDQWDQRDUJFRQVWUXFWRU
\RX·OOKDYHWREXLOGWKHQRDUJ
FRQVWUXFWRU\RXUVHOI

!SSOONASYOUPROVIDEACONSTRUCTOR
!.9KINDOFCONSTRUCTOR THECOMPILER
BACKSOFFANDSAYS h/+"UDDY LOOKSLIKE
YOUREINCHARGEOFCONSTRUCTORSNOWv

,I\RXKDYHPRUHWKDQRQH
FRQVWUXFWRULQDFODVVWKH
FRQVWUXFWRUV0867KDYH
GLIIHUHQWDUJXPHQWOLVWV
4HEARGUMENTLISTINCLUDESTHEORDER
ANDTYPESOFTHEARGUMENTS!SLONGAS
THEYREDIFFERENT YOUCANHAVEMORE
THANONECONSTRUCTOR9OUCANDOTHIS
WITHMETHODSASWELL BUTWELLGETTOTHAT
INANOTHERCHAPTER

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

2YHUORDGHGFRQVWUXFWRUVPHDQV\RXKDYH
PRUHWKDQRQHFRQVWUXFWRULQ\RXUFODVV
7RFRPSLOHHDFKFRQVWUXFWRUPXVWKDYHD
GLIIHUHQWDUJXPHQWOLVW
4HECLASSBELOWISLEGALBECAUSEALLFOURCONSTRUCTORSHAVE
DIFFERENTARGUMENTLISTS)FYOUHADTWOCONSTRUCTORSTHATTOOK )RXUGLI
ONLYANINT FOREXAMPLE THECLASSWOULDNTCOMPILE7HATYOU
PHDQVI IHUHQWFRQVWU
PDNHD RXUGLIIHUHQW XFWRUV
NAMETHEPARAMETERVARIABLEDOESNTCOUNT)TSTHEVARIABLE
TYPEINT $OG ETC ANDORDERTHATMATTERS9OUCANHAVETWO QHZPXV
CONSTRUCTORSTHATHAVEIDENTICALTYPES ASLONGASTHEORDERIS KURRP ZD\VWR
DIFFERENT!CONSTRUCTORTHATTAKESA3TRINGFOLLOWEDBYANINT IS
NOTTHESAMEASONETHATTAKESANINTFOLLOWEDBYA3TRING

VL]HEXW\RX
SXEOLFFODVV0XVKURRP^ ZKHQ\RXNQRZWKH PDJLF
GRQ·WNQRZLILW·V
SXEOLF0XVKURRP LQWVL]H ^`
RZDQ\WKLQJ
ZKHQ\RXGRQ·WNQ 
SXEOLF0XVKURRP  ^`
ZKHQ\RXNQNQRZRZLI LW·VPDJLFRUQRW
KHV L] H
SXEOLF0XVKURRP ERROHDQLV0DJLF ^` EXWGRQ·W W
W KH  ERROHDQLV0DJLFLQWVL]H ZKHQ\RXNQRZ LW·V
YH ZKHWKHURUQRWNQRZ
KD SXEOLF0XVKURRP ^`
WKHVHWZR WLQ
VDPHDUJV  EX
LQWVL]HERROHDQLV0DJLF ^` PDJLF$1 ZHOO
'\RX
HQ W R UG HU  VR 
SXEOLF0XVKURRP
VL] HDV
GLIIHU WKH
LW·V2. `

:MDD=LHGAFLK

 ,QVWDQFHYDULDEOHVOLYHZLWKLQWKHREMHFWWKH\EHORQJWRRQ
WKH+HDS
 ,I\RXZDQWDQRDUJFRQVWUXFWRUDQG\RX·YHDOUHDG\SXW
LQDFRQVWUXFWRUZLWKDUJXPHQWV\RX·OOKDYHWREXLOGWKH
QRDUJFRQVWUXFWRU\RXUVHOI
 ,IWKHLQVWDQFHYDULDEOHLVDUHIHUHQFHWRDQREMHFWERWK
WKHUHIHUHQFHDQGWKHREMHFWLWUHIHUVWRDUHRQWKH+HDS
 $OZD\VSURYLGHDQRDUJFRQVWUXFWRULI\RXFDQWRPDNHLW
HDV\IRUSURJUDPPHUVWRPDNHDZRUNLQJREMHFW6XSSO\
 $FRQVWUXFWRULVWKHFRGHWKDWUXQVZKHQ\RXVD\QHZRQ
DFODVVW\SH GHIDXOWYDOXHV

 $FRQVWUXFWRUPXVWKDYHWKHVDPHQDPHDVWKHFODVVDQG  2YHUORDGHGFRQVWUXFWRUVPHDQV\RXKDYHPRUHWKDQRQH
FRQVWUXFWRULQ\RXUFODVV
PXVWQRWKDYHDUHWXUQW\SH

 <RXFDQXVHDFRQVWUXFWRUWRLQLWLDOL]HWKHVWDWH LHWKH  2YHUORDGHGFRQVWUXFWRUVPXVWKDYHGLIIHUHQWDUJXPHQW


OLVWV
LQVWDQFHYDULDEOHV RIWKHREMHFWEHLQJFRQVWUXFWHG

 ,I\RXGRQ·WSXWDFRQVWUXFWRULQ\RXUFODVVWKHFRPSLOHU  <RXFDQQRWKDYHWZRFRQVWUXFWRUVZLWKWKHVDPH
DUJXPHQWOLVWV$QDUJXPHQWOLVWLQFOXGHVWKHRUGHUDQGRU
ZLOOSXWLQDGHIDXOWFRQVWUXFWRU
W\SHRIDUJXPHQWV
 7KHGHIDXOWFRQVWUXFWRULVDOZD\VDQRDUJFRQVWUXFWRU
 ,QVWDQFHYDULDEOHVDUHDVVLJQHGDGHIDXOWYDOXHHYHQ
 ,I\RXSXWDFRQVWUXFWRU³DQ\FRQVWUXFWRU³LQ\RXUFODVV
WKHFRPSLOHUZLOOQRWEXLOGWKHGHIDXOWFRQVWUXFWRU
ZKHQ\RXGRQ·WH[SOLFLWO\DVVLJQRQH7KHGHIDXOWYDOXHV
DUHIDOVHIRUSULPLWLYHVDQGQXOOIRUUHIHUHQFHV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RYHUORDGHGFRQVWUXFWRUV

FODVV'XFN^
6KDUSHQ \RXU SHQFLO LQWSRXQGV 
0DWFKWKHQHZ'XFN FDOOZLWKWKHFRQVWUXFWRU ÀRDWÀRDWDELOLW\ )
WKDWUXQVZKHQWKDW'XFNLVLQVWDQWLDWHG:HGLG 6WULQJQDPH ³*HQHULF´
ORQJ>@IHDWKHUV ^` 
WKHHDV\RQHWRJHW\RXVWDUWHG
ERROHDQFDQ)O\ WUXH
LQWPD[6SHHG 
SXEOLFFODVV7HVW'XFN^ 
SXEOLF'XFN ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 6\VWHPRXWSULQWOQ ³W\SHGXFN´ 
`
LQWZHLJKW 
ÀRDWGHQVLW\ ) SXEOLF'XFN ERROHDQÀ\ ^
6WULQJQDPH ³'RQDOG´ FDQ)O\ À\
ORQJ>@IHDWKHUV ^` 6\VWHPRXWSULQWOQ ³W\SHGXFN´ 
ERROHDQFDQ)O\ WUXH `
LQWDLUVSHHG 
SXEOLF'XFN 6WULQJQORQJ>@I ^
'XFN>@G QHZ'XFN>@ QDPH Q
IHDWKHUV I
G>@ QHZ'XFN    6\VWHPRXWSULQWOQ ³W\SHGXFN´ 
`
G>@ QHZ'XFN GHQVLW\ZHLJKW 
   SXEOLF'XFN LQWZÀRDWI ^
G>@ QHZ'XFN QDPHIHDWKHUV   SRXQGV Z
ÀRDWDELOLW\ I
G>@ QHZ'XFN FDQ)O\  6\VWHPRXWSULQWOQ ³W\SHGXFN´ 
`
G>@ QHZ'XFN )DLUVSHHG 
     SXEOLF'XFN ÀRDWGHQVLW\LQWPD[ ^
G>@ QHZ'XFN IDOVH  ÀRDWDELOLW\ GHQVLW\
PD[6SHHG PD[
G>@ QHZ'XFN DLUVSHHGGHQVLW\  6\VWHPRXWSULQWOQ ³W\SHGXFN´ 
` `
` ` 

       
Q:
 
%ARLIERYOUSAIDTHATITSGOODTOHAVEANO ARGU 7EREUSINGTHREEINTSFOR2'"VALUESHERE7ELLGETINTO
USING#OLORLATER INTHE3WINGCHAPTERS /THERWISE WHAT
MENTCONSTRUCTORSOTHATIFPEOPLECALLTHENO ARGCON
STRUCTOR WECANSUPPLYDEFAULTVALUESFORTHEhMISSINGv WOULDYOUGET4HE*AVA!0)PROGRAMMERSCOULDHAVEDE
ARGUMENTS"UTARENTTHERETIMESWHENITSIMPOSSIBLETO CIDEDTHATIFYOUCALLANO ARG#OLORCONSTRUCTORYOULLGETA
COMEUPWITHDEFAULTS!RETHERETIMESWHENYOUSHOULD LOVELYSHADEOFMAUVE"UTGOODTASTEPREVAILED
NOTHAVEANO ARGCONSTRUCTORINYOURCLASS )FYOUTRYTOMAKEA#OLORWITHOUTSUPPLYINGANARGUMENT

A: 9OURERIGHT4HEREARETIMESWHENANO ARGCONSTRUC
TORDOESNTMAKESENSE9OULLSEETHISINTHE*AVA!0)ˆSOME
&RORUF QHZ&RORU 

4HECOMPILERFREAKSOUTBECAUSEITCANTFINDAMATCHINGNO
CLASSESDONTHAVEANO ARGCONSTRUCTOR4HE#OLORCLASS FOR ARGCONSTRUCTORINTHE#OLORCLASS
EXAMPLE REPRESENTSACOLOR#OLOROBJECTSAREUSEDTO FOR
)LOH(GLW:LQGRZ+HOS6WRS%HLQJ6WXSLG
EXAMPLE SETORCHANGETHECOLOROFASCREENFONTOR'5)
BUTTON7HENYOUMAKEA#OLORINSTANCE THATINSTANCEIS FDQQRWUHVROYHV\PERO
FRQVWUXFWRU&RORU
OFAPARTICULARCOLORYOUKNOW $EATH BY #HOCOLATE"ROWN ORFDWLRQFODVV
"LUE 3CREEN OF $EATH"LUE 3CANDALOUS2ED ETC )FYOU MDYDDZW&RORU
MAKEA#OLOROBJECT YOUMUSTSPECIFYTHECOLORINSOMEWAY &RORUF QHZ&RORU 
A
&RORUF QHZ&RORU   HUURU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

6IVWZM^QM_"NW]Z\PQVO[\W
YiX`e
ZMUMUJMZIJW]\KWV[\Z]K\WZ[ gfn\i
7HATABOUTSUPERCLASSES
 $FRQVWUXFWRULVWKHFRGHWKDWUXQVZKHQ
VRPHERG\VD\VQHZRQDFODVVW\SH 7HENYOUMAKEA$OG
'XFNG QHZ'XFN 
SHOULDTHE#ANINE
 CONSTRUCTORRUNTOO
)FTHESUPERCLASSISABSTRACT
SHOULDITEVENHAVEA
 $FRQVWUXFWRUPXVWKDYHWKHVDPHQDPH
DVWKHFODVVDQGQRUHWXUQW\SH CONSTRUCTOR
SXEOLF'XFN LQWVL]H ^`
7ELLLOOKATTHISONTHENEXT
FEWPAGES SOSTOPNOWAND
THINKABOUTTHEIMPLICATIONSOF
 ,I\RXGRQ·WSXWDFRQVWUXFWRULQ\RXUFODVV CONSTRUCTORSANDSUPERCLASSES
WKHFRPSLOHUSXWVLQDGHIDXOWFRQVWUXFWRU
7KHGHIDXOWFRQVWUXFWRULVDOZD\VDQRDUJ
FRQVWUXFWRU WKHUH DUH QR
SXEOLF'XFN ^`
'XPE 4XHVWLRQV
Q: $OCONSTRUCTORSHAVETOBESXEOLF

A: .O#ONSTRUCTORSCANBESXEOLF
SULYDWH ORDEFAULTWHICHMEANSNOACCESS
 <RXFDQKDYHPRUHWKDQRQHFRQVWUXFWRULQ\RXUFODVV
DVORQJDVWKHDUJXPHQWOLVWVDUHGLIIHUHQW+DYLQJ MODIFIERATALL 7ELLLOOKMOREATDEFAULT
PRUHWKDQRQHFRQVWUXFWRULQDFODVVPHDQV\RXKDYH ACCESSINCHAPTERANDAPPENDIX"
RYHUORDGHGFRQVWUXFWRUV

SXEOLF'XFN ^`
Q: (OWCOULDAPRIVATECONSTRUCTOR
EVERBEUSEFUL.OBODYCOULDEVERCALLIT
SONOBODYCOULDEVERMAKEANEWOBJECT
SXEOLF'XFN LQWVL]H ^`

SXEOLF'XFN 6WULQJQDPH ^`


A: "UTTHATSNOTEXACTLYRIGHT-ARKING
SOMETHINGSULYDWHDOESNTMEANNOBODY
CANACCESSIT ITJUSTMEANSTHATNOBODY
SXEOLF'XFN 6WULQJQDPHLQWVL]H ^` OUTSIDETHECLASSCANACCESSIT"ETYOURE
THINKINGh#ATCHv/NLYCODEFROMTHE
SAMECLASSASTHECLASS WITH PRIVATE CON
STRUCTORCANMAKEANEWOBJECTFROMTHAT
CLASS BUTWITHOUTFIRSTMAKINGANOBJECT
HOWDOYOUEVERGETTORUNCODEFROMTHAT
CLASSINTHEFIRSTPLACE(OWDOYOUEVERGET
'RLQJDOOWKH%UDLQ%DUEHOOVKDVEHHQVKRZQWRSURGXFHDLQFUHDVHLQ TOANYTHINGINTHATCLASS0ATIENCEGRASSHOP
QHXURQVL]H$QG\RXNQRZZKDWWKH\VD\³%LJQHXURQV´ PER7ELLGETTHEREINTHENEXTCHAPTER
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VSDFHIRUDQREMHFW·VVXSHUFODVVSDUWV

?IQ\IUQV]\M_MVM^MZ,1,\ITSIJW]\
[]XMZKTI[[M[IVLQVPMZQ\IVKMIVLPW_\PI\ITT
NQ\[QV_Q\PKWV[\Z]K\WZ[
(ERESWHEREITGETSFUN2EMEMBERFROMTHELASTCHAPTER THEPARTWHEREWELOOKEDAT
THE3NOWBOARDOBJECTWRAPPINGAROUNDANINNERCOREREPRESENTINGTHE/BJECTPORTION
OFTHE3NOWBOARDCLASS4HE"IG0OINTTHEREWASTHATEVERYOBJECTHOLDSNOTJUSTITSOWN
DECLAREDINSTANCEVARIABLES BUTALSOEVERYTHINGFROMITSSUPERCLASSESWHICH ATAMINIMUM
MEANSCLASS/BJECT SINCEEVERYCLASSEXTENDS/BJECT 
3OWHENANOBJECTISCREATEDBECAUSESOMEBODYSAIDQHZTHEREISNOOTHERWAYTOCREATE
ANOBJECTOTHERTHANSOMEONE SOMEWHERESAYINGQHZONTHECLASSTYPE THEOBJECT
GETSSPACEFORALLTHEINSTANCEVARIABLES FROMALLTHEWAYUPTHEINHERITANCETREE4HINK
ABOUTITFORAMOMENTASUPERCLASSMIGHTHAVESETTERMETHODSE NCAPSULATINGAPRIVATE
VARIABLE"UTTHATVARIABLEHASTOLIVESOMEWHERE7HENANOBJECTISCREATED ITSALMOSTAS
THOUGHMULTIPLEOBJECTSMATERIALIZEˆTHEOBJECTBEINGNEWDANDONEOBJECTPEREACH
SUPERCLASS#ONCEPTUALLY THOUGH ITSMUCHBETTERTOTHINKOFITLIKETHEPICTUREBELOW
WHERETHEOBJECTBEINGCREATEDHASLAYERSOFITSELFREPRESENTINGEACHSUPERCLASS

$VLQJOH
2EMHFW 2EMHFWKDVLQVWDQFHYDULDEOHV REMHFWRQ
)RRD HQFDSVXODWHGE\DFFHVVPHWKRGV WKHKHDS
Q
LQWE P
LQWF
7KRVHLQVWDQFHYDULDEOHVDUH R
FUHDWHGZKHQDQ\VXEFODVVLV
HTXDOV LQVWDQWLDWHG 7KHVHDUHQ·WWKH
JHW&ODVV
KDVK&RGH
5($/2EMHFWYDULDEOHVEXWZH Y Z ;
WR6WULQJ GRQ·WFDUHZKDWWKH\DUHVLQFH
WKH\·UHHQFDSVXODWHG 2EMHFW

6QRZERDUG 6QRZERDUGDOVRKDVLQVWDQFH
)RR[ YDULDEOHVRILWVRZQVRWRPDNH 6QRZERDUG
)RR\ D6QRZERDUGREMHFWZHQHHG
LQW] 6Q W
VSDFHIRUWKHLQVWDQFHYDULDEOHV RZ E MHF
RDUGRE
WXUQ RIERWKFODVVHV
VKUHG
JHW$LU 7KHUHLVRQO\21(REMHFWRQWKHKHDSKHUH$
ORVH&RQWURO 6QRZERDUGREMHFW%XWLWFRQWDLQVERWKWKH
6QRZERDUGSDUWVRILWVHOIDQGWKH2EMHFWSDUWVRI
LWVHOI$OOLQVWDQFHYDULDEOHVIURPERWKFODVVHVKDYH
WREHKHUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

<PMZWTMWN[]XMZKTI[[KWV[\Z]K\WZ[
QVIVWJRMK\¼[TQNM
!LLTHECONSTRUCTORSINANOBJECTSINHERITANCE
TREEMUSTRUNWHENYOUMAKEANEWOBJECT
,ETTHATSINKIN
4HATMEANSEVERYSUPERCLASSHASACONSTRUCTOR
BECAUSEEVERYCLASSHASACONSTRUCTOR ANDEACH
CONSTRUCTORUPTHEHIERARCHYRUNSATTHETIMEAN
OBJECTOFASUBCLASSISCREATED
3AYINGQHZISA"IG$EAL)TSTARTSTHE P Q
WHOLECONSTRUCTORCHAINREACTION! NDYES
K 2EMHFW
EVENABSTRACTCLASSESHAVECONSTRUCTORS N
c
!LTHOUGHYOUCANNEVERSAYNEWONAN
ABSTRACTCLASS ANABSTRACTCLASSISSTILL
Y ;
ASUPERCLASS SOITSCONSTRUCTORRUNS Z
WHENSOMEONEMAKESANINSTANCEOFA $QLPDO
CONCRETESUBCLASS
2EMHFW
4HESUPERCONSTRUCTORSRUNTOBUILD
OUTTHESUPERCLASSPARTSOFTHEOBJECT $QLPDO
2EMEMBER ASUBCLASSMIGHTINHERIT
METHODSTHATDEPENDONSUPERCLASSSTATE +,SSR
+LSSR
INOTHERWORDS THEVALUEOFINSTANCEVARIABLES
INTHESUPERCLASS &ORANOBJECTTOBEFULLY
FORMED ALLTHESUPERCLASSPARTSOFITSELFMUSTBE
$VLQJOH+LSSRREMHFWRQWKHKHDS
FULLY FORMED ANDTHATSWHYTHESUPERCONSTRUCTOR
MUSTRUN!LLINSTANCEVARIABLESFROMEVERYCLASS
INTHEINHERITANCETREEHAVETOBEDECLAREDAND $QHZ+LSSRREMHFWDOVR,6$$QLPDO
INITIALIZED%VENIF!NIMALHASINSTANCEVARIABLES DQG,6$2EMHFW,I\RXZDQWWRPDNHD
THAT(IPPODOESNTINHERITIFTHEVARIABLESARE +LSSR\RXPXVWDOVRPDNHWKH$QLPDO
PRIVATE FOREXAMPLE THE(IPPOSTILLDEPENDSON DQG2EMHFWSDUWVRIWKH+LSSR
THE!NIMALMETHODSTHATUSETHOSEVARIABLES
7KLVDOOKDSSHQVLQDSURFHVVFDOOHG
7HENACONSTRUCTORRUNS ITIMMEDIATELYCALLSITS &RQVWUXFWRU&KDLQLQJ
SUPERCLASSCONSTRUCTOR ALLTHEWAYUPTHECHAIN
UNTILYOUGETTOTHECLASS/BJECTCONSTRUCTOR
/NTHENEXTFEWPAGES YOULLLEARNHOWSUPERCLASS
CONSTRUCTORSARECALLED ANDHOWYOUCANCALL
THEMYOURSELF9OULLALSOLEARNWHATTODOIFYOUR
SUPERCLASSCONSTRUCTORHASARGUMENTS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWFRQVWUXFWLRQ

5ISQVOI0QXXWUMIV[UISQVO\PM
)VQUITIVL7JRMK\XIZ\[\WW 6KDUSHQ \RXU SHQFLO
7HATSTHEREALOUTPUT'IVENTHE
CODEONTHELEFT WHATPRINTSOUT
WHENYOURUN4EST(IPPO!OR"
SXEOLFFODVV$QLPDO^
THEANSWERISATTHEBOTTOMOFTHEPAGE
SXEOLF$QLPDO ^
6\VWHPRXWSULQWOQ ³0DNLQJDQ$QLPDO´ 
` )LOH(GLW:LQGRZ+HOS6ZHDU

` MDYD7HVW+LSSR
$ 6WDUWLQJ

Licensed by
SXEOLFFODVV+LSSRH[WHQGV$QLPDO^ 0DNLQJDQ$QLPDO
SXEOLF+LSSR ^ 0DNLQJD+LSSR
6\VWHPRXWSULQWOQ ³0DNLQJD+LSSR´ 
`
`

Eduard Simons
)LOH(GLW:LQGRZ+HOS6ZHDU

SXEOLFFODVV7HVW+LSSR^ MDYD7HVW+LSSR
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ % 6WDUWLQJ
6\VWHPRXWSULQWOQ ³6WDUWLQJ´  0DNLQJD+LSSR
+LSSRK QHZ+LSSR 

104038
` 0DNLQJDQ$QLPDO
`

 &RGHIURPDQRWKHU  +LSSR LQYRNHV  $QLPDO LQYRNHV  2EMHFW FRPSOHWHV


FODVVVD\VQHZ WKHVXSHUFODVV WKHVXSHUFODVV DQGLWVVWDFNIUDPH
+LSSR DQGWKH FRQVWUXFWRUZKLFK FRQVWUXFWRUZKLFK LVSRSSHGRIIWKH
+LSSR FRQVWUXFWRU SXVKHVWKH$QLPDO  SXVKHVWKH2EMHFW  VWDFN([HFXWLRQJRHV
JRHVLQWRDVWDFN FRQVWUXFWRURQWRWKH FRQVWUXFWRURQWR EDFNWRWKH$QLPDO 
IUDPHDWWKHWRSRI WRSRIWKHVWDFN WKHWRSRIWKHVWDFN FRQVWUXFWRUDQG
WKHVWDFN VLQFH2EMHFWLVWKH SLFNVXSDWWKHOLQH
VXSHUFODVVRI$QLPDO IROORZLQJ$QLPDO·V
FDOOWRLWVVXSHUFODVV
FRQVWUXFWRU
2EMHFW
$QLPDO $QLPDO $QLPDO
+LSSR +LSSR +LSSR +LSSR
LW·VWKH$QLPDOFRQVWUXFWRUWKDWILQLVKHVILUVW
7KHILUVWRQH$7KH+LSSR FRQVWUXFWRULVLQYRNHGILUVWEXW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

0W_LWaW]QV^WSMI[]XMZKTI[[KWV[\Z]K\WZ'
9OUMIGHTTHINKTHATSOMEWHEREIN SAY A$UCKCONSTRUCTOR
IF$UCKEXTENDS!NIMALYOUDCALL!NIMAL "UTTHATSNOT
HOWITWORKS

SXEOLFFODVV'XFNH[WHQGV$QLPDO^
LQWVL]H

SXEOLF'XFN LQWQHZ6L]H ^ $QGKRZLVLWWKDWZH·YH


$QLPDO  JRWWHQDZD\ZLWKRXW
%$'VL]H QHZ6L]H 127KLV GRLQJLW"
LVQRWOH
JD O
` 9OUPROBABLYFIGUREDTHATOUT
` /URGOODFRIENDTHECOMPILER
PUTSINACALLTOSUPER IFYOU
DONT
4HEONLYWAYTOCALLASUPERCONSTRUCTORISBYCALLINGSUPER 
4HATSRIGHTˆSUPER CALLSTHESUPERCONSTRUCTOR 3OTHECOMPILERGETSINVOLVEDIN
CONSTRUCTOR MAKINGINTWOWAYS
7HATARETHEODDS

SXEOLFFODVV'XFNH[WHQGV$QLPDO^  )FYOUDONTPROVIDEACONSTRUCTOR
LQWVL]H 4HECOMPILERPUTSONEINTHATLOOKSLIKE
SXEOLF&ODVV1DPH ^
VXSHU 
SXEOLF'XFN LQWQHZ6L]H ^
`
VXSHU  \RXMXVWVD\V
X SHU
VL]H QHZ6L]H
`  )FYOUDOPROVIDEACONSTRUCTOR
BUTYOUDONOTPUTINTHECALLTO
` SUPER

4HECOMPILERWILLPUTACALLTOSUPER IN
!CALLTOSUPER INYOURCONSTRUCTORPUTSTHESUPERCLASS EACHOFYOUROVERLOADEDCONSTRUCTORS

CONSTRUCTORONTHETOPOFTHE3TACK!NDWHATDOYOU 4HECOMPILER SUPPLIEDCALLLOOKSLIKE
THINKTHATSUPERCLASSCONSTRUCTORDOES#ALLSITSSUPERCLASS
VXSHU 
CONSTRUCTOR!NDSOITGOESUNTILTHE/BJECTCONSTRUCTORIS
ONTHETOPOFTHE3TACK/NCE/BJECT lNISHES ITSPOPPED )TALWAYSLOOKSLIKETHAT4HECOMPILER
OFFTHE3TACKANDTHENEXTTHINGDOWNTHE3TACKTHE INSERTEDCALLTOSUPER ISALWAYSANO ARG
SUBCLASSCONSTRUCTORTHATCALLED/BJECT ISNOWONTOP CALL)FTHESUPERCLASSHASOVERLOADED
CONSTRUCTORS ONLYTHENO ARGONEISCALLED
4HATCONSTRUCTORlNISHESANDSOITGOESUNTILTHEORIGINAL
CONSTRUCTORISONTHETOPOFTHE3TACK WHEREITCANNOW 8QOHVVWKHFRQVWUXFWRUFDOOVDQRWKHURYHUORDGHG
lNISH FRQVWUXFWRU \RX·OOVHHWKDWLQDIHZSDJHV 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHF\FOH

+IV\PMKPQTLM`Q[\JMNWZM
\PMXIZMV\[' (HZZZZWKDW
)FYOUTHINKOFASUPERCLASSASTHEPARENTTOTHESUBCLASSCHILD LV62FUHHS\7KHUH·V
YOUCANlGUREOUTWHICHHASTOEXISTlRST4HESUPERCLASSPARTS QRZD\,FRXOGKDYHEHHQ
OFANOBJECTHAVETOBEFULLY FORMEDCOMPLETELYBUILT BEFORETHE ERUQEHIRUHP\SDUHQWV
SUBCLASSPARTSCANBECONSTRUCTED2EMEMBER
7KDW·VMXVWZURQJ
THESUBCLASSOBJECTMIGHTDEPENDONTHINGSIT
INHERITSFROMTHESUPERCLASS SOITSIMPORTANT
THATTHOSEINHERITEDTHINGSBElNISHED.O
WAYAROUNDIT4HESUPERCLASSCONSTRUCTOR
MUSTlNISHBEFOREITSSUBCLASSCONSTRUCTOR
,OOKATTHE3TACKSERIESONPAGEAGAIN
ANDYOUCANSEETHATWHILETHE(IPPO
CONSTRUCTORISTHElRSTTOBEINVOKEDITS
THElRSTTHINGONTHE3TACK ITSTHELASTONE
TOCOMPLETE%ACHSUBCLASSCONSTRUCTOR
IMMEDIATELYINVOKESITSOWNSUPERCLASS
CONSTRUCTOR UNTILTHE/BJECTCONSTRUCTOR
ISONTHETOPOFTHE3TACK4HEN/BJECTS
CONSTRUCTORCOMPLETESANDWEBOUNCE
BACKDOWNTHE3TACKTO!NIMALS
CONSTRUCTOR/NLYAFTER!NIMALSCONSTRUCTORCOMPLETES
DOWElNALLYCOMEBACKDOWNTOlNISHTHERESTOFTHE(IPPO
CONSTRUCTOR&ORTHATREASON
7KHFDOOWRVXSHU PXVWEHWKHÀUVWVWDWHPHQW
LQHDFKFRQVWUXFWRU

3RVVLEOHFRQVWUXFWRUVIRUFODVV%RRS
; SXEOLF%RRS ^
; SXEOLF%RRS ^ ` 7KHVHD
WKHFRPSULOHH2.EHFDXVH
FDOOWRVXSH UZLOOSXWD
VXSHU 
7KHVHD
` WKHSURJUUHD2 .EHFDXVH ; SXEOLF%RRS LQWL ^ ILUVWVWDWH U LQDVWKH
SOLFLWO\FRG PPHUH[ PHQW
VL]H L
WRVXSHU  HGWKHFDOO
; SXEOLF%RRS LQWL ^ VWDWHPHQW DVWKHILUVW `
VXSHU 
VL]H L SXEOLF%RRS LQWL ^ %$'7
<RXFDQ·WKHLVZRQ·WFRPSLOH
` VL]H L
WKHFDOO RV[SOLFLWO\SXW
VXSHU  DQ\WKLQJW XSHU
HOVH EHORZ
`

7KHUH¶VDQH[FHSWLRQWRWKLVUXOH\RX¶OOOHDUQLWRQSDJH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

;]XMZKTI[[KWV[\Z]K\WZ[_Q\PIZO]UMV\[
7HATIFTHESUPERCLASSCONSTRUCTORHASARGUMENTS#ANYOUPASSSOMETHINGINTO
THESUPER CALL/FCOURSE)FYOUCOULDNT YOUDNEVERBEABLETOEXTENDACLASS $QLPDO
THATDIDNTHAVEANO ARGCONSTRUCTOR)MAGINETHISSCENARIOALLANIMALSHAVEA
NAME4HERESAGET.AME METHODINCLASS!NIMALTHATRETURNSTHEVALUEOFTHE SULYDWH6WULQJQDPH
NAMEINSTANCEVARIABLE4HEINSTANCEVARIABLEISMARKEDPRIVATE BUTTHESUBCLASS
INTHISCASE (IPPO INHERITSTHEGET.AME METHOD3OHERESTHEPROBLEM $QLPDO 6WULQJQ
(IPPOHASAGET.AME METHODTHROUGHINHERITANCE BUTDOESNOTHAVETHENAME 6WULQJJHW1DPH
INSTANCEVARIABLE(IPPOHASTODEPENDONTHE!NIMALPARTOFHIMSELFTOKEEPTHE
NAMEINSTANCEVARIABLE ANDRETURNITWHENSOMEONECALLSGET.AME ONA(IPPO
OBJECT"UTHOWDOESTHE!NIMALPARTGETTHENAME4HEONLYREFERENCE(IPPO
HASTOTHE!NIMALPARTOFHIMSELFISTHROUGHSUPER SOTHATSTHEPLACEWHERE
(IPPOSENDSTHE(IPPOSNAMEUPTOTHE!NIMALPARTOFHIMSELF SOTHATTHE +LSSR
!NIMALPARTCANSTOREITINTHEPRIVATENAMEINSTANCEVARIABLE

SXEOLFDEVWUDFWFODVV$QLPDO^
+LSSR 6WULQJQ
SULYDWH6WULQJQDPH $OODQLPDOV LQFOXGLQJ H
VXEFODVVHV KDYHDQDP >RWKHU+LSSRVSH
FLILFPHWKRGV@
SXEOLF6WULQJJHW1DPH ^ $JHWWHU
UHWXUQQDPH +LSSRLQKHUPLWHWV KRGWKDW
`
7KH$QLPDOSDUWRI
SXEOLF$QLPDO 6WULQJWKH1DPH ^ PHQHHGVWRNQRZP\QDPH
7KHFRQV UXFW
QDPH WKH1DPH WDNHVWKHWQD RUWKDW VR,WDNHDQDPHLQP\RZQ

` LWWKHQDPHLQPHDQGDVVLJQV +LSSRFRQVWUXFWRUWKHQSDVV


YDULDEOH VWDQFH WKHQDPHWRVXSHU
`

SXEOLFFODVV+LSSRH[WHQGV$QLPDO^

DPH
SXEOLF+LSSR 6WULQJQDPH ^
FWRUWDNHVDQ
VXSHU QDPH  +LSSRFRQVWUX
`
LWVHQGVW
` WKH$QLPDOKHFRQDPHXSWKH6WDFNWR
QVWUXFWRU 
)LOH(GLW:LQGRZ+HOS+LGH

SXEOLFFODVV0DNH+LSSR^ MDYD0DNH+LSSR
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 0DNHD+
QDPH´%XILSIS\RSDVVLQJWKH %XII\
+LSSRK QHZ+LSSR ³%XII\´ 
FRQVWUXFW µWRWKH+LSSR
6\VWHPRXWSULQWOQ KJHW1DPH  +LSSR·VLQKRHUULW7KHQFDOOWKH
` HGJHW1DPH
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FDOOLQJRYHUORDGHGFRQVWUXFWRUV

1V^WSQVOWVMW^MZTWILMLKWV[\Z]K\WZ
NZWUIVW\PMZ
call a
7HATIFYOUHAVEOVERLOADEDCONSTRUCTORSTHAT WITH
Use this( ) to
THEEXCEPTIONOFHANDLINGDIFFERENTARGUMENTTYPES
ALLDOTHESAMETHING9OUKNOWTHATYOUDONTWANT
o n s t r u c to r f r om another
c
DUPLICATECODESITTINGINEACHOFTHECONSTRUCTORSPAIN
e r lo a d e d c o n structor in
TOMAINTAIN ETC SOYOUDLIKETOPUTTHEBULKOFTHE
ov
CONSTRUCTORCODEINCLUDINGTHECALLTOSUPER INONLY
s.
ONEOFTHEOVERLOADEDCONSTRUCTORS9OUWANTWHICHEVER
CONSTRUCTORISlRSTINVOKEDTOCALL4HE2EAL#ONSTRUCTOR
the same clas
is( )
The call to th
ANDLET4HE2EAL#ONSTRUCTORlNISHTHEJOBOF

ly in a
CONSTRUCTION)TSSIMPLEJUSTSAYTHIS /RTHISA3TRING 
/RTHIS X )NOTHERWORDS JUSTIMAGINETHATTHE
n b e u s e d o n
ca
KEYWORDTHISISAREFERENCETOTHECURRENTOBJECT
t r u ct o r , a n d must be
9OUCANSAYTHIS ONLYWITHINACONSTRUCTOR ANDITMUST con s
BETHElRSTSTATEMENTINTHECONSTRUCTOR
f ir s t s t a t e m ent in a
"UTTHATSAPROBLEM ISNTIT%ARLIERWESAIDTHAT the
SUPER MUSTBETHElRSTSTATEMENTINTHECONSTRUCTOR
constructor.
n have a
7ELL THATMEANSYOUGETACHOICE

o n s t r u c t o r c a
(YHU\FRQVWUXFWRUFDQKDYHDFDOOWRVXSHU 
Ac
RUWKLV EXWQHYHUERWK
t o s u p e r ( ) O R this( ),
call
h!
but never bot
FODVV0LQLH[WHQGV&DU^

&RORUFRORU
7KHQRDUJFRQV WUXFWRU
VXSSOLHVD GH IDXO W &RORUDQG
5HDO
SXEOLF0LQL ^
FDOOVWKHRYHUO WRDKHRGQHWKDW
GH
WKLV &RORU5HG 
&RQVWUXF WR U
FDOOVVXSHU 
`

SXEOLF0LQL &RORUF ^
7KLVLV7KH5HDO&RQVWUXFWR
VXSHU ³0LQL´ 
GRHV7KH5HDO:RUNRI UWKDW
FRORU F
PRUHLQLWLDOL]DWLRQ
REMHFW LQFOXGLQJWKHFDOLQ LWLDOL]LQJWKH
OWRVXSHU
`
)LOH(GLW:LQGRZ+HOS'ULYH
SXEOLF0LQL LQWVL]H ^ MDYDF0LQLMDYD
WKLV &RORU5HG 
VXSHU VL]H  :RQ·WZRUN&DQ·WKDYH 0LQLMDYDFDOOWRVXSHUPXVW
VXSHU DQGWKLV LQWK EHILUVWVWDWHPHQWLQFRQVWUXFWRU
FRQVWUXFWRUEHFDXVHWKHV
 DPH
` H\ HDFK
` PXVWEHWKHILUVWVWDWHPHQW VXSHU 
 A

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

6KDUSHQ \RXU SHQFLO


3OMEOFTHECONSTRUCTORSINTHE3ON/F"OOCLASSWILLNOT
COMPILE3EEIFYOUCANRECOGNIZEWHICHCONSTRUCTORSARE
NOTLEGAL-ATCHTHECOMPILERERRORSWITHTHE3ON/F"OO 0DNH LW
CONSTRUCTORSTHATCAUSEDTHEM BYDRAWINGALINEFROMTHE
6WLFN
COMPILERERRORTOTHEhBADvCONSTRUCTOR 2OSESA
RERED V
9OURP IOLETSA
ARENTS REBLUE
COMEF 
SXEOLFFODVV%RR^ IRST WA
4HESU YBEFOR
SXEOLF%RR LQWL ^` PERCLAS EYOU
FORMED SPAR TS
OFANO
SXEOLF%RR 6WULQJV ^` BEFORE B JE C TMUSTB
EXIST* THENE EFULLY
USTLIKE WSUBC
SXEOLF%RR 6WULQJVLQWL ^` T LASSOB
BEENB H E RESNOW JEC TCA
ORNBEFO AYYOUC N
` REYOUR OULDHA
PARENT VE
S

FODVV6RQ2I%RRH[WHQGV%RR^ )LOH(GLW:LQGRZ+HOS

MDYDF6RQ2I%RRMDYD
SXEOLF6RQ2I%RR ^
VXSHU ³ERR´  FDQQRWUHVROYHV\PERO
`
V\PEROFRQVWUXFWRU%RR
SXEOLF6RQ2I%RR LQWL ^ MDYDODQJ6WULQJMDYDOD
VXSHU ³)UHG´  QJ6WULQJ
`

SXEOLF6RQ2I%RR 6WULQJV ^ )LOH(GLW:LQGRZ+HOS<DGD\DGD\DGD


VXSHU   MDYDF6RQ2I%RRMDYD
`
FDQQRWUHVROYHV\PERO
SXEOLF6RQ2I%RR LQWL6WULQJV ^
` V\PEROFRQVWUXFWRU%RR

LQWMDYDODQJ6WULQJ
SXEOLF6RQ2I%RR 6WULQJD6WULQJE6WULQJF ^
VXSHU DE 
`
)LOH(GLW:LQGRZ+HOS,P1RW/LVWHQLQJ
SXEOLF6RQ2I%RR LQWLLQWM ^
VXSHU ³PDQ´M  MDYDF6RQ2I%RRMDYD
`
FDQQRWUHVROYHV\PERO
SXEOLF6RQ2I%RR LQWLLQW[LQW\ ^ V\PEROFRQVWUXFWRU%RR
VXSHU L³VWDU´ 
`
`


\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHVSDQ

6W__MSVW_PW_IVWJRMK\Q[JWZV  $ORFDOYDULDEOHOLYHVRQO\
J]\PW_TWVOLWM[IVWJRMK\TQ^M ' ZLWKLQWKHPHWKRGWKDW
!NOBJECTSLIFEDEPENDSENTIRELYONTHELIFEOFREFERENCES GHFODUHGWKHYDULDEOH
REFERRINGTOIT)FTHEREFERENCEISCONSIDEREDhALIVEv THE SXEOLFYRLGUHDG ^
OBJECTISSTILLALIVEONTHE(EAP)FTHEREFERENCEDIES LQWV 
ANDWELLLOOKATWHATTHATMEANSINJUSTAMOMENT THE µV¶FDQEHXVHGRQO\
OBJECTWILLDIE ZLWKLQWKLVPHWKRG
:KHQWKLVPHWKRGHQGV
3OIFANOBJECTSLIFEDEPENDSONTHEREFERENCE µV¶GLVDSSHDUVFRPSOHWHO\
VARIABLESLIFE HOWLONGDOESAVARIABLELIVE `
4HATDEPENDSONWHETHERTHEVARIABLEISALOCALVARIABLE 6ARIABLE@SCANBEUSEDONLYWITHINTHE
ORANINSTANCEVARIABLE4HECODEBELOWSHOWSTHELIFEOFA READ METHOD)NOTHERWORDS THEVARIABLE
LOCALVARIABLE)NTHEEXAMPLE THEVARIABLEISAPRIMITIVE ISINSCOPEONLYWITHINITSOWNMETHOD.O
BUTVARIABLELIFETIMEISTHESAMEWHETHERITSAPRIMITIVE OTHERCODEINTHECLASSORANYOTHERCLASS
ORREFERENCEVARIABLE CANSEE@S

SXEOLFFODVV7HVW/LIH2QH^

SXEOLFYRLGUHDG ^  $QLQVWDQFHYDULDEOHOLYHV
LQWV  ¶V·LVV DVORQJDVWKHREMHFW
VOHHS  PHWKRGFRSHGWRWKHUHD GRHV,IWKHREMHFWLVVWLOO
` DQ\ZKHUH VRLWFDQ·WEH G 
HOVH XVHG DOLYHVRDUHLWVLQVWDQFH
SXEOLFYRLGVOHHS ^ YDULDEOHV
V 

HJDOWR
` SXEOLFFODVV/LIH^
1 R W O LQWVL]H
` 
%$' KHUH
XVH¶V· SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
EOH6LQFH
µV¶GLVDSSHDUVDWWKH
K H  ¶V ·Y DU LD HQGRIWKLVPHWKRG
VHHW UDPH
VOHHS FDQ·WVOHHS ·VRZQ6WDFNI RXWLW EXWµVL]H¶FDQEHXVHG
VOHHS LW·VQRWLQ VQ·WNQRZDQ\WKLQJDE
DQ\ZKHUHLQWKHFODVV
`
VOHHS GRH `
UHDG V 6ARIABLE@STHISTIMEAMETHODPARAMETER
ISINSCOPEONLYWITHINTHESET3IZE
METHOD"UTINSTANCEVARIABLESIZEIS
7KHYDULDE SCOPEDTOTHELIFEOFTHEOBJECTASOPPOSED
UHDG PHW OH¶V·LVDOLYHEXWLQ TOTHELIFEOFTHEMETHOD
RQWRSRI KRG:KHQVOHHS F VFRSHRQO\ZLWKLQWK
VWLOOVHH¶V· WKH6WDFNDQGUXQQ RPSOHWHVDQGUHDG H
WKH6WDFN :KHQUHDG FRPSOHLQJDJDLQUHDG FDQ LV
¶V·LVGHDG 
3XVKLQJX WHVDQGLVSRSSHGRI
SGLJLWDOG I
DLVLHV
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

7KHGLIIHUHQFHEHWZHHQOLIHDQG
VFRSHIRUORFDOYDULDEOHV
SXEOLFYRLGGR6WXII ^
ERROHDQE WUXH
/LIH JR  
!LOCALVARIABLEISALIVEASLONGASITS3TACK `
FRAMEISONTHE3TACK)NOTHERWORDS SXEOLFYRLGJR LQW[ ^
UNTILTHEMETHODCOMPLETES LQW] [
FUD]\ 
LPDJLQHPRUHFRGHKHUH
6FRSH
`
!LOCALVARIABLEISINSCOPEONLYWITHINTHE
SXEOLFYRLGFUD]\ ^
METHODINWHICHTHEVARIABLEWASDECLARED
FKDUF µD¶
7HENITSOWNMETHODCALLSANOTHER THE `
VARIABLEISALIVE BUTNOTINSCOPEUNTILITS
METHODRESUMES9OUCANUSEAVARIABLEONLY
WHENITISINSCOPE

FUD]\ F
JR [ ] JR [ ] JR [ ]
GR6WXII E GR6WXII E GR6WXII E GR6WXII E

 GR6WXII JRHVRQWKH  JR SORSVRQWRSRI  FUD]\ LVSXVKHGRQWR  FUD]\ FRPSOHWHVDQG


6WDFN9DULDEOH¶E·LV WKH6WDFN¶[·DQG¶]· WKH6WDFNZLWK¶F·QRZ LVSRSSHGRIIWKH6WDFN
DOLYHDQGLQVFRSH DUHDOLYHDQGLQVFRSH DOLYHDQGLQVFRSH7KH VR¶F·LVRXWRIVFRSH
DQG¶E·LVDOLYHEXWQRW RWKHUWKUHHYDULDEOHV DQGGHDG:KHQJR 
LQVFRSH DUHDOLYHEXWRXWRI UHVXPHVZKHUHLWOHIW
VFRSH RII¶[·DQG¶]·DUHERWK
DOLYHDQGEDFNLQVFRSH
9DULDEOH¶E·LVVWLOODOLYH
7HILEALOCALVARIABLEISALIVE ITSSTATEPERSISTS EXWRXWRIVFRSH XQWLO
!SLONGASMETHODDO3TUFF ISONTHE3TACK FOR JR FRPSOHWHV 
EXAMPLE THE@BVARIABLEKEEPSITSVALUE"UTTHE
@BVARIABLECANBEUSEDONLYWHILEDO3TUFF S
3TACKFRAMEISATTHETOP)NOTHERWORDS YOUCAN
USEALOCALVARIABLEONLYWHILETHATLOCALVARIABLES
METHODISACTUALLYRUNNINGASOPPOSEDTO
WAITINGFORHIGHER3TACKFRAMESTOCOMPLETE 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHF\FOH

?PI\IJW]\ZMNMZMVKM^IZQIJTM['
4HERULESARETHESAMEFORPRIMTIVESANDREFERENCES!REFERENCE
VARIABLECANBEUSEDONLYWHENITSINSCOPE WHICHMEANSYOUCANTUSE
ANOBJECTSREMOTECONTROLUNLESSYOUVEGOTAREFERENCEVARIABLETHATS
INSCOPE4HEREALQUESTIONIS

h(OWDOESVARIABLELIFEAFFECTOBJECTLIFEv ,Y ZMUPN_¿^ WTQP SL^ YZ


aLW`P YZ XPLYTYR YZ
!NOBJECTISALIVEASLONGASTHEREARELIVEREFERENCESTOIT)FAREFERENCE
VARIABLEGOESOUTOFSCOPEBUTISSTILLALIVE THEOBJECTITREFERSTOISSTILL
[ZTY_ `YWP^^ ^ZXPMZOd
ALIVEONTHE(EAP!NDTHENYOUHAVETOASKh7HATHAPPENSWHENTHE SL^ L ]PQP]PYNP _Z T_
3TACKFRAMEHOLDINGTHEREFERENCEGETSPOPPEDOFFTHE3TACKATTHEEND 4Q dZ` NLY¿_ RP_ _Z T_
OFTHEMETHODv
dZ` NLY¿_ L^V T_ _Z OZ
)FTHATWASTHEONLYLIVEREFERENCETOTHEOBJECT THEOBJECTISNOW LYd_STYR LYO T_¿^ U`^_ L
ABANDONEDONTHE(EAP4HEREFERENCEVARIABLED ISINTEGRATEDWITH MTR QL_ bL^_P ZQ MT_^
THE3TACKFRAME SOTHEABANDONEDOBJECTISNOW OFlCIALLY TOAST4HE
TRICKISTOKNOWTHEPOINTATWHICHANOBJECTBECOMESELIGIBLEFORGARBAGE -`_ TQ LY ZMUPN_ T^
COLLECTION `Y]PLNSLMWP _SP
/NCEANOBJECTISELIGIBLEFORGARBAGECOLLECTION'# YOUDONTHAVE 2L]MLRP .ZWWPN_Z] bTWW
TOWORRYABOUTRECLAIMINGTHEMEMORYTHATOBJECTWASUSING)FYOUR È R`]P _SL_ Z`_ >ZZYP]
PROGRAMGETSLOWONMEMORY '#WILLDESTROYSOMEORALLOFTHEELIGIBLE Z] WL_P] _SL_ ZMUPN_¿^
OBJECTS TOKEEPYOUFROMRUNNINGOUTOF2!-9OUCANSTILLRUNOUTOF
MEMORY BUTNOTBEFOREALLELIGIBLEOBJECTSHAVEBEENHAULEDOFFTOTHE
RZTY¿ OZbY
DUMP9OURJOBISTOMAKESURETHATYOUABANDONOBJECTSIE MAKE
THEMELIGIBLEFOR'# WHENYOUREDONEWITHTHEM SOTHATTHEGARBAGE
COLLECTORHASSOMETHINGTORECLAIM)FYOUHANGONTOOBJECTS '#CANT
HELPYOUANDYOURUNTHERISKOFYOURPROGRAMDYINGAPAINFUL
OUT OF MEMORYDEATH

7KUHHZD\VWRJHWULGRIDQREMHFW·VUHIHUHQFH
$QREMHFWEHFRPHV
HOLJLEOHIRU*&ZKHQ  7KHUHIHUHQFHJRHVRXWRIVFRSHSHUPDQHQWO\
·GLHVDW
LWVODVWOLYHUHIHUHQFH YRLGJR ^ UHIHUHQFH¶W]KRG
GLVDSSHDUV
/LIH] QHZ/LIH 
` HQGRIPH
HG
WLVDEDQGR·QWR
 7KHUHIHUHQFHLVDVVLJQHGDQRWKHUREMHFW
LU VW R E MH F
/LIH] QHZ/LIH  WKHI ¶UHSURJUDPPHG
] QHZ/LIH  ZKHQ]LV FW
DQHZREMH
 7KHUHIHUHQFHLVH[SOLFLWO\VHWWRQXOO GRQHG
KH I LU VW R E MHFWLVDEDQHG·
/LIH] QHZ/LIH  W HSURJUDPP
] QXOO ZKHQ]LV¶G

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

2EMHFWNLOOHU
5HIHUHQFHJRHV
RXWRIVFRSH
SHUPDQHQWO\

SXEOLFFODVV6WDFN5HI^
SXEOLFYRLGIRRI ^ ,GRQ·WOLNHZKHUH
EDUI  WKLVLVKHDGHG
`


SXEOLFYRLGEDUI ^
'XFNG QHZ'XFN 
`
`

 IRRI LVSXVKHGRQWRWKH
6WDFNQRYDULDEOHVDUH IRRI
GHFODUHG

WKH
 Q H Z  ' X FNJRHVRQ UI 
7KH VED
+HDS DVORQJD
+HDSDQG WKH¶G·UHIHUHQFH

 EDUI LVSXVKHGRQWRWKH LVUXQQLQJ LQVFRSHVRWKH
 D Q G
\ LVDOLYH QVLGHUHGDOLYH
6WDFNZKHUHLWGHFODUHV
EDUI 'X
'XFNLV F R
W

DUHIHUHQFHYDULDEOHDQG FNREMHF
FUHDWHVDQHZREMHFWDV
VLJQHGWRWKDWUHIHUHQFH IRRI
7KHREMHFWLVFUHDWHGRQ
WKH+HDSDQGWKHUHIHU
HQFHLVDOLYHDQGLQVFRSH

8KRK7KH¶G·YDULDEOH
+HDS ZHQWDZD\ZKHQWKHEDUI 
6WDFNIUDPHZDVEORZQ
 EDUI FRPSOHWHVDQGSRSV \
RIIWKHVWDFNVRWKH'XFN
RIIWKH6WDFN,WVIUDPH
'X LVDEDQGRQHG*DUEDJH
W

GLVLQWHJUDWHVVR¶G·LVQRZ FNREMHF
GHDGDQGJRQH([HFXWLRQ
UHWXUQVWRIRRI EXWIRRI 
IRRI FROOHFWRUEDLW
FDQ·WXVH¶G·

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHF\FOH

2EMHFWNLOOHU
$VVLJQWKHUHIHUHQFH
WRDQRWKHUREMHFW

SXEOLFFODVV5H5HI^ 'XGHDOO\RX
 KDGWRGRZDVUHVHW
'XFNG QHZ'XFN  WKHUHIHUHQFH*XHVV
SXEOLFYRLGJR ^ WKH\GLGQ·WKDYHPHPRU\
G QHZ'XFN  PDQDJHPHQWEDFNWKHQ
`

Licensed by
`

'X
W

FNREMHF

5H
\

5 HI 
REMH
FW 
Eduard Simons +HDS

104038
HQFHG
7KHQHZ'XFNJRHVRQWKH+HDSUHIHU OHWKH
E\¶G·6LQFH¶G·LVDQLQVWDQFHYDULDE MHFW
'XFNZLOOOLYHDVORQJDVWKH5H5HIRE
WKDWLQVWDQWLDWHGLWLVDOLYH8QOHVV

DOOVWKH
:KHQVRPHRQHFKLV'XFNLV
JR PHWKRGWRQO\UHIHUHQFH
DEDQGRQHG+LV JUDPPHGIRUD
 KDVEHHQUHSUR N
'X
GLIIHUHQW'XF
W

FNREMHF

\
5H
5 HI  FW  +HDS
REMH 'X
W

FNREMHF

LQJWKH
¶G·LVDVVLJQHGDQHZ'XFNREMHFWOHDYG7KDW
RULJLQDO ILUVW 'XFNREMHFWDEDQG RQH
ILUVW'XFNLVQRZDVJRRGDVGHDG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

2EMHFWNLOOHU
([SOLFLWO\VHWWKH
UHIHUHQFHWRQXOO


SXEOLFFODVV5H5HI^
 'X

W
'XFNG QHZ'XFN  FNREMHF

SXEOLFYRLGJR ^
\
G QXOO 5H
5 HI  FW  +HDS
` REMH
`
HQFHG
7KHQHZ'XFNJRHVRQWKH+HDSUHIHU
OHWKH
7KHPHDQLQJRIQXOO E\¶G·6LQFH¶G·LVDQLQVWDQFHYDULDE
5H 5HI RE MHFW
'XFNZLOOOLYHDVORQJDVWKH
7HENYOUSETAREFERENCETOQXOO YOURE
WKDWLQVWDQWLDWHGLWLVDOLYH8Q OHVV 
DEPROGRAMMINGTHEREMOTECONTROL
)NOTHERWORDS YOUVEGOTAREMOTE
CONTROL BUTNO46ATTHEOTHEREND!NULL

EDQGRQHG
REFERENCEHASBITSREPRESENTING@NULLWE
DONTKNOWORCAREWHATTHOSEBITSARE AS 7KLV'XFNLVD FHKDVEHHQ
HQ
LONGASTHE*6-KNOWS  +LVRQO\UHIHU
VHWWRQXOO
)FYOUHAVEANUNPROGRAMMEDREMOTE 
CONTROL INTHEREALWORLD THEBUTTONSDONT
'X
W

DOANYTHINGWHENYOUPRESSTHEM"UT FNREMHF
IN*AVA YOUCANTPRESSTHEBUTTONSIE
USETHEDOTOPERATOR ONANULLREFERENCE
\
BECAUSETHE*6-KNOWSTHISISARUNTIME 5H
5 HI  FW  +HDS
ISSUE NOTACOMPILERERROR THATYOURE REMH
EXPECTINGABARKBUTTHERESNO$OGTHERE JDUHPRWH
TODOIT ¶G·LVVHWWRQXOOZKLFKLVMXVWOLNHKDYLQ J<RX·UHQRW
WKLQ
FRQWUROWKDWLVQ·WSURJUDPPHGWRDQ\
DWR UR Q¶G·XQWLOLW·V
)FYOUUSETHEDOTOPERATORON HYHQDOORZHGWRXVHWKHGRWRSHU
ANULLREFERENCE YOULLGETA UHSURJUDPPHG DVVLJQHGDQREMHFW 
.ULL0OINTER%XCEPTIONATRUNTIME9OULL
LEARNALLABOUT%XCEPTIONSINTHE2ISKY
"EHAVIORCHAPTER

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHF\FOH

<WVQOP\¼[<ITS")VQV[\IVKM^IZQIJTMIVL
ITWKIT^IZQIJTMLQ[K][[TQNMIVLLMI\P
_Q\PZMUIZSIJTMKQ^QTQ\a

1V[\IVKM>IZQIJTM 4WKIT>IZQIJTM
)DLIKETOGOlRST BECAUSE)TENDTOBEMORE
IMPORTANTTOAPROGRAMTHANALOCALVARIABLE
)MTHERETOSUPPORTANOBJECT USUALLY
THROUGHOUTTHEOBJECTSENTIRELIFE!FTERALL
WHATSANOBJECTWITHOUTSTATE!NDWHATIS )APPRECIATEYOURPOINTOFVIEW AND)CERTAINLY
STATE6ALUESKEPTININSTANCEVARIABLES APPRECIATETHEVALUEOFOBJECTSTATEANDALL
BUT)DONTWANTFOLKSTOBEMISLED,OCAL
VARIABLESAREREALLYIMPORTANT4OUSEYOUR
PHRASE h!FTERALL WHATSANOBJECTWITHOUT
BEHAVIORv!NDWHATISBEHAVIOR!LGORITHMS
INMETHODS!NDYOUCANBETYOURBITSTHERELL
BESOMELOCALVARIABLESINTHERETOMAKETHOSE
.O DONTGETMEWRONG )DOUNDERSTANDYOUR ALGORITHMSWORK
ROLEINAMETHOD ITSJUSTTHATYOURLIFEISSO
SHORT3OTEMPORARY4HATSWHYTHEYCALLYOU
GUYShTEMPORARYVARIABLESv 7ITHINTHELOCAL VARIABLECOMMUNITY THE
PHRASEhTEMPORARYVARIABLEvISCONSIDERED
DEROGATORY7EPREFERhLOCALv hSTACKv hAUTO
-YAPOLOGIES)UNDERSTANDCOMPLETELY MATICv ORv3COPE CHALLENGEDv
!NYWAY ITSTRUETHATWEDONTHAVEALONG
LIFE ANDITSNOTAPARTICULARLYGOODLIFEEITHER
&IRST WERESHOVEDINTOA3TACKFRAMEWITH
ALLTHEOTHERLOCALVARIABLES!NDTHEN IFTHE
METHODWEREPARTOFCALLSANOTHERMETHOD
ANOTHERFRAMEISPUSHEDONTOPOFUS!NDIF
THATMETHODCALLSANOTHERMETHODANDSOON
3OMETIMESWEHAVETOWAITFOREVERFORALLTHE
OTHERMETHODSONTOPOFTHE3TACKTOCOM
)NEVERREALLYTHOUGHTABOUTITLIKETHAT7HAT PLETESOTHATOURMETHODCANRUNAGAIN
AREYOUDOINGWHILETHEOTHERMETHODSARE
RUNNINGANDYOUREWAITINGFORYOURFRAMETO
.OTHING.OTHINGATALL)TSLIKEBEINGIN
BETHETOPOFTHE3TACKAGAIN
STASISˆTHATTHINGTHEYDOTOPEOPLEINSCIENCE
lCTIONMOVIESWHENTHEYHAVETOTRAVELLONG
DISTANCES3USPENDEDANIMATION REALLY7E
JUSTSITTHEREONHOLD!SLONGASOURFRAMEIS
STILLTHERE WERESAFEANDTHEVALUEWEHOLD
ISSECURE BUTITSAMIXEDBLESSINGWHENOUR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

1V[\IVKM>IZQIJTM 4WKIT>IZQIJTM
FRAMEGETSTORUNAGAIN/NTHEONEHAND WE
GETTOBEACTIVEAGAIN/NTHEOTHERHAND THE
CLOCKSTARTSTICKINGAGAINONOURSHORTLIVES
4HEMORETIMEOURMETHODSPENDSRUNNING
THECLOSERWEGETTOTHEENDOFTHEMETHOD
7ESAWANEDUCATIONALVIDEOABOUTITONCE 7EALLKNOWWHATHAPPENSTHEN
,OOKSLIKEAPRETTYBRUTALENDING)MEAN
WHENTHATMETHODHITSITSENDINGCURLYBRACE
THEFRAMEISLITERALLYBLOWNOFFTHE3TACK.OW 4ELLMEABOUTIT)NCOMPUTERSCIENCETHEYUSE
THATSGOTTAHURT THETERMPOPPEDASINhTHEFRAMEWASPOPPED
OFFTHE3TACKv4HATMAKESITSOUNDFUN OR
MAYBELIKEANEXTREMESPORT"UT WELL YOU
SAWTHEFOOTAGE3OWHYDONTWETALKABOUT
YOU)KNOWWHATMYLITTLE3TACKFRAMELOOKS
LIKE BUTWHEREDOYOULIVE
)LIVEONTHE(EAP WITHTHEOBJECTS7ELL NOT
WITHTHEOBJECTS ACTUALLYINANOBJECT4HE
OBJECTWHOSESTATE)STORE)HAVETOADMITLIFE
CANBEPRETTYLUXURIOUSONTHE(EAP!LOTOF
USFEELGUILTY ESPECIALLYAROUNDTHEHOLIDAYS "UTYOUDONTALWAYSLIVEASLONGASTHEOBJECT
WHODECLAREDYOU RIGHT3AYTHERESA$OG
OBJECTWITHA#OLLARINSTANCEVARIABLE)MAGINE
YOUREANINSTANCEVARIABLEOFTHE#OLLAROBJECT
MAYBEAREFERENCETOA"UCKLEORSOMETHING
SITTINGTHEREALLHAPPYINSIDETHE#OLLAROBJECT
WHOSALLHAPPYINSIDETHE$OGOBJECT"UT
WHATHAPPENSIFTHE$OGWANTSANEW#OLLAR
ORNULLSOUTITS#OLLARINSTANCEVARIABLE4HAT
MAKESTHE#OLLAROBJECTELIGIBLEFOR'#3O
IFYOUREANINSTANCEVARIABLEINSIDETHE#OLLAR
/+ HYPOTHETICALLY YES IF)MANINSTANCE ANDTHEWHOLE#OLLARISABANDONED WHAT
VARIABLEOFTHE#OLLARANDTHE#OLLARGETS HAPPENSTOYOU
'#D THENTHE#OLLARSINSTANCEVARIABLES
WOULDINDEEDBETOSSEDOUTLIKESOMANYPIZZA
BOXES"UT)WASTOLDTHATTHISALMOSTNEVER
HAPPENS
!NDYOUBELIEVEDIT4HATSWHATTHEYSAYTO
KEEPUSMOTIVATEDANDPRODUCTIVE"UTARENT
YOUFORGETTINGSOMETHINGELSE7HATIFYOURE
ANINSTANCEVARIABLEINSIDEANOBJECT ANDTHAT
OBJECTISREFERENCEDONLYBYALOCALVARIABLE)F
)MTHEONLYREFERENCETOTHEOBJECTYOUREIN
WHEN)GO YOURECOMINGWITHME,IKEITOR
NOT OURFATESMAYBECONNECTED3O)SAYWE
FORGETABOUTALLTHISANDGOGETDRUNKWHILE
4HEYLETUSDRINK WESTILLCAN#ARPE2!-ANDALLTHAT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH%HWKH*DUEDJH&ROOHFWRU

"%THE'ARBAGE#OLLECTOR
1dQ^OU_Q :KLFKRIWKHOLQHVRIFRGHRQWKHULJKWLIDGGHG
WRWKHFODVVRQWKHOHIWDWSRLQW$ZRXOGFDXVH
H[DFWO\RQHDGGLWLRQDOREMHFWWREHHOLJLEOHIRUWKH
*DUEDJH&ROOHFWRU" $VVXPHWKDWSRLQW$ FDOO
PRUHPHWKRGV ZLOOH[HFXWHIRUDORQJWLPHJLYLQJWKH
*DUEDJH&ROOHFWRUWLPHWRGRLWVVWXII

SXEOLFFODVV*&^
SXEOLFVWDWLF*&GR6WXII ^
*&QHZ*& QHZ*&   FRS\*& QXOO
GR6WXII QHZ*& 
UHWXUQQHZ*&  JF QXOO
`

 QHZ*& JF
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
*&JF  JF QXOO
*&JF QHZ*& 
*&JF QHZ*&   QHZ*& QXOO
*&JF JF
JF GR6WXII   JF QXOO

)
 JF JF
FDOOPRUHPHWKRGV
`  JF JF

SXEOLFVWDWLFYRLGGR6WXII *&FRS\*& ^  JF QXOO


*&ORFDO*&)LOH(GLW:LQGRZ+HOS6OHHS
FRS\*&
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

)NTHISCODEEXAMPLE SEVERALNEWOBJECTSARECREATED

1dQ^OU_Q 3RSXODU 9OURCHALLENGEISTOFINDTHEOBJECTTHATIS@MOSTPOPULAR


IETHEONETHATHASTHEMOSTREFERENCEVARIABLESREFERRING
TOIT4HENLISTHOWMANYTOTALREFERENCESTHEREAREFOR

FODVV%HHV^
2EMHFWV THATOBJECT ANDWHATTHEYARE7ELLSTARTBYPOINTINGOUT
ONEOFTHENEWOBJECTS ANDITSREFERENCEVARIABLE
'OOD,UCK
+RQH\>@EHH+$
`

FODVV5DFFRRQ^
.LWN
+RQH\UK
`

FODVV.LW^
+RQH\NK
`

FODVV%HDU^
+RQH\KXQQ\
`

SXEOLFFODVV+RQH\^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
+RQH\KRQH\3RW QHZ+RQH\ 
+RQH\>@KD ^KRQH\3RWKRQH\3RWKRQH\3RWKRQH\3RW`
%HHVE QHZ%HHV 
EEHH+$ KD
%HDU>@ED QHZ%HDU>@
IRU LQW[ [[ ^
ED>[@ QHZ%HDU 
ED>[@KXQQ\ KRQH\3RW
`
.LWN QHZ.LW 
+HUH·VDQHZ
NNK KRQH\3RW
5DFFRRQREMHFW
5DFFRRQU QHZ5DFFRRQ 

+HUH·VLWVUHIHUHQFH
UUK KRQH\3RW YDULDEOH¶U·
UN N
N QXOO
`HQGRIPDLQ
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH)LYH0LQXWH0\VWHU\

 ´:H·YHUXQWKHVLPXODWLRQIRXUWLPHVDQGWKHPDLQPRGXOH·VWHPSHUDWXUHFRQVLVWHQWO\
GULIWVRXWRIQRPLQDOWRZDUGVFROGµ6DUDKVDLGH[DVSHUDWHG´:HLQVWDOOHGWKHQHZWHPSERWVODVW
ZHHN7KHUHDGLQJVRQWKHUDGLDWRUERWVGHVLJQHGWRFRROWKHOLYLQJTXDUWHUVVHHPWREHZLWKLQ
VSHFVRZH·YHIRFXVHGRXUDQDO\VLVRQWKHKHDWUHWHQWLRQERWVWKHERWVWKDWKHOSWRZDUPWKHTXDU
WHUVµ7RPVLJKHGDWÀUVWLWKDGVHHPHGWKDWQDQRWHFKQRORJ\ZDVJRLQJWRUHDOO\SXWWKHPDKHDG
RIVFKHGXOH1RZZLWKRQO\ÀYHZHHNVOHIWXQWLOODXQFKVRPHRIWKHRUELWHU·VNH\OLIHVXSSRUW
V\VWHPVZHUHVWLOOQRWSDVVLQJWKHVLPXODWLRQJDXQWOHW
)LYH0LQXWH  ´:KDWUDWLRVDUH\RXVLPXODWLQJ"µ7RPDVNHG
0\VWHU\  ´:HOOLI,VHHZKHUH\RX·UHJRLQJZHDOUHDG\WKRXJKWRIWKDWµ6DUDKUHSOLHG´0LV
VLRQFRQWUROZLOOQRWVLJQRIIRQFULWLFDOV\VWHPVLIZHUXQWKHPRXWRIVSHF:HDUH
UHTXLUHGWRUXQWKHYUDGLDWRUERW·V6LP8QLWVLQDUDWLRZLWKWKHYUDGLDWRU·V
6LP8QLWVµ6DUDKFRQWLQXHG´2YHUDOOWKHUDWLRRIUHWHQWLRQERWVWRUDGLDWRUERWVLV
VXSSRVHGWRUXQµ
 ´+RZ·VSRZHUFRQVXPSWLRQ6DUDK"µ7RPDVNHG6DUDKSDXVHG´:HOOWKDW·V
DQRWKHUWKLQJSRZHUFRQVXPSWLRQLVUXQQLQJKLJKHUWKDQDQWLFLSDWHG:H·YHJRWDWHDP
WUDFNLQJWKDWGRZQWRREXWEHFDXVHWKHQDQRVDUHZLUHOHVVLW·VEHHQKDUGWRLVRODWHWKHSRZHU
FRQVXPSWLRQRIWKHUDGLDWRUVIURPWKHUHWHQWLRQERWVµ´2YHUDOOSRZHUFRQVXPSWLRQUDWLRVµ6DUDK
FRQWLQXHG´DUHGHVLJQHGWRUXQZLWKWKHUDGLDWRUVSXOOLQJPRUHSRZHUIURPWKHZLUHOHVVJULGµ
 ´2.6DUDKµ7RPVDLG´/HW·VWDNHDORRNDWVRPHRIWKHVLPXODWLRQLQLWLDWLRQFRGH
:H·YHJRWWRÀQGWKLVSUREOHPDQGÀQGLWTXLFNµ

LPSRUWMDYDXWLO 
FODVV95DGLDWRU^
95DGLDWRU $UUD\/LVWOLVW ^
IRU LQW[ [[ ^
OLVWDGG QHZ6LP8QLW ´95DGLDWRUµ 
`
`
`

FODVV95DGLDWRUH[WHQGV95DGLDWRU^
95DGLDWRU $UUD\/LVWOJOLVW ^
VXSHU OJOLVW 
IRU LQWJ JJ ^
OJOLVWDGG QHZ6LP8QLW ´95DGLDWRUµ 
`
`
`

FODVV5HWHQWLRQ%RW^
5HWHQWLRQ%RW $UUD\/LVWUOLVW ^
UOLVWDGG QHZ6LP8QLW ´5HWHQWLRQµ 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

SXEOLFFODVV7HVW/LIH6XSSRUW6LP^
)LYH0LQXWH SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$UUD\/LVWD/LVW QHZ$UUD\/LVW 
0\VWHU\ 95DGLDWRUY QHZ95DGLDWRU D/LVW 
95DGLDWRUY QHZ95DGLDWRU D/LVW 
FRQWLQXHG IRU LQW] ]] ^
5HWHQWLRQ%RWUHW QHZ5HWHQWLRQ%RW D/LVW 
`
`
`

FODVV6LP8QLW^
6WULQJERW7\SH
6LP8QLW 6WULQJW\SH ^
ERW7\SH W\SH
`
LQWSRZHU8VH ^
LI ´5HWHQWLRQµHTXDOV ERW7\SH ^
UHWXUQ
`HOVH^
UHWXUQ
`
`
`

 7RPJDYHWKHFRGHDTXLFNORRNDQGDVPDOOVPLOHFUHHSHGDFURVVKLVOLSV,WKLQN,·YH
IRXQGWKHSUREOHP6DUDKDQG,EHW,NQRZE\ZKDWSHUFHQWDJH\RXUSRZHUXVDJHUHDGLQJVDUHRII
WRR

 :KDWGLG7RPVXVSHFW"+RZFRXOGKHJXHVVWKHSRZHUUHDGLQJVHUURUVDQGZKDWIHZ
OLQHVRIFRGHFRXOG\RXDGGWRKHOSGHEXJWKLVSURJUDP"

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWOLIHF\FOH

 FRS\*& QXOO 1RWKLVOLQHDWWHPSWVWRDFFHVVDYDULDEOH


WKDWLVRXWRIVFRSH
%XERCISE3OLUTIONS  JF QXOO 2.JFZDVWKHRQO\UHIHUHQFHYDULDEOH
UHIHUULQJWRWKDWREMHFW
 QHZ*& JF 1RDQRWKHURXWRIVFRSHYDULDEOH

 JF QXOO 2.JFKDGWKHRQO\UHIHUHQFHEHFDXVH


'# QHZ*&LVRXWRIVFRSH
 QHZ*& QXOO 1RQHZ*&LVRXWRIVFRSH

 JF QXOO 1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW

 JF JF 1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW

 JF JF 2.5HDVVLJQLQJWKHRQO\UHIHUHQFHWR


WKDWREMHFW
 JF QXOO 1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW

)TPROBABLYWASNTTOOHARDTOlGUREOUTTHATTHE(ONEYOBJECTlRSTREFERREDTOBYTHEHONEY0OTVARIABLEISBY
3RSXODU FARTHEMOST@POPULAROBJECTINTHISCLASS"UTMAYBEITWASALITTLETRICKIERTOSEETHATALLOFTHEVARIABLESTHAT
POINTFROMTHECODETOTHE(ONEYOBJECTREFERTOTHESAMEOBJECT4HEREAREATOTALOFACTIVEREFERENCESTO
2EMHFWV THISOBJECTRIGHTBEFORETHEMAIN METHODCOMPLETES4HEKKHVARIABLEISVALIDFORAWHILE BUTKGETSNULLED
ATTHEEND3INCERKSTILLREFERSTOTHE+ITOBJECT RKKHALTHOUGHNEVEREXPLICITYDECLARED REFERSTOTHEOBJECT

SXEOLFFODVV+RQH\^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
+RQH\KRQH\3RW QHZ+RQH\ 
+RQH\>@KD ^KRQH\3RWKRQH\3RW
KRQH\3RWKRQH\3RW`
%HHVE QHZ%HHV 
EEHH+$ KD
%HDU>@ED QHZ%HDU>@
IRU LQW[ [[ ^
+RQH\
ED>[@ QHZ%HDU 
2EMHFW ED>[@KXQQ\ KRQH\3RW
`
HQGVXSQXOO
.LWN QHZ.LW 
NNK KRQH\3RW
5DFFRRQU QHZ5DFFRRQ 

UUK KRQH\3RW
UN N
N QXOO
`HQGRIPDLQ
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQVWUXFWRUVDQGJF

)LYH0LQXWH0\VWHU\6ROXWLRQ
 7RPQRWLFHGWKDWWKHFRQVWUXFWRUIRUWKH95DGLDWRUFODVVWRRNDQ
$UUD\/LVW7KDWPHDQWWKDWHYHU\WLPHWKH95DGLDWRUFRQVWUXFWRUZDVFDOOHG
LWSDVVHGDQ$UUD\/LVWLQLWVVXSHU FDOOWRWKH95DGLDWRUFRQVWUXFWRU7KDW
PHDQWWKDWDQH[WUDÀYH95DGLDWRU6LP8QLWVZHUHFUHDWHG,I7RPZDVULJKW
WRWDOSRZHUXVHZRXOGKDYHEHHQQRWWKHWKDW6DUDK·VH[SHFWHGUDWLRV
SUHGLFWHG
 6LQFHDOOWKH%RWFODVVHVFUHDWH6LP8QLWVZULWLQJDFRQVWUXFWRUIRU
WKH6LP8QLWFODVVWKDWSULQWHGRXWDOLQHHYHU\WLPHD6LP8QLWZDVFUHDWHG
ZRXOGKDYHTXLFNO\KLJKOLJKWHGWKHSUREOHP

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Licensed by
Eduard Simons
104038

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

1XPEHUV0DWWHU

'RWKH0DWK"UTTHERESMORETOWORKINGWITHNUMBERSTHANJUSTDOINGPRIMITIVE
ARITHMETIC9OUMIGHTWANTTOGETTHEABSOLUTEVALUEOFANUMBER ORROUNDANUMBER ORFIND
THELARGEROFTWONUMBERS9OUMIGHTWANTYOURNUMBERSTOPRINTWITHEXACTLYTWODECIMAL
PLACES ORYOUMIGHTWANTTOPUTCOMMASINTOYOURLARGENUMBERSTOMAKETHEMEASIERTOREAD
!NDWHATABOUTWORKINGWITHDATES9OUMIGHTWANTTOPRINTDATESINAVARIETYOFWAYS OREVEN
MANIPULATEDATESTOSAYTHINGSLIKE hADDTHREEWEEKSTOTODAYSDATEv!NDWHATABOUTPARSING
A3TRINGINTOANUMBER/RTURNINGANUMBERINTOA3TRING9OUREINLUCK4HE*AVA!0)ISFULLOF
HANDYNUMBER TWEAKINGMETHODSREADYANDEASYTOUSE"UTMOSTOFTHEMARESTATIC SOWELL
STARTBYLEARNINGWHATITMEANSFORAVARIABLEORMETHODTOBESTATIC INCLUDINGCONSTANTSIN
*AVAˆSTATICFINALVARIABLES

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
0DWKPHWKRGV

5)<0UM\PWL["I[KTW[MI[aW]¼TT
M^MZOM\\WIOTWJITUM\PWL
%XCEPTTHERESNOGLOBALANYTHINGIN*AVA"UTTHINKABOUT
THISWHATIFYOUHAVEAMETHODWHOSEBEHAVIORDOESNT
DEPENDONANINSTANCEVARIABLEVALUE4AKETHEROUND
METHODINTHE-ATHCLASS FOREXAMPLE)TDOESTHESAME
THINGEVERYTIMEˆROUNDSAmOATINGPOINTNUMBERTHE 0HWKRGVLQWKH0DWKFODVV
ARGUMENTTOTHEMETHOD TOTHENEARESTINTEGER%VERY GRQ·WXVHDQ\LQVWDQFH
TIME)FYOUHAD INSTANCESOFCLASS-ATH ANDRAN
THEROUND METHOD YOUDGETANINTEGERVALUEOF YDULDEOHYDOXHV$QGEHFDXVH
%VERYTIME)NOTHERWORDS THEMETHODACTSONTHE
ARGUMENT BUTISNEVERAFFECTEDBYANINSTANCEVARIABLE
WKHPHWKRGVDUH¶VWDWLF·
STATE4HEONLYVALUETHATCHANGESTHEWAYTHEROUND \RXGRQ·WQHHGWRKDYHDQ
METHODRUNSISTHEARGUMENTPASSEDTOTHEMETHOD
LQVWDQFHRI0DWK$OO\RX
$OESNTITSEEMLIKEAWASTEOFPERFECTLYGOODHEAPSPACE
TOMAKEANINSTANCEOFCLASS-ATHSIMPLYTORUNTHE QHHGLVWKH0DWKFODVV
ROUND METHOD!NDWHATABOUTOTHER-ATHMETHODS
LIKEMIN WHICHTAKESTWONUMERICALPRIMITIVESAND
RETURNSTHESMALLEROFTHETWO/RMAX /RABS WHICH LQW[ 0DWKURXQG  
RETURNSTHEABSOLUTEVALUEOFANUMBER LQW\ 0DWKPLQ  
LQW] 0DWKDEV  
4HESEMETHODSNEVERUSEINSTANCEVARIABLEVALUES)NFACTTHE
-ATHCLASSDOESNTHAVEANYINSTANCEVARIABLES3OTHERES
NOTHINGTOBEGAINEDBYMAKINGANINSTANCEOFCLASS
-ATH3OGUESSWHAT9OUDONTHAVETO!SAMATTEROF 7KHVHPHWKRGVQHYHUX
FACT YOUCANT LQVWDQFHYDULDEOHVVRWVH
EHKDYLRUGRHVQ·WQHHG KHLU
NQRZDERXWDVSHF WR
LILFREMHFW
,I\RXWU\WRPDNHDQLQVWDQFHRI
FODVV0DWK
0DWKPDWK2EMHFW QHZ0DWK 

<RX·OOJHWWKLVHUURU
)LOH(GLW:LQGRZ+HOS,ZDV7ROG7KHUH:RXOG%H1R0DWK

MDYDF7HVW0DWK
7HVW0DWKMDYD0DWK KDVSULYDWH 7KLVHUURUVKRZVWKDW
DFFHVVLQMDYDODQJ0DWK FRQVWUXFWRULV HG WKH0DWK
PHDQV\RXFDQ1PD(9UN(5SULYDWH7KDW
0DWKPDWK2EMHFW QHZ0DWK 
0DWKFODVVWRPDNHD VD\¶QHZ·RQWKH
A QHZ0DWKREMHFW
HUURU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

<PMLQNNMZMVKMJM\ _MMVZMO]TIZ
VWV[\I\QKIVL[\I\QKUM\PWL[
*AVAISOBJECT ORIENTED BUTONCEINAWHILEYOUHAVEASPECIALCASE
TYPICALLYAUTILITYMETHODLIKETHE-ATHMETHODS WHERETHEREIS
NONEEDTOHAVEANINSTANCEOFTHECLASS4HEKEYWORDVWDWLFLETS
AMETHODRUNWITHOUTANYINSTANCEOFTHECLASS!STATICMETHODMEANS
hBEHAVIORNOTDEPENDENTONANINSTANCEVARIABLE SONOINSTANCEOBJECT
ISREQUIRED*USTTHECLASSv

UHJXODU QRQVWDWLF PHWKRG VWDWLFPHWKRG

SXEOLFFODVV6RQJ^ DOXHDIIHFWV
FHYDULDEOHWYKH
,Q VW DQ SOD\ 
WKHEHKDYLRURI
6WULQJWLWOH
PHWKRG
SXEOLF6RQJ 6WULQJW ^
SXEOLFVWDWLFLQWPLQ LQWDLQWE ^
WLWOH W
UHWXUQVWKHOHVVHURIDDQGE
`
`
SXEOLFYRLGSOD\ ^
6RXQG3OD\HUSOD\HU QHZ6RXQG3OD\HU 
0DWK
EOHV
1RLQVWDQFHYDUHKLDDYLRU
SOD\HUSOD\6RXQG WLWOH 
PLQ
OH· 7KHPHWKRGE ZLWK
XHRIWKH¶WJLWWKDW
`
PD[
F XU UH QW Y DO
7KH
LQVWDQFHYDU\R LDEOHLVWKHV RQ DEV
GRHVQ·WFKDQJH HVWDWH
FDOOSOD\ LQVWDQFHYDULDEO
6RQJ 
WLWOH SOD\VZKHQ X 0\:D\
6H[3LVWROV
MHFW

SOD\
3ROLWLN
RE
&ROGSOD\ 6RQJ
MHFW

0DWKPLQ  
 LQ V W D QFHV 6RQJ
RE
WZR VV6RQJ HUDWKHU
8VHWKH&ODVVQDP DULDEOH
RIFOD WKDQDUHIHUHQFH
Y
k+
k* QDPH
6RQJ
6RQJ
VSOD\ 
VSOD\  122%-(
&DOOLQ &76
J 
UHIHU SOD\ R $EVROXWHO\

´3ROLW HQFHZLOO QWKLV &DOOLQJSOD\ RQWKLV DQ\ZKHUHLQ 122%-(&76
LNµW F WKLVSLFWX
RSOD DXVH UHIHUHQFHZLOOFDXVH UH 
\ ´0\:D\µWRSOD\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFPHWKRGV

&DOODVWDWLFPHWKRGXVLQJD
FODVVQDPH
0DWK 0DWKPLQ  
PLQ
PD[
DEV


&DOODQRQVWDWLFPHWKRGXVLQJD
UHIHUHQFHYDULDEOHQDPH
6RQJW QHZ6RQJ 
WSOD\ 
l*

?PI\Q\UMIV[\WPI^MI
KTI[[_Q\P[\I\QKUM\PWL[
/FTENALTHOUGHNOTALWAYS ACLASSWITHSTATIC 4HISDOESNOTMEANTHATACLASSWITHONEORMORE
METHODSISNOTMEANTTOBEINSTANTIATED)N#HAPTER STATICMETHODSSHOULDNEVERBEINSTANTIATED)NFACT
WETALKEDABOUTABSTRACTCLASSES ANDHOWMARKING EVERYCLASSYOUPUTAMAIN METHODINISACLASSWITH
ACLASSWITHTHEDEVWUDFWMODIlERMAKESIT ASTATICMETHODINIT
IMPOSSIBLEFORANYONETOSAY@NEWONTHATCLASSTYPE 4YPICALLY YOUMAKEAMAIN METHODSOTHATYOU
)NOTHERWORDS ITSIMPOSSIBLETOINSTANTIATEANABSTRACT CANLAUNCHORTESTANOTHERCLASS NEARLYALWAYSBY
CLASS INSTANTIATINGACLASSINMAIN ANDTHENINVOKINGA
"UTYOUCANRESTRICTOTHERCODEFROMINSTANTIATING METHODONTHATNEWINSTANCE
ANON ABSTRACTCLASSBYMARKINGTHECONSTRUCTOR 3OYOUREFREETOCOMBINESTATICANDNON STATIC
SULYDWH2EMEMBER AMETHODMARKEDPRIVATEMEANS METHODSINACLASS ALTHOUGHEVENASINGLENON STATIC
THATONLYCODEFROMWITHINTHECLASSCANINVOKE METHODMEANSTHEREMUSTBESOMEWAYTOMAKEAN
THEMETHOD!CONSTRUCTORMARKEDPRIVATEMEANS INSTANCEOFTHECLASS4HEONLYWAYSTOGETANEW
ESSENTIALLYTHESAMETHINGˆONLYCODEFROMWITHIN OBJECTARETHROUGH@NEWORDESERIALIZATIONOR
THECLASSCANINVOKETHECONSTRUCTOR.OBODYCAN SOMETHINGCALLEDTHE*AVA2EmECTION!0)THATWE
SAY@NEWFROMOUTSIDETHECLASS4HATSHOWITWORKS DONTGOINTO .OOTHERWAY"UTEXACTLYWHOSAYSNEW
WITHTHE-ATHCLASS FOREXAMPLE4HECONSTRUCTOR CANBEANINTERESTINGQUESTION ANDONEWELLLOOKAT
ISPRIVATE YOUCANNOTMAKEANEWINSTANCEOF-ATH ALITTLELATERINTHISCHAPTER
4HECOMPILERKNOWSTHATYOURCODEDOESNTHAVE
ACCESSTOTHATPRIVATECONSTRUCTOR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

;\I\QKUM\PWL[KIV¼\][MVWV[\I\QK
QV[\IVKM^IZQIJTM[
3TATICMETHODSRUNWITHOUTKNOWINGABOUTANYPARTICULAR
INSTANCEOFTHESTATICMETHODSCLASS!NDASYOUSAWON
,I\RXWU\WRXVHDQ
THEPREVIOUSPAGES THEREMIGHTNOTEVENBEANYINSTANCES LQVWDQFHYDULDEOHIURP
OFTHATCLASS3INCEASTATICMETHODISCALLEDUSINGTHECLASS
-ATHRANDOM ASOPPOSEDTOANINSTANCEREFERENCETPLAY LQVLGHDVWDWLFPHWKRG
ASTATICMETHODCANTREFERTOANYINSTANCEVARIABLESOFTHE
CLASS4HESTATICMETHODDOESNTKNOWWHICHINSTANCESVARIABLE
WKHFRPSLOHUWKLQNV
VALUETOUSE ´,GRQ·WNQRZZKLFK
REMHFW·VLQVWDQFHYDULDEOH
,I\RXWU\WRFRPSLOHWKLVFRGH \RX·UHWDONLQJDERXWµ
XFN" ,I\RXKDYHWHQ'XFN
SXEOLFFODVV'XFN^
:KLFK'VL]H"
SULYDWHLQWVL]H
:KRVH REMHFWVRQWKHKHDSD
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
VWDWLFPHWKRGGRHVQ·W
6\VWHPRXWSULQWOQ ³6L]HRIGXFNLV³VL]H 
`
NQRZDERXWDQ\RIWKHP
,IWKHUH·VD'
WKHKHDSVRPHZXFKHNUHRQ
SXEOLFYRLGVHW6L]H LQWV ^
GRQ·WNQRZDERXWLWZH
VL]H V 
`
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H
` ,·PVXUHWKH\·UH
1R,·PSUHWW\VXUH
` WDONLQJDERXW0<
WKH\·UHWDONLQJDERXW
 VL]HYDULDEOH
0<VL]HYDULDEOH
<RX·OOJHWWKLVHUURU
)LOH(GLW:LQGRZ+HOS4XDFN

MDYDF'XFNMDYD
'XFNMDYDQRQVWDWLFYDULDEOH
VL]HFDQQRWEHUHIHUHQFHGIURPD
VWDWLFFRQWH[W
6\VWHPRXWSULQWOQ ³6L]H
RIGXFNLV³VL]H 
A

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFPHWKRGV

WKHUH DUH QR
;\I\QKUM\PWL[KIV¼\][MVWV[\I\QK 'XPE 4XHVWLRQV
UM\PWL[MQ\PMZ Q: 7HATIFYOUTRYTOCALLANON STATIC
METHODFROMASTATICMETHOD BUTTHE
7HATDONON STATICMETHODSDO4HEYUSUALLYUSEINSTANCE NON STATICMETHODDOESNTUSEANYIN
VARIABLESTATETOAFFECTTHEBEHAVIOROFTHEMETHOD!GET.AME STANCEVARIABLES7ILLTHECOMPILERALLOW
METHODRETURNSTHEVALUEOFTHENAMEVARIABLE7HOSENAME THAT
4HEOBJECTUSEDTOINVOKETHEGET.AME METHOD

7KLVZRQ·WFRPSLOH
A: .O4HECOMPILERKNOWSTHAT
&DOOLQJJHW6 WHETHERYOUDOORDONOTUSEINSTANCE
WKHLQHYLWDEOHL]³H JH MXVWSRVWSRQHV VARIABLESINANON STATICMETHOD YOUCAN
SXEOLFFODVV'XFN^
WKHVL]HLQVWDQFHYW6L]H XVHV !NDTHINKABOUTTHEIMPLICATIONSIFYOU
DULDEOH WEREALLOWEDTOCOMPILEASCENARIOLIKE
SULYDWHLQWVL]H THAT THENWHATHAPPENSIFINTHEFUTURE
YOUWANTTOCHANGETHEIMPLEMENTATION
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ OFTHATNON STATICMETHODSOTHATONEDAY
6\VWHPRXWSULQWOQ ³6L]HLV³JHW6L]H  ITDOESUSEANINSTANCEVARIABLE/RWORSE
` WHATHAPPENSIFASUBCLASSOVERRIDESTHE
METHODANDUSESANINSTANCEVARIABLEIN
SXEOLFYRLGVHW6L]H LQWV ^ THEOVERRIDINGVERSION
VL]H V
`
SXEOLFLQWJHW6L]H ^ Q: )COULDSWEAR)VESEENCODETHAT
DPHSUREOHP
%DFNWRWKHV
UHWXUQVL]H CALLSASTATICMETHODUSINGAREFERENCE
` VARIABLEINSTEADOFTHECLASSNAME
` ZKRVHVL]H"


)LOH(GLW:LQGRZ+HOS-DFNLQ
A: 9OUCANDOTHAT BUTASYOURMOTHER
ALWAYSTOLDYOU h*USTBECAUSEITSLEGAL
MDYDF'XFNMDYD DOESNTMEANITSGOODv!LTHOUGHITWORKS
'XFNMDYDQRQVWDWLFPHWKRG TOCALLASTATICMETHODUSINGANYINSTANCE
OFTHECLASS ITMAKESFORMISLEADINGLESS
JHW6L]H FDQQRWEHUHIHUHQFHG
READABLE CODE9OUCANSAY
IURPDVWDWLFFRQWH[W
'XFNG QHZ'XFN 
6\VWHPRXWSULQWOQ ³6L]H 6WULQJ>@V ^`
RIGXFNLV³JHW6L]H  GPDLQ V 
A
4HISCODEISLEGAL BUTTHECOMPILERJUST
RESOLVESITBACKTOTHEREALCLASSANYWAY
N
0D)RNUPH DWLWJHW6W'DLFWH7LPHVW,QDQVWFHDQ FH  h/+ DISOFTYPE$UCK ANDMAIN ISSTATIC
SO)LLCALLTHESTATICMAIN INCLASS$UCKv 
'DWH PH,Q 
DWJHW7L UFHQW,QVWDQFH )NOTHERWORDS USINGDTOINVOKEMAIN
'DWH)RUP SADW RED 3H
2
HUO SE
)R UP REJHW DOESNTIMPLYTHATMAIN WILLHAVEANY
1XPE
NTOBLO OMLATE
ANDKNOW SPECIALKNOWLEDGEOFTHEOBJECTTHATDIS
REFERENCING)TSJUSTANALTERNATEWAYTO
NTSEE
3TATICSCA TE INVOKEASTATICMETHOD BUTTHEMETHODIS
ARIABLESTA
INSTANCEV STILLSTATIC

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

;\I\QK^IZQIJTM"
W
V WD WLF GXFN&RXHQG21/<
^IT]MQ[\PM[IUMNWZ)44 
7KH OHLVLQLWLDOL] VW
YDULDE WKHFODVVLVILU LPHD
QV[\IVKM[WN\PMKTI[[ ZKHQ 127HDFKW H
SXEOLFFODVV'XFN^ ORDGHG VWDQFHLVPDG
)MAGINEYOUWANTEDTOCOUNTHOWMANY$UCK QHZLQ
INSTANCESAREBEINGCREATEDWHILEYOURPROGRAMIS SULYDWHLQWVL]H
RUNNING(OWWOULDYOUDOIT-AYBEANINSTANCE SULYDWHVWDWLFLQWGXFN&RXQW 

VARIABLETHATYOUINCREMENTINTHECONSTRUCTOR
SXEOLF'XFN ^ 1RZLWZ
FODVV'XFN^ GXFN&RXQW LQFUHPHQWLOLQOJNHHS
LQWGXFN&RXQW  ` WKH' HDFKWLPH
XFNFRQVWUXF
SXEOLF'XFN ^ EHFDXVHGXF WR
GXFN&RXQW WKLVZRXO OZ N&RXQWLVUVWUDXQV
DQGZRQ·WEH
` GXFN&RXQGWD D\VVH UHVHWWR WLF
` D WRHDFKWW
'XFNZDVP LPH SXEOLFYRLGVHW6L]H LQWV ^
DGH VL]H V
`
.O THATWOULDNTWORKBECAUSEDUCK#OUNTISAN SXEOLFLQWJHW6L]H ^
INSTANCEVARIABLE ANDSTARTSATFOREACH$UCK9OU UHWXUQVL]H
COULDTRYCALLINGAMETHODINSOMEOTHERCLASS BUT `
THATSKLUDGEY9OUNEEDACLASSTHATSGOTONLYASINGLE `
COPYOFTHEVARIABLE ANDALLINSTANCESSHARETHATONE
COPY
4HATSWHATASTATICVARIABLEGIVESYOUAVALUESHARED RS\
BYALLINSTANCESOFACLASS)NOTHERWORDS ONEVALUE
·W N H H S LWVRZQF
RHVQ
PERCLASS INSTEADOFONEVALUEPERINSTANCE REMHFWG
$'XFFNN&RXQW '
WV
XFNREMWHKFLQN
RIGX V W D W LF
WLV ILW<RXFDQ OLYHV 
GXFN&RXQ R W
%HFDXVHUHDVLQJOHFRS\DVDYDULDEOHWFKWD
 VK D E OH
DOO WDWLFYDULD RILQDQR E M H
RIDV /$66LQVWHDG
'XFN
LQD&
VL]H VL]H
GXFN&RXQW VWDWLFGXFN&RXQW VL]H
GXFN&RXQW
'X
FNREMHFW
JHW6L]H


'X
FNREMHFW


VHW6L]H

VL]H (DFK'XF
GXFN&RXQW VL]H
VL]HYDULDENOHREMHFWKDVLWVRZQ
GXFN&RXQW RQHFRS\ EXWWKHUH·VR
QO\
'X
FNREMHFW YDULDEOH³RWKIHWKHGXFN&RXQW 


'X RQHLQWKHFOD
FNREMHFW


VV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFYDULDEOHV

VWDWLFYDULDEOH NLGLQVWDQFHWZR
QH LFH&UHDP
NLGLQVWDQFHR
Static variables are shared.

All instances of the same


class share a single copy of
the static variables.

LQVWDQFHYDULDEOHVSHULQVWDQFH
VWDWLFYDULDEOHVSHUFODVV

DLQ EDUEHOO
EU%UDLQ%DUEHOO
%ARLIERINTHISCHAPTER WESAWTHATAPRIVATE
CONSTRUCTORMEANSTHATTHECLASSCANTBEINSTANTIATED
FROMCODERUNNINGOUTSIDETHECLASS)NOTHERWORDS
ONLYCODEFROMWITHINTHECLASSCANMAKEANEW
INSTANCEOFACLASSWITHAPRIVATECONSTRUCTOR4HERES
AKINDOFCHICKEN AND EGGPROBLEMHERE

7HATIFYOUWANTTOWRITEACLASSINSUCHAWAYTHAT
ONLY/.%INSTANCEOFITCANBECREATED ANDANYONE
WHOWANTSTOUSEANINSTANCEOFTHECLASSWILLALWAYS
USETHATONE SINGLEINSTANCE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

1VQ\QITQbQVOI[\I\QK^IZQIJTM
3TATICVARIABLESAREINITIALIZEDWHENACLASSISLOADED!CLASSIS
LOADEDBECAUSETHE*6-DECIDESITSTIMETOLOADIT4YPICALLY $OOVWDWLFYDULDEOHV
THE*6-LOADSACLASSBECAUSESOMEBODYSTRYINGTOMAKEA
NEWINSTANCEOFTHECLASS FORTHElRSTTIME ORUSEASTATIC
LQDFODVVDUH
METHODORVARIABLEOFTHECLASS!SAPROGRAMMER YOUALSO LQLWLDOL]HGEHIRUH
HAVETHEOPTIONOFTELLINGTHE*6-TOLOADACLASS BUTYOURE DQ\REMHFWRI
NOTLIKELYTONEEDTODOTHAT)NNEARLYALLCASES YOUREBETTER
WKDWFODVVFDQEH
OFFLETTINGTHE*6-DECIDEWHENTOLOADTHECLASS
FUHDWHG
!NDTHEREARETWOGUARANTEESABOUTSTATICINITIALIZATION
3TATICVARIABLESINACLASSAREINITIALIZEDBEFOREANYOBJECTOFTHAT
CLASSCANBECREATED
3TATICVARIABLESINACLASSAREINITIALIZEDBEFOREANYSTATICMETHOD
OFTHECLASSRUNS
FODVV3OD\HU^ KHQWKHFODVVLVORDGHG
7KHSOD\HU&RXQWLVLQLWLDOL]HGZE XWZHGRQ·WQHHG
:HH[SOLFLWO\LQLWLDOL]HGLWWRHIRULQ
VWDWLFLQWSOD\HU&RXQW 
WRVLQFHLVWKHGHID XOW YDOX WV6WDWLFYDUL
LQV WDQ FHYDULDEOHV
SULYDWH6WULQJQDPH
DEOHVJHWGHIDXOWYDOXHVMXVWOLNH
SXEOLF3OD\HU 6WULQJQ ^
QDPH Q
'HIDXOWYDOXHVI
SOD\HU&RXQW VWDWLFDQGLQVWDQFRUHGYDHFODUHGEXWXQLQLWLDOL]HG
`
ULDEOHVDUHWKHVDPH
SULPLWLYHLQWHJHUV ORQJ
` VKRUWHWF 
SULPLWLYHIORDWLQJSRLQW
V IORDWGRXEOH 
SXEOLFFODVV3OD\HU7HVW'ULYH^ ERROHDQIDOVH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ REMHFWUHIHUHQFHVQXOO
6\VWHPRXWSULQWOQ 3OD\HUSOD\HU&RXQW 
3OD\HURQH QHZ3OD\HU ³7LJHU:RRGV´ 
6\VWHPRXWSULQWOQ 3OD\HUSOD\HU&RXQW 

$FFHVVDVWDWLFYDULDEOHMXVWO LNHDVWDWLF
`
` PHWKRG³Z LWK WKH FOD VVQ DPH
)LOH(GLW:LQGRZ+HOS:KDW"
3TATICVARIABLESAREINITIALIZEDWHENTHECLASSISLOADED)FYOU
DONTEXPLICITLYINITIALIZEASTATICVARIABLEBYASSIGNINGITA MDYD3OD\HU7HVW'ULYH
VALUEATTHETIMEYOUDECLAREIT ITGETSADEFAULTVALUE SOINT  EHIRUHDQ\LQVWDQFHVDUHPDGH
VARIABLESAREINITIALIZEDTOZERO WHICHMEANSWEDIDNTNEED

TOEXPLICITLYSAYhPLAYER#OUNTv$ECLARING BUTNOTINITIAL
IZING ASTATICVARIABLEMEANSTHESTATICVARIABLEWILLGETTHEDE DIWHUDQREMHFWLVFU
HDWHG
FAULTVALUEFORTHATVARIABLETYPE INEXACTLYTHESAMEWAYTHAT
INSTANCEVARIABLESAREGIVENDEFAULTVALUESWHENDECLARED

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFILQDOFRQVWDQWV

[\I\QKNQVIT^IZQIJTM[IZMKWV[\IV\[
!VARIABLEMARKED¿QDOMEANSTHATˆONCEINITIALIZEDˆITCAN
NEVERCHANGE)NOTHERWORDS THEVALUEOFTHESTATIClNALVARIABLE $VWDWLFLQLWLDOL]HULVDEORFN
WILLSTAYTHESAMEASLONGASTHECLASSISLOADED,OOKUP-ATH0) RI FRGHWKDWUXQVZKHQD
INTHE!0) ANDYOULLlND FODVVLVORDGHGEHIRUHDQ\
SXEOLFVWDWLF¿QDOGRXEOH3,  RWKHUFRGHFDQXVHWKH
FODVVVRLW·VDJUHDWSODFH
4HEVARIABLEISMARKEDSXEOLFSOTHATANYCODECANACCESSIT
WRLQLWLDOL]HDVWDWLFILQDO
4HEVARIABLEISMARKEDVWDWLFSOTHATYOUDONTNEEDAN YDULDEOH
INSTANCEOFCLASS-ATHWHICH REMEMBER YOURENOTALLOWEDTO FODVV)RR^
CREATE 
¿QDOVWDWLFLQW[

Licensed by
4HEVARIABLEISMARKED¿QDOBECAUSE0)DOESNTCHANGEASFARAS
*AVAISCONCERNED  VWDWLF^

4HEREISNOOTHERWAYTODESIGNATEAVARIABLEASACONSTANT BUT [ 


THEREISANAMINGCONVENTIONTHATHELPSYOUTORECOGNIZEONE `
#ONSTANTVARIABLENAMESSHOULDBEINALLCAPS

Eduard Simons
`

,QLWLDOL]HDÀQDOVWDWLFYDULDEOH
 $WWKHWLPH\RXGHFODUHLW
SXEOLFFODVV)RR^
104038 ,I\RXGRQ·WJLYHDYDOXHWRDÀQDOYDULDEOH
LQRQHRIWKRVHWZRSODFHV
SXEOLFVWDWLF¿QDOLQW)22B; 
` SXEOLFFODVV%DU^
QRWLFHW SXEOLFVWDWLF¿QDOGRXEOH%$5B6,*1
ILQDOYDULDKHEQDPLQJFRQYHQWLRQ QRLQLWLDOL]
QDPHVK OHVDUHFRQVWD VWDWLF ` DWLRQ
XQGHUVFRRUXHOGEHDOOXSSHUFDQVHWVVRWKH
VHSDUDWLQJ 
25 WKHZRUZGLWV KDQ
7KHFRPSLOHUZLOOFDWFKLW
 ,QDVWDWLFLQLWLDOL]HU )LOH(GLW:LQGRZ+HOS-DFNLQ

SXEOLFFODVV%DU^ MDYDF%DUMDYD
SXEOLFVWDWLF¿QDOGRXEOH%$5B6,*1
%DUMDYDYDULDEOH%$5B6,*1
VWDWLF^ PLJKWQRWKDYHEHHQLQLWLDOL]HG
%$5B6,*1  GRXEOH 0DWKUDQGRP  HUURU
`
`
WKLVFRG
LVORDGHGHUE XQVDVVRRQDVWKH
LVFDOOHGDQ HIRUHDQ\VWDWLFPFODVV
YDULDEOHFD GHYHQEHIRUHDQ HWKRG
QEHXVHG \VWDWLF
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

NQVITQ[V¼\R][\NWZ[\I\QK
^IZQIJTM[
9OUCANUSETHEKEYWORD¿QDOTOMODIFYNON A final variable means you
STATICVARIABLESTOO INCLUDINGINSTANCEVARIABLES
LOCALVARIABLES ANDEVENMETHODPARAMETERS)N
EACHCASE ITMEANSTHESAMETHINGTHEVALUECANT
canÕt change its value.
BECHANGED"UTYOUCANALSOUSElNALTOSTOP
SOMEONEFROMOVERRIDINGAMETHODORMAKINGA
SUBCLASS
A final method means you
QRQVWDWLFÀQDOYDULDEOHV
canÕt override the method.
FODVV)RRI^
¿QDOLQWVL]H 
QRZ\RXFDQ·WFKDQJHVL]H
¿QDOLQWZKXI¿H

)RRI ^
ZKXI¿H  QRZ\RXFDQ·WFKDQJHZKXIILH A final class means you
`
 canÕt extend the class (i.e.
YRLGGR6WXII ¿QDOLQW[ ^
\RXFDQ¶WFKDQJH[
`
you canÕt make a subclass).

YRLGGR0RUH ^
¿QDOLQW] 
\RXFDQ¶WFKDQJH] ,W·VDOOVRVRÀQDO
` ,PHDQLI,·GNQRZQ
` ,ZRXOGQ·WEHDEOHWR
 FKDQJHWKLQJV

ÀQDOPHWKRG
FODVV3RRI^
¿QDOYRLGFDOF:KXI¿H ^
LPSRUWDQWWKLQJV
WKDWPXVWQHYHUEHRYHUULGGHQ
`
`

ÀQDOFODVV
¿QDOFODVV0\0RVW3HUIHFW&ODVV^
FDQQRWEHH[WHQGHG
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFDQGILQDO

WKHUH DUH QR
'XPE 4XHVWLRQV
:MDD=LHGAFLK
Q: !STATICMETHODCANTACCESSA ƒ $VWDWLFPHWKRGVKRXOGEHFDOOHGXVLQJWKHFODVV
NON STATICVARIABLE"UTCANANON STATIC QDPHUDWKHUWKDQDQREMHFWUHIHUHQFHYDULDEOH
METHODACCESSASTATICVARIABLE 0DWKUDQGRP YVP\)RRJR
ƒ $VWDWLFPHWKRGFDQEHLQYRNHGZLWKRXWDQ\LQVWDQFHV
A: /FCOURSE!NON STATICMETHODINA RIWKHPHWKRG·VFODVVRQWKHKHDS
CLASSCANALWAYSCALLASTATICMETHODINTHE ƒ $VWDWLFPHWKRGLVJRRGIRUDXWLOLW\PHWKRGWKDWGRHV
CLASSORACCESSASTATICVARIABLEOFTHECLASS
QRW DQGZLOOQHYHU GHSHQGRQDSDUWLFXODULQVWDQFH
YDULDEOHYDOXH
ƒ $VWDWLFPHWKRGLVQRWDVVRFLDWHGZLWKDSDUWLFXODU
Q: 7HYWOULD)WANTTOMAKEACLASS LQVWDQFH³RQO\WKHFODVV³VRLWFDQQRWDFFHVVDQ\
lNAL$OESNTTHATDEFEATTHEWHOLE LQVWDQFHYDULDEOHYDOXHVRILWVFODVV,WZRXOGQ·WNQRZ
PURPOSEOF// ZKLFKLQVWDQFH·VYDOXHVWRXVH
ƒ $VWDWLFPHWKRGFDQQRWDFFHVVDQRQVWDWLFPHWKRG
A: 9ESANDNO!TYPICALREASONFOR VLQFHQRQVWDWLFPHWKRGVDUHXVXDOO\DVVRFLDWHGZLWK
LQVWDQFHYDULDEOHVWDWH
MAKINGACLASSFINALISFORSECURITY9OU
CANT FOREXAMPLE MAKEASUBCLASSOFTHE ƒ ,I\RXKDYHDFODVVZLWKRQO\VWDWLFPHWKRGVDQG\RX
3TRINGCLASS)MAGINETHEHAVOCIFSOMEONE GRQRWZDQWWKHFODVVWREHLQVWDQWLDWHG\RXFDQPDUN
EXTENDEDTHE3TRINGCLASSANDSUBSTITUTED
WKHFRQVWUXFWRUSULYDWH
THEIROWN3TRINGSUBCLASSOBJECTS
POLYMORPHICALLY WHERE3TRINGOBJECTS ƒ $VWDWLFYDULDEOHLVDYDULDEOHVKDUHGE\DOOPHPEHUV
AREEXPECTED)FYOUNEEDTOCOUNTONA RIDJLYHQFODVV7KHUHLVRQO\RQHFRS\RIDVWDWLF
PARTICULARIMPLEMENTATIONOFTHEMETHODS YDULDEOHLQDFODVVUDWKHUWKDQRQHFRS\SHUHDFK
INACLASS MAKETHECLASSFINAL LQGLYLGXDOLQVWDQFHIRULQVWDQFHYDULDEOHV
ƒ $VWDWLFPHWKRGFDQDFFHVVDVWDWLFYDULDEOH
ƒ 7RPDNHDFRQVWDQWLQ-DYDPDUNDYDULDEOHDVERWK
Q: )SNTITREDUNDANTTOHAVETOMARK VWDWLFDQGILQDO
THEMETHODSlNALIFTHECLASSISlNAL
ƒ $ILQDOVWDWLFYDULDEOHPXVWEHDVVLJQHGDYDOXHHLWKHU
DWWKHWLPHLWLVGHFODUHGRULQDVWDWLFLQLWLDOL]HU
A: )FTHECLASSISFINAL YOUDONTNEEDTO VWDWLF^
'2*B&2'( 
MARKTHEMETHODSFINAL4HINKABOUTITˆIF
ACLASSISFINALITCANNEVERBESUBCLASSED `
SONONEOFTHEMETHODSCANEVERBE
OVERRIDDEN
ƒ 7KHQDPLQJFRQYHQWLRQIRUFRQVWDQWV ILQDOVWDWLF
YDULDEOHV LVWRPDNHWKHQDPHDOOXSSHUFDVH
/NTHEOTHERHAND IFYOUDOWANTTOALLOW
OTHERSTOEXTENDYOURCLASS ANDYOUWANT ƒ $ILQDOYDULDEOHYDOXHFDQQRWEHFKDQJHGRQFHLWKDV
THEMTOBEABLETOOVERRIDESOME BUTNOT EHHQDVVLJQHG
ALL OFTHEMETHODS THENDONTMARKTHE ƒ $VVLJQLQJDYDOXHWRDILQDOLQVWDQFHYDULDEOHPXVWEH
CLASSFINALBUTGOINANDSELECTIVELYMARK HLWKHUDWWKHWLPHLWLVGHFODUHGRULQWKHFRQVWUXFWRU
SPECIFICMETHODSASFINAL!FINALMETHOD
MEANSTHATASUBCLASSCANTOVERRIDETHAT ƒ $ILQDOPHWKRGFDQQRWEHRYHUULGGHQ
PARTICULARMETHOD ƒ $ILQDOFODVVFDQQRWEHH[WHQGHG VXEFODVVHG 
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

6KDUSHQ \RXU SHQFLO

:KDW·V/HJDO"
'IVENEVERYTHINGYOUVEJUST
LEARNEDABOUTSTATICANDlNAL
WHICHOFTHESEWOULDCOMPILE

SXEOLFFODVV)RR^

VWDWLFLQW[

SXEOLFYRLGJR ^ SXEOLFFODVV)RR^

6\VWHPRXWSULQWOQ [  VWDWLF¿QDOLQW[ 
`
` SXEOLFYRLGJR ^
6\VWHPRXWSULQWOQ [ 
`
`

 SXEOLFFODVV)RR^
LQW[

SXEOLFVWDWLFYRLGJR ^ SXEOLFFODVV)RR^

6\VWHPRXWSULQWOQ [  VWDWLF¿QDOLQW[ 
`
` SXEOLFYRLGJR ¿QDOLQW[ ^
6\VWHPRXWSULQWOQ [ 
`
`

 SXEOLFFODVV)RR^
¿QDOLQW[
 SXEOLFFODVV)RR^
SXEOLFYRLGJR ^ LQW[ 
6\VWHPRXWSULQWOQ [ 
` SXEOLFVWDWLFYRLGJR ¿QDOLQW[ ^
` 6\VWHPRXWSULQWOQ [ 
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
0DWKPHWKRGV

5I\PUM\PWL[
.OWTHATWEKNOWHOWSTATIC
METHODSWORK LETSLOOK 0DWKUDQGRP
ATSOMESTATICMETHODSIN 5HWXUQVDGRXEOHEHWZHHQWKURXJK EXW
CLASS-ATH4HISISNTALLOF QRWLQFOXGLQJ 
THEM JUSTTHEHIGHLIGHTS GRXEOHU 0DWKUDQGRP 
#HECKYOUR!0)FORTHEREST LQWU  LQW  0DWKUDQGRP   
INCLUDINGSQRT TAN CEIL
mOOR ANDASIN 
0DWKDEV
5HWXUQVDGRXEOHWKDWLVWKHDEVROXWHYDOXHRI
WKHDUJXPHQW7KHPHWKRGLVRYHUORDGHGVR
LI\RXSDVVLWDQLQWLWUHWXUQVDQLQW3DVVLWD
GRXEOHLWUHWXUQVDGRXEOH

LQW[ 0DWKDEV  UHWXUQV


GRXEOHG 0DWKDEV  UHWXUQV

0DWKURXQG
5HWXUQVDQLQWRUDORQJ GHSHQGLQJRQ
ZKHWKHUWKHDUJXPHQWLVDÁRDWRUDGRXEOH 
URXQGHGWRWKHQHDUHVWLQWHJHUYDOXH
LQW[ 0DWKURXQG I UHWXUQV
LQW\ 0DWKURXQG I UHWXUQV

5HPHPEHUIORDWLQJSRLQWOLWHUD
WREHGRXEOHVXQOHVV\RX OVDUHDVVXPHG
DGGWKH¶I·
0DWKPLQ
5HWXUQVDYDOXHWKDWLVWKHPLQLPXPRIWKH
WZRDUJXPHQWV7KHPHWKRGLVRYHUORDGHGWR
WDNHLQWVORQJVÁRDWVRUGRXEOHV
LQW[ 0DWKPLQ  UHWXUQV
GRXEOH\ 0DWKPLQ  UHWXUQV

0DWKPD[
5HWXUQVDYDOXHWKDWLVWKHPD[LPXPRIWKH
WZRDUJXPHQWV7KHPHWKRGLVRYHUORDGHGWR
WDNHLQWVORQJVÁRDWVRUGRXEOHV
LQW[ 0DWKPD[  UHWXUQV
GRXEOH\ 0DWKPD[  UHWXUQV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

?ZIXXQVOIXZQUQ\Q^M
3OMETIMESYOUWANTTOTREATAPRIMITIVELIKE
ANOBJECT&OREXAMPLE INALLVERSIONSOF*AVA
object
PRIORTO YOUCANNOTPUTAPRIMITIVEDIRECTLY
INTOACOLLECTIONLIKE!RRAY,ISTOR(ASH-AP
LQW[ 
$UUD\/LVWOLVW QHZ$UUD\/LVW 
OLVWDGG [ 

7KLVZRQ·WZRUNXQOHVV\RX·UH
KHUH·VQ RDGG LQ
XVLQJ-DYDRU
W P HWKRGLQ$UUD\/LVW
primitive
JUHDWHU7 KDVDGG PHWKRGV
WKDWWDNHVDQLQW $UUD HVQRWQO\
\/L VWR
SULPLWLYHV
WKDWWDNHREMHFWUHIHUHQF When you need to treat
4HERESAWRAPPERCLASSFOREVERYPRIMITIVETYPE
ANDSINCETHEWRAPPERCLASSESAREINTHEJAVA a primitive like an object,
LANGPACKAGE YOUDONTNEEDTOIMPORTTHEM
9OUCANRECOGNIZEWRAPPERCLASSESBECAUSE
wrap it. If youÕre using any
EACHONEISNAMEDAFTERTHEPRIMITIVETYPEIT
WRAPS BUTWITHTHElRSTLETTERCAPITALIZEDTO
version of Java before 5.0,
FOLLOWTHECLASSNAMINGCONVENTION youÕll do this when you
/HYEAH FORREASONSABSOLUTELYNOBODYONTHE
PLANETISCERTAINOF THE!0)DESIGNERSDECIDED need to store a primitive
NOTTOMAPTHENAMESEXACTLYFROMPRIMITIVE
TYPETOCLASSTYPE9OULLSEEWHATWEMEAN
value inside a collection like
%RROHDQ ArrayList or HashMap.
&KDUDFWHU
%\WH
:DWFKRXW7KHQDPHVDUHQ·WLYH H
6KRUW PDSSHGH[DFWO\WRWKHSULPLW LQWSULPLWLY
,QWHJHU
W\SHV7KHFODVVQDPHVDUHIXOO\
VSHOOHGRXW ,QWHJHUREMHFW
/RQJ


)ORDW
HFW

LQW
,Q
'RXEOH WHJHUREM
*LYHWKHSULPLWLYHWRWKH ·VLW
ZUDSSHUFRQVWUXFWRU7KDW
ZUDSSLQJDYDOXH
LQWL 
,QWHJHUL:UDS QHZ,QWHJHU L 
$OOWKHZUDSSHUVZRUN
OLNHWKLV%RROHDQKDVD
XQZUDSSLQJDYDOXH
ERROHDQ9DOXH &KDUDFWHU
KDVDFKDU9DOXH HWF 1RWHWKHSLFWXUHDWWKHWRSLVDFKRFRODWHLQDIRLOZUDSSHU*HW
LQWXQ:UDSSHG L:UDSLQW9DOXH  LW":UDSSHU"6RPHSHRSOHWKLQNLWORRNVOLNHDEDNHGSRWDWREXW
WKDWZRUNVWRR

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFPHWKRGV

7KLVLVVWXSLG<RXPHDQ,FDQ·W
MXVWPDNHDQ$UUD\/LVWRILQWV""",
KDYHWRZUDSHYHU\VLQJOHIULFNLQ·RQHLQDQHZ
,QWHJHUREMHFWWKHQXQZUDSLWZKHQ,WU\
WRDFFHVVWKDWYDOXHLQWKH$UUD\/LVW"
7KDW·VDZDVWHRIWLPHDQGDQHUURU
ZDLWLQJWRKDSSHQ

*MNWZM2I^IA7=PIL\WLW\PM_WZS
3HESRIGHT)NALLVERSIONSOF*AVAPRIORTO PRIMITIVESWEREPRIMITIVES
ANDOBJECTREFERENCESWEREOBJECTREFERENCES ANDTHEYWERE.%6%2
TREATEDINTERCHANGEABLY)TWASALWAYSUPTOYOU THEPROGRAMMER TODO
THEWRAPPINGANDUNWRAPPING4HEREWASNOWAYTOPASSAPRIMITIVETOA
METHODEXPECTINGANOBJECTREFERENCE ANDNOWAYTOASSIGNTHERESULTOFA
METHODRETURNINGANOBJECTREFERENCEDIRECTLYTOAPRIMITIVEVARIABLEˆEVEN
WHENTHERETURNEDREFERENCEISTOAN)NTEGERANDTHEPRIMITIVEVARIABLEIS
ANINT4HEREWASSIMPLYNORELATIONSHIPBETWEENAN)NTEGERANDANINT
OTHERTHANTHEFACTTHAT)NTEGERHASANINSTANCEVARIABLEOFTYPEINTTOHOLD
THEPRIMITIVETHE)NTEGERWRAPS !LLTHEWORKWASUPTOYOU

$Q$UUD\/LVWRISULPLWLYHLQWV

:LWKRXWDXWRER[LQJ -DYDYHUVLRQVEHIRUH RW


 5H PH PE HU E HI RUH\RXFRXOGEMQHFWV
SXEOLFYRLGGR1XPV2OG:D\ ^ 0DNHDQ$UUD\/LVWVRDOO$UUD\/LVWVZHUHOLVWVRI2
VSHFLI\WKH7<3(
$UUD\/LVWOLVW2I1XPEHUV QHZ$UUD\/LVW 
 S HOLVW
ULPLWLYH¶·WRWKIL
< RXF DQ·WD GG WKH U UVW
OLVW2I1XPEHUVDGG QHZ,QWHJHU   ZUDSLWLQDQ,QWHJH
VR\RXKDYHWR

,QWHJHURQH  ,QWHJHU OLVW2I1XPEHUVJHW  
,WFRPHVRXWDVW\DQSHFDVW
F
2EMHFWEXW\RX ,QWHJHU
LQWLQW2QH RQHLQW9DOXH 
`
WKH2EMHFWWRDQ
)LQDOO\\RXFDQJ
RXWRIWKH,QWHJ HWWKHSULPLWLYH
HU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

)]\WJW`QVO"JT]ZZQVO\PMTQVM
JM\ _MMVXZQUQ\Q^MIVLWJRMK\
4HEAUTOBOXINGFEATUREADDEDTO*AVADOES
THECONVERSIONFROMPRIMITIVETOWRAPPEROBJECT
AUTOMATICALLY
,ETSSEEWHATHAPPENSWHENWEWANTTOMAKEAN
!RRAY,ISTTOHOLDINTS

$Q$UUD\/LVWRISULPLWLYHLQWV

:LWKDXWRER[LQJ -DYDYHUVLRQVRUJUHDWHU
RIW\SH,QWHJHU
SXEOLFYRLGGR1XPV1HZ:D\ ^ 0DNHDQ$UUD\/LVW
$UUD\/LVW,QWHJHU!OLVW2I1XPEHUV QHZ$UUD\/LVW,QWHJHU! 

OLVW2I1XPEHUVDGG   -XVWDGGLW  $OWKRXJKWKHUHLV127DPHWKRGLQ$UUD\/LVW


IRUDGG LQW WKHFRPSLOHUGRHVDOOWKHZUDSSLQJ
LQWQXP OLVW2I1XPEHUVJHW   ER[LQJ IRU\RX,QRWKHUZRUGVWKHUHUHDOO\,6
` DQ,QWHJHUREMHFWVWRUHGLQWKH$UUD\/LVWEXW
$QGWKHFRPSLOHUDXWRPDWLF \RXJHWWR´SUHWHQGµWKDWWKH$UUD\/LVWWDNHV
WKH,QWHJHUREMHFWVR\RXF DOO\XQZUDSV XQER[HV  LQWV <RXFDQDGGERWKLQWVDQG,QWHJHUVWRDQ
GLUHFWO\WRDSULPLWLYHZLWKDQDVVLJQWKHLQWYDOXH $UUD\/LVW,QWHJHU!
LQW9DOXH PHWKRGRQWKH,QWRXWKDYLQJWRFDOOWKH
HJHUREMHFW

Q: 7HYNOTDECLAREAN!RRAY,ISTINTIFYOUWANTTO
HOLDINTS

A: "ECAUSEYOUCANT2EMEMBER THERULEFORGENERIC
TYPESISTHATYOUCANSPECIFYONLYCLASSORINTERFACETYPES NOT
PRIMITIVES3O!RRAY,ISTINTWILLNOTCOMPILE"UTASYOUCAN
SEEFROMTHECODEABOVE ITDOESNTREALLYMATTER SINCETHE
COMPILERLETSYOUPUTINTSINTOTHE!RRAY,IST)NTEGER)NFACT
THERESREALLYNOWAYTOPREVENTYOUFROMPUTTINGPRIMITIVES
INTOAN!RRAY,ISTWHERETHETYPEOFTHELISTISTHETYPEOFTHAT
PRIMITIVESWRAPPER IFYOUREUSINGA*AVA COMPLIANTCOM
PILER SINCEAUTOBOXINGWILLHAPPENAUTOMATICALLY3O YOUCAN
PUTBOOLEANPRIMITIVESINAN!RRAY,IST"OOLEANANDCHARS
INTOAN!RRAY,IST#HARACTER

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFPHWKRGV

)]\WJW`QVO_WZS[ITUW[\M^MZa_PMZM
!UTOBOXINGLETSYOUDOMORETHANJUSTTHEOBVIOUSWRAPPINGAND
UNWRAPPINGTOUSEPRIMITIVESINACOLLECTIONITALSOLETSYOUUSE
EITHERAPRIMITIVEORITSWRAPPERTYPEVIRTUALLYANYWHEREONEORTHE
OTHERISEXPECTED4HINKABOUTTHAT

)XQZLWKDXWRER[LQJ

0HWKRGDUJXPHQWV 
,IDPHWKRGWDNHVDZUDSSHUW\SH\RX 
FDQSDVVDUHIHUHQFHWRDZUDSSHURU

W
DSULPLWLYHRIWKHPDWFKLQJW\SH$QG ,Q

HF
WHJ REM LQW
RIFRXUVHWKHUHYHUVHLVWUXH³LID HU
PHWKRGWDNHVDSULPLWLYH\RXFDQ
SDVVLQHLWKHUDFRPSDWLEOHSULPLWLYH
RUDUHIHUHQFHWRDZUDSSHURIWKDW YRLGWDNH1XPEHU ,QWHJHUL ^`
SULPLWLYHW\SH

5HWXUQYDOXHV LQWJLYH1XPEHU ^


,IDPHWKRGGHFODUHVDSULPLWLYH UHWXUQ[
UHWXUQW\SH\RXFDQUHWXUQHLWKHUD `
FRPSDWLEOHSULPLWLYHRUDUHIHUHQFH
WRWKHZUDSSHURIWKDWSULPLWLYHW\SH
$QGLIDPHWKRGGHFODUHVDZUDSSHU  
UHWXUQW\SH\RXFDQUHWXUQHLWKHUD
W

,Q
HF

UHIHUHQFHWRWKHZUDSSHUW\SHRUD WHJ REM


SULPLWLYHRIWKHPDWFKLQJW\SH HU LQW

%RROHDQH[SUHVVLRQV WUXH
$Q\SODFHDERROHDQYDOXHLVH[SHFWHG WUXH
\RXFDQXVHHLWKHUDQH[SUHVVLRQWKDW
W

ER
HF

HYDOXDWHVWRDERROHDQ ! RUD ROH REM ERROHDQ


D Q
SULPLWLYHERROHDQRUDUHIHUHQFHWRD
%RROHDQZUDSSHU
LI ERRO ^
6\VWHPRXWSULQWOQ ³WUXH´ 
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

2SHUDWLRQVRQQXPEHUV
7KLVLVSUREDEO\WKHVWUDQJHVWRQH³\HV\RX
FDQQRZXVHDZUDSSHUW\SHDVDQRSHUDQG
LQRSHUDWLRQVZKHUHWKHSULPLWLYHW\SHLV
 
H[SHFWHG7KDWPHDQV\RXFDQDSSO\VD\
WKHLQFUHPHQWRSHUDWRUDJDLQVWDUHIHUHQFH

W
,Q

HF
WRDQ,QWHJHUREMHFW WHJ REM
HU LQW
%XWGRQ·WZRUU\³WKLVLVMXVWDFRPSLOHUWULFN
7KHODQJXDJHZDVQ·WPRGLÀHGWRPDNHWKH
RSHUDWRUVZRUNRQREMHFWVWKHFRPSLOHU L
VLPSO\FRQYHUWVWKHREMHFWWRLWVSULPLWLYH
W\SHEHIRUHWKHRSHUDWLRQ,WVXUHORRNV
ZHLUGWKRXJK
,QWHJHUL QHZ,QWHJHU  
L
$QGWKDWPHDQV\RXFDQDOVRGRWKLQJVOLNH
,QWHJHUM QHZ,QWHJHU  
,QWHJHUN M

$VVLJQPHQWV
 
<RXFDQDVVLJQHLWKHUDZUDSSHURUSULPLWLYH

W
WRDYDULDEOHGHFODUHGDVDPDWFKLQJZUDSSHU ,Q

HF
WHJ REM
RUSULPLWLYH)RUH[DPSOHDSULPLWLYHLQW HU LQW
YDULDEOHFDQEHDVVLJQHGWRDQ,QWHJHU
UHIHUHQFHYDULDEOHDQGYLFHYHUVD³D
UHIHUHQFHWRDQ,QWHJHUREMHFWFDQEH
'RXEOHG [
DVVLJQHGWRDYDULDEOHGHFODUHGDVDQLQW
SULPLWLYH

6KDUSHQ \RXU SHQFLO SXEOLFFODVV7HVW%R[^

,QWHJHUL
:LOOWKLVFRGHFRPSLOH":LOOLWUXQ",ILWUXQV LQWM
ZKDWZLOOLWGR"
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7DNH\RXUWLPHDQGWKLQNDERXWWKLVRQHLW 7HVW%R[W QHZ7HVW%R[ 
EULQJVXSDQLPSOLFDWLRQRIDXWRER[LQJWKDW WJR 
ZHGLGQ·WWDONDERXW `

<RX·OOKDYHWRJRWR\RXUFRPSLOHUWRILQG SXEOLFYRLGJR ^
WKHDQVZHUV <HVZH·UHIRUFLQJ\RXWR M L
H[SHULPHQWIRU\RXURZQJRRGRIFRXUVH 6\VWHPRXWSULQWOQ M 
6\VWHPRXWSULQWOQ L 
`
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZUDSSHUPHWKRGV

*]\_IQ\ <PMZM¼[UWZM ?ZIXXMZ[


PI^M[\I\QK]\QTQ\aUM\PWL[\WW
"ESIDESACTINGLIKEANORMALCLASS THEWRAPPERSHAVEA
BUNCHOFREALLYUSEFULSTATICMETHODS7EVEUSEDONEIN
THISBOOKBEFOREˆ)NTEGERPARSE)NT 
4HEPARSEMETHODSTAKEA3TRINGANDGIVEYOUBACKA
PRIMITIVEVALUE

H
&RQYHUWLQJD6WULQJWRD
1RSUREOHPWRSDUV
SULPLWLYHYDOXHLVHDV\ ´µLQ WR  

Licensed by
6WULQJV ³´
LQW[ ,QWHJHUSDUVH,QW V 
GRXEOHG 'RXEOHSDUVH'RXEOH ³´ 

Eduard Simons
ERROHDQE QHZ%RROHDQ ³WUXH´ ERROHDQ9DOXH 

<RX·GWKLQNWKH UHZRXOGEHDQ·W\RX"%XWWKHUH
DQ ZRXOG 
%RROHDQSDUVH WHO\OHWKHUH·VD%RROHDQFRQVWUXFW\RRUX
% RR
LVQ·W) RU WX QD WKH Q
6WULQJDQG LQJLW
WKDWWDNHV S DQGSDUVHV DH E\XQZUDSS
YD OX

104038
LY H
MXVWJHWWKH ULPLW

%XWLI\RXWU\WRGRWKLV
8KRK7KLVFRPSLOHVMXVWILQHEXW
6WULQJW ³WZR´ DWUXQWLPHLWEORZVXS$Q\WKLQJ
LQW\ ,QWHJHUSDUVH,QW W  WKDWFDQ·WEHSDUVHGDVDQXPEHU
ZLOOFDXVHD1XPEHU)RUPDW([FHSWLRQ

<RX·OOJHWDUXQWLPHH[FHSWLRQ

)LOH(GLW:LQGRZ+HOS&OXH
(YHU\PHWKRGRU
MDYD:UDSSHUV
FRQVWUXFWRUWKDWSDUVHV
([FHSWLRQLQWKUHDG³PDLQ´
D6WULQJFDQWKURZD
MDYDODQJ1XPEHU)RUPDW([FHSWLRQWZR 1XPEHU)RUPDW([FHSWLRQ
DWMDYDODQJ,QWHJHUSDUVH,QW ,QWHJHUMDYD ,W·VDUXQWLPHH[FHSWLRQ
DWMDYDODQJ,QWHJHUSDUVH,QW ,QWHJHUMDYD VR\RXGRQ·WKDYHWR
DW:UDSSHUVPDLQ :UDSSHUVMDYD KDQGOHRUGHFODUHLW
%XW\RXPLJKWZDQWWR
:H¶OOWDONDERXW([FHSWLRQVLQWKH
QH[WFKDSWHU
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

)VLVW_QVZM^MZ[M\]ZVQVOI
XZQUQ\Q^MV]UJMZQV\WI;\ZQVO
4HEREARESEVERALWAYSTOTURNANUMBERINTOA3TRING
4HEEASIESTISTOSIMPLYCONCATENATETHENUMBERTOAN
HG
EXISTING3TRING SHUDWRULVRYHUORDG
5HPHPEHUWKHQO¶\·RRYHUORDGHGRSHUDWRU DVD
GRXEOHG  LQ-DYD WKHRWHQDWRU$Q\WKLQJDGGHGWRD
6WULQJGRXEOH6WULQJ ³´G 6WULQJFRQFD HV6WULQJLILHG
6WULQJEHFRP
GRXEOHG 
6WULQJGRXEOH6WULQJ 'RXEOHWR6WULQJ G 

$QRWKHUZD\WRGRLWXVLQJDVWD
PHWKRGLQFODVV'RXEOH WLF
<HDK
EXWKRZGR,PDNHLW
ORRNOLNHPRQH\":LWKDGROODU :KHUH·VP\SULQWI
VLJQDQGWZRGHFLPDOSODFHV OLNH,KDYHLQ&",V
OLNHRUZKDWLI,ZDQW QXPEHUIRUPDWWLQJSDUWRI
FRPPDVOLNHRU WKH,2FODVVHV"
ZKDWLI,ZDQWLWLQ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUIRUPDWWLQJ

6]UJMZNWZUI\\QVO
)N*AVA FORMATTINGNUMBERSANDDATESDOESNTHAVETOBECOUPLEDWITH)/4HINK
ABOUTIT/NEOFTHEMOSTTYPICALWAYSTODISPLAYNUMBERSTOAUSERISTHROUGHA
'5)9OUPUT3TRINGSINTOASCROLLINGTEXTAREA ORMAYBEATABLE)FFORMATTINGWAS
BUILTONLYINTOPRINTSTATEMENTS YOUDNEVERBEABLETOFORMATANUMBERINTOANICE
3TRINGTODISPLAYINA'5)"EFORE*AVA MOSTFORMATTINGWASHANDLEDTHROUGH
CLASSESINTHEJAVATEXTPACKAGETHATWEWONTEVENLOOKATINTHISVERSIONOFTHE
BOOK NOWTHATTHINGSHAVECHANGED
)N*AVA THE*AVATEAMADDEDMOREPOWERFULANDmEXIBLEFORMATTINGTHROUGHA
&ORMATTERCLASSINJAVAUTIL"UTYOUDONTNEEDTOCREATEANDCALLMETHODSONTHE
&ORMATTERCLASSYOURSELF BECAUSE*AVAADDEDCONVENIENCEMETHODSTOSOMEOF
THE)/CLASSESINCLUDINGPRINTF ANDTHE3TRINGCLASS3OITSASIMPLEMATTEROF
CALLINGASTATIC3TRINGFORMAT METHODANDPASSINGITTHETHINGYOUWANTFORMATTED
ALONGWITHFORMATTINGINSTRUCTIONS
/FCOURSE YOUDOHAVETOKNOWHOWTOSUPPLYTHEFORMATTINGINSTRUCTIONS AND
THATTAKESALITTLEEFFORTUNLESSYOUREFAMILIARWITHTHEPRINTF FUNCTIONIN## 
&ORTUNATELY EVENIFYOUDONTKNOWPRINTF YOUCANSIMPLYFOLLOWRECIPESFORTHE
MOSTBASICTHINGSTHATWERESHOWINGINTHISCHAPTER "UTYOUWILLWANTTOLEARN
HOWTOFORMATIFYOUWANTTOMIXANDMATCHTOGETANYTHINGYOUWANT
7ELLSTARTHEREWITHABASICEXAMPLE THENLOOKATHOWITWORKS.OTEWELLREVISIT
FORMATTINGAGAININTHE)/CHAPTER

)RUPDWWLQJDQXPEHUWRXVHFRPPDV

PDW ZH
SXEOLFFODVV7HVW)RUPDWV^
7KHQXPEHUWRYHIFRURPPDV 
ZDQWLWWR KD
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6WULQJV 6WULQJIRUPDW ³G´ 
6\VWHPRXWSULQWOQ V 
`
` 7KHIR UPDWWLQJLQVWUXFWLRQVI
VHFRQGDUJXPHQW Z RUKRZW IRUPDWWKH
5HPHPEHUWKHUHDUHKLF KLQWKLVFDVHLVDQRLQ WYDOXH 
 KHUH³WKHILUVWFRPPDRQO\WZRDUJXPHQWVWRWKLVPHWKRG
LV,16,'(WKH6WULQJOL
LWLVQ·WVHSDUDWLQJDUJXP
HQWVWRWKHIRUPDWPHW WHUDOVR
KRG
1RZZHJHWFRPP
DV LQVHUWHGLQWRWKH
QXPEHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

.WZUI\\QVOLMKWV[\Z]K\ML
!TTHEMOSTBASICLEVEL FORMATTINGCONSISTSOFTWOMAINPARTS
THEREISMORE BUTWELLSTARTWITHTHISTOKEEPITCLEANER 

 )RUPDWWLQJLQVWUXFWLRQV
<RXXVHVSHFLDOIRUPDWVSHFLILHUVWKDWGHVFULEHKRZ
\NQRZSULQWI 
WKHDUJXPHQWVKRXOGEHIRUPDWWHG
1RWHLI\RXDOUHRXDGFDQSUREDEO\MXVW
IURPF&\IHZSDJHV2WKHUZLVH
 7KHDUJXPHQWWREHIRUPDWWHG VNLPWKHQH[W
$OWKRXJKWKHUHFDQEHPRUHWKDQRQHDUJXPHQWZH·OO UHDGFDUHIXOO\
VWDUWZLWKMXVWRQH7KHDUJXPHQWW\SHFDQ·WEHMXVW
DQ\WKLQJLWKDVWREHVRPHWKLQJWKDWFDQEHIRUPDWWHG
XVLQJWKHIRUPDWVSHFLILHUVLQWKHIRUPDWWLQJLQVWUXFWLRQV
)RUH[DPSOHLI\RXUIRUPDWWLQJLQVWUXFWLRQVVSHFLI\D
IORDWLQJSRLQWQXPEHU\RXFDQ·WSDVVLQD'RJRUHYHQD
6WULQJWKDWORRNVOLNHDIORDWLQJSRLQWQXPEHU

'RWKLV WRWKLV
 

IRUPDW ³G´ 

8VHWKHVHLQVWUXFWLRQVRQWKLVDUJXPHQW

:KDWGRWKHVHLQVWUXFWLRQVDFWXDOO\VD\"
h4AKETHESECONDARGUMENTTOTHISMETHOD AND
FORMATITASADECIMALINTEGERANDINSERTCOMMASv

+RZGRWKH\VD\WKDW"
/NTHENEXTPAGEWELLLOOKINMOREDETAILATWHATTHESYNTAXh
DvACTUALLYMEANS BUTFORSTARTERS ANYTIMEYOUSEETHEPERCENT
SIGN INAFORMAT3TRINGWHICHISALWAYSTHElRSTARGUMENT
TOAFORMAT METHOD THINKOFITASREPRESENTINGAVARIABLE
ANDTHEVARIABLEISTHEOTHERARGUMENTTOTHEMETHOD4HEREST
OFTHECHARACTERSAFTERTHEPERCENTSIGNDESCRIBETHEFORMATTING
INSTRUCTIONSFORTHEARGUMENT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHIRUPDW PHWKRG

<PMXMZKMV\ [Ia[¹QV[MZ\IZO]UMV\PMZMº
IVLNWZUI\Q\][QVO\PM[MQV[\Z]K\QWV[
4HElRSTARGUMENTTOAFORMAT METHODISCALLEDTHEFORMAT3TRING ANDIT
CANACTUALLYINCLUDECHARACTERSTHATYOUJUSTWANTPRINTEDAS IS WITHOUTEXTRA
FORMATTING7HENYOUSEETHESIGN THOUGH THINKOFTHEPERCENTSIGNASA
VARIABLETHATREPRESENTSTHEOTHERARGUMENTTOTHEMETHOD

0RUHFKDUDFWHUVWR
)RUPDWVSHFLILHUVIRU LQFOXGHLQWKH6WULQ
LQ FO XGH LQ  VH FRQGDUJXPHQWWRWKHWKH WKHVHFRQGDUJXPHQWJDIWHU
&KDUDFWHUVWR UHWXUQ HG  PH WKRG WKHQXPEHU   IRUPDWWHGDQGLQVHUWHLV
WKHILQDO6WULQ J $UJXPHQWWREH
IURPIRUPDW 
G IRUPDWWHG 

IRUPDW ³,KDYHIEXJVWR¿[´ 

,KDYHEXJVWR¿[
2XWSXW
1RWLFHZHOR
DIWHUWKHGHVWFLVPDORPHRIWKHQXPEHUV
ZKDWWKH´IµP SRLQW&DQ\RXJXHVV
HDQV"

4HEhvSIGNTELLSTHEFORMATTERTOINSERTTHEOTHERMETHODARGUMENTTHE
SECONDARGUMENTTOFORMAT THENUMBER HERE !.$FORMATITUSINGTHE
hFvCHARACTERSAFTERTHEPERCENTSIGN4HENTHERESTOFTHEFORMAT3TRING
hBUGSTOlXv ISADDEDTOTHElNALOUTPUT

$GGLQJDFRPPD

IRUPDW ³,KDYHIEXJVWR¿[´ 

,KDYHEXJVWR¿[

%\FKDQJLQJWKHIRUPDWLQV WUXFWLRQV
ZH
IURP´IµWRIµQXPEHJRWD
FRPPDLQWKH IRU PDW WHG U

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

%XWKRZGRHVLWHYHQ.12:
ZKHUHWKHLQVWUXFWLRQVHQGDQGWKH
UHVWRIWKHFKDUDFWHUVEHJLQ"+RZFRPH
LWGRHVQ·WSULQWRXWWKH´IµLQ´Iµ"2U
WKH´µ"+RZGRHVLWNQRZWKDWWKHI
ZDVSDUWRIWKHLQVWUXFWLRQVDQG127
SDUWRIWKH6WULQJ"

<PMNWZUI\;\ZQVO][M[Q\[
W_VTQ\\TMTIVO]IOM[aV\I`
9OUOBVIOUSLYCANTPUTJUSTANYTHINGAFTERTHEhv
SIGN4HESYNTAXFORWHATGOESAFTERTHEPERCENT
SIGNFOLLOWSVERYSPECIlCRULES ANDDESCRIBES
HOWTOFORMATTHEARGUMENTTHATGETSINSERTEDAT
THATPOINTINTHERESULTFORMATTED 3TRING
9OUVEALREADYSEENTWOEXAMPLES
 DMEANShINSERTCOMMASANDFORMATTHE
NUMBERASADECIMALINTEGERv
AND
FMEANShFORMATTHENUMBERASAmOATING
POINTWITHAPRECISIONOFTWODECIMALPLACESv
AND
 FMEANShINSERTCOMMASANDFORMATTHE
NUMBERASAmOATINGPOINTWITHAPRECISIONOF
TWODECIMALPLACESv
4HEREALQUESTIONISREALLY h(OWDO)KNOWWHAT
TOPUTAFTERTHEPERCENTSIGNTOGETITTODOWHAT
)WANTv!NDTHATINCLUDESKNOWINGTHESYMBOLS
LIKEhDvFORDECIMALANDhFvFORmOATINGPOINT
ASWELLASTHEORDERINWHICHTHEINSTRUCTIONS
MUSTBEPLACEDFOLLOWINGTHEPERCENTSIGN&OR
EXAMPLE IFYOUPUTTHECOMMAAFTERTHEhDvLIKE
THIShD vINSTEADOFh DvITWONTWORK
/RWILLIT7HATDOYOUTHINKTHISWILLDO

6WULQJIRUPDW ³,KDYHIEXJVWR¿[´ 

7ELLANSWERTHATONTHENEXTPAGE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IRUPDWVSHFLILHU

<PMNWZUI\[XMKQNQMZ
%VERYTHINGAFTERTHEPERCENTSIGNUPTOANDINCLUDINGTHETYPEINDICATORLIKE
hDvORhFv AREPARTOFTHEFORMATTINGINSTRUCTIONS!FTERTHETYPEINDICATOR THE
FORMATTERASSUMESTHENEXTSETOFCHARACTERSAREMEANTTOBEPARTOFTHEOUTPUT
3TRING UNTILORUNLESSITHITSANOTHERPERCENT SIGN(MMMMISTHATEVEN
POSSIBLE#ANYOUHAVEMORETHANONEFORMATTEDARGUMENTVARIABLE0UTTHAT
THOUGHTONHOLDFORRIGHTNOWWELLCOMEBACKTOITINAFEWMINUTES&ORNOW
LETSLOOKATTHESYNTAXFORTHEFORMATSPECIlERSˆTHETHINGSTHATGOAFTERTHE
PERCENT SIGNANDDESCRIBEHOWTHEARGUMENTSHOULDBEFORMATTED

$IRUPDWVSHFLÀHUFDQKDYHXSWRÀYHGLIIHUHQWSDUWV QRW
LQFOXGLQJWKH´µ (YHU\WKLQJLQEUDFNHWV>@EHORZLVRSWLRQDOVR
RQO\WKHSHUFHQW  DQGWKHW\SHDUHUHTXLUHG%XWWKHRUGHULV
DOVRPDQGDWRU\VRDQ\SDUWV\RX'2XVHPXVWJRLQWKLVRUGHU

>DUJXPHQWQXPEHU@>ÀDJV@>ZLGWK@>SUHFLVLRQ@W\SH

:H·OOJHWWRWK 7KLVGHILQHVWKH <RXDOUHDG\NQRLQH Z DQGDWRU\


LWOHWV\RXVD\:LV+,ODW&+HU 0,1,080QXPEHU WKLVRQH LW GHI V 7\SHLVP [WSDJH 
DUJXPHQWLIWKHUH·VPR 7KHVHDUHIRUDWWLQJ VH H WK H QH
WKDQRQH 'RQ·WZRUU UH  VSHFLDOIRUP LQVHUWLQJ RIFKDUDFWHUVWKDW WKHSUHFLVLRQ,Q DQGZLOOXVXDOO\EH
DERXWLWMXVW\HW \ RSWLRQVOLNH XWWLQJ ZLOOEHXVHG7KDW·V RWKHUZRUGVLWU ´GµIRUDGHFLPDO
FRPPDVRUS EHUVLQ PLQLPXP QRW VHWVWKHQXPEH HJHURU´IµIRU
QHJDWLYHQXPRUWR 727$/,IWKHQXPEHU RIGHFLPDOSODFHV LQW D RDWLQJSRLQW
IO
SDUHQWKHVHV PEHUV LVORQJHUWKDQWKH 'RQ·WIRUJHWWR QXPEHU
PDNHWKHQXHG ZLGWKLW·OOVWLOOEHXVHG LQFOXGHWKH´µLQ
OHIWMXVWLIL LQIXOOEXWLILW·VOHVV WKHUH
WKDQWKHZLGWKLW·OOEH
SDGGHGZLWK]HURHV

>DUJXPHQWQXPEHU@>ÀDJV@>ZLGWK@>SUHFLVLRQ@W\SH

IRUPDW ³I´ 

7KHUH·VQR´DUJXPHQW
VSHFLILHGLQWKLVIRUPDQXPEHUµ
EXWDOOWKHRWKHUSLHF W6WULQJ
HVDUHWKHUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

<PMWVTaZMY]QZML[XMKQNQMZQ[NWZ<A8-
!LTHOUGHTYPEISTHEONLYREQUIREDSPECIlER REMEMBERTHATIFYOUDOPUT
INANYTHINGELSE TYPEMUSTALWAYSCOMELAST4HEREAREMORETHANADOZEN
DIFFERENTTYPEMODIlERSNOTINCLUDINGDATESANDTIMESTHEYHAVETHEIROWN
SET BUTMOSTOFTHETIMEYOULLPROBABLYUSEDDECIMAL ORFmOATING
POINT !NDTYPICALLYYOULLCOMBINEFWITHAPRECISIONINDICATORTOSETTHE
NUMBEROFDECIMALPLACESYOUWANTINYOUROUTPUT

7KH7<3(LVPDQGDWRU\HYHU\WKLQJHOVHLVRSWLRQDO You must include a


G GHFLPDO
type in your format
$ZRXOGQ
IRUPDW ³G´  ZRXOGEHWKHVD RWZRUN,W instructions, and if you
GLUHFWO\DVVLJQDPHDVWU\LQJWR
 LQWYDULDEOH GRXEOHWRDQ specify things besides
4HEARGUMENTMUSTBECOMPATIBLEWITHANINT SOTHATMEANS type, the type must
ONLYBYTE SHORT INT ANDCHARORTHEIRWRAPPERTYPES 
always come last.
I ÁRDWLQJSRLQW
+HUHZHFRPELQHLQ GWKH´Iµ Most of the time,
IRUPDW ³I´ 
ZLWKD SUH FLV LRQ GLFDWRU
´µVRZHHQ GH G XS ZLWK youÕll probably format
 WKUHH ]H UR HV 
numbers using either
4HEARGUMENTMUSTBEOFAmOATINGPOINTTYPE SOTHAT
MEANSONLYAmOATORDOUBLEPRIMITIVEORWRAPPER ASWELL ÒdÓ for decimal or ÒfÓ
ASSOMETHINGCALLED"IG$ECIMALWHICHWEDONTLOOKATIN
THISBOOK 
for floating point.

[ KH[DGHFLPDO
IRUPDW ³[´ 

D

4HEARGUMENTMUSTBEABYTE SHORT INT LONGINCLUDING


BOTHPRIMITIVEANDWRAPPERTYPES AND"IG)NTEGER

F FKDUDFWHU
IRUPDW ³F´  HVHQWV
7KHQXPEHUUHSU
WKHFKDU´ µ

4HEARGUMENTMUSTBEABYTE SHORT CHAR ORINTINCLUDING


BOTHPRIMITIVEANDWRAPPERTYPES 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IRUPDWDUJXPHQWV

?PI\PIXXMV[QN1PI^MUWZM\PIVWVMIZO]UMV\'
)MAGINEYOUWANTA3TRINGTHATLOOKSLIKETHIS
h4HERANKIS  OUTOF  v
"UTTHENUMBERSARECOMINGFROMVARIABLES7HATDOYOUDO9OUSIMPLYADDTWO
ARGUMENTSAFTERTHEFORMAT3TRINGlRSTARGUMENT SOTHATMEANSYOURCALLTOFORMAT
WILLHAVETHREEARGUMENTSINSTEADOFTWO!NDINSIDETHATlRSTARGUMENTTHEFORMAT
3TRING YOULLHAVETWODIFFERENTFORMATSPECIlERSTWOTHINGSTHATSTARTWITHhv 4HE
lRSTFORMATSPECIlERWILLINSERTTHESECONDARGUMENTTOTHEMETHOD ANDTHESECOND
FORMATSPECIlERWILLINSERTTHETHIRDARGUMENTTOTHEMETHOD)NOTHERWORDS THE
VARIABLEINSERTIONSINTHEFORMAT3TRINGUSETHEORDERINWHICHTHEOTHERARGUMENTSARE
PASSEDINTOTHEFORMAT METHOD

LQWRQH 
GRXEOHWZR 
6WULQJV 6WULQJIRUPDW ³7KHUDQNLVGRXWRII´RQHWZR 

:KHQ\RXKD
7KHUDQNLVRXWRI
DUJXPHQWWKHYH\·PUHRUHWKDQRQH
XVLQJWKHRUGHULQ LQVHUWHG
SDVVWKHPW ZKLFK\RX
:HDGGHGFRPPDVWRERWKYDULDEOHV
DQGUHVWULFWHGWKHIORDWLQJSRLQW PHWKRG RWKHIRUPDW 
QXPEHU WKHVHFRQGYDULDEOH WRWZR
GHFLPDOSODFHV

!SYOULLSEEWHENWEGETTODATEFORMATTING YOUMIGHTACTUALLYWANTTOAPPLYDIFFERENT
FORMATTINGSPECIlERSTOTHESAMEARGUMENT4HATSPROBABLYHARDTOIMAGINEUNTILYOU
SEEHOWDATEFORMATTINGASOPPOSEDTOTHENUMBERFORMATINGWEVEBEENDOING WORKS
*USTKNOWTHATINAMINUTE YOULLSEEHOWTOBEMORESPECIlCABOUTWHICHFORMAT
SPECIlERSAREAPPLIEDTOWHICHARGUMENTS

Q: 5M THERESSOMETHING2%!,,9STRANGEGOINGONHERE*USTHOWMANYARGUMENTSCAN)
PASS)MEAN HOWMANYOVERLOADEDFORMAT METHODSARE).THE3TRINGCLASS3O WHATHAPPENS
IF)WANTTOPASS SAY TENDIFFERENTARGUMENTSTOBEFORMATTEDFORASINGLEOUTPUT3TRING

A: 'OODCATCH9ES THEREISSOMETHINGSTRANGEORATLEASTNEWANDDIFFERENT GOINGON AND


NOTHEREARENOTABUNCHOFOVERLOADEDFORMAT METHODSTOTAKEADIFFERENTNUMBEROFPOSSIBLE
ARGUMENTS)NORDERTOSUPPORTTHISNEWFORMATTINGPRINTF LIKE !0)IN*AVA THELANGUAGENEEDED
ANOTHERNEWFEATUREˆVARIABLEARGUMENTLISTSCALLEDVARARGSFORSHORT 7ELLTALKABOUTVARARGS
ONLYINTHEAPPENDIXBECAUSEOUTSIDEOFFORMATTING YOUPROBABLYWONTUSETHEMMUCHINAWELL
DESIGNEDSYSTEM

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

;WU]KPNWZV]UJMZ[_PI\IJW]\LI\M['
)MAGINEYOUWANTA3TRINGTHATLOOKSLIKETHISh3UNDAY .OVv
.OTHINGSPECIALTHERE YOUSAY7ELL IMAGINETHATALLYOUHAVETOSTARTWITHISAVARIABLE
OFTYPE$ATEˆ!*AVACLASSTHATCANREPRESENTATIMESTAMP ANDNOWYOUWANTTOTAKETHAT
OBJECTASOPPOSEDTOANUMBER ANDSENDITTHROUGHTHEFORMATTER
4HEMAINDIFFERENCEBETWEENNUMBERANDDATEFORMATTINGISTHATDATEFORMATSUSEA
TWO CHARACTERTYPETHATSTARTSWITHhTvASOPPOSEDTOTHESINGLECHARACTERhFvORhDv FOR
EXAMPLE 4HEEXAMPLESBELOWSHOULDGIVEYOUAGOODIDEAOFHOWITWORKS

7KHFRPSOHWHGDWHDQGWLPH WF
6WULQJIRUPDW ³WF´QHZ'DWH 
6XQ1RY067

-XVWWKHWLPH WU
6WULQJIRUPDW ³WU´QHZ'DWH 
30

'D\RIWKHZHHNPRQWKDQGGD\ W$W%WG

4HEREISNTASINGLEFORMATSPECIlERTHATWILLDOEXACTLYWHATWE
%XWWKDWP
SDVVWKH'DWHDHQVREZHKDYHWR
WANT SOWEHAVETOCOMBINETHREEOFTHEMFORDAYOFTHEWEEK
T! MONTHT" ANDDAYOFTHEMONTHTD 
WLPHVRQHIRUHDFMHFWLQWKUHH
'DWHWRGD\ QHZ'DWH 
IR UPDWWKDWZHZK DQ
SDUWRIWKH
ZRUGVWKHW$Z W,QRWKHU
6WULQJIRUPDW ³W$W%WG´WRGD\WRGD\WRGD\  WKHGD\RIWKH LOOJLYHXVMXVW
 Z HH
ZHKDYHWRGRLW NEXWWKHQ
7KHFRPPDLVQRWSDUWRIWKHIRUPDWWLQJLW·V
MXVWWKHFKDUDFWHUZHZDQWSULQWHGDIWHUWKH MX VWWKHPRQWKDQGDJDLQWRJHW
ILUVWLQVHUWHGIRUPDWWHGDUJXPHQW GD\RIWKHPRQWK DJDLQIRUWKH

6XQGD\1RYHPEHU

6DPHDVDERYHEXWZLWKRXWGXSOLFDWLQJWKHDUJXPHQWV W$W%WG
'DWHWRGD\ QHZ'DWH  7KHDQJOHEUDFNHW´µLVMXVWDQRWKHU
6WULQJIRUPDW ³W$W%WG´WRGD\  IODJLQWKHVSHFLILHUWKDWWHOOVWKH
 IRUPDWWHUWR´XVHWKHSUHYLRXVDUJXPHQW
<RXFDQWKLQNRIWKLVDVNLQGRIOLNHFDOOLQJWKUHH DJDLQµ6RLWVDYHV\RXIURPUHSHDWLQJWKH
GLIIHUHQWJHWWHUPHWKRGVRQWKH'DWHREMHFWWR DUJXPHQWVDQGLQVWHDG\RXIRUPDWWKH
JHWWKUHHGLIIHUHQWSLHFHVRIGDWDIURPLW VDPHDUJXPHQWWKUHHGLIIHUHQWZD\V

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PDQLSXODWLQJGDWHV

/HW·VVHHKRZPDQ\ZRUN
GD\VZLOOWKHUHEHLIWKH
SURMHFWVWDUWVRQ)HEWKDQG
HQGVRQ$XJXVWWK"

Licensed by
?WZSQVO_Q\P,I\M[
9OUNEEDTODOMOREWITHDATESTHANJUSTGET
TODAYSDATE9OUNEEDYOURPROGRAMSTOADJUST

Eduard Simons
DATES lNDELAPSEDTIMES PRIORITIZESCHEDULES
HECK MAKESCHEDULES9OUNEEDINDUSTRIAL
STRENGTHDATEMANIPULATIONCAPABILITIES
9OUCOULDMAKEYOUROWNDATEROUTINESOF

104038
COURSEANDDONTFORGETABOUTLEAPYEARS
!ND OUCH THOSEOCCASIONAL PESKYLEAP
SECONDS7OW THISCOULDGETCOMPLICATED4HE
GOODNEWSISTHATTHE*AVA!0)ISRICHWITH
CLASSESTHATCANHELPYOUMANIPULATEDATES
3OMETIMESITFEELSALITTLETOORICH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

5W^QVOJIKS_IZLIVLNWZ _IZLQV\QUM
,ETSSAYYOURCOMPANYSWORKSCHEDULEIS-ONDAYTHROUGH&RIDAY
9OUVEBEENASSIGNEDTHETASKOFlGURINGOUTTHELASTWORKDAYIN
EACHCALENDARMONTHTHISYEAR

,WVHHPVWKDWMDYDXWLO'DWHLVDFWXDOO\RXWRIGDWH
For a time-stamp of ÒnowÓ,
%ARLIERWEUSEDJAVAUTIL$ATETOlNDTODAYSDATE SOITSEEMS
use Date. But for everything
LOGICALTHATTHISCLASSWOULDBEAGOODPLACETOSTARTLOOKINGFOR else, use Calendar.
SOMEHANDYDATEMANIPULATIONCAPABILITIES BUTWHENYOUCHECK
OUTTHE!0)YOULLlNDTHATMOSTOF$ATESMETHODSHAVEBEEN
DEPRECATED
4HE$ATECLASSISSTILLGREATFORGETTINGAhTIMESTAMPvˆANOBJECT
THATREPRESENTSTHECURRENTDATEANDTIME SOUSEITWHENYOUWANT
TOSAY hGIVEME./7v
4HEGOODNEWSISTHATTHE!0)RECOMMENDSJAVAUTIL#ALENDAR
INSTEAD SOLETSTAKEALOOK

8VHMDYDXWLO&DOHQGDUIRU\RXUGDWHPDQLSXODWLRQ

4HEDESIGNERSOFTHE#ALENDAR!0)WANTEDTOTHINKGLOBALLY
LITERALLY4HEBASICIDEAISTHATWHENYOUWANTTOWORKWITHDATES
YOUASKFORA#ALENDARTHROUGHASTATICMETHODOFTHE#ALENDAR
CLASSTHATYOULLSEEONTHENEXTPAGE ANDTHE*6-HANDSYOUBACK
ANINSTANCEOFACONCRETESUBCLASSOF#ALENDAR#ALENDARISACTUALLY
ANABSTRACTCLASS SOYOUREALWAYSWORKINGWITHACONCRETESUBCLASS
-OREINTERESTING THOUGH ISTHATTHEKINDOFCALENDARYOUGET
BACKWILLBEAPPROPRIATEFORYOURLOCALE-UCHOFTHEWORLDUSESTHE
'REGORIANCALENDAR BUTIFYOUREINANAREATHATDOESNTUSEA
'REGORIANCALENDARYOUCANGET*AVALIBRARIESTOHANDLEOTHER
CALENDARSSUCHAS"UDDHIST OR)SLAMICOR*APANESE
4HESTANDARD*AVA!0)SHIPSWITHJAVAUTIL'REGORIAN#ALENDAR SO
THATSWHATWELLBEUSINGHERE&ORTHEMOSTPART THOUGH YOU
DONTEVENHAVETOTHINKABOUTTHEKINDOF#ALENDARSUBCLASSYOURE
USING ANDINSTEADFOCUSONLYONTHEMETHODSOFTHE#ALENDARCLASS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJD&DOHQGDU

/M\\QVOIVWJRMK\\PI\M`\MVL[+ITMVLIZ
(OWINTHEWORLDDOYOUGETANhINSTANCEvOFANABSTRACTCLASS
7ELLYOUDONTOFCOURSE THISWONTWORK

7KLV:21·7ZRUN
7KHFRPSLOHUZRQ·WDOORZWKLV 
&DOHQGDUFDO QHZ&DOHQGDU 

,QVWHDGXVHWKHVWDWLF´JHW,QVWDQFH µPHWKRG
&DOHQGDUFDO &DOHQGDUJHW,QVWDQFH 
7KLVV\QWD[VKRXOGORRNIDPLOLDUDWWKLV
SRLQWZH·UHLQYRNLQJDVWDWLFPHWKRG
:DLWDPLQXWH
,I\RXFDQ·WPDNHDQ
LQVWDQFHRIWKH&DOHQGDU
FODVVZKDWH[DFWO\DUH\RX
DVVLJQLQJWRWKDW&DOHQGDU
UHIHUHQFH"

<RXFDQ·WJHWDQLQVWDQFHRI&DOHQGDU
EXW\RXFDQFDQJHWDQLQVWDQFHRID
FRQFUHWH&DOHQGDUVXEFODVV

/BVIOUSLYYOUCANTGETANINSTANCEOF#ALENDAR BECAUSE
#ALENDARISABSTRACT"UTYOURESTILLFREETOCALLSTATICMETHODS
ON#ALENDAR SINCESTATICMETHODSARECALLEDONTHECLASS
RATHERTHANONAPARTICULARINSTANCE3OYOUCALLTHESTATIC
GET)NSTANCE ON#ALENDARANDITGIVESYOUBACKANINSTANCE
OFACONCRETESUBCLASS3OMETHINGTHATEXTENDS#ALENDAR
WHICHMEANSITCANBEPOLYMORPHICALLYASSIGNEDTO#ALENDAR
ANDWHICHˆBYCONTRACTˆCANRESPONDTOTHEMETHODSOFCLASS
#ALENDAR
)NMOSTOFTHEWORLD ANDBYDEFAULTFORMOSTVERSIONSOF*AVA
YOULLBEGETTINGBACKAJAVAUTIL'REGORIAN#ALENDARINSTANCE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

?WZSQVO_Q\P+ITMVLIZWJRMK\[
4HEREARESEVERALKEYCONCEPTSYOULLNEEDTOUNDERSTANDIN
ORDERTOWORKWITH#ALENDAROBJECTS
ƒ &IELDSHOLDSTATE !#ALENDAROBJECTHASMANYlELDSTHATAREUSEDTO
REPRESENTASPECTSOFITSULTIMATESTATE ITSDATEANDTIME&ORINSTANCE YOU
CANGETANDSETA#ALENDARSYEARORMONTH
ƒ $ATESAND4IMESCANBEINCREMENTED 4HE#ALENDARCLASSHASMETHODSTHAT
ALLOWYOUTOADDANDSUBTRACTVALUESFROMVARIOUSlELDS FOREXAMPLEhADD
ONETOTHEMONTHv ORhSUBTRACTTHREEYEARSv
ƒ $ATESAND4IMESCANBEREPRESENTEDINMILLISECONDS 4HE#ALENDARCLASS
LETSYOUCONVERTYOURDATESINTOANDOUTOFAMILLISECONDREPRESENTATION
3PECIlCALLY THENUMBEROFMILLISECONDSTHATHAVEOCCUREDSINCE*ANUARY
ST  4HISALLOWSYOUTOPERFORMPRECISECALCULATIONSSUCHAShELAPSED
TIMEBETWEENTWOTIMESvORhADDHOURSANDMINUTESANDSECONDS
TOTHISTIMEv

$QH[DPSOHRIZRUNLQJZLWKD&DOHQGDUREMHFW
      DW
R-DQ  EDVHG
&DOHQGDUF &DOHQGDUJHW,QVWDQFH  6HWWLPHWWKHPRQWKLV]HUR
1RWLFH
FVHW  
&RQYHUWWKLVWR DELJRO·
V
ORQJGD\ FJHW7LPH,Q0LOOLV  DPRXQWRIPLOOLVHFRQG
GD\   
$GGDQKRXU·VZRUWKRIPLOOLVWKHQXSGDWHWKHWLPH
FVHW7LPH,Q0LOOLV GD\  1RWLFHWKH´ µLW·VOLNHGD\ GD\ 
6\VWHPRXWSULQWOQ ³QHZKRXU³FJHW F+285B2)B'$< 
FDGG F'$7(  $GGGD\VWRWKHGDWHZKLFK
VKRXOGPRYHXVLQWR)HEUXDU\
6\VWHPRXWSULQWOQ ³DGGGD\V³FJHW7LPH 
FUROO F'$7( 
´5ROOµGD\VRQWRWKLVGDWH7KLV
6\VWHPRXWSULQWOQ ³UROOGD\V³FJHW7LPH  ´UROOVµWKHGDWHDKHDGGD\VEXW
'2(6127FKDQJHWKHPRQWK 
FVHW F'$7( 
6\VWHPRXWSULQWOQ ³VHWWR³FJHW7LPH  :H·UHQRWLQ
GRLQJD´VHWµFURIHPWHQWLQJKHUHMXVW
KHGDWH
)LOH(GLW:LQGRZ+HOS7LPH)OLHV

QHZKRXU
DGGGD\V:HG)HE067 7KLVRXWSXWFRQILUPVKRZPLOOLV
UROOGD\V7XH)HE067 DGGUROODQGVHWZRUN
VHWWR6XQ)HE067

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&DOHQGDU$3,

0QOPTQOP\[WN\PM+ITMVLIZ)81
7EJUSTWORKEDTHROUGHUSINGAFEWOFTHElELDSAND
METHODSINTHE#ALENDARCLASS4HISISABIG!0) SO
WERESHOWINGONLYAFEWOFTHEMOSTCOMMONlELDS
ANDMETHODSTHATYOULLUSE/NCEYOUGETAFEWOF
THESEITSHOULDBEPRETTYEASYTOBENDTHERESTOFTHE
THIS!0)TOYOURWILL

+EY#ALENDAR-ETHODS

ADDINTlELD INTAMOUNT NDAR SFIELD


!DDSORSUBTRACTSTIMEFROMTHECALE

GETINTlELD
DARFIELD
2ETURNSTHEVALUEOFTHEGIVENCALEN

GET)NSTANCE
ALOCALE
2ETURNSA#ALENDAR YOUCANSPECIFY
+EY#ALENDAR&IE
GET4IME)N-ILLIS LD S
LONG
2ETU RNSTHIS#ALENDARSTIMEINMILLIS ASA
$!4%$!9?/&?
-/.4(
ROLLINTlELD BOOLEANUP 'ETSETTHEDAYO
FMONTH
INGLARGERFIELDS
!DDSORSUBTRACTSTIMEWITHOUTCHANG
(/52(/52?/
&?$!9
SETINTlELD INTVALUE 'ETSETTHEHO
URORHOURVALUE
IELD
3ETSTHEVALUEOFAGIVEN#ALENDARF 
-),,)3%#/.$
TE ALLINTS
SETYEAR MONTH DAY HOUR MINU 'ETSETTHEMILLI
SECONDS
MPLETETIME
!COMMONVARIETYOFSETTOSETACO
-).54%
SET4IME)N-ILLISLONGMILLIS 'ETSETTHEMINU
TE
NGMILLI TIME
3ETSA#ALENDARSTIMEBASEDONALO
-/.4(
MORE 'ETSETTHEMON
TH
9%!2
'ETSETTHEYEAR
:/.%?/&&3%4
'ETSETRAWOFFSE
TOF'-4INMILLIS
MORE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

-^MVUWZM;\I\QK[ [\I\QKQUXWZ\[
.EWTO*AVAAREALMIXEDBLESSING3OMEPEOPLELOVE
THISIDEA SOMEPEOPLEHATEIT3TATICIMPORTSEXISTONLYTOSAVE
YOUSOMETYPING)FYOUHATETOTYPE YOUMIGHTJUSTLIKETHIS
FEATURE4HEDOWNSIDETOSTATICIMPORTSISTHAT IFYOURENOT
CAREFUL USINGTHEMCANMAKEYOURCODEALOTHARDERTOREAD
4HEBASICIDEAISTHATWHENEVERYOUREUSINGASTATICCLASS A
STATICVARIABLE ORANENUMMOREONTHOSELATER YOUCAN
IMPORTTHEM ANDSAVEYOURSELFSOMETYPING Use Carefully:
static imports can
6RPHROGIDVKLRQHGFRGH make your code
LPSRUWMDYDODQJ0DWK confusing to read
FODVV1R6WDWLF^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6\VWHPRXWSULQWOQ ³VTUW³0DWKVTUW  

6\VWHPRXWSULQWOQ ³WDQ³0DWKWDQ  


VHZKHUQWV
`
[  W R  X
WD R
` 7KHV\UQLQJVWDWLFLPS
GH F OD
6DPHFRGHZLWKVWDWLFLPSRUWV
LPSRUWVWDWLFMDYDODQJ6\VWHPRXW ;Yn]Ylk?gl[`Yk

LPSRUWVWDWLFMDYDODQJ0DWK  ƒ ,I\RX·UHRQO\JRLQJWRXVHDVWDWLFPHPEHU
DIHZWLPHVZHWKLQN\RXVKRXOGDYRLG
FODVV:LWK6WDWLF^ VWDWLFLPSRUWVWRKHOSNHHSWKHFRGHPRUH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ UHDGDEOH
ƒ ,I\RX·UHJRLQJWRXVHDVWDWLFPHPEHUDORW
RXWSULQWOQ ³VTUW³VTUW  
OLNHGRLQJORWVRI0DWKFDOFXODWLRQV WKHQ
RXWSULQWOQ ³WDQ³WDQ   LW·VSUREDEO\2.WRXVHWKHVWDWLFLPSRUW

` ƒ 1RWLFHWKDW\RXFDQXVHZLOGFDUGV  LQ


\RXUVWDWLFLPSRUWGHFODUDWLRQ
`
ƒ $ELJLVVXHZLWKVWDWLFLPSRUWVLVWKDWLW·V
QRWWRRKDUGWRFUHDWHQDPLQJFRQIOLFWV)RU
6WDWLFLPSRUWVLQDFWLRQ H[DPSOHLI\RXKDYHWZRGLIIHUHQWFODVVHV
ZLWKDQ´DGG µPHWKRGKRZZLOO\RXDQG
WKHFRPSLOHUNQRZZKLFKRQHWRXVH"

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWDWLFYVLQVWDQFH

<WVQOP\¼[<ITS")VQV[\IVKM^IZQIJTM
\ISM[KPMIX[PW\[I\I[\I\QK^IZQIJTM

1V[\IVKM>IZQIJTM ;\I\QK>IZQIJTM
)DONTEVENKNOWWHYWEREDOINGTHIS
%VERYONEKNOWSSTATICVARIABLESAREJUSTUSED
FORCONSTANTS!NDHOWMANYOFTHOSEARE
THERE)THINKTHEWHOLE!0)MUSTHAVE WHAT
FOUR!NDITSNOTLIKEANYBODYEVERUSES
THEM

9OUREALLYSHOULDCHECKYOURFACTS7HEN
WASTHELASTTIMEYOULOOKEDATTHE!0))TS
FRICKINLOADEDWITHSTATICS)TEVENHASENTIRE
CLASSESDEDICATEDTOHOLDINGCONSTANTVALUES
4HERESACLASSCALLED3WING#ONSTANTS FOR
EXAMPLE THATSJUSTFULLOFTHEM
&ULLOFIT9EAH YOUCANSAYTHATAGAIN/+
SOTHEREAREAFEWINTHE3WINGLIBRARY BUT
EVERYBODYKNOWS3WINGISJUSTASPECIALCASE )TMIGHTBEASPECIALCASE BUTITSAREALLY
IMPORTANTONE!NDWHATABOUTTHE#OLOR
CLASS7HATAPAINIFYOUHADTOREMEMBERTHE
2'"VALUESTOMAKETHESTANDARDCOLORS"UT
THECOLORCLASSALREADYHASCONSTANTSDElNED
FORBLUE PURPLE WHITE RED ETC6ERYHANDY

/K BUTBESIDESAFEW'5)THINGS GIVEMEAN
EXAMPLEOFJUSTONESTATICVARIABLETHATANYONE
WOULDACTUALLYUSE)NTHEREALWORLD (OWS3YSTEMOUTFORSTARTERS4HEOUTIN
3YSTEMOUTISASTATICVARIABLEOFTHE3YSTEM
CLASS9OUPERSONALLYDONTMAKEANEW
INSTANCEOFTHE3YSTEM YOUJUSTASKTHE3YSTEM
CLASSFORITSOUTVARIABLE
7ELL THATSANOTHERSPECIALCASE!NDNOBODY
USESTHATEXCEPTFORDEBUGGINGANYWAY
/H LIKEDEBUGGINGISNTIMPORTANT
!NDHERESSOMETHINGTHATPROBABLYNEVER
CROSSEDYOURNARROWMINDˆLETSFACEIT STATIC
VARIABLESAREMOREEFlCIENT/NEPERCLASS
INSTEADOFONEPERINSTANCE4HEMEMORY
SAVINGSMIGHTBEHUGE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

1V[\IVKM>IZQIJTM ;\I\QK>IZQIJTM
5M ARENTYOUFORGETTINGSOMETHING
7HAT
3TATICVARIABLESAREABOUTASUN //ASITGETS
'EEWHYNOTJUSTGOTAKEAGIANTBACKWARDS
STEPANDDOSOMEPROCEDURALPROGRAMMING
WHILEWEREATIT
7HATDOYOUMEANUN //
9OURELIKEAGLOBALVARIABLE ANDANY
PROGRAMMERWORTHHIS0$!KNOWSTHATS
USUALLYA"AD4HING
)AM./4AGLOBALVARIABLE4HERESNOSUCH
THING)LIVEINACLASS4HATSPRETTY//YOU
KNOW A#,!33)MNOTJUSTSITTINGOUTTHERE
INSPACESOMEWHERE)MANATURALPARTOFTHE
STATEOFANOBJECTTHEONLYDIFFERENCEISTHAT
)MSHAREDBYALLINSTANCESOFACLASS6ERY
EFlCIENT
9EAHYOULIVEINACLASS BUTTHEYDONTCALL
IT#LASS /RIENTEDPROGRAMMING4HATSJUST
STUPID9OUREARELIC3OMETHINGTOHELPTHE
OLD TIMERSMAKETHELEAPTOJAVA !LRIGHTJUSTSTOPRIGHTTHERE4(!4IS
DElNITELYNOTTRUE3OMESTATICVARIABLESARE
ABSOLUTELYCRUCIALTOASYSTEM!NDEVENTHE
ONESTHATARENTCRUCIALSUREAREHANDY

7ELL /+ EVERYONCEINAWHILESURE ITMAKES


SENSETOUSEASTATIC BUTLETMETELLYOU ABUSE
OFSTATICVARIABLESANDMETHODS ISTHEMARK
OFANIMMATURE//PROGRAMMER!DESIGNER
SHOULDBETHINKINGABOUTOBJECTSTATE NOTCLASS
STATE 7HYDOYOUSAYTHAT!NDWHATSWRONGWITH
STATICMETHODS

3TATICMETHODSARETHEWORSTTHINGSOFALL
BECAUSEITUSUALLYMEANSTHEPROGRAMMERIS
THINKINGPROCEDURALLYINSTEADOFABOUTOBJECTS
DOINGTHINGSBASEDONTHEIRUNIQUEOBJECT 3URE )KNOWTHATOBJECTSSHOULDBETHEFOCUS
STATE OFAN//DESIGN BUTJUSTBECAUSETHEREARE
SOMECLUELESSPROGRAMMERSOUTTHEREDONT
THROWTHEBABYOUTWITHTHEBYTECODE4HERES
ATIMEANDPLACEFORSTATICS ANDWHENYOU
NEEDONE NOTHINGELSEBEATSIT
2IIIIIIGHT7HATEVERYOUNEEDTOTELLYOURSELF
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EHWKHFRPSLOHU

"%THECOMPILER
7KH-DYDILOHRQWKLVSDJHUHSUHVHQWVD
1dQ^OU_Q FRPSOHWHSURJUDP<RXUMRELVWRSOD\
FRPSLOHUDQGGHWHUPLQHZKHWKHUWKLV
ILOHZLOOFRPSLOH,ILWZRQ·WFRPSLOH
KRZZRXOG\RXIL[LWDQG
LILWGRHVFRPSLOHZKDW
FODVV6WDWLF6XSHU^
ZRXOGEHLWVRXWSXW"
VWDWLF^
6\VWHPRXWSULQWOQ ´VXSHUVWDWLFEORFNµ 
`

6WDWLF6XSHU^ )FITCOMPILES WHICHOFTHESEIS
6\VWHPRXWSULQWOQ THEOUTPUT
´VXSHUFRQVWUXFWRUµ 
` 0OSSIBLE/UTPUT
` )LOH(GLW:LQGRZ+HOS&OLQJ
MDYD6WDWLF7HVWV
VWDWLFEORFN
SXEOLFFODVV6WDWLF7HVWVH[WHQGV6WDWLF6XSHU^
LQPDLQ
VWDWLFLQWUDQG
VXSHUVWDWLFEORFN
VXSHUFRQVWUXFWRU
VWDWLF^
FRQVWUXFWRU
UDQG  LQW  0DWKUDQGRP   
6\VWHPRXWSULQWOQ ´VWDWLFEORFN´UDQG 
`

6WDWLF7HVWV ^ 0OSSIBLE/UTPUT
6\VWHPRXWSULQWOQ ´FRQVWUXFWRUµ  )LOH(GLW:LQGRZ+HOS(OHFWULFLW\
` MDYD6WDWLF7HVWV
VXSHUVWDWLFEORFN
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ VWDWLFEORFN
LQPDLQ
6\VWHPRXWSULQWOQ ´LQPDLQµ 
VXSHUFRQVWUXFWRU
6WDWLF7HVWVVW QHZ6WDWLF7HVWV 
FRQVWUXFWRU
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

1dQ^OU_Q 4HISCHAPTEREXPLOREDTHEWONDERFUL STATIC WORLD


OF*AVA9OURJOBISTODECIDEWHETHEREACHOFTHE
FOLLOWINGSTATEMENTSISTRUEORFALSE

&=[^N X[ /JU\N'
4OUSETHE-ATHCLASS THElRSTSTEPISTOMAKEANINSTANCEOFIT

9OUCANMARKACONSTRUCTORWITHTHEVWDWLFKEYWORD

3TATICMETHODSDONTHAVEACCESSTOINSTANCEVARIABLESTATEOFTHE@THISOBJECT

)TISGOODPRACTICETOCALLASTATICMETHODUSINGAREFERENCEVARIABLE

3TATICVARIABLESCOULDBEUSEDTOCOUNTTHEINSTANCESOFACLASS

#ONSTRUCTORSARECALLEDBEFORESTATICVARIABLESAREINITIALIZED

-!8?3):%WOULDBEAGOODNAMEFORASTATIClNALVARIABLE

!STATICINITIALIZERBLOCKRUNSBEFOREACLASSSCONSTRUCTORRUNS

)FACLASSISMARKEDlNAL ALLOFITSMETHODSMUSTBEMARKEDlNAL

!lNALMETHODCANONLYBEOVERRIDDENIFITSCLASSISEXTENDED

4HEREISNOWRAPPERCLASSFORBOOLEANPRIMITIVES

!WRAPPERISUSEDWHENYOUWANTTOTREATAPRIMITIVELIKEANOBJECT

4HEPARSE8XXMETHODSALWAYSRETURNA3TRING

&ORMATTINGCLASSESWHICHAREDECOUPLEDFROM)/ AREINTHEJAVAFORMAT
PACKAGE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRGHPDJQHWV

Lunar Code Magnets


4HISONEMIGHTACTUALLYBEUSEFUL)NADDITIONTOWHATYOUVELEARNEDINTHELASTFEW
PAGESABOUTMANIPULATINGDATES YOULLNEEDALITTLEMOREINFORMATION&IRST FULL
MOONSHAPPENEVERYDAYSORSO3ECOND THEREWASAFULLMOONON*ANTH
9OURJOBISTORECONSTRUCTTHECODESNIPPETSTOMAKEAWORKING*AVAPROGRAM
THATPRODUCESTHEOUTPUTLISTEDBELOWPLUSMOREFULLMOONDATES 9OUMIGHTNOT
NEEDALLOFTHEMAGNETS ANDADDALLTHECURLYBRACESYOUNEED /H BYTHEWAY YOUR
OUTPUTWILLBEDIFFERENTIFYOUDONTLIVEINTHEMOUNTAINTIMEZONE

ORQJGD\ FJHW7LPH,Q0LOOLV 
FVHW  

HPRXW
MDYDODQJ6\VW
LPSRUWVWDWLF

Licensed by
  
VWDWLFLQW'$<B,0 

³IXOOPRRQRQWF´F 
FIRUPDW
&DOHQGDU

Eduard Simons
F QHZ
&DOHQ GDU 
V^
FODVV)XOO0RRQ

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

104038 GD\  '$<B,0  

IRU LQW[ [[ ^


VWDWLFL
QW'$<B,
0 
   

SULQWOQ

LPSRUWMDYDLR


³IXOOPRRQRQW´F

LPSRUWMDYDXWLO
 

VWDWLFLPSRUWMDYDODQJ6\VWHPRXW

FVHW   RXWSULQWOQ


)LOH(GLW:LQGRZ+HOS+RZO

MDYD)XOO0RRQV FVHW7L
PH,Q0LOO
LV GD\
IXOOPRRQRQ)UL)HE067  6WULQJIRUPDW
IXOOPRRQRQ6DW0DU067
IXOOPRRQRQ0RQ$SU0'7 &DOHQGDUF &DOHQGDUJHW,QVWDQFH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QXPEHUVDQGVWDWLFV

%XERCISE3OLUTIONS 7UXHRU)DOVH

4OUSETHE-ATHCLASS THElRSTSTEPISTO )DOVH


MAKEANINSTANCEOFIT
9OUCANMARKACONSTRUCTORWITHTHEKEY )DOVH
WORD@STATIC
3TATICMETHODSDONTHAVEACCESSTOAN 7UXH
OBJECTSINSTANCEVARIABLES
)TISGOODPRACTICETOCALLASTATICMETHOD )DOVH
USINGAREFERENCEVARIABLE
3TATICVARIABLESCOULDBEUSEDTOCOUNTTHE 7UXH
"%THECOMPILER INSTANCESOFACLASS
#ONSTRUCTORSARECALLEDBEFORESTATICVARI )DOVH

6WDWLF6XSHU  ^
ABLESAREINITIALIZED
6\VWHPRXWSULQWOQ -!8?3):%WOULDBEAGOODNAMEFORA 7UXH
´VXSHUFRQVWUXFWRUµ  STATIClNALVARIABLE
` !STATICINITIALIZERBLOCKRUNSBEFOREACLASSS 7UXH
CONSTRUCTORRUNS
6WDWLF6XSHULVDFRQVWUXFWRUDQGPXVW )FACLASSISMARKEDlNAL ALLOFITSMETHODS )DOVH
KDYH  LQLWVVLJQDWXUH1RWLFHWKDWDV
WKHRXWSXWEHORZGHPRQVWUDWHVWKHVWDWLF MUSTBEMARKEDlNAL
EORFNVIRUERWKFODVVHVUXQEHIRUHHLWKHU !lNALMETHODCANONLYBEOVERRIDDENIF )DOVH
RIWKHFRQVWUXFWRUVUXQ
ITSCLASSISEXTENDED
4HEREISNOWRAPPERCLASSFORBOOLEAN )DOVH
0OSSIBLE/UTPUT PRIMITIVES
)LOH(GLW:LQGRZ+HOS&OLQJ !WRAPPERISUSEDWHENYOUWANTTOTREATA 7UXH
MDYD6WDWLF7HVWV
PRIMITIVELIKEANOBJECT
VXSHUVWDWLFEORFN
VWDWLFEORFN 4HEPARSE8XXMETHODSALWAYSRETURNA )DOVH
LQPDLQ 3TRING
VXSHUFRQVWUXFWRU &ORMATTINGCLASSESWHICHAREDECOUPLED )DOVH
FRQVWUXFWRU
FROM)/ AREINTHEJAVAFORMATPACKAGE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRGHPDJQHWVVROXWLRQ

%XERCISE3OLUTIONS

.OTESONTHE,UNAR#ODE-AGNET
LPSRUWMDYDXWLO 
9OUMIGHTDISCOVERTHATAFEWOFTHE
LPSRUWVWDWLFMDYDODQJ6\VWHPRXW DATESPRODUCEDBYTHISPROGRAMARE
FODVV)XOO0RRQV^ OFFBYADAY4HISASTRONOMICALSTUFF
ISALITTLETRICKY ANDIFWEMADEIT
VWDWLFLQW'$<B,0     PERFECT ITWOULDBETOOCOMPLEXTO
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ MAKEANEXERCISEHERE

&DOHQGDUF &DOHQGDUJHW,QVWDQFH  (INTONEPROBLEMYOUMIGHTTRYTO


SOLVEISBASEDONDIFFERENCESINTIME
FVHW  
ZONES#ANYOUSPOTTHEISSUE
ORQJGD\ FJHW7LPH,Q0LOOLV 

IRU LQW[ [[ ^

GD\  '$<B,0 

FVHW7LPH,Q0LOOLV GD\ 

RXWSULQWOQ 6WULQJIRUPDW ³IXOOPRRQRQWF´F 

`

`



)LOH(GLW:LQGRZ+HOS+RZO

MDYD)XOO0RRQV
IXOOPRRQRQ)UL)HE067
IXOOPRRQRQ6DW0DU067
IXOOPRRQRQ0RQ$SU0'7

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

5LVN\%HKDYLRU
6XUHLW·VULVN\
EXW,FDQKDQGOHLWLI
VRPHWKLQJJRHVZURQJ

6WXII KDSSHQV7KHILOHLVQ·WWKHUH7KHVHUYHULVGRZQ.OMATTERHOW
GOODAPROGRAMMERYOUARE YOUCANTCONTROLEVERYTHING4HINGSCANGOWRONG6ERYWRONG
7HENYOUWRITEARISKYMETHOD YOUNEEDCODETOHANDLETHEBADTHINGSTHATMIGHTHAPPEN
"UTHOWDOYOUKNOWWHENAMETHODISRISKY!NDWHEREDOYOUPUTTHECODETOHANDLETHE
EXCEPTIONALSITUATION3OFARINTHISBOOK WEHAVENTREALLYTAKENANYRISKS7EVECERTAINLYHAD
THINGSGOWRONGATRUNTIME BUTTHEPROBLEMSWEREMOSTLYFLAWSINOUROWNCODE"UGS!ND
THOSEWESHOULDFIXATDEVELOPMENTTIME.O THEPROBLEM HANDLINGCODEWERETALKINGABOUT
HEREISFORCODETHATYOUCANTGUARANATEEWILLWORKATRUNTIME#ODETHATEXPECTSTHEFILETOBE
INTHERIGHTDIRECTORY THESERVERTOBERUNNING ORTHE4HREADTOSTAYASLEEP!NDWEHAVETODO
THISNOW"ECAUSEINTHISCHAPTER WEREGOINGTOBUILDSOMETHINGTHATUSESTHERISKY*AVA3OUND
!0)7EREGOINGTOBUILDA-)$)-USIC0LAYER

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EXLOGLQJWKH0,',0XVLF3OD\HU

4M\¼[UISMI5][QK5IKPQVM
/VERTHENEXTTHREECHAPTERS WELLBUILDAFEWDIFFERENTSOUND
APPLICATIONS INCLUDINGA"EAT"OX$RUM-ACHINE)NFACT
BEFORETHEBOOKISDONE WELLHAVEAMULTI PLAYERVERSIONSO
YOUCANSENDYOURDRUMLOOPSTOANOTHERPLAYER KINDOFLIKE
ACHATROOM9OUREGOINGTOWRITETHEWHOLETHING ALTHOUGH
YOUCANCHOOSETOUSE2EADY BAKECODEFORTHE'5)PARTS
/+ SONOTEVERY)4DEPARTMENTISLOOKINGFORANEW"EAT"OX
SERVER BUTWEREDOINGTHISTOLEARNMOREABOUT*AVA"UILDING
A"EAT"OXISJUSTAWAYTOHAVEFUNWHILEWERELEARNING*AVA
<PMNQVQ[PML*MI\*W`TWWS[[WUM\PQVOTQSM\PQ["

<RXPDNHDEHDWER[ORRS DE
E\SXWWLQJFKHFNPDUNVLQWKHER[HHDWGUXPSDWWHUQ 
V

V
R X U  P H VV D J HWKDWJHW HUV
\ RWKHUSOD\
GDQFHEHDW VHQWWRWKH\RXUFXUUHQW
DORQJZLWK UQZKHQ\RX
EHDWSDWWH µ
KLW´6HQG,W
$QG\JURRYH

&KULVJURRYHUHYLVHG
LQFRPLQJPH
RWKHUSOD\H VVDJHVIURP
1LJHOGDQFHEHDW

WRORDGWKH UV&OLFNRQH
JRHVZLWKLW SDWWHUQWKDW
¶6WDUW·WRS DQGWKHQFOLFN
OD\LW
0UTCHECKMARKSINTHEBOXESFOREACHOFTHE@BEATS&OREXAMPLE ONBEAT
OF THE"ASSDRUMANDTHE-ARACASWILLPLAY ONBEATNOTHING AND
ONBEATTHE-ARACASAND#LOSED(I (ATYOUGETTHEIDEA7HENYOUHIT
@3TART ITPLAYSYOURPATTERNINALOOPUNTILYOUHIT@3TOP!TANYTIME YOU
CANhCAPTUREvONEOFYOUROWNPATTERNSBYSENDINGITTOTHE"EAT"OXSERVER
WHICHMEANSANYOTHERPLAYERSCANLISTENTOIT 9OUCANALSOLOADANYOFTHE
INCOMINGPATTERNSBYCLICKINGONTHEMESSAGETHATGOESWITHIT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

?M¼TT[\IZ\_Q\P\PMJI[QK[
/BVIOUSLYWEVEGOTAFEWTHINGSTOLEARNBEFORETHEWHOLE
PROGRAMISlNISHED INCLUDINGHOWTOBUILDA3WING'5) HOW
TOCONNECTTOANOTHERMACHINEVIANETWORKING ANDALITTLE)/
SOWECANSENDSOMETHINGTOTHEOTHERMACHINE
/HYEAH ANDTHE*AVA3OUND!0)4HATSWHEREWELLSTARTINTHIS
CHAPTER&ORNOW YOUCANFORGETTHE'5) FORGETTHENETWORKING
ANDTHE)/ ANDFOCUSONLYONGETTINGSOME-)$) GENERATED
0,',ILOH DWLRQ
SOUNDTOCOMEOUTOFYOURCOMPUTER!NDDONTWORRYIFYOU
, ILO H K DVLQIRUP OGEH
0,' RX
DONTKNOWATHINGABOUT-)$) ORATHINGABOUTREADINGOR DVRQJVK Q\
MAKINGMUSIC%VERYTHINGYOUNEEDTOLEARNISCOVEREDHERE DERXWKRZ LWGRHVQ·WKDYHD 
W I
9OUCANALMOSTSMELLTHERECORDDEAL SOD\HGEX GGDWD,W·VNLQGR
V RX Q Q V
DFWXDO PXVLFLQVWUXFWLR

<PM2I^I;W]VL)81 OLNHVKHHW USLDQR
H
IRUDSOD\
*AVA3OUNDISACOLLECTIONOFCLASSESANDINTERFACESADDEDTO
*AVASTARTINGWITHVERSION4HESEARENTSPECIALADD ONS
THEYREPARTOFTHESTANDARD*3%CLASSLIBRARY*AVA3OUNDISSPLIT
INTOTWOPARTS-)$)AND3AMPLED7EUSEONLY-)$)INTHIS
BOOK-)$)STANDSFOR-USICAL)NSTRUMENT$IGITAL)NTERFACE
HQW
,QVWUXP
ANDISASTANDARDPROTOCOLFORGETTINGDIFFERENTKINDSOF
ELECTRONICSOUNDEQUIPMENTTOCOMMUNICATE"UTFOR F D SD E OH
OUR"EAT"OXAPP YOUCANTHINKOF-)$)ASAKINDOF 0,',
SHEETMUSICTHATYOUFEEDINTOSOMEDEVICEYOUCANTHINK
OFLIKEAHIGH TECH@PLAYERPIANO)NOTHERWORDS -)$)
DATADOESNTACTUALLYINCLUDEANYSOUND BUTITDOES
INCLUDETHEINSTRUCTIONSTHATA-)$) READINGINSTRUMENT
CANPLAYBACK/RFORANOTHERANALOGY YOUCANTHINKOF 0,',GHYLFHNQRZVKRZWR
A-)$)lLELIKEAN(4-,DOCUMENT ANDTHEINSTRUMENT ¶UHDG·D0,',ILOHDQGSOD\EDFN
THATRENDERSTHE-)$)lLEIEPLAYSIT ISLIKETHE7EB WKHVRXQG7KHGHYLFHPLJKW
BROWSER EHDV\QWKHVL]HUNH\ERDUGRU
-)$)DATASAYSWHATTODOPLAYMIDDLE# ANDHERESHOWHARD 6SHDNHU VRPHRWKHUNLQGRILQVWUXPHQW
TOHITIT ANDHERESHOWLONGTOHOLDIT ETC BUTITDOESNTSAY 8VXDOO\D0,',LQVWUXPHQW
ANYTHINGATALLABOUTTHEACTUALSOUNDYOUHEAR-)$)DOESNT FDQSOD\D/27RIGLIIHUHQW
KNOWHOWTOMAKEAmUTE PIANO OR*IMMY(ENDRIXGUITAR VRXQGV SLDQRGUXPVYLROLQ
SOUND&ORTHEACTUALSOUND WENEEDANINSTRUMENTA-)$)
DEVICE THATCANREADANDPLAYA-)$)lLE"UTTHEDEVICEIS
HWF DQGDOODWWKHVDPHWLPH
USUALLYMORELIKEANENTIREBANDORORCHESTRAOFINSTRUMENTS!ND 6RD0,',ILOHLVQ·WOLNHVKHHW
THATINSTRUMENTMIGHTBEAPHYSICALDEVICE LIKETHEELECTRONIC PXVLFIRUMXVWRQHPXVLFLDQLQ
KEYBOARDSYNTHESIZERSTHEROCKMUSICIANSPLAY ORITCOULD WKHEDQGLWFDQKROGWKH
EVENBEANINSTRUMENTBUILTENTIRELYINSOFTWARE LIVINGINYOUR SDUWVIRU$//WKHPXVLFLDQV
COMPUTER SOD\LQJDSDUWLFXODUVRQJ
&OROUR"EAT"OX WEUSEONLYTHEBUILT IN SOFTWARE ONLY
INSTRUMENTTHATYOUGETWITH*AVA)TSCALLEDASYNTHESIZERSOME
FOLKSREFERTOITASASOFTWARESYNTH BECAUSEITCREATESSOUND
3OUNDTHATYOUHEAR
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EXWLWORRNHGVRVLPSOH

.QZ[\_MVMMLI;MY]MVKMZ
"EFOREWECANGETANYSOUNDTOPLAY WENEEDA3EQUENCEROBJECT4HE
SEQUENCERISTHEOBJECTTHATTAKESALLTHE-)$)DATAANDSENDSITTOTHERIGHT
INSTRUMENTS)TSTHETHINGTHATPLAYSTHEMUSIC!SEQUENCERCANDOALOTOF
DIFFERENTTHINGS BUTINTHISBOOK WEREUSINGITSTRICTLYASAPLAYBACKDEVICE,IKE
A#$ PLAYERONYOURSTEREO BUTWITHAFEWADDEDFEATURES4HE3EQUENCERCLASS
ISINTHEJAVAXSOUNDMIDIPACKAGEPARTOFTHESTANDARD*AVALIBRARYASOFVERSION
 3OLETSSTARTBYMAKINGSUREWECANMAKEORGET A3EQUENCEROBJECT

FNDJH
V R XQGPLGLSD
LPSRUWWKH  MDY D [ REMHFW,W·VWKH
:HQHHGD6HTXHQFHU HYLFHLQVWUXPHQW
LPSRUWMDYD[VRXQGPLGL 
,',G
SXEOLFFODVV0XVLF7HVW^ PDLQSDUWRIWKH0 LQJWKDWZHOO
·V WK H WK
ZH·UHXVLQJ,W

0 ,' ,LQIRUPDWLRQLQWR
VHTXHQFHVDOOWKH


SXEOLFYRLGSOD\ ^
·WPDNHDEUDQG
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU  D¶VRQJ·%XWZHGRQ KDYHWRDVNWKH
ZH

QHZRQHRXUVHOYHV RQH
V
6\VWHPRXWSULQWOQ ³:HJRWDVHTXHQFHU´  0LGL6\VWHPWRJLYHX
`FORVHSOD\

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0XVLF7HVWPW QHZ0XVLF7HVW 
PWSOD\ 
`FORVHPDLQ
`FORVHFODVV ;WUM\PQVO¼[_ZWVO
7KLVFRGHZRQ·WFRPSLOH7KHFRPSLOHUVD\VWKHU
H·VDQ
¶XQUHSRUWHGH[FHSWLRQ·WKDWPXVWEHFDXJKWRUGHF
ODUH G
)LOH(GLW:LQGRZ+HOS6D\:KDW"

MDYDF0XVLF7HVWMDYD
0XVLF7HVWMDYDXQUHSRUWHGH[FHSWLRQMDYD[VRXQGPLGL
0LGL8QDYDLODEOH([FHSWLRQPXVWEHFDXJKWRUGHFODUHGWREH
WKURZQ
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
A
HUURUV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

?PI\PIXXMV[_PMVIUM\PWLaW]_IV\\WKITT
XZWJIJTaQVIKTI[[aW]LQLV¼\_ZQ\MQ[ZQ[Sa'
VPHWKR
ZU L W H WXVH GV
KD LQ

W
 /HW·VVD\\RXZDQW
WRFDOODPHWKRGLQD FODVV&RZ^
FODVV%DU^ YRLGPRR ^

FODVVWKDW\RXGLGQ·W YRLGJR ^
PRR 
`
LI VHUYHU'RZQ ^
H[SORGH 
`
`
LQWVWXII ^

ZULWH
`
[EHHS 
`
`

\RXUFRGH FODVV\RX
\RX GLGQ·WZULWH

 7KDWPHWKRGGRHV FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^
YRLGPRR ^
H[SORGH 

VRPHWKLQJULVN\ `
`
`
LI VHUYHU'RZQ ^
VRPHWKLQJWKDWPLJKW 
H[SORGH 
QRWZRUNDWUXQWLPH FODVV\RX
`
GLGQ·WZULWH `

0\PRR 
,ZRQGHULI PHWKRGZLOO
WKDWPHWKRG H[SORGHLIWKH
 <RXQHHGWRNQRZ VHUYHULVGRZQ
FRXOGEORZXS
WKDWWKHPHWKRG
\RX·UHFDOOLQJLV FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^

ULVN\ H[SORGH 
`
`
`

FODVV\RX
GLGQ·WZULWH
\RX
1RZWKDW,
NQRZ,FDQWDNH
SUHFDXWLRQV

ZULWHVDIHO
 <RXWKHQZULWHFRGH \
WKDWFDQKDQGOHWKH
IDLOXUHLILWGRHV FODVV%DU^
YRLGJR ^
WU\^
PRR 

KDSSHQ<RXQHHGWREH `FDWFK 0;P ^


FU\ 
`
`

SUHSDUHGMXVWLQFDVH `

\RXUFRGH
\RX

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQWKLQJVPLJKWJRZURQJ

5M\PWL[QV2I^I][MM`KMX\QWV[\W\MTT\PMKITTQVOKWLM
¹;WUM\PQVO*IL0IXXMVML1NIQTMLº

*AVASEXCEPTION HANDLINGMECHANISMISACLEAN WELL LIGHTEDWAYTOHANDLEhEXCEPTIONAL


SITUATIONSvTHATPOPUPATRUNTIMEITLETSYOUPUTALLYOURERROR HANDLINGCODEINONE
EASY TO READPLACE)TSBASEDONYOUKNOWINGTHATTHEMETHODYOURECALLINGISRISKY
IETHATTHEMETHODMIGHTGENERATEANEXCEPTION SOTHATYOUCANWRITECODETODEAL
WITHTHATPOSSIBILITY)FYOUKNOWYOUMIGHTGETANEXCEPTIONWHENYOUCALLAPARTICULAR
METHOD YOUCANBEPREPAREDFORˆPOSSIBLYEVENRECOVERFROMˆTHEPROBLEMTHATCAUSED
THEEXCEPTION
3O HOWDOYOUKNOWIFAMETHODTHROWSANEXCEPTION9OUlNDAWKURZVCLAUSEINTHE
RISKYMETHODSDECLARATION

7KHJHW6HTXHQFHU PHWKRGWDNHVDULVN,WFDQIDLODWUXQWLPH
6RLWPXVW¶GHFODUH·WKHULVN\RXWDNHZKHQ\RXFDOOLW

7KH$3,GRFVWHOO\RX
WKDWJHW6HTXHQFHU 
FDQWKURZDQH[FHSWLRQ
0LGL8QDYDLODEOH([FHSWLRQ
$PHWKRGKDVWRGHFODUH
WKHH[FHSWLRQVLWPLJKW
WKURZ

7KLVSDUWWHOOV\R
X:+(1\RXPLJKW
H[FHSWLRQLQW JHWWKDW
KLVFDVHEHFDXVHR
UHVWULFWLRQV ZKLFK I UHVRXUFH
FRXOGMXVWPHDQVWK
LVDOUHDG\EHLQJXV HVHTXHQFHU
HG 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

6WSd5a_b[^
Wd
;]`ai;Æ_
fS][`YSd[e]ZW
<PMKWUXQTMZVMML[\WSVW_ Va`ÆfkagfZ[`][ dWTgf
fÆeiadfZ[f1I
\PI\A7=SVW_aW]¼ZMKITTQVO eZag^V;Va1 ZSf
IZQ[SaUM\PWL e[Y`WVYWW]k
[`IS[][][
)FYOUWRAPTHERISKYCODEINSOMETHINGCALLEDA
WU\FDWFK THECOMPILERWILLRELAX
!TRYCATCHBLOCKTELLSTHECOMPILERTHATYOU 6WSdYWW]k
KNOWANEXCEPTIONALTHINGCOULDHAPPENINTHE
METHODYOURECALLING ANDTHATYOUREPREPARED >[XW[eeZadf
TOHANDLEIT4HATCOMPILERDOESNTCAREHOWYOU WebWU[S^^ka`fZ
WZWSb 
HANDLEITITCARESONLYTHATYOUSAYYOURETAKING
CAREOFIT
FS]WfZWd[e] 
fZ[`YeVa`Æfiad
fdk
[f 4gf\gef[`
USeW
LPSRUWMDYD[VRXQGPLGL  S`kbdaT^W_eTW
]agfTWegdWfa
XadWS^^ZW^^TdWS
USfUZ
SXEOLFFODVV0XVLF7HVW^
]e^aaeW
SXEOLFYRLGSOD\ ^

 WU\^ KLQJ


6HTXHQFHUVHTXHQFHU 0LGL6\VWHP
JHW6HTXHQFHU 
 SXWWKHULVN\WN
6\VWHPRXWSULQWOQ ³6XFFHVVIXOO\JRWDVHTXHQFHU´  LQD¶WU\·EORF
 `FDWFK 0LGL8QDYDLODEOH([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ ³%XPPHU´ 
`
`FORVHSOD\ PDNHD¶F
GRLIWK DWFK·EORFNIRU
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ KDSSHQV HH[FHSWLRQDOVLW ZKDWWR
0XVLF7HVWPW QHZ0XVLF7HVW  0LGL8QD LQRWKHUZRU XDWLRQ
E\WKHF YDLODEOH([FHSWLR GVD
PWSOD\  DOOWRJH Q
W6HTXHQF LVWKURZQ
`FORVHPDLQ HU 
`FORVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQVDUHREMHFWV

,·PJRQQD
75<WKLVULVN\WKLQJ
DQG,·PJRQQD
&$7&+P\VHOILI,IDOO

)VM`KMX\QWVQ[IVWJRMK\
Licensed by WN\aXM-`KMX\QWV

Eduard Simons
7HICHISFORTUNATE BECAUSEITWOULDBEMUCHHARDER
TOREMEMBERIFEXCEPTIONSWEREOFTYPE"ROCCOLI

2EMEMBERFROMYOURPOLYMORPHISMCHAPTERSTHAT
ANOBJECTOFTYPE%XCEPTIONCANBEANINSTANCEOFANY

104038
SUBCLASSOF%XCEPTION

"ECAUSEAN%XCEPTIONISANOBJECT WHATYOUCATCHISAN
'RQ¶WWU\WKLVDWKRPH
OBJECT)NTHEFOLLOWINGCODE THEFDWFKARGUMENT
ISDECLAREDASTYPE%XCEPTION ANDTHEPARAMETER
REFERENCEVARIABLEISEX
7KURZDEOH
JHW0HVVDJH WU\^
J
SULQW6WDFN7UDFH NHGHFODULQ
GRULVN\WKLQJ LW·VMXVWOLDUJXPHQW
HSWLRQ
3DUWRIWKH([F KH\DOO DPHWKRG
FODVVKLHUDUFK\7RZDEOH `FDWFK ([FHSWLRQH[ ^
H[WHQGFODVV7KUNH\ ([FHSWLRQ

DQGLQKHULWWZR WU\WRUHFRYHU
PHWKRGV ` 7KLVFRG
([FHSWLR HRQO\UXQVLIDQ
QLVWKURZ
Q
,2([FHSWLRQ ,QWHUUXSWHG([FHSWLRQ 7HATYOUWRITEINACATCHBLOCKDEPENDSONTHE
EXCEPTIONTHATWASTHROWN&OREXAMPLE IFASERVER
ISDOWNYOUMIGHTUSETHECATCHBLOCKTOTRYANOTHER
SERVER)FTHElLEISNTTHERE YOUMIGHTASKTHEUSER
FORHELPlNDINGIT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

1NQ\¼[aW]ZKWLM\PI\KI\KPM[\PMM`KMX\QWV
\PMV_PW[MKWLM\PZW_[Q\' KU
RZV
DQH[FHSWLR

QE
DF

W
N
9OULLSPENDMUCHMOREOFYOUR*AVACODINGTIMEHANDLING
EXCEPTIONSTHANYOULLSPENDCREATINGANDTHROWINGTHEMYOURSELF FODVV&RZ^
FODVV%DU^ YRLGPRR ^

&ORNOW JUSTKNOWTHATWHENYOURCODECALLSARISKYMETHODˆA YRLGJR ^ LI VHUYHU'RZQ ^


H[SORGH 


PRR 
` `
`

METHODTHATDECLARESANEXCEPTIONˆITSTHERISKYMETHODTHAT LQWVWXII ^
[EHHS 
` FDOOVULVN\PHWKRG
`

`
THROWSTHEEXCEPTIONBACKTOYOU THECALLER
\RXUFRGH FODVVZLWKD
)NREALITY ITMIGHTBEYOUWHOWROTEBOTHCLASSES)TREALLY
ULVN\PHWKRG
DOESNTMATTERWHOWRITESTHECODEWHATMATTERSISKNOWING
WHICHMETHODTHROWSTHEEXCEPTIONANDW HICHMETHODCATCHESIT
7HENSOMEBODYWRITESCODETHATCOULDTHROWANEXCEPTION THEY
MUSTDECLARETHEEXCEPTION
E\
6 7  W H OO  W KHZRUOG HSWLRQ
G08 DG([ F
 5LVN\H[FHSWLRQWKURZLQJFRGH WKLVPHWKR WKDWLWWKURZVD%
GHFODULQJ 
SXEOLFYRLGWDNH5LVN WKURZV%DG([FHSWLRQ^ One method will
LI DEDQGRQ$OO+RSH ^
WKURZQHZ%DG([FHSWLRQ  catch what another
`
FUHDWH method throws. An
`
REMHFW DQHZ([FHSWLR exception is always
DQGWKU
RZLW Q
thrown back to the
caller.
The method that
 <RXUFRGHWKDWFDOOVWKHULVN\PHWKRG
throws has to declare
SXEOLFYRLGFURVV)LQJHUV ^
WU\^
that it might throw
DQ2EMHFWWDNH5LVN  the exception.
`FDWFK %DG([FHSWLRQH[ ^ 
6\VWHPRXWSULQWOQ ³$DDUJK´  ,I\RXFDQ·WUHFRYHUIURP
WK
H[SULQW6WDFN7UDFH  JHWDVWDFNWUDFHXVLQJWKH HH[FHSWLRQDW/($67
SU
` WKDWDOOH[FHSWLRQVLQKHULW LQW6WDFN7UDFH PHWKRG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FKHFNHGDQGXQFKHFNHGH[FHSWLRQV

7KHFRPSLOHUFKHFNVIRUHYHU\WKLQJ
H[FHSW5XQWLPH([FHSWLRQV
([FHSWLRQVWKDWDUH127VXEFODVVHVRI 7KHFRPSLOHUJXDUDQWHHV
5XQWLPH([FHSWLRQDUHFKHFNHGIRUE\
WKHFRPSLOHU7KH\·UHFDOOHG´FKHFNHG )FYOUTHROWANEXCEPTIONINYOURCODEYOUMUSTDECLAREITUSING

THETHROWSKEYWORDINYOURMETHODDECLARATION
H[FHSWLRQVµ
([FHSWLRQ  )FYOUCALLAMETHODTHATTHROWSANEXCEPTIONINOTHERWORDS
AMETHODTHATDECLARESITTHROWSANEXCEPTION YOUMUST
ACKNOWLEDGETHATYOUREAWAREOFTHEEXCEPTIONPOSSIBILITY
/NEWAYTOSATISFYTHECOMPILERISTOWRAPTHECALLINATRYCATCH
4HERESASECONDWAYWELLLOOKATALITTLELATERINTHISCHAPTER

E\WKH
,2([FHSWLRQ ,QWHUUXSWHG([FHSWLRQ 5XQWLPH([FHSWLRQ
P H( [F HS WL RQ V DUH127FKHFNHGULVHKHUH 
5XQWL NQRZQDV ELJVX
US

FRPSLOHU7KH\·UH WLRQVµ<RXFDQWKURZFDWFK
HS
´XQFKHFNHGH[F WLPH([FHSWLRQVEXW\RXGRQ ·W
DQGGHFODUH5XQ FRPSLOHUZRQ·WFKHFN
KDYHWRDQGWKH
&ODVV&DVW([FHSWLRQ 1XOO3RLQWHU([FHSWLRQ

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7AITJUSTAMINUTE(OWCOMETHISISTHE&)234TIME
WEVEHADTOTRYCATCHAN%XCEPTION7HATABOUTTHE
Q: )LLBITE7(9DOESNTTHECOMPILERCAREABOUTTHOSE
RUNTIMEEXCEPTIONS!RENTTHEYJUSTASLIKELYTOBRINGTHE
EXCEPTIONS)VEALREADYGOTTENLIKE.ULL0OINTER%XCEPTION WHOLESHOWTOASTOP
ANDTHEEXCEPTIONFOR$IVIDE"Y:ERO)EVENGOTA
.UMBER&ORMAT%XCEPTIONFROMTHE)NTEGERPARSE)NT
METHOD(OWCOMEWEDIDNTHAVETOCATCHTHOSE A: -OST2UNTIME%XCEPTIONSCOMEFROMAPROBLEMIN
YOURCODELOGIC RATHERTHANACONDITIONTHATFAILSATRUNTIME
INWAYSTHATYOUCANNOTPREDICTORPREVENT9OUCANNOT
A: 4HECOMPILERCARESABOUTALLSUBCLASSESOF%XCEPTION
UNLESSTHEYAREASPECIALTYPE 2UNTIME%XCEPTION!NY
GUARANTEETHEFILEISTHERE9OUCANNOTGUARANTEETHESERVER
ISUP"UTYOUCANMAKESUREYOURCODEDOESNTINDEXOFFTHE
EXCEPTIONCLASSTHATEXTENDS2UNTIME%XCEPTIONGETSA ENDOFANARRAYTHATSWHATTHELENGTHATTRIBUTEISFOR 
FREEPASS2UNTIME%XCEPTIONSCANBETHROWNANYWHERE 9OU7!.42UNTIME%XCEPTIONSTOHAPPENATDEVELOPMENT
WITHORWITHOUTTHROWSDECLARATIONSORTRYCATCHBLOCKS ANDTESTINGTIME9OUDONTWANTTOCODEINATRYCATCH FOR
4HECOMPILERDOESNTBOTHERCHECKINGWHETHERAMETHOD EXAMPLE ANDHAVETHEOVERHEADTHATGOESWITHIT TOCATCH
DECLARESTHATITTHROWSA2UNTIME%XCEPTION ORWHETHERTHE SOMETHINGTHATSHOULDNTHAPPENINTHEFIRSTPLACE
CALLERACKNOWLEDGESTHATTHEYMIGHTGETTHATEXCEPTIONAT
RUNTIME !TRYCATCHISFORHANDLINGEXCEPTIONALSITUATIONS NOTFLAWS
INYOURCODE5SEYOURCATCHBLOCKSTOTRYTORECOVERFROM
SITUATIONSYOUCANTGUARANTEEWILLSUCCEED/RATTHEVERY
LEAST PRINTOUTAMESSAGETOTHEUSERANDASTACKTRACE SO
SOMEBODYCANFIGUREOUTWHATHAPPENED

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

:MDD=LHGAFLK
ƒ $PHWKRGFDQWKURZDQH[FHSWLRQZKHQVRPHWKLQJIDLOVDWUXQWLPH
ƒ $QH[FHSWLRQLVDOZD\VDQREMHFWRIW\SH([FHSWLRQ :KLFKDV\RX
UHPHPEHUIURPWKHSRO\PRUSKLVPFKDSWHUVPHDQVWKHREMHFWLVIURPD
FODVVWKDWKDV([FHSWLRQVRPHZKHUHXSLWVLQKHULWDQFHWUHH 
ƒ 7KHFRPSLOHUGRHV127SD\DWWHQWLRQWRH[FHSWLRQVWKDWDUHRI
W\SH5XQWLPH([FHSWLRQ$5XQWLPH([FHSWLRQGRHVQRWKDYHWREH
GHFODUHGRUZUDSSHGLQDWU\FDWFK DOWKRXJK\RX·UHIUHHWRGRHLWKHURU
ERWKRIWKRVHWKLQJV
ƒ $OO([FHSWLRQVWKHFRPSLOHUFDUHVDERXWDUHFDOOHG¶FKHFNHG
H[FHSWLRQV·ZKLFKUHDOO\PHDQVFRPSLOHUFKHFNHGH[FHSWLRQV2QO\ YQ`MO[SZU`Ub Q `U\
5XQWLPH([FHSWLRQVDUHH[FOXGHGIURPFRPSLOHUFKHFNLQJ$OORWKHU PHWKLQJQHZ
WROHDUQVR
H[FHSWLRQVPXVWEHDFNQRZOHGJHGLQ\RXUFRGHDFFRUGLQJWRWKH ,I\RX·UHWU\LQJ WROHDUQ
H OD VWWKLQJ\RXWU\
PDNHWKDWWK H\RXSXWWKLV
UXOHV VOHHS6RRQF
EHIRUHJRLQJWR X FD Q WHDU\RXUVHOI
XPLQJ\R
ƒ $PHWKRGWKURZVDQH[FHSWLRQZLWKWKHNH\ZRUGWKURZIROORZHGE\ ERRNGRZQ DVV LQ JHOVHPRUH
RQ·WUHDGDQ\WK
DQHZH[FHSWLRQREMHFW DZD\IURPLW G FN R ID & KHHULRVŒ
WKHED
FKDOOHQJLQJWKDQ S UR FHVVZKDW
WKURZQHZ1R&DIIHLQH([FHSWLRQ  UE UD LQ QHHGVWLPHWR
ER [ <RX RXOGWDNH
OHDUQHG7KDWF
\RX·YHUHDGDQG YH V RPHWKLQJ
ƒ 0HWKRGVWKDWPLJKWWKURZDFKHFNHGH[FHSWLRQPXVWDQQRXQFHLWZLWK \RXWU\WRVKR
DIHZKRXUV,I DVRPHRIWKH
DWKURZV([FHSWLRQGHFODUDWLRQ WRSRI\RXU-DY
QHZLQULJKWRQ
¶VWLFN·
ƒ ,I\RXUFRGHFDOOVDFKHFNHGH[FHSWLRQWKURZLQJPHWKRGLWPXVW -DYDPLJKWQRW
WOHDUQLQJ
GRHVQ·WUXOHRX
UHDVVXUHWKHFRPSLOHUWKDWSUHFDXWLRQVKDYHEHHQWDNHQ 2IFRXUVHWKLV \ RX UODWHVW
:RUNLQJRQ
DSK\VLFDOVNLOO . LFN %R [LQ JURXWLQH
ƒ ,I\RX·UHSUHSDUHGWRKDQGOHWKHH[FHSWLRQZUDSWKHFDOOLQDWU\FDWFK %DOOURR P
IIHFW\RXU
DQGSXW\RXUH[FHSWLRQKDQGOLQJUHFRYHU\FRGHLQWKHFDWFKEORFN SUREDEO\ZRQ·WD
-DYDOHDUQLQJ
ƒ ,I\RX·UHQRWSUHSDUHGWRKDQGOHWKHH[FHSWLRQ\RXFDQVWLOOPDNHWKH XOWVUHDGWKLV
)RUWKHEHVWUHV
VWORRNDW
FRPSLOHUKDSS\E\RIILFLDOO\¶GXFNLQJ·WKHH[FHSWLRQ:H·OOWDONDERXW ERRN RUDWOHD
WKH SL FW XU HV U LJKWEHIRUH
GXFNLQJDOLWWOHODWHULQWKLVFKDSWHU
JRLQJWRV OH HS 

6KDUSHQ \RXU SHQFLO


4HINGSYOUWANTTODO 7HATMIGHTGOWRONG

??CONNECTTOAREMOTESERVER WKHVHUYHULVGRZQ
??????????????????????????????????
7HICHOFTHESEDOYOUTHINK
MIGHTTHROWANEXCEPTIONTHAT ??ACCESSANARRAYBEYONDITSLENGTH ??????????????????????????????????
THECOMPILERWOULDCAREABOUT ??DISPLAYAWINDOWONTHESCREEN ??????????????????????????????????
7EREONLYLOOKINGFORTHE
THINGSTHATYOUCANTCONTROLIN ??RETRIEVEDATAFROMADATABASE ??????????????????????????????????
YOURCODE7EDIDTHElRSTONE ??SEEIFATEXTlLEISWHEREYOUTHINKITIS ??????????????????????????????????
"ECAUSEITWASTHEEASIEST ??CREATEANEWlLE ??????????????????????????????????
??READACHARACTERFROMTHECOMMAND LINE ??????????????????????????????????

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQVDQGIORZFRQWURO

.TW_KWV\ZWTQV\ZaKI\KPJTWKS[
7HENYOUCALLARISKYMETHOD ONEOFTWOTHINGSCANHAP
PEN4HERISKYMETHODEITHERSUCCEEDS ANDTHETRYBLOCK
COMPLETES ORTHERISKYMETHODTHROWSANEXCEPTIONBACKTO
YOURCALLINGMETHOD

,IWKHWU\VXFFHHGV
GR5LVN\7KLQJ GRHVQRW
WKURZDQH[FHSWLRQ
WU\^
)RRI
 [GR5LVN\7KLQJ  7KHFRGHFN LQWKH
LQWE IJHW1XP  FDWFK E OR QHYHU
ORFNUXQV UXQV
)LUVWWKHWU\E ORZWKH  )LOH(GLW:LQGRZ+HOS5LVN$OO
EH
WKHQWKHFRGH `FDWFK ([FHSWLRQH[ ^ MDYD7HVWHU
FDWFKUXQV 6\VWHPRXWSULQWOQ ³IDLOHG´  :HPDGHLW
`
 6\VWHPRXWSULQWOQ ³:HPDGHLW´ 

,IWKHWU\IDLOV
EHFDXVHGR5LVN\7KLQJ 
Y
EORFNQHJ
GRHVWKURZDQH[FHSWLRQ
W K H W U \ LQ
RI G7K
WU\^ 7KHUHVWZKLFKLVD*RRKHWU\
V W
HUUXQ WKHUHVWRI XFFHVVRI
WKH )RRI [GR5LVN\7KLQJ 
NUXQVEXW KURZV

 W U \  E OR F EHFDXVH SHQGVRQWKHV N\7KLQJ 
7KH LVN\7KLQJ
W LQWE IJHW1XP  GH WRGR5LV
FDOOWRGR5 QVRWKHUHVWRI  WKHFDOO
DQH[FHSWLR FNGRHVQ·WUXQ `FDWFK ([FHSWLRQH[ ^ )LOH(GLW:LQGRZ+HOS5LVN$OO

WKHWU\EOR HQ  MDYD7HVWHU


FNUXQVWK
6\VWHPRXWSULQWOQ ³IDLOHG´ 
F D W F K  E OR
7KH VRQ ` IDLOHG
GFRQWLQXH
WKHPHWKR  6\VWHPRXWSULQWOQ ³:HPDGHLW´  :HPDGHLW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

.QVITTa"NWZ\PM\PQVO[aW]_IV\
\WLWVWUI\\MZ_PI\
)FYOUTRYTOCOOKSOMETHING YOUSTARTBYTURNINGON $UH\RXVXUH 1RPDWWHUZKDWGR127OHW
THEOVEN \RXZDQWWRWU\ PHIRUJHWWRWXUQRIIWKH
)FTHETHINGYOUTRYISACOMPLETEFAILURE WKLV" RYHQ/DVWWLPH,WRUFKHGKDOI
YOUHAVETOTURNOFFTHEOVEN WKHQHLJKERUKRRG

)FTHETHINGYOUTRYSUCCEEDS
YOUHAVETOTURNOFFTHEOVEN
9OUHAVETOTURNOFFTHEOVENNOMATTERWHAT

$ÀQDOO\EORFNLVZKHUH\RXSXW
FRGHWKDWPXVWUXQUHJDUGOHVV
RIDQH[FHSWLRQ

WU\^
WXUQ2YHQ2Q 
[EDNH 
`FDWFK %DNLQJ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`¿QDOO\^
WXUQ2YHQ2II 
`
,IWKHWU\EORFNIDLOV DQH[FHSWLRQ IORZ
7ITHOUTlNALLY YOUHAVETOPUTTHE
TURN/VEN/FF INBOTHTHETRYANDTHECATCH FRQWUROLPPHGLDWHO\PRYHVWRWKHFDWFKEORFN
BECAUSEYOUHAVETOTURNOFFTHEOVENNOMATTER :KHQWKHFDWFKEORFNFRPSOHWHVWKHILQDOO\
WHAT!lNALLYBLOCKLETSYOUPUTALLYOUR EORFNUXQV:KHQWKHILQDOO\EORFNFRPSOHWHV
IMPORTANTCLEANUPCODEINONEPLACEINSTEADOF WKHUHVWRI WKHPHWKRGFRQWLQXHVRQ
DUPLICATINGITLIKETHIS

WU\^ ,IWKHWU\EORFNVXFFHHGV QRH[FHSWLRQ 


IORZFRQWUROVNLSVRYHUWKHFDWFKEORFNDQG
WXUQ2YHQ2Q 
PRYHVWRWKHILQDOO\EORFN:KHQWKHILQDOO\
[EDNH 
EORFNFRPSOHWHVWKHUHVWRI WKHPHWKRG
WXUQ2YHQ2II 
FRQWLQXHVRQ
`FDWFK %DNLQJ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
,IWKHWU\RUFDWFKEORFNKDVDUHWXUQ
WXUQ2YHQ2II  VWDWHPHQWÀQDOO\ZLOOVWLOOUXQ)ORZ
` MXPSVWRWKHILQDOO\WKHQEDFNWRWKHUHWXUQ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IORZFRQWUROH[HUFLVH

6KDUSHQ \RXU SHQFLO


,OOKATTHECODETOTHELEFT7HATDOYOUTHINKTHE

&LOW#ONTROL OUTPUTOFTHISPROGRAMWOULDBE7HATDOYOUTHINK
ITWOULDBEIFTHETHIRDLINEOFTHEPROGRAMWERE
CHANGEDTO6WULQJWHVW ´\HVµ
!SSUME3CARY%XCEPTIONEXTENDS%XCEPTION

SXEOLFFODVV7HVW([FHSWLRQV^
/UTPUTWHENWHVW ´QRµ

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6WULQJWHVW ´QRµ
WU\^
6\VWHPRXWSULQWOQ ´VWDUWWU\µ 
GR5LVN\ WHVW 
6\VWHPRXWSULQWOQ ´HQGWU\µ 
`FDWFK 6FDU\([FHSWLRQVH ^
6\VWHPRXWSULQWOQ ´VFDU\H[FHSWLRQµ 
`ÀQDOO\^
6\VWHPRXWSULQWOQ ´ÀQDOO\µ 
`
6\VWHPRXWSULQWOQ ´HQGRIPDLQµ 
`
/UTPUTWHENWHVW ´\HVµ

VWDWLFYRLGGR5LVN\ 6WULQJWHVW WKURZV6FDU\([FHSWLRQ^


6\VWHPRXWSULQWOQ ´VWDUWULVN\µ 
LI ´\HVµHTXDOV WHVW ^

WKURZQHZ6FDU\([FHSWLRQ 
`
6\VWHPRXWSULQWOQ ´HQGULVN\µ 
UHWXUQ
`
`

7HENTESThYESvSTARTTRY STARTRISKY SCARYEXCEPTION lNALLY ENDOFMAIN


7HENTESThNOvSTARTTRY STARTRISKY ENDRISKY ENDTRY lNALLY ENDOFMAIN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

,QL_MUMV\QWV\PI\IUM\PWLKIV
\PZW_UWZM\PIVWVMM`KMX\QWV'
!METHODCANTHROWMULTIPLEEXCEPTIONSIFITDARNWELLNEEDSTO"UT
AMETHODSDECLARATIONMUSTDECLAREALLTHECHECKEDEXCEPTIONSITCAN
THROWALTHOUGHIFTWOORMOREEXCEPTIONSHAVEACOMMONSUPERCLASS THE
METHODCANDECLAREJUSTTHESUPERCLASS

+I\KPQVOU]T\QXTMM`KMX\QWV[
4HECOMPILERWILLMAKESURETHATYOUVEHANDLEDALLTHECHECKEDEXCEP
TIONSTHROWNBYTHEMETHODYOURECALLING3TACKTHECATCHBLOCKSUNDER
THETRY ONEAFTERTHEOTHER3OMETIMESTHEORDERINWHICHYOUSTACKTHE
CATCHBLOCKSMATTERS BUTWELLGETTOTHATALITTLELATER

SXEOLFFODVV/DXQGU\^
SXEOLFYRLGGR/DXQGU\ WKURZV3DQWV([FHSWLRQ
/LQJHULH([FHSWLRQ^

FRGHWKDWFRXOGWKURZHLWKHUH[FHSWLRQ
FRX QW¶HP
`
HW K R G GHFODUHVWZR
7KLVP
` SWLRQV
7:2H[FH

SXEOLFFODVV)RR^
SXEOLFYRLGJR ^
/DXQGU\ODXQGU\ QHZ/DXQGU\  LIGR/DXQGU\ WKURZVD
3DQWV([FHSWLRQLWODQGVLQWKH
WU\^
3DQWV([FHSWLRQFDWFKEORFN
ODXQGU\GR/DXQGU\ 
`FDWFK 3DQWV([FHSWLRQSH[ ^
UHFRYHU\FRGH

`FDWFK /LQJHULH([FHSWLRQOH[ ^
WKURZVD
UHFRYHU\FRGH LIGR/DXQGU\ LRQLWODQGVLQWKH
SW
` /LQJHULH([FH LRQFDWFKEORFN
SW
` /LQJHULH([FH
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SRO\PRUSKLFH[FHSWLRQV

-`KMX\QWV[IZMXWTaUWZXPQK
%XCEPTIONSAREOBJECTS REMEMBER4HERESNOTHINGALLTHAT
DYH
SPECIALABOUTONE EXCEPTTHATITISATHINGTHATCANBETHROWN $OOH[FHSWLRQVK
3OLIKEALLGOODOBJECTS %XCEPTIONSCANBEREFERREDTO ([FHSWLRQ ([FHSWLRQDVD
POLYMORPHICALLY!,INGERIE%XCEPTIONOBJECT FOREXAMPLE VXSHUFODVV
COULDBEASSIGNEDTOA#LOTHING%XCEPTIONREFERENCE!
0ANTS%XCEPTIONCOULDBEASSIGNEDTOAN%XCEPTIONREFERENCE
9OUGETTHEIDEA4HEBENElTFOREXCEPTIONSISTHATAMETHOD
DOESNTHAVETOEXPLICITLYDECLAREEVERYPOSSIBLEEXCEPTIONIT
MIGHTTHROWITCANDECLAREASUPERCLASSOFTHEEXCEPTIONS
3AMETHINGWITHCATCHBLOCKSˆYOUDONTHAVETOWRITEACATCH ,2([FHSWLRQ &ORWKLQJ([FHSWLRQ
FOREACHPOSSIBLEEXCEPTIONASLONGASTHECATCHORCATCHES
YOUHAVECANHANDLEANYEXCEPTIONTHROWN

 <RXFDQ'(&/$5(H[FHSWLRQVXVLQJ
DVXSHUW\SHRIWKHH[FHSWLRQV\RX
WKURZ
3DQWV([FHSWLRQ /LQJHULH([FHSWLRQ 6KLUW([FHSWLRQ

SXEOLFYRLGGR/DXQGU\ WKURZV&ORWKLQJ([FHSWLRQ^

'HFODULQJD&OR
WK
DQ\VXEFODVVRI LQJ([FHSWLRQOHWV\RXWKURZ 7HH6KLUW([FHSWLRQ
'UHVV6KLUW([FHSWLRQ
&ORWKLQJ([FHSWL
GR/DXQGU\ FDQ RQ7KDWPHDQV
W 
/LQJHULH([FHSWL KURZD3DQWV([FHSWLRQ
RQ7HH6KLUW([F
'UHVV6KLUW([FHS HS
WLRQZLWKRXWH[S WLRQDQG
LQGLYLGXDOO\ OLFLWO\GHFODULQJ
WKHP

 <RXFDQ&$7&+H[FHSWLRQVXVLQJD
VXSHUW\SHRIWKHH[FHSWLRQWKURZQ
QO\
FDQFDWFKR[FHSWLRQDQG
Q\ 7HH6KLUW( ([FHSWLRQ
FDQFDWFKD HSWLRQ
WU\^ WU\^
( [ F 'UHVV6KLUW
ODXQGU\GR/DXQGU\  &ORWKLQJ ODXQGU\GR/DXQGU\ 
VXEFODVV

`FDWFK &ORWKLQJ([FHSWLRQFH[ ^ `FDWFK 6KLUW([FHSWLRQVH[ ^


UHFRYHU\FRGH UHFRYHU\FRGH
` `
 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

-XVWEHFDXVH\RX&$1FDWFKHYHU\WKLQJ
ZLWKRQHELJVXSHUSRO\PRUSKLFFDWFK
GRHVQ·WDOZD\VPHDQ\RX6+28/'
9OUCOULDWRITEYOUREXCEPTION HANDLINGCODESOTHAT
YOUSPECIFYONLYONECATCHBLOCK USINGTHESUPERTYPE
%XCEPTIONINTHECATCHCLAUSE SOTHATYOULLBEABLETO
CATCHANYEXCEPTIONTHATMIGHTBETHROWN

WU\^
ODXQGU\GR/DXQGU\ 
`FDWFK ([FHSWLRQH[ ^ LOO
RP : + $ 7 " 7 KLVFDWFKEORFNZ
UHFRYHU\FRGH5HFRYHU\IU RXZRQ·W
WF K $1 < D QG D OOH[FHSWLRQVVR\ 
FD QJ
`
ZZKDWZHQWZUR

DXWRPDWLFDOO\NQR

:ULWHDGLIIHUHQWFDWFKEORFNIRUHDFK
H[FHSWLRQWKDW\RXQHHGWRKDQGOH
XQLTXHO\
&OREXAMPLE IFYOURCODEDEALSWITHORRECOVERS
FROM A4EE3HIRT%XCEPTIONDIFFERENTLYTHANITHANDLESA
,INGERIE%XCEPTION WRITEACATCHBLOCKFOREACH"UTIFYOU
TREATALLOTHERTYPESOF#LOTHING%XCEPTIONINTHESAMEWAY
THENADDA#LOTHING%XCEPTIONCATCHTOHANDLETHEREST

WU\^
ODXQGU\GR/DXQGU\ 

DQG
H 6 KLU W ([FHSWLRQV HHGGLIIHUHQW
`FDWFK 7HH6KLUW([FHSWLRQWH[ ^ 7H [FHSWLRQV
Q
XVH
UHFRYHU\IURP7HH6KLUW([FHSWLRQ /LQJHULH( RGHVR\RXVKRXOG
F
UHFRYHU\ FDWFKEORFNV
W
GLIIHUHQ
`FDWFK /LQJHULH([FHSWLRQOH[ ^
UHFRYHU\IURP/LQJHULH([FHSWLRQ

$OORWKHU&ORWK
LQ
`FDWFK &ORWKLQJ([FHSWLRQFH[ ^ DUHFDXJKWKHUH J([FHSWLRQV
UHFRYHU\IURPDOORWKHUV
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RUGHURI PXOWLSOHFDWFKEORFNV

5]T\QXTMKI\KPJTWKS[U][\JMWZLMZML &ORWKLQJ([FHSWLRQ
NZWU[UITTM[\\WJQOOM[\
DUH
LU W ( [ F HSWLRQV RWKHU
7HH6K KHUHEXWQR
FDXJKW QVZLOOILW
H[FHSWLR
FDWFK 7HH6KLUW([FHSWLRQWH[

Licensed by
3DQWV([FHSWLRQ /LQJHULH([FHSWLRQ 6KLUW([FHSWLRQ 8QLIRUP([FHSWLRQ

ZLOO
K LU W ( [ FHSWLRQV DOO
7HH6 HWKHUHEXW 
QHYHUJ KLUW([FHSWLRQ KHUH

Eduard Simons
RWKHU6 HVDUHFDXJKW
VXEFODVV 7HH6KLUW([FHSWLRQ 'UHVV6KLUW([FHSWLRQ

FDWFK 6KLUW([FHSWLRQVH[

104038
SWLRQV 4HEHIGHERUPTHEINHERITANCETREE THEBIGGERTHE
 & OR W K LQJ([FH DOWKRXJK CATCH@BASKET!SYOUM
OVEDOWNTHEINHERITANCE
$OO KWKHUH

G
DUHFDXJ W([FHSWLRQDQ YHU
TREE TOWARDMOREANDMORESPECIALIZED%XCEPTION
6 K LU
7HH FHSWLRQZLO OQ H CLASSES THECATCH@BASKETISSMALLER)TSJUSTPLAINOLD
6KLUW([ IDU POLYMORPHISM
JHWWKLV !3HIRT%XCEPTIONCATCHISBIGENOUGHTOTAKE
A4EE3HIRT%XCEPTIONORA$RESS3HIRT%XCEPTION
ANDANYFUTURESUBCLASSOFANYTHINGTHATEXTENDS
3HIRT%XCEPTION !#LOTHING%XCEPTIONISEVENBIGGER
FDWFK &ORWKLQJ([FHSWLRQFH[ IETHEREAREMORETHINGSTHATCANBEREFERENCED
USINGA#LOTHING%XCEPTIONTYPE )TCANTAKEAN
EXCEPTIONOFTYPE#LOTHING%XCEPTIONDUH AND
ANY#LOTHING%XCEPTIONSUBCLASSES0ANTS%XCEPTION
5NIFORM%XCEPTION ,INGERIE%XCEPTION AND
3HIRT%XCEPTION4HEMOTHEROFALLCATCHARGUMENTS
ISTYPE%XCEPTIONITWILLCATCHANYEXCEPTION
INCLUDINGRUNTIMEUNCHECKED EXCEPTIONS SOYOU
PROBABLYWONTUSEITOUTSIDEOFTESTING

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

AW]KIV¼\X]\JQOOMZJI[SM\[
IJW^M[UITTMZJI[SM\[
7ELL YOUCANBUTITWONTCOMPILE#ATCH
BLOCKSARENOTLIKEOVERLOADEDMETHODS
WHERETHEBESTMATCHISPICKED7ITHCATCH
BLOCKS THE*6-SIMPLYSTARTSATTHElRSTONE
ANDWORKSITSWAYDOWNUNTILITlNDSACATCH
THATSBROADENOUGHINOTHERWORDS HIGH
ENOUGHONTHEINHERITANCETREE TOHANDLE 6L]HPDWWHUVZKHQ
THEEXCEPTION)FYOURlRSTCATCHBLOCKIS \RXKDYHPXOWLSOHFDWFK
FDWFK ([FHSWLRQH[ THECOMPILER EORFNV7KHRQHZLWKWKHELJJHVW
KNOWSTHERESNOPOINTINADDINGANY EDVNHWKDVWREHRQWKHERWWRP
2WKHUZLVHWKHRQHVZLWK
OTHERSˆTHEYLLNEVERBEREACHED
VPDOOHUEDVNHWVDUHXVHOHVV

RWKLV
'RQ·WG

WU\^
ODXQGU\GR/DXQGU\ 

`FDWFK &ORWKLQJ([FHSWLRQFH[ ^
UHFRYHU\IURP&ORWKLQJ([FHSWLRQ

`FDWFK /LQJHULH([FHSWLRQOH[ ^
UHFRYHU\IURP/LQJHULH([FHSWLRQ

Siblings can be in any order, because they


canÕt catch one anotherÕs exceptions.

9OUCOULDPUT3HIRT%XCEPTIONABOVE
`FDWFK 6KLUW([FHSWLRQVH[ ^
,INGERIE%XCEPTIONANDNOBODYWOULDMIND
UHFRYHU\IURP6KLUW([FHSWLRQ "ECAUSEEVENTHOUGH3HIRT%XCEPTIONISABIGGER
` BROADER TYPEBECAUSEITCANCATCHOTHERCLASSES
ITSOWNSUBCLASSES 3HIRT%XCEPTIONCANTCATCHA

,INGERIE%XCEPTIONSOTHERESNOPROBLEM

 \RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SRO\PRUSKLFSX]]OH

!SSUMETHETRYCATCHBLOCKHEREISLEGALLYCODED9OURTASKISTODRAW
6KDUSHQ \RXU SHQFLO TWODIFFERENTCLASSDIAGRAMSTHATCANACCURATELYREmECTTHE%XCEPTION
CLASSES)NOTHERWORDS WHATCLASSINHERITANCESTRUCTURESWOULDMAKETHE
TRYCATCHBLOCKSINTHESAMPLECODELEGAL

WU\^
[GR5LVN\ 
`FDWFK $OSKD([D ^
UHFRYHU\IURP$OSKD([
`FDWFK %HWD([E ^
UHFRYHU\IURP%HWD([
`FDWFK *DPPD([F ^
UHFRYHU\IURP*DPPD([
`FDWFK 'HOWD([G ^
UHFRYHU\IURP'HOWD([
`

9OURTASKISTOCREATETWODIFFERENTLEGALTRYCATCHSTRUCTURESSIMILARTO
THEONEABOVELEFT TOACCURATELYREPRESENTTHECLASSDIAGRAMSHOWNON
THELEFT!SSUME!,,OFTHESEEXCEPTIONSMIGHTBETHROWNBYTHEMETHOD
%D]([ WITHTHETRYBLOCK

)RR([

%DU([ %LII([

%RLQN([

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

?PMVaW]LWV¼\_IV\\WPIVLTM
IVM`KMX\QWV

MXVWGXFNLW :KDWWKH"
7KHUHLV12ZD\,·P
FDWFKLQJWKDWWKLQJ,·PJHWWLQ·
RXWRIWKHZD\VRPHERG\
EHKLQGPHFDQKDQGOHLW
,I\RXGRQ·WZDQWWRKDQGOHDQ
H[FHSWLRQ\RXFDQGXFNLWE\
GHFODULQJLW
7HENYOUCALLARISKYMETHOD THECOMPILER
NEEDSYOUTOACKNOWLEDGEIT-OSTOFTHETIME
THATMEANSWRAPPINGTHERISKYCALLINATRY
CATCH"UTYOUHAVEANOTHERALTERNATIVE SIMPLY
DUCKITANDLETTHEMETHODTHATCALLEDYOUCATCH
THEEXCEPTION
)TSEASYˆALLYOUHAVETODOISDECLARETHAT
YOUTHROWTHEEXCEPTIONS%VENTHOUGH
TECHNICALLY YOUARENTTHEONEDOINGTHE
THROWING ITDOESNTMATTER9OURESTILLTHEONE
LETTINGTHEEXCEPTIONWHIZRIGHTONBY
"UTIFYOUDUCKANEXCEPTION THENYOUDONT
HAVEATRYCATCH SOWHATHAPPENSWHENTHE
RISKYMETHODDO,AUNDRY DOESTHROWTHE
EXCEPTION
7HENAMETHODTHROWSANEXCEPTION THAT
METHODISPOPPEDOFFTHESTACKIMMEDIATELY
ANDTHEEXCEPTIONISTHROWNTOTHENEXT
METHODDOWNTHESTACKˆTHECALLER"UTIFTHE
CALLERISADUCKER THENTHERESNOCATCHFORITSO
THECALLERPOPSOFFTHESTACKIMMEDIATELY AND
THEEXCEPTIONISTHROWNTOTHENEXTMETHOD
ANDSOONWHEREDOESITEND9OULLSEEA EXW
LITTLELATER
 5 ( $ //<WKURZLW FK
<RXGRQ·W Q·WKDYHDWU\FDW
R
SXEOLFYRLGIRR WKURZV5HDOO\%DG([FHSWLRQ^ VLQFH\RXG PHWKRG\RXFDOO
N\ Gµ
FDOOULVN\PHWKRGZLWKRXWDWU\FDWFK IRUWKHULV ZWKH´ULVN\PHWKR 
QR 8
<28DUH ZKRHYHUFDOOV<2
R Z 
ODXQGU\GR/DXQGU\  %HFDXVH ZLWKWKHH[FHSW Q
 Q LR
H D O
` KDVWRG
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KDQGOHRUGHFODUH

,]KSQVOJaLMKTIZQVOWVTa
LMTIa[\PMQVM^Q\IJTM

6RRQHURUODWHUVRPHERG\KDVWR
GHDOZLWKLW%XWZKDWLIPDLQ 
GXFNVWKHH[FHSWLRQ"
WLRQ
XF N W K HH[FHS ERG\WR
G R
SXEOLFFODVV:DVKHU^
HWKRGV KHUH·VQ
/DXQGU\ODXQGU\ QHZ/DXQGU\  %RWKP ODULQJLW VRW HVMXVWILQH
LO
E\GHF 7KLVFRPS
SXEOLFYRLGIRR WKURZV&ORWKLQJ([FHSWLRQ^ O H  LW
ODXQGU\GR/DXQGU\ 
KDQG
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV WKURZV&ORWKLQJ([FHSWLRQ^


:DVKHUD QHZ:DVKHU 
DIRR 
`
`

GR/DXQGU\ WKURZVD IRR GXFNVWKH PDLQ GXFNVWKH 7KH-90


 &ORWKLQJ([FHSWLRQ
 H[FHSWLRQ
 H[FHSWLRQ
 VKXWVGRZQ

GR/DXQGU\
IRR IRR
PDLQ PDLQ PDLQ
PDLQ FDOOVIRR GR/DXQGU\ SRSVRIIWKH IRR SRSVRIIWKH
VWDFNLPPHGLDWHO\DQG VWDFNLPPHGLDWHO\DQG
IRR FDOOVGR/DXQGU\
WKHH[FHSWLRQLVWKURZQ WKHH[FHSWLRQLVWKURZQ
GR/DXQGU\ LV EDFNWRIRR  EDFNWRZKR":KDW"
UXQQLQJDQGWKURZVD 7KHUH·VQRERG\OHIW
%XWIRR GRHVQ·WKDYHD
&ORWKLQJ([FHSWLRQ EXWWKH-90DQGLW·V
WU\FDWFKVR
WKLQNLQJ´'RQ·WH[SHFW
0(WRJHW\RXRXWRI
WKLVµ

:H¶UHXVLQJWKHWHHVKLUWWRUHSUHVHQWD&ORWKLQJ
([FHSWLRQ:HNQRZZHNQRZ\RXZRXOG
KDYHSUHIHUUHGWKHEOXHMHDQV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

+DQGOHRU'HFODUH,W·VWKHODZ
6RQRZZH·YHVHHQERWKZD\VWRVDWLVI\WKHFRPSLOHU
ZKHQ\RXFDOODULVN\ H[FHSWLRQWKURZLQJ PHWKRG

 +$1'/(
:UDSWKHULVN\FDOOLQDWU\FDWFK
7KLVKDGEHWWHUEHD
ELJ
WU\^ KDQGOHDOOH[FHSWLRQV HQRXJKFDWFKWR
ODXQGU\GR/DXQGU\  WKDWGR/DXQGU\ 
PLJKWWKURZ2UHOVH
WK
`FDWFK &ORWKLQJ([FHSWLRQFH[ ^ VWLOOFRPSODLQWKDW\ HFRPSLOHUZLOO
RX·UHQRWFDWFKLQJDOO
UHFRYHU\FRGH RIWKHH[FHSWLRQV
`


 '(&/$5( GXFNLW

RGWKURZVD KH
'HFODUHWKDW<285PHWKRGWKURZVWKHVDPHH[FHSWLRQV
DVWKHULVN\PHWKRG\RX·UHFDOOLQJ G U \ P HW K
7KHGR/DXQ WLRQEXWE\GHFODULQJW
HS
YRLGIRR WKURZV&ORWKLQJ([FHSWLRQ^ &ORWKLQJ([F IRR PHWKRGJHWVWR
KH
ODXQGU\GR/DXQGU\  H[FHSWLRQW SWLRQ1RWU\FDWFK
H H [ FH
` GXFNWK
%XWQRZWKLVPHDQVWKDWZKRHYHUFDOOVWKHIRR PHWKRG
KDVWRIROORZWKH+DQGOHRU'HFODUHODZ,IIRR GXFNV
WKHH[FHSWLRQ E\GHFODULQJLW DQGPDLQ FDOOVIRR WKHQ
PDLQ KDVWRGHDOZLWKWKHH[FHSWLRQ

SXEOLFFODVV:DVKHU^
/DXQGU\ODXQGU\ QHZ/DXQGU\ 

SXEOLFYRLGIRR WKURZV&ORWKLQJ([FHSWLRQ^
ODXQGU\GR/DXQGU\ 
` 7528%/(
H
R Q ·W  F R P SLOHDQGZHUURU
Z LRQ µ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
1RZPDLQX QUHSRUWHGH[FHSWFRQFHUQHG
:DVKHUD QHZ:DVKHU 
DQ ´
JHW DVWKHFRPSLOH VDQ U ·V 
DIRR 
` $VIDU PHWKRGWKURZ
` %HFDXVHWKHIRR PH WKRGGXFN WKHIRR Q
&ORWKLQJ([FHSWLRQWKURZQE VWKH H[FHSWLR
\GR/DXQGU\ 
PDLQ KDVWRZUDSDIRR
LQDWU\FDWFK
RUPDLQ KDVWRGHFODUHW
KDW
WKURZV&ORWKLQJ([FHSWLRQ LWWRR

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IL[LQJWKH6HTXHQFHUFRGH

/M\\QVOJIKS\WW]ZU][QKKWLM
.OWTHATYOUVECOMPLETELYFORGOTTEN WESTARTEDTHISCHAPTER
WITHAlRSTLOOKATSOME*AVA3OUNDCODE7ECREATEDA3E
QUENCEROBJECTBUTITWOULDNTCOMPILEBECAUSETHEMETHOD
-IDIGET3EQUENCER DECLARESACHECKEDEXCEPTION-IDI5NAVAIL
ABLE%XCEPTION "UTWECANlXTHATNOWBYWRAPPINGTHECALLINA

HTXHQFHU 
TRYCATCH
OO LQ J J H W6
FD WU\
1RSUREOHP H·YHZUDSSHGLWLQD
W Z
QRZWKD 
SXEOLFYRLGSOD\ ^
N
WU\^
FDWFKEORF
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
6\VWHPRXWSULQWOQ ³6XFFHVVIXOO\JRWDVHTXHQFHU´ 
7KHFDW
`FDWFK 0LGL8QDYDLODEOH([FHSWLRQH[ ^ WKH¶ULJ FKSDUDPHWHUK
K D
6\VWHPRXWSULQWOQ ³%XPPHU´  ¶FDWFK ) W·H[FHSWLRQ,I VWREH
FRGHZR LOH 1 RW)  ZHVDLG
` XOGQRW RXQG([FHSWLRQ 
PRUSKLF FRPSLOH I WKH
`FORVHSOD\ D
ZRQ·WI OO\D0LGL8QDY EHFDXVHSRO\ 
LWLQWRD LO
 5HPHPE )LOH1RW DEOH([FHSWLRQ
H )RXQG(
FDWFKE ULW·VQRWHQRX [FHSWLRQ

ORFN\ J K  W RKDYHD
WKLQJEH RXKDYH 
LQJWKUR WRFDWF
ZQ KWKH
-`KMX\QWV:]TM[

 <RXFDQQRWKDYHDFDWFKRUÀQDOO\  $WU\0867EHIROORZHGE\HLWKHUD
ZLWKRXWDWU\ FDWFKRUDÀQDOO\ /( *$/
YRLGJR ^ $/
127/(* WU\" WU\^ KDYHDI EHFDXVH\RX
LQ
)RRI QHZ)RR 
:KHUH·VW K H [GR6WXII  WKRXJKW DOO\HYHQ
KHUH·VQR
IIRRI  `¿QDOO\^ %XW\RX FDWFK
F
FDWFK )RR([FHSWLRQH[ ^` FOHDQXS WU\E\LW DQQRWKDYHD
` ` VHOI

 <RXFDQQRWSXWFRGHEHWZHHQWKH  $WU\ZLWKRQO\DÀQDOO\ QRFDWFK 


WU\DQGWKHFDWFK PXVWVWLOOGHFODUHWKHH[FHSWLRQ
(*$ 127/
FRGHEHWZH / <RXFDQ·WSXW
WU\^ YRLGJR WKURZV)RR([FHSWLRQ^
H K
WKHFDWFK QWKHWU\DQG RXWDFDWF
[GR6WXII  WU\^
[GR6WXII  $WU\ZLWK
`
LVI\WKH
LQW\  `¿QDOO\^` GRHVQ·WVDW HFODUHODZ
G
`FDWFK ([FHSWLRQH[ ^` ` KDQGOHRU
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

Code Kitchen

7KHUHLV12ZD\
%XWZK\GRQ·W ,·POHWWLQJ%HWW\ZLQWKH
\RXMXVWXVH FRGHRIIWKLV\HDUVR,·P
5HDG\EDNHFRGH" JRQQDPDNHLWP\VHOIIURP
VFUDWFK

You donÕt have to do it


yourself, but itÕs a lot
more fun if you do.
The rest of this chapter
is optional; you can use
Ready-bake code for all
the music apps.
But if you want to learn
more about JavaSound,
turn the page.

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
-DYD6RXQG0,',FODVVHV

5ISQVOIK\]IT[W]VL
2EMEMBERNEARTHEBEGINNINGOFTHECHAPTER WELOOKEDATHOW-)$)DATAHOLDS
THEINSTRUCTIONSFORWHATSHOULDBEPLAYEDANDHOWITSHOULDBEPLAYED ANDWE
ALSOSAIDTHAT-)$)DATADOESNTACTUALLYCREATEANYSOUNDTHATYOUHEAR&ORSOUND
TOCOMEOUTOFTHESPEAKERS THE-)$)DATAHASTOBESENTTHROUGHSOMEKINDOF
-)$)DEVICETHATTAKESTHE-)$)INSTRUCTIONSANDRENDERSTHEMINSOUND EITHER
BYTRIGGERINGAHARDWAREINSTRUMENTORA@VIRTUALINSTRUMENTSOFTWARESYNTHE
SIZER )NTHISBOOK WEREUSINGONLYSOFTWAREDEVICES SOHERESHOWITWORKSIN
*AVA3OUND

<RXQHHG)285WKLQJV

 7KHWKLQJWKDW  7KHPXVLFWREH  7KHSDUWRIWKH  7KHDFWXDOPXVLF


SOD\VWKHPXVLF SOD\HGDVRQJ 6HTXHQFHWKDW LQIRUPDWLRQ
KROGVWKHDFWXDO QRWHVWRSOD\
LQIRUPDWLRQ KRZORQJHWF

0LGL
SOD\V KDVD KROGV (YHQW
6HTXHQFHU 6HTXHQFH 7UDFN
0LGL
&ORTHISBOOK WEONLY (YHQW
NEEDONE4RACK SOJUST
IMAGINEAAMUSIC#$
WITHONLYONESONG!
SINGLE4RACK4HIS4RACK 0LGL
ISWHEREALLTHESONG (YHQW

4HE3EQUENCEISTHE DATA-)$)INFORMATION
SONG THEMUSICALPIECE LIVES
4HE3EQUENCERISTHETHING THATTHE3EQUENCERWILL 0LGL
THATACTUALLYCAUSESASONG PLAY&ORTHISBOOK THINK (YHQW
TOBEPLAYED4HINKOFITLIKE OFTHE3EQUENCEASA
AMUSIC#$PLAYER MUSIC#$ BUTTHEWHOLE !-)$)EVENTISAMESSAGE
#$PLAYSJUSTONESONG THATTHE3EQUENCERCAN
UNDERSTAND!-)$)EVENT
HDVD MIGHTSAYIFITSPOKE
 R I  W K H6HTXHQF 7KH %NGLISH h!TTHISMOMENT
N 
ERRNWKLQ QH7UDFN
)RUWKLV J&' KDVRQO\R OD\WKHVRQJ
INTIME PLAYMIDDLE# PLAY
ITTHISFASTANDTHISHARD
Q S
VLQJOHVR QDERXWKRZWR 7UDFNLVSDUW ANDHOLDITFORTHISLONGh
P D W LR  W K H
LQIRU
Q W K H 7 UDFNDQG !-)$)EVENTMIGHT
OLYHVR TXHQFH ALSOSAYSOMETHINGLIKE
H
RIWKH6 h#HANGETHECURRENT
INSTRUMENTTO&LUTEv

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

$QG\RXQHHG),9(VWHSV
 *HWD6HTXHQFHUDQGRSHQLW
6HTXHQFHUSOD\HU 0LGL6\VWHPJHW6HTXHQFHU 
SOD\HURSHQ 

 0DNHDQHZ6HTXHQFH
6HTXHQFHVHT QHZ6HTXHQFH WLPLQJ 

 *HWDQHZ7UDFNIURPWKH6HTXHQFH
7UDFNW VHTFUHDWH7UDFN 

 )LOOWKH7UDFNZLWK0LGL(YHQWVDQG
JLYHWKH6HTXHQFHWRWKH6HTXHQFHU
WDGG P\0LGL(YHQW 
SOD\HUVHW6HTXHQFH VHT  $KKKK:H
IRUJRWWRSXVKWKH
3/$<EXWWRQ<RXKDYHWR
VWDUW WKH6HTXHQFHU
8KKDWHWREUHDNLW
WR\RXEXWWKDW·VRQO\
)285VWHSV

SOD\HUVWDUW 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DVRXQGDSSOLFDWLRQ

AW]Z^MZaNQZ[\[W]VLXTIaMZIXX
4YPEITINANDRUNIT9OULLHEARTHESOUNDOFSOMEONEPLAYINGA
SINGLENOTEONAPIANO/+ MAYBENOTSOMEONE BUTSOMETHING

'RQ·WIRUJHWWRLP
LPSRUWMDYD[VRXQGPLGL  SRUWWKHPLGLSDF
NDJH
SXEOLFFODVV0LQL0LQL0XVLF$SS^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0LQL0XVLF$SSPLQL QHZ0LQL0LQL0XVLF$SS 
PLQLSOD\ 
`FORVHPDLQ
QLW

Licensed by
SXEOLFYRLGSOD\ ^
T X H Q F H U DQGRSH XHQFHU
JHWD6H QXVHLWD6HT Q
D
WU\^ VRZHF RPHDOUHDG\RSH
Q ·W F
6HTXHQFHUSOD\HU 0LGL6\VWHPJHW6HTXHQFHU  GRHV

Eduard Simons

SOD\HURSHQ 

 W K H D U J XPHQWVWRWKH N
DER XW  WKLQ

6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334  'RQ·WZRUU\ UXFWRU-XVWFRS\WKHVH
VW

6HTXHQFHFRQ \EDNHDUJXPHQWV 

104038
H DG
RI¶HPDV5

7UDFNWUDFN VHTFUHDWH7UDFN 
 $VNWKH6HTXHQFHIRUD
7
7UDFNOLYHVLQWKH6HTXH UDFN5HPHPEHUWKH
QFHDQGWKH0,',GDW
OLYHVLQWKH7UDFN D
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 

DVHW0HVVDJH  
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D  3XWVRPH0LGL(YHQWVLQWRWKH7UDFN7
WUDFNDGG QRWH2Q  KLVSDUW
LVPRVWO\5HDG\EDNHFRGH7KHRQO\
WKLQJ\RX·OO
KDYHWRFDUHDERXWDUHWKHDUJXPHQWVWR
6KRUW0HVVDJHE QHZ6KRUW0HVVDJH  WKH
VHW0HVVDJH PHWKRGDQGWKHDUJXPH
EVHW0HVVDJH   QWVWR
WKH0LGL(YHQWFRQVWUXFWRU:H·OOORRN
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E  DWWKRVH
WUDFNDGG QRWH2II  DUJXPHQWVRQWKHQH[WSDJH

SOD\HUVHW6HTXHQFH VHT 

*LYHWKH6HTXHQFHWRWKH6HTXHQFHU OLNH
SOD\HUVWDUW  SXWWLQJWKH&'LQWKH&'SOD\HU
6WDUW WKH
6HTXHQFHU
`FDWFK ([FHSWLRQH[ ^ OLNHSXVKLQJ3
H[SULQW6WDFN7UDFH  /$<
`
`FORVHSOD\
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

5ISQVOI5QLQ-^MV\[WVOLI\I
!-IDI%VENTISANINSTRUCTIONFORPARTOFASONG!SERIESOF-IDI%VENTSIS
KINDOFLIKESHEETMUSIC ORAPLAYERPIANOROLL-OSTOFTHE-IDI%VENTSWE !-IDI%VENTSAYS
CAREABOUTDESCRIBEATHINGTODOANDTHEMOMENTINTIMETODOIT4HEMOMENT WHATTODOAND
INTIMEPARTMATTERS SINCETIMINGISEVERYTHINGINMUSIC4HISNOTEFOLLOWS
THISNOTEANDSOON!NDBECAUSE-IDI%VENTSARESODETAILED YOUHAVETOSAY WHENTODOIT
ATWHATMOMENTTOSTARTPLAYINGTHENOTEA./4%/.EVENT ANDATWHAT
MOMENTTOSTOPPLAYINGTHENOTES./4%/&&EVENT 3OYOUCANIMAGINE %VERYINSTRUCTION
THATlRINGTHEhSTOPPLAYINGNOTE'v./4%/&&MESSAGE BEFORETHEhSTART
PLAYING.OTE'v./4%/. MESSAGEWOULDNTWORK MUSTINCLUDETHE
4HE-)$)INSTRUCTIONACTUALLYGOESINTOA-ESSAGEOBJECTTHE-IDI%VENTIS TIMINGFORTHAT
ACOMBINATIONOFTHE-ESSAGEPLUSTHEMOMENTINTIMEWHENTHATMESSAGE
SHOULD@lRE)NOTHERWORDS THE-ESSAGEMIGHTSAY h3TARTPLAYING-IDDLE
INSTRUCTION
#vWHILETHE-IDI%VENTWOULDSAY h4RIGGERTHISMESSAGEATBEATv
)NOTHERWORDS AT
3OWEALWAYSNEEDA-ESSAGEANDA-IDI%VENT
4HE-ESSAGESAYSWHATTODO ANDTHE-IDI%VENTSAYSWHENTODOIT
WHICHBEATTHAT
THINGSHOULDHAPPEN
 0DNHD0HVVDJH
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 


 3XWWKH,QVWUXFWLRQLQWKH0HVVDJH
D UW S OD \ LQ JQRWHµ
HVD\V´VW KH
DVHW0HVVDJH  
7KLVPHVVDJ WKHRWKHUQXPEHUVRQW
W
ZH·OOORRND
QH[WSDJ H
 0DNHDQHZ0LGL(YHQWXVLQJWKH0HVVDJH
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D  7KHLQVWUXFWLRQVDUHLQ
W
(YHQWDGGVWKHPRPHQ KHPHVVDJHEXWWKH0LGL
WLQWLPHZKHQWKHLQVW
VKRXOGEHWULJJHUHG7 UXFWLRQ
KLV
 $GGWKH0LGL(YHQWWRWKH7UDFN
PHVVDJH¶D·DWWKHILUV 0LGL(YHQWVD\VWRWULJJHU
WUDFNDGG QRWH2Q  WEHDW EHDW 
UJDQL]HV
YHQWREMHFWV7KH6HTXHQFHR
$7UDFNKROGVDOOWKH0LGL( QWLVVXSSRVHGWRKDSSHQDQGWKHQ
FKHYH
WKHPDFFRUGLQJWRZKHQHD LQWKDWRUGHU<RXFDQKDYHORWVRI
HP ED FN
WKH6HTXHQFHUSOD\VWK DPSOH
PHPRPHQWLQWLPH)RUH[ QW
DSS HQLQJ DW WK HH [D FW VD
HYHQWVK QGLIIHUH
SOD\HGVLPXOWDQHRXVO\RUHYH
\RXPLJKWZDQWWZRQRWHV LPH 
QWVRXQGVDWWKHVDPHW
LQVWUXPHQWVSOD\LQJGLIIHUH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQWHQWVRI D0LGLHYHQW

51,1UM[[IOM"\PMPMIZ\WNI5QLQ-^MV\
!-)$)MESSAGEHOLDSTHEPARTOFTHEEVENTTHATSAYSWHATTODO4HEACTUALINSTRUCTION
YOUWANTTHESEQUENCERTOEXECUTE4HElRSTARGUMENTOFANINSTRUCTIONISALWAYSTHETYPE
OFTHEMESSAGE4HEVALUESYOUPASSTOTHEOTHERTHREEARGUMENTSDEPENDONTHETYPEOF
MESSAGE&OREXAMPLE AMESSAGEOFTYPEMEANSh./4%/.v"UTINORDERTOCARRY
OUTA./4%/. THESEQUENCERNEEDSTOKNOWAFEWTHINGS)MAGINETHESEQUENCERSAYING
h/+ )LLPLAYANOTE BUTWHICHCHANNEL)NOTHERWORDS DOYOUWANTMETOPLAYA$RUM
NOTEORA0IANONOTE!NDWHICHNOTE-IDDLE #$3HARP!NDWHILEWEREATIT ATWHICH
VELOCITYSHOULD)PLAYTHENOTE
4OMAKEA-)$)MESSAGE MAKEA3HORT-ESSAGEINSTANCEANDINVOKESET-ESSAGE PASSING
INTHEFOURARGUMENTSFORTHEMESSAGE"UTREMEMBER THEMESSAGESAYSONLYWHATTODO SO
YOUSTILLNEEDTOSTUFFTHEMESSAGEINTOANEVENTTHATADDSWHENTHATMESSAGESHOULD@lRE

$QDWRP\RIDPHVVDJH
4HE-ESSAGESAYSWHATTODO THE
7KHÀUVWDUJXPHQWWRVHW0HVVDJH DOZD\V
UHSUHVHQWVWKHPHVVDJH¶W\SH·ZKLOHWKHRWKHU -IDI%VENTSAYSWHENTODOIT
WKUHHDUJXPHQWVUHSUHVHQWGLIIHUHQWWKLQJV
GHSHQGLQJRQWKHPHVVDJHW\SH
SH \
W\ QHO WRSOD LW\
 &KDQQHO
J H
VD KDQ RWH HORF
PHV F Q Y 7KLQNRIDFKDQQHOOLNHDPXVLFLDQLQ
DVHW0HVVDJH   DEDQG&KDQQHOLVPXVLFLDQ WKH
7KHODVWD NH\ERDUGSOD\HU FKDQQHOLVWKH
W\SH7KLVLVDUJVYDU\GHSHQGLQJRQWKH GUXPPHUHWF
RWKHUDUJVDUH 127(21PHVVDJHVRWPHVVDJH
WRNQRZLQRU IRUWKLQJVWKH6HTXHQF KH
GHUWRSOD\D HUQHHGV
QRWH  1RWHWRSOD\
$QXPEHUIURPWRJRLQJ
 0HVVDJHW\SH IURPORZWRKLJKQRWHV

PHDQV
127(21
 

  

\LQJ  
OD  
VWD UWS
PHDQV
127(2))
 9HORFLW\
+RZ IDVW DQG KDUG GLG
\RX SUHVV WKH NH\"   LVVRVRIW\RX
\LQJ
RS SOD SUREDEO\ZRQ·WKHDUDQ\WKLQJEXWLVD
VW JRRGGHIDXOW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

+PIVOMIUM[[IOM
.OWTHATYOUKNOWWHATSINA-IDIMESSAGE YOUCANSTARTEXPERIMENTING9OU
CANCHANGETHENOTETHATSPLAYED HOWLONGTHENOTEISHELD ADDMORENOTES
ANDEVENCHANGETHEINSTRUMENT

 &KDQJHWKHQRWH
7U\DQXPEHUEHWZHHQDQGLQWKHQRWH
RQDQGQRWHRIIPHVVDJHV 

DVHW0HVVDJH    
   
 

 &KDQJHWKHGXUDWLRQRIWKHQRWH
&KDQJHWKHQRWHRIIHYHQW QRWWKHPHVVDJH VR
WKDWLWKDSSHQVDWDQHDUOLHURUODWHUEHDW

EVHW0HVVDJH  
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 

 &KDQJHWKHLQVWUXPHQW
$GGDQHZPHVVDJH%()25(WKHQRWHSOD\LQJPHVVDJH
WKDWVHWVWKHLQVWUXPHQWLQFKDQQHOWRVRPHWKLQJRWKHU
WKDQWKHGHIDXOWSLDQR7KHFKDQJHLQVWUXPHQWPHVVDJH
LV¶·DQGWKHWKLUGDUJXPHQWUHSUHVHQWVWKHDFWXDO
LQVWUXPHQW WU\DQXPEHUEHWZHHQDQG

¿UVWVHW0HVVDJH  

H V VDJH FLDQ HQW
WP XVL UXP
U X PHQ HO P WRLQVW
W Q
Q J H LQV QFKDQ
FKD L

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FKDQJHWKHLQVWUXPHQWDQGQRWH

>MZ[QWV"=[QVOKWUUIVLTQVMIZO[\WM`XMZQUMV\_Q\P[W]VL[
4HISVERSIONSTILLPLAYSJUSTASINGLENOTE BUTYOUGETTOUSECOMMAND LINEARGU
MENTSTOCHANGETHEINSTRUMENTANDNOTE%XPERIMENTBYPASSINGINTWOINTVALUES
FROMTO4HElRSTINTSETSTHEINSTRUMENT THESECONDINTSETSTHENOTETOPLAY
LPSRUWMDYD[VRXQGPLGL 

SXEOLFFODVV0LQL0XVLF&PG/LQH^WKLVLVWKH¿UVWRQH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF&PG/LQHPLQL QHZ0LQL0XVLF&PG/LQH 
LI DUJVOHQJWK ^
6\VWHPRXWSULQWOQ ³'RQ¶WIRUJHWWKHLQVWUXPHQWDQGQRWHDUJV´ 
`HOVH^
LQWLQVWUXPHQW ,QWHJHUSDUVH,QW DUJV>@ 
LQWQRWH ,QWHJHUSDUVH,QW DUJV>@ 
PLQLSOD\ LQVWUXPHQWQRWH 
`
`FORVHPDLQ

SXEOLFYRLGSOD\ LQWLQVWUXPHQWLQWQRWH ^

WU\^

6HTXHQFHUSOD\HU 0LGL6\VWHPJHW6HTXHQFHU 
SOD\HURSHQ 
6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 
7UDFNWUDFN VHTFUHDWH7UDFN 

0LGL(YHQWHYHQW QXOO

6KRUW0HVVDJH¿UVW QHZ6KRUW0HVVDJH 
¿UVWVHW0HVVDJH LQVWUXPHQW 
0LGL(YHQWFKDQJH,QVWUXPHQW QHZ0LGL(YHQW ¿UVW 
WUDFNDGG FKDQJH,QVWUXPHQW 

6KRUW0HVVDJHD QHZ6KRUW0HVVDJH  5XQLWZLWKWZRLQWDUJVIURP


DVHW0HVVDJH QRWH  WR7U\WKHVHIRUVWDUWHUV
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 
WUDFNDGG QRWH2Q  )LOH(GLW:LQGRZ+HOS$WWHQXDWH

MDYD0LQL0XVLF&PG/LQH
6KRUW0HVVDJHE QHZ6KRUW0HVVDJH 
EVHW0HVVDJH QRWH  MDYD0LQL0XVLF&PG/LQH
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 
WUDFNDGG QRWH2II  MDYD0LQL0XVLF&PG/LQH
SOD\HUVHW6HTXHQFH VHT 
SOD\HUVWDUW 

`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `


`FORVHSOD\
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

:KHUHZH·UHKHDGHGZLWKWKHUHVW
RIWKH&RGH.LWFKHQV
&KDSWHUWKHJRDO
:KHQZH·UHGRQHZH·OOKDYHDZRUNLQJ
%HDW%R[WKDW·VDOVRD'UXP&KDW&OLHQW
:H·OOQHHGWROHDUQDERXW*8,V LQFOXG
GDQFHEHDW
LQJHYHQWKDQGOLQJ ,2QHWZRUNLQJDQG
WKUHDGV7KHQH[WWKUHHFKDSWHUV 
DQG ZLOOJHWXVWKHUH
$QG\JURRYH

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW

&KDSWHU0,',HYHQWV
7KLV&RGH.LWFKHQOHWVXVEXLOGDOLWWOH
´PXVLFYLGHRµ ELWRIDVWUHWFKWRFDOOLW
WKDW WKDWGUDZVUDQGRPUHFWDQJOHVWR
WKHEHDWRIWKH0,',PXVLF:H·OOOHDUQ
KRZWRFRQVWUXFWDQGSOD\DORWRI0,',
HYHQWV LQVWHDGRIMXVWDFRXSOHDVZHGR EHDWRQH EHDWWZR EHDWWKUHH EHDWIRXU
LQWKHFXUUHQWFKDSWHU 

&KDSWHU6WDQGDORQH
%HDW%R[
1RZZH·OODFWXDOO\EXLOGWKHUHDO%HDW%R[
*8,DQGDOO%XWLW·VOLPLWHG³DVVRRQDV\RX
FKDQJHDSDWWHUQWKHSUHYLRXVRQHLVORVW
7KHUH·VQR6DYHDQG5HVWRUHIHDWXUHDQG
LWGRHVQ·WFRPPXQLFDWHZLWKWKHQHWZRUN
%XW\RXFDQVWLOOXVHLWWRZRUNRQ\RXU
GUXPSDWWHUQVNLOOV

&KDSWHU6DYHDQG
5HVWRUH
<RX·YHPDGHWKHSHUIHFWSDWWHUQDQG
QRZ\RXFDQVDYHLWWRDÀOHDQGUHORDGLW
ZKHQ\RXZDQWWRSOD\LWDJDLQ7KLVJHWV
XVUHDG\IRUWKHÀQDOYHUVLRQ FKDSWHU 
ZKHUHLQVWHDGRIZULWLQJWKHSDWWHUQWRD
ÀOHZHVHQGLWRYHUDQHWZRUNWRWKHFKDW
VHUYHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH7UXHRU)DOVH

4HISCHAPTEREXPLOREDTHEWONDERFULWORLDOF
EXCEPTIONS9OURJOBISTODECIDEWHETHEREACHOFTHE
FOLLOWINGEXCEPTION RELATEDSTATEMENTSISTRUEORFALSE
1dQ^OU_Q

&=[^N X[ /JU\N'
!TRYBLOCKMUSTBEFOLLOWEDBYACATCHANDAlNALLYBLOCK

)FYOUWRITEAMETHODTHATMIGHTCAUSEACOMPILER CHECKEDEXCEPTION YOU


MUSTWRAPTHATRISKYCODEINATRYCATCHBLOCK

#ATCHBLOCKSCANBEPOLYMORPHIC

/NLY@COMPILERCHECKEDEXCEPTIONSCANBECAUGHT

)FYOUDElNEATRYCATCHBLOCK AMATCHINGlNALLYBLOCKISOPTIONAL

)FYOUDElNEATRYBLOCK YOUCANPAIRITWITHAMATCHINGCATCHORlNALLYBLOCK
ORBOTH

)FYOUWRITEAMETHODTHATDECLARESTHATITCANTHROWACOMPILER CHECKEDEX
CEPTION YOUMUSTALSOWRAPTHEEXCEPTIONTHROWINGCODEINATRYCATCHBLOCK

4HEMAIN METHODINYOURPROGRAMMUSTHANDLEALLUNHANDLEDEXCEPTIONS
THROWNTOIT

!SINGLETRYBLOCKCANHAVEMANYDIFFERENTCATCHBLOCKS

!METHODCANONLYTHROWONEKINDOFEXCEPTION

!lNALLYBLOCKWILLRUNREGARDLESSOFWHETHERANEXCEPTIONISTHROWN

!lNALLYBLOCKCANEXISTWITHOUTATRYBLOCK

!TRYBLOCKCANEXISTBYITSELF WITHOUTACATCHBLOCKORAlNALLYBLOCK

(ANDLINGANEXCEPTIONISSOMETIMESREFERREDTOAS@DUCKING

4HEORDEROFCATCHBLOCKSNEVERMATTERS

!METHODWITHATRYBLOCKANDAlNALLYBLOCK CANOPTIONALLYDECLARETHE
EXCEPTION

2UNTIMEEXCEPTIONSMUSTBEHANDLEDORDECLARED

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

Code Magnets
!WORKING*AVAPROGRAMISSCRAMBLEDUPONTHEFRIDGE#ANYOU
1dQ^OU_Q RECONSTRUCTALLTHECODESNIPPETSTOMAKEAWORKING*AVAPROGRAM
THATPRODUCESTHEOUTPUTLISTEDBELOW3OMEOFTHECURLYBRACESFELL
ONTHEFLOORANDTHEYWERETOOSMALLTOPICKUP SOFEELFREETOADDAS
MANYOFTHOSEASYOUNEED

WU\^
U´ 
6\VWHPRXWSULQW ´

6\VWHPRXWSULQW
´W´ 
GR5LVN\ WHVW 

6\VWHPRXWSULQWOQ ´V´  `ÀQDOO\^

6\VWHPRXWSULQW ´R´ 

FODVV0\([H[WHQGV([FHSWLRQ^`

SXEOLFFODVV([7HVW'ULYH^

QW ´Z´ 
6\VWHPRXWSUL

LI ´\HV
µHTXDOV
W ^

6\VWHPRXWSULQW ´D´ 

WKURZQHZ0\([  `FDWFK 0\([H


^

VWDWLFYRLGGR5LVN\ 6WULQJW WKURZV0\([^


6\VWHPRXWSULQW ´Kµ 
)LOH(GLW:LQGRZ+HOS7KURZ8S

MDYD([7HVW'ULYH\HV JV ^
PDLQ 6WULQJ>@DU
WKDZV SXEOLFVWDWLFYRLG
JV>@
MDYD([7HVW'ULYHQR 6WULQJWHVW DU
WKURZV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHFURVVZRUG

-DYD&URVV
   

  

   
9OUKNOWWHATTODO

  

  



  

 



 



!CROSS #LASSHIERARCHY $OWN *AVACSAWITCOMING


4OGIVEVALUE 4OOHOTTOHANDLE #URRENTLYUSABLE !TTEMPTRISK
&LEWOFFTHETOP #OMMONPRIMITIVE 4EMPLATESCREATION !UTOMATICACQUISITION
!LLTHISANDMORE #ODERECIPE $ONTSHOWTHEKIDS #HANGINGMETHOD
3TART 5NRULYMETHODACTION -OSTLYSTATIC!0)CLASS !NNOUNCEADUCK
4HEFAMILYTREE .O0ICASSOHERE .OTABOUTBEHAVIOR $EALWITHIT
.ODUCKING 3TARTACHAINOFEVENTS 4HETEMPLATE #REATEBADNEWS
0ROBLEMOBJECTS 2OLLANOTHERONEOFF /NEOFMYROLES
THELINE
/NEOF*AVAS@

.OT!BSTRACT )NSTEADOFDECLARE
-ORE(INTS .UMBERS
&OR??????NOTEXAMPLE .OTA@GETTER 3TARTSAPROBLEM 3TARTAMETHOD
/RAMOUTHWASH ?????THEFAMILYFORTUNE 1UACK !*AVACHILD
$OWN /NLYPUBLICORDEFAULT !LSOATYPEOFCOLLECTION !CROSS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[FHSWLRQKDQGOLQJ

%XERCISE3OLUTIONS

Code Magnets
FODVV0\([H[WHQGV([FHSWLRQ^`

SXEOLFFODVV([7HVW'ULYH^

=[^N X[ /JU\N SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


6WULQJWHVW DUJV>@
WU\^
&ALSE EITHERORBOTH
&ALSE YOUCANDECLARETHEEXCEPTION 6\VWHPRXWSULQW ´Wµ 

4RUE GR5LVN\ WHVW 


&ALSE RUNTIMEEXCEPTIONCANBECAUGHT
6\VWHPRXWSULQW ´Rµ 
4RUE
`FDWFK 0\([H ^
4RUE BOTHAREACCEPTABLE
&ALSE THEDECLARATIONISSUFlCIENT 6\VWHPRXWSULQW ´Dµ 

&ALSE BUTIFITDOESNTTHE*6-MAYSHUT `ÀQDOO\^


DOWN
4RUE 6\VWHPRXWSULQW ´Zµ 
`
&ALSE 6\VWHPRXWSULQWOQ ´Vµ 
`
4RUE)TSOFTENUSEDTOCLEAN UPPARTIALLY
COMPLETEDTASKS VWDWLFYRLGGR5LVN\ 6WULQJW WKURZV0\([^
&ALSE 6\VWHPRXWSULQW ´Kµ 

&ALSE LI ´\HVµHTXDOV W ^


&ALSE DUCKINGISSYNONOMOUSWITHDECLAR
WKURZQHZ0\([ 
ING
`
&ALSE BROADESTEXCEPTIONSMUSTBECAUGHT
BYTHELASTCATCHBLOCKS 6\VWHPRXWSULQW ´Uµ 

&ALSE IFYOUDONTHAVEACATCHBLOCK YOU `


MUSTDECLARE ` )LOH(GLW:LQGRZ+HOS&KLOO

&ALSE MDYD([7HVW'ULYH\HV
WKDZV

MDYD([7HVW'ULYHQR
WKURZV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

-DYD&URVV$QVZHUV
   
$66,*10(17
$66,*10(173233('

0&15
  

Licensed by
$268%&/$66,192.(

73779&
   
+,(5$5&+<$+$1'/(/
11+77$

Eduard Simons
  
6&(7(;&(37,216
7(&516
  
$6.(<:25'+

104038

1(((75((
  
77'8&.&57
 
,17$$/*25,7+0

$(,7$75
 
7+52:6&21&5(7(2

($+(1(:

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

$9HU\*UDSKLF
6WRU\
:RZ7KLVORRNVJUHDW
,KHDUG\RXU
,JXHVVSUHVHQWDWLRQ
H[ZLIHFRXOGRQO\FRRN
UHDOO\LVHYHU\WKLQJ
FRPPDQGOLQHPHDOV

)DFHLW\RXQHHGWRPDNH*8,V)FYOUREBUILDINGAPPLICATIONSTHATOTHER
PEOPLEAREGOINGTOUSE YOUNEEDAGRAPHICALINTERFACE)FYOUREBUILDINGPROGRAMSFORYOURSELF
YOUWANTAGRAPHICALINTERFACE%VENIFYOUBELIEVETHATTHERESTOFYOURNATURALLIFEWILLBE
SPENTWRITINGSERVER SIDECODE WHERETHECLIENTUSERINTERFACEISAWEBPAGE SOONERORLATER
YOULLNEEDTOWRITETOOLS ANDYOULLWANTAGRAPHICALINTERFACE3URE COMMAND LINEAPPSARE
RETRO BUTNOTINAGOODWAY4HEYREWEAK INFLEXIBLE ANDUNFRIENDLY7ELLSPENDTWOCHAPTERS
WORKINGON'5)S ANDLEARNKEY*AVALANGUAGEFEATURESALONGTHEWAYINCLUDING%VENT
(ANDLINGAND)NNER#LASSES)NTHISCHAPTER WELLPUTABUTTONONTHESCREEN ANDMAKEITDO
SOMETHINGWHENYOUCLICKIT7ELLPAINTONTHESCREEN WELLDISPLAYAJPEGIMAGE ANDWELLEVEN
DOSOMEANIMATION

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
\RXUILUVWJXL

´,I,VHHRQHPRUH
1\ITT[\IZ\[_Q\PI_QVLW_ FRPPDQGOLQHDSS
\RX·UHILUHGµ
!*&RAMEISTHEOBJECTTHATREPRESENTS
AWINDOWONTHESCREEN)TSWHEREYOU
PUTALLTHEINTERFACETHINGSLIKEBUTTONS
CHECKBOXES TEXTlELDS ANDSOON)TCAN
HAVEANHONEST TO GOODNESSMENUBAR
WITHMENUITEMS!NDITHASALLTHELITTLE
WINDOWINGICONSFORWHATEVERPLATFORM
YOUREON FORMINIMIZING MAXIMIZING AND
CLOSINGTHEWINDOW
4HE*&RAMELOOKSDIFFERENTDEPENDINGON
THEPLATFORMYOUREON4HISISA*&RAMEON
-AC/38

U
P H  Z LW K  DPHQXED RQ
D-)UD ¶ZLGJHWV· DEXWW
DQGWZR LREXWWRQ
DQGDUDG
0DNLQJD*8,LVHDV\
 0DNHDIUDPH D-)UDPH
-)UDPHIUDPH QHZ-)UDPH 

 0DNHDZLGJHW EXWWRQWH[WÀHOGHWF
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFNPH´ 
8]\_QLOM\[QV\PM_QVLW_
/NCEYOUHAVEA*&RAME YOUCANPUT $GGWKHZLGJHWWRWKHIUDPH

THINGS@WIDGETS INITBYADDINGTHEM IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
TOTHE*&RAME4HEREAREATONOF3WING
COMPONENTSYOUCANADDLOOKFORTHEM <RXGRQ·WDGGWKL
INTHEJAVAXSWINGPACKAGE4HEMOST GLUHFWO\7KLQNRI QJVWRWKHIUDPH
COMMONINCLUDE*"UTTON *2ADIO"UTTON WULPDURXQGWKHZWKHIUDPHDVWKH
*#HECK"OX *,ABEL *,IST *3CROLL0ANE
WKLQJVWRWKHZLQGRLQGRZDQG\RXDGG
*3LIDER *4EXT!REA *4EXT&IELD AND ZSDQH
*4ABLE-OSTAREREALLYSIMPLETOUSE BUT
SOMELIKE*4ABLE CANBEABITMORE
COMPLICATED  'LVSOD\LW JLYHLWDVL]HDQGPDNHLWYLVLEOH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

AW]ZNQZ[\/=1"IJ]\\WVWVINZIUM
KLV
GRQ·WIRUJHWWRLPSRUWW
LPSRUWMDYD[VZLQJ 
VZLQJSDFNDJH

SXEOLFFODVV6LPSOH*XL^
WWRQ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
H D  I UD P HDQGDEX
PDN QFRQVWUXFWRU
-)UDPHIUDPH QHZ-)UDPH  \RXFDQSDVVWKHEXWRQWRWKHEXWWRQ
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFNPH´ 
WKHWH[W\RXZDQW

IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
WKLVOLQHPDNHVWK URJU
FORVHWKHZLQGRZ LHS
I \R
DPTXLWDVVRRQDV\RX
XO
MXVWVLWWKHUHRQWKHVFUH HDYHWKLVRXWLWZLOO
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ  HQIRUHYHU
DGGWKHEXWWRQWR
FRQWHQWSDQH WKHIUDPH·V
IUDPHVHW6L]H  
JLYHWKHIU
DPHDVL]H
IUDPHVHW9LVLEOH WUXH 
LQSL[HOV
`
`
ILQDOO\PDNHLWYLVLE 
WKLVVWHS\RXZRQ·WOH
VHH
LI\RXIRUJHW
\RXUXQWKLVFRGH D Q\WKLQJZKHQ

/HW·VVHHZKDWKDSSHQVZKHQZHUXQLW
MDYD6LPSOH*XL

:KRD7KDW·VD
5HDOO\%LJ%XWWRQ
7KHEXWWRQÀOOVDOOWKH
DYDLODEOHVSDFHLQWKHIUDPH
/DWHUZH·OOOHDUQWRFRQWURO
ZKHUH DQGKRZELJ WKH
EXWWRQLVRQWKHIUDPH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVHULQWHUIDFHHYHQWV

WKHUH DUH QR
'XPE 4XHVWLRQV
*]\VW\PQVOPIXXMV[_PMV1KTQKSQ\
Q: 7ILLABUTTONLOOKLIKEA
7INDOWSBUTTONWHENYOURUNON
4HATSNOTEXACTLYTRUE7HENYOUPRESSTHEBUTTONITSHOWSTHAT 7INDOWS
@PRESSEDOR@PUSHEDINLOOKWHICHCHANGESDEPENDINGONTHE
PLATFORMLOOKANDFEEL BUTITALWAYSDOESSOMETHINGTOSHOWWHEN
ITSBEINGPRESSED 
A: )FYOUWANTITTO9OUCAN
CHOOSEFROMAFEWhLOOKAND
4HEREALQUESTIONIS h(OWDO)GETTHEBUTTONTODOSOMETHING FEELSvˆCLASSESINTHECORELIBRARY
SPECIlCWHENTHEUSERCLICKSITv THATCONTROLWHATTHEINTERFACELOOKS
LIKE)NMOSTCASESYOUCANCHOOSE
BETWEENATLEASTTWODIFFERENTLOOKS
THESTANDARD*AVALOOKANDFEEL ALSO
:HQHHGWZRWKLQJV KNOWNAS-ETAL ANDTHENATIVELOOK
ANDFEELFORYOURPLATFORM4HE-AC

$PHWKRGWREHFDOOHGZKHQWKHXVHU /38SCREENSINTHISBOOKUSEEITHER
THE/38!QUALOOKANDFEEL ORTHE
FOLFNV WKHWKLQJ\RXZDQWWRKDSSHQDV -ETALLOOKANDFEEL
DUHVXOWRIWKHEXWWRQFOLFN 

 $ZD\WRNQRZZKHQWRWULJJHU
Q: #AN)MAKEAPROGRAMLOOK
LIKE!QUAALLTHETIME%VENWHEN
WKDWPHWKRG,QRWKHUZRUGVDZD\ ITSRUNNINGUNDER7INDOWS
WRNQRZZKHQWKHXVHUFOLFNVWKH
EXWWRQ
A: .OPE.OTALLLOOKANDFEELS
AREAVAILABLEONEVERYPLATFORM)F
YOUWANTTOBESAFE YOUCANEITHER
EXPLICITLYSETTHELOOKANDFEELTO
-ETAL SOTHATYOUKNOWEXACTLYWHAT
YOUGETREGARDLESSOFWHERETHEAPP
ISRUNNING ORDONTSPECIFYALOOK
ANDFEELANDACCEPTTHEDEFAULTS

Q: )HEARD3WINGWASDOG SLOW
ANDTHATNOBODYUSESIT

:KHQWKHXVHUFOLFNVZHZDQW
WRNQRZ
A: 4HISWASTRUEINTHEPAST
BUTISNTAGIVENANYMORE/NWEAK
MACHINES YOUMIGHTFEELTHEPAINOF
:H·UHLQWHUHVWHGLQWKHXVHU 3WING"UTONTHENEWERDESKTOPS
ANDWITH*AVAVERSIONANDBE
WDNHVDFWLRQRQDEXWWRQHYHQW YOND YOUMIGHTNOTEVENNOTICETHE
DIFFERENCEBETWEENA3WING'5)AND
ANATIVE'5)3WINGISUSEDHEAVILY
TODAY INALLSORTSOFAPPLICATIONS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

/M\\QVOI][MZM^MV\ )LUVWWKHEXWWRQQHHGVWRNQRZ
)MAGINEYOUWANTTHETEXTONTHEBUTTONTO WKDWZHFDUH
CHANGEFROMCLICKMETO)VEBEENCLICKEDWHEN
THEUSERPRESSESTHEBUTTON&IRSTWECANWRITEA
METHODTHATCHANGESTHETEXTOFTHEBUTTONA
QUICKLOOKTHROUGHTHE!0)WILLSHOWYOUTHE

+H\EXWWRQ,FDUHDERXW
METHOD  ZKDWKDSSHQVWR\RX

SXEOLFYRLGFKDQJH,W ^
EXWWRQVHW7H[W ³,¶YHEHHQFOLFNHG´ 
` \RXUFRGH

W
HF
EX
"UTNOWWHAT(OWWILLWEKNOWWHENTHIS
WWRQREM
METHODSHOULDRUN(OWWILLWEKNOWWHENTHE
BUTTONISCLICKED

 7KHXVHUFOLFNHGPH
)N*AVA THEPROCESSOFGETTINGANDHANDLINGA
USEREVENTISCALLEDEVENT HANDLING4HEREARE 6HFRQGWKHEXWWRQQHHGVDZD\
MANYDIFFERENTEVENTTYPESIN*AVA ALTHOUGH
WRFDOOXVEDFNZKHQDEXWWRQ
MOSTINVOLVE'5)USERACTIONS)FTHEUSERCLICKS
ABUTTON THATSANEVENT!NEVENTTHATSAYS FOLFNHGHYHQWRFFXUV
h4HEUSERWANTSTHEACTIONOFTHISBUTTONTO
HAPPENv)FITSAh3LOW4EMPOvBUTTON THEUSER
WANTSTHESLOW TEMPOACTIONTOOCCUR)FITSA
3ENDBUTTONONACHATCLIENT THEUSERWANTSTHE
SEND MY MESSAGEACTIONTOHAPPEN3OTHEMOST
STRAIGHTFORWARDEVENTISWHENTHEUSERCLICKED
YiX`e
THEBUTTON INDICATINGTHEYWANTANACTIONTO gfn\i
OCCUR
7ITHBUTTONS YOUUSUALLYDONTCAREABOUTANY
INTERMEDIATEEVENTSLIKEBUTTON IS BEING PRESSED  (OWCOULDYOUTELLABUTTONOBJECTTHATYOU
ANDBUTTON IS BEING RELEASED7HATYOUWANTTO CAREABOUTITSEVENTS4HATYOUREACONCERNED
SAYTOTHEBUTTONIS h)DONTCAREHOWTHEUSER LISTENER
PLAYSWITHTHEBUTTON HOWLONGTHEYHOLDTHE
MOUSEOVERIT HOWMANYTIMESTHEYCHANGETHEIR
 (OWWILLTHEBUTTONCALLYOUBACK!SSUME
MINDANDROLLOFFBEFORELETTINGGO ETC*USTTELL
THATTHERESNOWAYFORYOUTOTELLTHEBUTTONTHE
MEWHENTHEUSERMEANSBUSINESS)NOTHERWORDS NAMEOFYOURUNIQUEMETHODCHANGE)T 3O
DONTCALLMEUNLESSTHEUSERCLICKSINAWAYTHAT WHATELSECANWEUSETOREASSURETHEBUTTONTHAT
INDICATESHEWANTSTHEDARNBUTTONTODOWHATIT WEHAVEASPECIFICMETHODITCANCALLWHENTHE
SAYSITLLDOv EVENTHAPPENS;HINTTHINK0ET=

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HYHQWOLVWHQHUV

,I \RXFDUHDERXWWKHEXWWRQ·VHYHQWV
LPSOHPHQWDQLQWHUIDFHWKDWVD\V
´,·POLVWHQLQJIRU\RXUHYHQWVµ
$OLVWHQHULQWHUIDFHLVWKHEULGJHEHWZHHQWKH :KHQ\RXLPSOHPHQWD
OLVWHQHU \RX DQGHYHQWVRXUFH WKHEXWWRQ  OLVWHQHULQWHUIDFH\RXJLYH
4HE3WING'5)COMPONENTSAREEVENTSOURCES)N*AVATERMS WKHEXWWRQDZD\WRFDOO
ANEVENTSOURCEISANOBJECTTHATCANTURNUSERACTIONSCLICK \RXEDFN7KHLQWHUIDFHLV
AMOUSE TYPEAKEY CLOSEAWINDOW INTOEVENTS!NDLIKE
VIRTUALLYEVERYTHINGELSEIN*AVA ANEVENTISREPRESENTEDASAN ZKHUHWKHFDOOEDFNPHWKRG
OBJECT!NOBJECTOFSOMEEVENTCLASS)FYOUSCANTHROUGHTHE LVGHFODUHG
JAVAAWTEVENTPACKAGEINTHE!0) YOULLSEEABUNCHOFEVENT
CLASSESEASYTOSPOTˆTHEYALLHAVE%VENTINTHENAME 9OULL
lND-OUSE%VENT +EY%VENT 7INDOW%VENT !CTION%VENT AND
SEVERALOTHERS LQ
W
$FWL HUIDFH!
RQ/
!NEVENTSOURCELIKEABUTTON CREATESANEVENTOBJECTWHENTHE DFWLR LVWHQ !
Q3HU HU
USERDOESSOMETHINGTHATMATTERSLIKECLICKTHEBUTTON -OST I
RUPH
G $F
OFTHECODEYOUWRITEANDALLTHECODEINTHISBOOK WILLRECEIVE WLRQ(Y
HQWH
EVENTSRATHERTHANCREATEEVENTS)NOTHERWORDS YOULLSPEND Y
MOSTOFYOURTIMEASANEVENTLISTENERRATHERTHANANEVENTSOURCE

%VERYEVENTTYPEHASAMATCHINGLISTENERINTERFACE)FYOUWANT
FH!!
-OUSE%VENTS IMPLEMENTTHE-OUSE,ISTENERINTERFACE7ANT LQWHUID U
QH
7INDOW%VENTS)MPLEMENT7INDOW,ISTENER9OUGETTHEIDEA ,WHP/LVWH
(YHQWHY
!NDREMEMBERYOURINTERFACERULESˆTOIMPLEMENTANINTERFACE &KDQ JHG ,WHP
LWHP6WDWH
YOUDECLARETHATYOUIMPLEMENTITCLASS$OGIMPLEMENTS0ET
WHICHMEANSYOUMUSTWRITEIMPLEMENTATIONMETHODSFOREVERY
METHODINTHEINTERFACE
LQWHU
IDF
3OMEINTERFACESHAVEMORETHANONEMETHODBECAUSETHE .H\/LV H!!
EVENTITSELFCOMESINDIFFERENTmAVORS)FYOUIMPLEMENT WHQHU
NH\3UH
-OUSE,ISTENER FOREXAMPLE YOUCANGETEVENTSFOR VVHG .
H\(YHQ
NH\5HOH WHY
MOUSE0RESSED MOUSE2ELEASED MOUSE-OVED ETC%ACHOF DVHG .
H\(YHQ
NH\7\S WHY
THOSEMOUSEEVENTSHASASEPARATEMETHODINTHEINTERFACE HG .H\
(YHQWH
EVENTHOUGHTHEYALLTAKEA-OUSE%VENT)FYOUIMPLEMENT Y

-OUSE,ISTENER THEMOUSE0RESSED METHODISCALLEDWHENTHE


USERYOUGUESSEDIT PRESSESTHEMOUSE!NDWHENTHEUSERLETS
GO THEMOUSE2ELEASED METHODISCALLED3OFORMOUSEEVENTS
THERESONLYONEEVENTOBJECT -OUSE%VENT BUTSEVERALDIFFERENT
EVENTMETHODS REPRESENTINGTHEDIFFERENTTYPESOFMOUSEEVENTS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

+RZWKHOLVWHQHUDQGVRXUFH
FRPPXQLFDWH

´%XWWRQSOHDVHDGGPHWR
\RXUOLVWRIOLVWHQHUVDQGFDOO
P\DFWLRQ3HUIRUPHG PHWKRG
ZKHQWKHXVHUFOLFNV\RXµ
´2.\RX·UHDQ$FWLRQ/LVWHQHU
VR,NQRZKRZWRFDOO\RXEDFN
ZKHQWKHUH·VDQHYHQW,·OOFDOO
WKHDFWLRQ3HUIRUPHG PHWKRG
WKDW,NQRZ\RXKDYHµ

FWLRQ/LVWHQHU W
G G$ KLV
QD
W WR
EX


D F WLR HQW
Q3 H UIRU P H G WKH ( Y

The Listener The Event Source


)FYOURCLASSWANTSTOKNOWABOUT !BUTTONISASOURCEOF!CTION%VENTS
ABUTTONS!CTION%VENTS YOU SOITHASTOKNOWWHICHOBJECTSARE
IMPLEMENTTHE!CTION,ISTENER INTERESTEDLISTENERS4HEBUTTONHASAN
INTERFACE4HEBUTTONNEEDSTO ADD!CTION,ISTENER METHODTOGIVE
KNOWYOUREINTERESTED SOYOU INTERESTEDOBJECTSLISTENERS AWAYTO
REGISTERWITHTHEBUTTONBYCALLINGITS TELLTHEBUTTONTHEYREINTERESTED
ADD!CTION,ISTENERTHIS ANDPASSINGAN
7HENTHEBUTTONS
!CTION,ISTENERREFERENCETOITINTHISCASE
ADD!CTION,ISTENER RUNSBECAUSE
YOUARETHE!CTION,ISTENERSOYOUPASS
APOTENTIALLISTENERINVOKEDIT THE
THIS 4HEBUTTONNEEDSAWAYTOCALLYOU
BUTTONTAKESTHEPARAMETERA
BACKWHENTHEEVENTHAPPENS SOITCALLS
REFERENCETOTHELISTENEROBJECT AND
THEMETHODINTHELISTENERINTERFACE!SAN
STORESITINALIST7HENTHEUSERCLICKS
!CTION,ISTENER YOUMUSTIMPLEMENTTHE
THEBUTTON THEBUTTON@lRESTHEEVENT
INTERFACESSOLEMETHOD ACTION0ERFORMED 
BYCALLINGTHEACTION0ERFORMED
4HECOMPILERGUARANTEESIT
METHODONEACHLISTENERINTHELIST

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJHYHQWV

*HWWLQJDEXWWRQ·V$FWLRQ(YHQW
 ,PSOHPHQWWKH$FWLRQ/LVWHQHULQWHUIDFH

 5HJLVWHUZLWKWKHEXWWRQ WHOOLW\RX
ZDQWWROLVWHQIRUHYHQWV

 'HÀQHWKHHYHQWKDQGOLQJPHWKRG LPSOHPHQW
WKHDFWLRQ3HUIRUPHG PHWKRGIURPWKH
$FWLRQ/LVWHQHULQWHUUIDFH


UWV WDWH P HQ WIR UWKHSDFNDJHWKDW
LPSRUWMDYD[VZLQJ 
DQHZLPSR QG$FWLRQ(YHQWD
UHLQ V
$FWLRQ/LVWHQHUD 7KLVVD\
LPSRUWMDYDDZWHYHQW 
U I D F H 
KHLQWH ,6$

, P SOHPHQWW RI6LPSOH*XL%
SXEOLFFODVV6LPSOH*XL%LPSOHPHQWV$FWLRQ/LVWHQHU^ DQFH
-%XWWRQEXWWRQ ´DQLQVW LVWHQHUµ R
$FWLRQ/ LY H H Y H Q WVRQO\W
OJ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ WWRQZLO WHUV
6LPSOH*XL%JXL QHZ6LPSOH*XL%  7KHEX WHQHULPSOHPHQ
LV
JXLJR  $FWLRQ/
`

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
W W R Q  7 KLVVD\V
KHE X HUVµ
VWZLWKW RXUOLVWRIOLVWHQ PD
EXWWRQ QHZ-%XWWRQ ³FOLFNPH´ 
U  LQ W H U H
\RX R\ IUR
UHJLVWHU WWRQ´$GGPHW 67EHDQREMHFW
X
WRWKHE HQW\RXSDVV08 Q/LVWHQHU
EXWWRQDGG$FWLRQ/LVWHQHU WKLV 

P LR
7KHDUJX LPSOHPHQWV$FW
D W
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
FODVVWK
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26(  H·V
IUDPHVHW6L]H  
F W LR Q / LV W H QHULQWHUIDF
H$ KH
IUDPHVHW9LVLEOH WUXH 
,PSOHPHQWWK HG PHWKRG7KLVLVW
R UP
DFWLRQ3HUI KDQGOLQJPHWKRG
`

 DFWXDOHYHQW
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
EXWWRQVHW7H[W ³,¶YHEHHQFOLFNHG´ 
` 7KHEXWWRQFDOOVWKLVP
` HWKRGWROHW\R XNQRZDQHY
KDSSHQHG,WVHQGV\RXD
Q$FWLRQ(YHQWREMHFWDV HQW
DUJXPHQWEXWZHGRQ·W WKH
QHH
KDSSHQHGLVHQRXJKLQIR GLW.QRZLQJWKHHYHQW
IRUXV
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

4Q[\MVMZ[;W]ZKM[IVL-^MV\[
&ORMOSTOFYOURSTELLAR*AVACAREER YOUWILLNOTBETHESOURCE
OFEVENTS
.OMATTERHOWMUCHYOUFANCYYOURSELFTHECENTEROFYOURSOCIAL
UNIVERSE
'ETUSEDTOIT9OURJOBISTOBEAGOODLISTENER
7HICH IFYOUDOITSINCERELY CANIMPROVEYOURSOCIALLIFE

$VDQHYHQWVRXUFHP\MRELVWR
$VDOLVWHQHUP\MRELVWR DFFHSWUHJLVWUDWLRQV IURPOLVWHQHUV 
LPSOHPHQWWKHLQWHUIDFH JHWHYHQWVIURPWKHXVHUDQG
UHJLVWHUZLWKWKHEXWWRQDQG FDOOWKHOLVWHQHU·VHYHQWKDQGOLQJ
SURYLGHWKHHYHQWKDQGOLQJ PHWKRG ZKHQWKHXVHUFOLFNVPH

6RXUFH6(1'6
WKHHYHQW
/LVWHQHU*(76WKH
HYHQW

+H\ZKDWDERXWPH",·PDSOD\HUWRR\RX
NQRZ$VDQHYHQWREMHFW,·PWKHDUJXPHQW
WRWKHHYHQWFDOOEDFNPHWKRG IURPWKH
LQWHUIDFH DQGP\MRELVWRFDUU\GDWDDERXW
WKHHYHQWEDFNWRWKHOLVWHQHU

(YHQWREMHFW
+2/'6'$7$
DERXWWKHHYHQW
W

(Y
HQWREMHF

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HYHQWKDQGOLQJ

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HYCANT)BEASOURCEOFEVENTS Q: )DONTSEETHEIMPORTANCEOFTHEEVENTOBJECT
THATSPASSEDTOTHEEVENTCALL BACKMETHODS)F

A: 9OU#!.7EJUSTSAIDTHATMOSTOFTHETIME
SOMEBODYCALLSMYMOUSE0RESSEDMETHOD WHAT
OTHERINFOWOULD)NEED
YOULLBETHERECEIVERANDNOTTHEORIGINATOROFTHE
EVENTATLEASTINTHEEARLYDAYSOFYOURBRILLIANT*AVA
CAREER -OSTOFTHEEVENTSYOUMIGHTCAREABOUT
ARE@FIREDBYCLASSESINTHE*AVA!0) ANDALLYOUHAVE
A: !LOTOFTHETIME FORMOSTDESIGNS YOUDONT
NEEDTHEEVENTOBJECT)TSNOTHINGMORETHANALITTLE
TODOISBEALISTENERFORTHEM9OUMIGHT HOWEVER DATACARRIER TOSENDALONGMOREINFOABOUTTHEEVENT
DESIGNAPROGRAMWHEREYOUNEEDACUSTOMEVENT SAY "UTSOMETIMESYOUMIGHTNEEDTOQUERYTHEEVENTFOR
3TOCK-ARKET%VENTTHROWNWHENYOURSTOCKMARKET SPECIFICDETAILSABOUTTHEEVENT&OREXAMPLE IFYOUR
WATCHERAPPFINDSSOMETHINGITDEEMSIMPORTANT)N MOUSE0RESSED METHODISCALLED YOUKNOWTHEMOUSE

Licensed by
THATCASE YOUDMAKETHE3TOCK7ATCHEROBJECTBEAN WASPRESSED"UTWHATIFYOUWANTTOKNOWEXACTLY
EVENTSOURCE ANDYOUDDOTHESAMETHINGSABUTTON WHERETHEMOUSEWASPRESSED)NOTHERWORDS WHATIF
ORANYOTHERSOURCE DOESˆMAKEALISTENERINTERFACE YOUWANTTOKNOWTHE8AND9SCREENCOORDINATESFOR
FORYOURCUSTOMEVENT PROVIDEAREGISTRATIONMETHOD WHERETHEMOUSEWASPRESSED
ADD3TOCK,ISTENER ANDWHENSOMEBODYCALLSIT ADD

Eduard Simons
/RSOMETIMESYOUMIGHTWANTTOREGISTERTHESAME
THECALLERALISTENER TOTHELISTOFLISTENERS4HEN WHEN
LISTENERWITHMULTIPLEOBJECTS!NONSCREENCALCULATOR
ASTOCKEVENTHAPPENS INSTANTIATEA3TOCK%VENTOBJECT
FOREXAMPLE HASNUMERICKEYSANDSINCETHEYALLDO
ANOTHERCLASSYOULLWRITE ANDSENDITTOTHELISTENERS
THESAMETHING YOUMIGHTNOTWANTTOMAKEASEPARATE
INYOURLISTBYCALLINGTHEIRSTOCK#HANGED3TOCK%VENT
LISTENERFOREVERYSINGLEKEY)NSTEAD YOUMIGHT
EV METHOD!NDDONTFORGETTHATFOREVERYEVENTTYPE
REGISTERASINGLELISTENERWITHEACHOFTHEKEYS AND

104038
THEREMUSTBEAMATCHINGLISTENERINTERFACESOYOULL
WHENYOUGETANEVENTBECAUSEYOUREVENTCALL BACK
CREATEA3TOCK,ISTENERINTERFACEWITHASTOCK#HANGED
METHODISCALLED YOUCANCALLAMETHODONTHEEVENT
METHOD 
OBJECTTOFINDOUTWHOTHEREALEVENTSOURCEWAS)N
OTHERWORDS WHICHKEYSENTTHISEVENT
6KDUSHQ \RXU SHQFLO
%ACHOFTHESEWIDGETSUSERINTERFACEOBJECTS ARETHE
+RZGR\RX.12:LI
SOURCEOFONEORMOREEVENTS-ATCHTHEWIDGETSWITH DQREMHFWLVDQHYHQW
THEEVENTSTHEYMIGHTCAUSE3OMEWIDGETSMIGHTBEA VRXUFH"
SOURCEOFMORETHANONEEVENT ANDSOMEEVENTSCANBE
GENERATEDBYMORETHANONEWIDGET /RRNLQWKH$3,

:LGJHWV (YHQWPHWKRGV 2./RRNIRUZKDW"


FKHFNER[ ZLQGRZ&ORVLQJ $PHWKRGWKDWVWDUWVZLWK
WH[W¿HOG DFWLRQ3HUIRUPHG ¶DGG·HQGVZLWK¶/LVWHQHU·
DQGWDNHVDOLVWHQHULQWHU
VFUROOLQJOLVW LWHP6WDWH&KDQJHG IDFHDUJXPHQW,I\RXVHH

EXWWRQ PRXVH3UHVVHG DGG.H\/LVWHQHU .H\/LVWHQHUN

GLDORJER[ NH\7\SHG \RXNQRZWKDWDFODVV


ZLWKWKLVPHWKRGLVD
UDGLREXWWRQ PRXVH([LWHG
VRXUFHRI.H\(YHQWV
PHQXLWHP IRFXV*DLQHG 7KHUH·VDQDPLQJSDWWHUQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

/M\\QVOJIKS\WOZIXPQK[
.OWTHATWEKNOWALITTLEABOUTHOWEVENTSWORKWELLLEARN
MORELATER LETSGETBACKTOPUTTINGSTUFFONTHESCREEN
7ELLSPENDAFEWMINUTESPLAYINGWITHSOMEFUNWAYSTOGET
GRAPHIC BEFORERETURNINGTOEVENTHANDLING

7KUHHZD\VWRSXWWKLQJVRQ\RXU*8,

 3XWZLGJHWVRQDIUDPH
$GGEXWWRQVPHQXVUDGLREXWWRQVHWF
IUDPHJHW&RQWHQW3DQH DGG P\%XWWRQ 

7KHMDYD[VZLQJSDFNDJHKDVPRUHWKDQDGR]HQ
ZLGJHWW\SHV

1XPEHURI+HDG
 )LUVW-DYDERRNV
'UDZ'JUDSKLFVRQDZLGJHW PLVWDNHQO\
8VHDJUDSKLFVREMHFWWRSDLQWVKDSHV ERXJKWE\FRIIHH
KRXVHEDULVWDV
JUDSKLFV¿OO2YDO  

<RXFDQSDLQWDORWPRUHWKDQER[HVDQGFLUFOHV
WKH-DYD'$3,LVIXOORIIXQVRSKLVWLFDWHG
JUDSKLFVPHWKRGV

DUW FKDUWVVV
VLPXODJWDPHV EXVLQH LFV
LRQVHW JUDSK
F HWF

 3XWD-3(*RQDZLGJHW
<RXFDQSXW\RXURZQLPDJHVRQDZLGJHW
JUDSKLFVGUDZ,PDJH P\3LFWKLV 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PDNLQJDGUDZLQJSDQHO

5ISMaW]ZW_VLZI_QVO_QLOM\
)FYOUWANTTOPUTYOUROWNGRAPHICSONTHESCREEN YOURBEST
BETISTOMAKEYOUROWNPAINTABLEWIDGET9OUPLOPTHATWIDGET
ONTHEFRAME JUSTLIKEABUTTONORANYOTHERWIDGET BUTWHENIT
SHOWSUPITWILLHAVEYOURIMAGESONIT9OUCANEVENMAKETHOSE
IMAGESMOVE INANANIMATION ORMAKETHECOLORSONTHESCREEN
CHANGEEVERYTIMEYOUCLICKABUTTON
)TSAPIECEOFCAKE
0DNHDVXEFODVVRI-3DQHODQGRYHUULGHRQH
PHWKRGSDLQW&RPSRQHQW 
!LLOFYOURGRAPHICSCODEGOESINSIDETHEPAINT#OMPONENT
METHOD4HINKOFTHEPAINT#OMPONENT METHODASTHEMETHOD
CALLEDBYTHESYSTEMTOSAY h(EYWIDGET TIMETOPAINTYOURSELFv
)FYOUWANTTODRAWACIRCLE THEPAINT#OMPONENT METHODWILL
HAVECODEFORDRAWINGACIRCLE7HENTHEFRAMEHOLDINGYOUR
DRAWINGPANELISDISPLAYED PAINT#OMPONENT ISCALLEDANDYOUR
CIRCLEAPPEARS)FTHEUSERICONIlESMINIMIZESTHEWINDOW THE
*6-KNOWSTHEFRAMENEEDShREPAIRvWHENITGETSDE ICONIlED
SOITCALLSPAINT#OMPONENT AGAIN!NYTIMETHE*6-THINKSTHE
DISPLAYNEEDSREFRESHING YOURPAINT#OMPONENT METHODWILLBE
CALLED
/NEMORETHING YOUNEVERCALLTHISMETHODYOURSELF4HEARGUMENT
TOTHISMETHODA'RAPHICSOBJECT ISTHEACTUALDRAWINGCANVAS
THATGETSSLAPPEDONTOTHEREALDISPLAY9OUCANTGETTHISBY
YOURSELFITMUSTBEHANDEDTOYOUBYTHESYSTEM9OULLSEE
LATER HOWEVER THATYOUCANASKTHESYSTEMTOREFRESHTHEDISPLAY
REPAINT WHICHULTIMATELYLEADSTOPAINT#OMPONENT BEING
CALLED WKHVH 
LPSRUWMDYDDZW   Q H HG  ERWKRI LGJHW
\RX
VX E FOD VV R I-3DQHODDPZ
H M XVWOLNH
LPSRUWMDYD[VZLQJ  0DNHD XFDQDGGWRDIU QHLV\RXU
WKDW\R HOVH([FHSWWKLVR
DQ\WKLQJ RPL]HGZLGJHW
FODVV0\'UDZ3DQHOH[WHQGV-3DQHO^ RZQFXVW KRG
 %LJ,P SR UW DQ W*UDSKLFVPHW 
7KLVLVWKH 5FDOOWKLV\RXUVHOI7KH
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
<RXZLOO1(9(DQGVD\V´+HUH·VDQLFH
V\VWHPFDOOVLW VXUIDFHRIW\SH*UDSKLFV
JVHW&RORU &RORURUDQJH  IUHVKGUDZLQJ DLQWRQQRZµ
WKDW\RXPD\S
,PDJLQHWKDW¶J V
J¿OO5HFW   WHOOLQJLWZKDW·L
FR OR
DSDLQWLQJPDFKLQH<
RX·UH
` ZKDWVKDSHWRSDLQ UWRSDLQWZLWKDQGWKHQ
ZKHUHLWJRHVDQG W Z LW KFRRU
` KRZELJLWLV GLQDWHVIRU
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

.]V\PQVO[\WLWQVXIQV\+WUXWVMV\
,ETSLOOKATAFEWMORETHINGSYOUCANDOINPAINT#OMPONENT 
4HEMOSTFUN THOUGH ISWHENYOUSTARTEXPERIMENTINGYOURSELF
4RYPLAYINGWITHTHENUMBERS ANDCHECKTHE!0)FORCLASS
'RAPHICSLATERWELLSEETHATTHERESEVENMOREYOUCANDOBESIDES
WHATSINTHE'RAPHICSCLASS 

'LVSOD\D-3(* HUH
QDP HJRHVK
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^ \RXUILOH
,PDJHLPDJH QHZ,PDJH,FRQ ³FDW]LOODMSJ´ JHW,PDJH 

JGUDZ,PDJH LPDJHWKLV 

`
7KH[\FRRUG
OHIWFRUQHUVKLQRXDWHVIRUZKHUHWKHSLFWXUH·VW
WKHOHIWHGJHRIOGJR7KLVVD\V´SL[HOVIUR RS
WRSHGJHRIWKH WKHSDQHODQGSL[HOVIURPP
UHODWLYHWRWKH SDQHOµ7KHVHQXPEHUVDUHDOZWKH
VXEFODVV QRWWKHZLGJHW LQWKLVFDVH\RXU-3DQ D\V
HQWLUHIUDPH HO

3DLQWDUDQGRPO\FRORUHGFLUFOH
RQDEODFNEDFNJURXQG
ODFN
LUH  S D Q HOZLWKE
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^ HQW
ILOOWKHHIDXOWFRORU
 WKH  G
J¿OO5HFW WKLVJHW:LGWK WKLVJHW+HLJKW 
7KHILUVWWZRDUJVGHILQHWKH [\ 
XSSHUOHIW
FRUQHUUHODWLYHWRWKHSDQHOIRUZKHU
VWDUWVVRPHDQV´VWDUWSL[HO HGUDZLQJ

OHIW VIURPWKH
HGJHDQGSL[HOVIURPWKHWRSHG
LQWUHG  LQW  0DWKUDQGRP   
RWKHUWZRDUJVVD\´0DNHWKHZLGW JHµ7KH
LQWJUHHQ  LQW  0DWKUDQGRP    KRIWKLV
UHFWDQJOHDVZLGHDVWKHSDQHO WKLVZLG
LQWEOXH  LQW  0DWKUDQGRP   
PDNHWKHKHLJKWDVWDOODVWKHSDQHO WK DQG
WKLVKHLJKW µ
&RORUUDQGRP&RORU QHZ&RORU UHGJUHHQEOXH 
JVHW&RORU UDQGRP&RORU 
<RXFDQP
WRUHSUHVHQDWNHDFRORUE\SDVVLQJ
J¿OO2YDO  
` W L KH5*%YDOX QLQWV
VWDUW HV
WKHWRSPSD L[HOVIURPWKHOHIW
SL[HOVWNHLWSL[HOVZLGIURP
DOO HDQG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GUDZLQJJUDGLHQWVZLWK*UDSKLFV'

*MPQVLM^MZaOWWL/ZIXPQK[ZMNMZMVKM
Q[I/ZIXPQK[,WJRMK\
4HEARGUMENTTOPAINT#OMPONENT ISDECLAREDASTYPE
'RAPHICSJAVAAWT'RAPHICS 

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^` 0HWKRGV\RXFDQFDOORQD


*UDSKLFVUHIHUHQFH
3OTHEPARAMETER@G)3 !'RAPHICSOBJECT7HICHMEANSIT GUDZ,PDJH
COULDBEASUBCLASSOF'RAPHICSBECAUSEOFPOLYMORPHISM  GUDZ/LQH
!NDINFACT ITIS
GUDZ3RO\JRQ
4HEOBJECTREFERENCEDBYTHE@GPARAMETERISACTUALLYAN GUDZ5HFW
INSTANCEOFTHE'RAPHICS$CLASS
GUDZ2YDO
7HYDOYOUCARE"ECAUSETHEREARETHINGSYOUCANDOWITH
¿OO5HFW
A'RAPHICS$REFERENCETHATYOUCANTDOWITHA'RAPHICS
REFERENCE!'RAPHICS$OBJECTCANDOMORETHANA'RAPHICS ¿OO5RXQG5HFW
OBJECT ANDITREALLYISA'RAPHICS$OBJECTLURKINGBEHINDTHE VHW&RORU
'RAPHICSREFERENCE
2EMEMBERYOURPOLYMORPHISM4HECOMPILERDECIDESWHICH
METHODSYOUCANCALLBASEDONTHEREFERENCETYPE NOTTHE 7RFDVWWKH*UDSKLFV'REMHFWWR
OBJECTTYPE)FYOUHAVEA$OGOBJECTREFERENCEDBYAN!NIMAL D*UDSKLFV'UHIHUHQFH
REFERENCEVARIABLE
*UDSKLFV'JG  *UDSKLFV' J
$QLPDOD QHZ'RJ 
9OUCAN./4SAY
DEDUN 
0HWKRGV\RXFDQFDOORQ
%VENTHOUGHYOUKNOWITSREALLYA$OGBACKTHERE4HE D*UDSKLFV'UHIHUHQFH
COMPILERLOOKSAT@A SEESTHATITSOFTYPE!NIMAL ANDlNDS
THATTHERESNOREMOTECONTROLBUTTONFORBARK INTHE!NIMAL ¿OO'5HFW
CLASS"UTYOUCANSTILLGETTHEOBJECTBACKTOTHE$OGITREALLYIS GUDZ'5HFW
BYSAYING
URWDWH
'RJG  'RJ D
GEDUN  VFDOH

3OTHEBOTTOMLINEWITHTHE'RAPHICSOBJECTISTHIS VKHDU

)FYOUNEEDTOUSEAMETHODFROMTHE'RAPHICS$CLASS YOU WUDQVIRUP


CANTUSETHETHEPAINT#OMPONENTPARAMETER@G STRAIGHT VHW5HQGHULQJ+LQWV
FROMTHEMETHOD"UTYOUCANCASTITWITHANEW'RAPHICS$
VARIABLE
*UDSKLFV'JG  *UDSKLFV' J
WKHVHDUHQRWFRPSOHWHPHWKRGOLVWV
FKHFNWKH$3,IRUPRUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

*MKI][MTQNM¼[\WW[PWZ\\WXIQV\\PM
KQZKTMI[WTQLKWTWZ_PMV\PMZM¼[I
OZILQMV\JTMVL_IQ\QVONWZaW]

REMHFWV
UDSKLFVU'H*
* KLF
LW·VU DGLQJDVDPH UDS
HD OO \ D
PDVTXHU
REMHFW
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^

*UDSKLFV'JG  *UDSKLFV' J


FDVWLWVRZHFDQFDOOVRPHWKLQJWKDW
*UDSKLFV'KDVEXW*UDSKLFVGRHVQ·W
*UDGLHQW3DLQWJUDGLHQW QHZ*UDGLHQW3DLQW &RORUEOXH&RORURUDQJH 
VWDUWLQ VWDUWLQ HQGLQJ
JSRLQW JFRORU HQGLQJS FRORU
RLQW

WKLVVHWVWKHYLUWXDOSDLQ
WEUXVKWRD
JGVHW3DLQW JUDGLHQW  JUDGLHQWLQVWHDGRI DVROLGFRORU 
JG¿OO2YDO  

LOO
HDOO\PHDQVR´QI\RXU
`
O P HW K RGU
WKHILOO2YDZLWKZKDWHYHULVORDGHG
WKHRYDO  LHWKHJUDGLHQW µ
SDLQWEUXVK

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
*UDSKLFV'JG  *UDSKLFV' J
 ERYH
LQWUHG  LQW  0DWKUDQGRP    LV MX VW O LN HWKHRQRHPDFRORUVIRU
WKLV WPDNHVUDQG VRIWKH
H[FHSWLUWDQGVWRSFRORU
LQWJUHHQ  LQW  0DWKUDQGRP   
WKHVWD W7U\LW
LQWEOXH  LQW  0DWKUDQGRP   
JUDGLHQ
&RORUVWDUW&RORU QHZ&RORU UHGJUHHQEOXH 

UHG  LQW  0DWKUDQGRP   


JUHHQ  LQW  0DWKUDQGRP   
EOXH  LQW  0DWKUDQGRP   
&RORUHQG&RORU QHZ&RORU UHGJUHHQEOXH 

*UDGLHQW3DLQWJUDGLHQW QHZ*UDGLHQW3DLQW VWDUW&RORUHQG&RORU 


JGVHW3DLQW JUDGLHQW 
JG¿OO2YDO  
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HYHQWVDQGJUDSKLFV

:MDD=LHGAFLK
=N=FLK ?J9H@A;K
ƒ 7RPDNHD*8,VWDUWZLWKDZLQGRZXVXDOO\D-)UDPH ƒ <RXFDQGUDZ'JUDSKLFVGLUHFWO\RQWRDZLGJHW
-)UDPHIUDPH QHZ-)UDPH 
ƒ <RXFDQGUDZDJLIRUMSHJGLUHFWO\RQWRDZLGJHW
ƒ <RXFDQDGGZLGJHWV EXWWRQVWH[WILHOGVHWF WRWKH
-)UDPHXVLQJ ƒ 7RGUDZ\RXURZQJUDSKLFV LQFOXGLQJDJLIRUMSHJ 
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ  PDNHDVXEFODVVRI-3DQHODQGRYHUULGHWKHSDLQW&RP
SRQHQW PHWKRG
ƒ 8QOLNHPRVWRWKHUFRPSRQHQWVWKH-)UDPHGRHVQ·WOHW
\RXDGGWRLWGLUHFWO\VR\RXPXVWDGGWRWKH-)UDPH·V ƒ 7KHSDLQW&RPSRQHQW PHWKRGLVFDOOHGE\WKH*8,
FRQWHQWSDQH V\VWHP<281(9(5&$//,7<2856(/)7KHDUJX
PHQWWRSDLQW&RPSRQHQW LVD*UDSKLFVREMHFWWKDW
ƒ 7RPDNHWKHZLQGRZ -)UDPH GLVSOD\\RXPXVWJLYHLW JLYHV\RXDVXUIDFHWRGUDZRQZKLFKZLOOHQGXSRQ
DVL]HDQGWHOOLWEHYLVLEOH WKHVFUHHQ<RXFDQQRWFRQVWUXFWWKDWREMHFW\RXUVHOI
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH  ƒ 7\SLFDOPHWKRGVWRFDOORQD*UDSKLFVREMHFW WKHSDLQW
&RPSRQHQWSDUDPHQWHU DUH
ƒ 7RNQRZZKHQWKHXVHUFOLFNVDEXWWRQ RUWDNHVVRPH JUDSKLFVVHW&RORU &RORUEOXH 
RWKHUDFWLRQRQWKHXVHULQWHUIDFH \RXQHHGWROLVWHQIRU J¿OO5HFW  
D*8,HYHQW
ƒ 7RGUDZDMSJFRQVWUXFWDQ,PDJHXVLQJ
ƒ 7ROLVWHQIRUDQHYHQW\RXPXVWUHJLVWHU\RXULQWHUHVW ,PDJHLPDJH QHZ,PDJH,FRQ ³FDW]LOOD
ZLWKDQHYHQWVRXUFH$QHYHQWVRXUFHLVWKHWKLQJ EXW MSJ´ JHW,PDJH 
WRQFKHFNER[HWF WKDW¶ILUHV·DQHYHQWEDVHGRQXVHU DQGGUDZWKHLPDJLQHXVLQJ
LQWHUDFWLRQ JGUDZ,PDJH LPDJHWKLV 
ƒ 7KHOLVWHQHULQWHUIDFHJLYHVWKHHYHQWVRXUFHDZD\ ƒ 7KHREMHFWUHIHUHQFHGE\WKH*UDSKLFVSDUDPHWHU
WRFDOO\RXEDFNEHFDXVHWKHLQWHUIDFHGHILQHVWKH WRSDLQW&RPSRQHQW LVDFWXDOO\DQLQVWDQFHRIWKH
PHWKRG V WKHHYHQWVRXUFHZLOOFDOOZKHQDQHYHQW *UDSKLFV'FODVV7KH*UDSKLFV'FODVVKDVDYDULHW\
KDSSHQV RIPHWKRGVLQFOXGLQJ
¿OO'5HFW GUDZ'5HFW URWDWH VFDOH VKHDU 
ƒ 7RUHJLVWHUIRUHYHQWVZLWKDVRXUFHFDOOWKHVRXUFH·V WUDQVIRUP
UHJLVWUDWLRQPHWKRG5HJLVWUDWLRQPHWKRGVDOZD\VWDNH
WKHIRUPRIDGG(YHQW7\SH!/LVWHQHU7RUHJLVWHUIRUD ƒ 7RLQYRNHWKH*UDSKLFV'PHWKRGV\RXPXVWFDVWWKH
EXWWRQ·V$FWLRQ(YHQWVIRUH[DPSOHFDOO SDUDPHWHUIURPD*UDSKLFVREMHFWWRD*UDSKLFV'
EXWWRQDGG$FWLRQ/LVWHQHU WKLV  REMHFW
*UDSKLFV'JG  *UDSKLFV' J
ƒ ,PSOHPHQWWKHOLVWHQHULQWHUIDFHE\LPSOHPHQWLQJDOORI
WKHLQWHUIDFH·VHYHQWKDQGOLQJPHWKRGV3XW\RXUHYHQW
KDQGOLQJFRGHLQWKHOLVWHQHUFDOOEDFNPHWKRG)RU
$FWLRQ(YHQWVWKHPHWKRGLV
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQW
HYHQW ^
EXWWRQVHW7H[W ³\RXFOLFNHG´ 
`
ƒ 7KHHYHQWREMHFWSDVVHGLQWRWKHHYHQWKDQGOHUPHWKRG
FDUULHVLQIRUPDWLRQDERXWWKHHYHQWLQFOXGLQJWKHVRXUFH
RIWKHHYHQW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

?MKIVOM\IVM^MV\
?MKIVXIQV\OZIXPQK[
*]\KIV_MXIQV\OZIXPQK[_PMV_MOM\IVM^MV\'
,ETSHOOKUPANEVENTTOACHANGEINOURDRAWINGPANEL7ELLMAKETHECIRCLE
CHANGECOLORSEACHTIMEYOUCLICKTHEBUTTON(ERESHOWTHEPROGRAMmOWS

6WDUWWKHDSS

 7KHIUDPHLVEXLOWZLWKWKHWZRZLGJHWV
\RXUGUDZLQJSDQHODQGDEXWWRQ $
OLVWHQHULVFUHDWHGDQGUHJLVWHUHGZLWK
WKHEXWWRQ7KHQWKHIUDPHLVGLVSOD\HG
DQGLWMXVWZDLWVIRUWKHXVHUWRFOLFN

 7KHXVHUFOLFNVWKHEXWWRQDQGWKH
EXWWRQFUHDWHVDQHYHQWREMHFWDQG
FDOOVWKHOLVWHQHU·VHYHQWKDQGOHU

 7KHHYHQWKDQGOHUFDOOVUHSDLQW RQWKH
IUDPH7KHV\VWHPFDOOVSDLQW&RPSRQHQW 
RQWKHGUDZLQJSDQHO

 9RLOD$QHZFRORULVSDLQWHGEHFDXVH
SDLQW&RPSRQHQW UXQVDJDLQÀOOLQJWKH
FLUFOHZLWKDUDQGRPFRORU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EXLOGLQJD*8,IUDPH

:DLWDPLQXWHKRZ
GR\RXSXW7:2
WKLQJVRQDIUDPH"

/=1TIaW]\["X]\\QVOUWZM\PIVWVM
_QLOM\WVINZIUM
7ECOVER'5)LAYOUTSINTHENEXTCHAPTER BUTWELLDOA
QUICKIELESSONHERETOGETYOUGOING"YDEFAULT AFRAME
HASlVEREGIONSYOUCANADDTO9OUCANADDONLYONETHING
TOEACHREGIONOFAFRAME BUTDONTPANIC4HATONETHING
MIGHTBEAPANELTHATHOLDSTHREEOTHERTHINGSINCLUDINGA
PANELTHATHOLDSTWOMORETHINGSANDYOUGETTHEIDEA)N
FACT WEWERE@CHEATINGWHENWEADDEDABUTTONTOTHEFRAME
USING
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 

7KLVLVQ·W
VX D OO \  WRGRLW WUKHDOO\WKHZD\\RX
G X HRQHDUJ ·U
HWWHU D Q UDPH·V DGGPHWHKVXR SSRVHG
7KLVLVWRKUH\E ZD\WRDGGWRDD\I VSHFLI \  G 
PDQGDW FRQWHQWSDQH$OZ ZVDQWWKH
GHIDXOW  ZKLFKUHJLRQ \RX IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 
:+(5( RJR
ZLGJH W W JDGG
\ R X F D OO W KHVLQJOHXDOGUQ·WXVH  ZHFDOOWKHWZRDUJXP
:KHQ WKHRQHZHVKR OO\ODQGLQ HQWDGGPHWKRG
P H W K R G  DXWR P D W LF D WK DWWDNHVDUHJLRQ XVLQ
LG J H W Z LO O DQ G WKHZLGJHWWRDGGWRJDFRQVWDQW 
WKHZ WHUUHJVLRQ QRUWK WKDWUHJLRQ
WKHFHQ
HDVW
GHIDXOWUHJLRQ ZHVW FHQWHU 6KDUSHQ \RXU SHQFLO
*LYHQWKHSLFWXUHVRQSDJHZULWHWKH
FRGHWKDWDGGVWKHEXWWRQDQGWKHSDQHOWR
WKHIUDPH
VRXWK

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

7KHFLUFOHFKDQJHVFRORUHDFKWLPH\RX 7KHFXVW
LQVWDQFHRRPGUDZLQJSDQHO
FOLFNWKHEXWWRQ LVLQWKH& I0\'UDZ3DQHO 
RIWKHIUD(17(5UHJLRQ
PH
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV6LPSOH*XL&LPSOHPHQWV$FWLRQ/LVWHQHU^

-)UDPHIUDPH

LQWKH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%XWWRQLVUHJLRQRI
6LPSOH*XL&JXL QHZ6LPSOH*XL& 
6287+ PH
JXLJR 
`
WKHIUD

SXEOLFYRLGJR ^
IUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
LV 
VWHQHU WK
$GGWKHEXOLWWRQ
-%XWWRQEXWWRQ QHZ-%XWWRQ ³&KDQJHFRORUV´ 
EXWWRQDGG$FWLRQ/LVWHQHU WKLV 
 WRWKH
0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 
$GGWKHWZRZL HWV
WRQDQGGUDZLQJGJ

EXW
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+EXWWRQ 
WK SDQHO WR
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5GUDZ3DQHO  HWZRUHJLRQVRIWKH
IUDPHVHW6L]H   IUDPH
IUDPHVHW9LVLEOH WUXH 
`

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW 
` NVWHOOWKHIUDPH
` :KHQWKHXVHUFOLF 7KDWPHDQV HOI
WRUHSDLQW LWV QW LVFDOOHGRQHYH
U\
SDLQ W& RP SR QH
PH
ZLGJHWLQWKHIUD

FODVV0\'UDZ3DQHOH[WHQGV-3DQHO^
7KHGUDZ
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^ PHWKRGLVLQFDJS DQHO·VSDLQW&R
OOHGHYHU\W PSRQHQ
&RGHWR¿OOWKHRYDOZLWKDUDQGRPFRORU FOLFNV LPHWKHXVHUW  
6HHSDJHIRUWKHFRGH
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PXOWLSOHOLVWHQHUV

4M\¼[\ZaQ\_Q\P<?7J]\\WV[
4HESOUTHBUTTONWILLACTASITDOESNOW SIMPLYCALLINGREPAINTONTHE
FRAME4HESECONDBUTTONWHICHWELLSTICKINTHEEASTREGION WILL
CHANGETHETEXTONALABEL!LABELISJUSTTEXTONTHESCREEN

;WVW__MVMML.7=:_QLOM\[

QRUWK

Licensed by ZHVW FHQWHU


HDVW
EXWWR
KDQJLQ
J H
DO EHOFQZLOOEHKHU
ODEHOZLOO

Eduard Simons
JRKHUH
GUDZLQJSDQHOJRHV
LQWKHFHQWHU
VRXWK

104038 FRORUFKDQJLQJ
EXWWRQZLOOJRKHUH

)VL_MVMML\WOM\
<?7M^MV\[
5H OH
)STHATEVENPOSSIBLE(OWDO
YOUGETTWOEVENTSWHENYOU
HAVEONLYONEACTION0ERFORMED
METHOD

7KLVEXWWRQFKDQJHVWKHWH[W
RQWKHRSSRVLWHVLGH

7KLVEXWWRQFKDQJHVWKHFRORU
RIWKHFLUFOH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

0W_LWaW]OM\IK\QWVM^MV\[NWZ\ _WLQNNMZMV\J]\\WV[
_PMVMIKPJ]\\WVVMML[\WLW[WUM\PQVOLQNNMZMV\'

 RSWLRQRQH
,PSOHPHQWWZRDFWLRQ3HUIRUPHG PHWKRGV

FODVV0\*XLLPSOHPHQWV$FWLRQ/LVWHQHU^
ORWVRIFRGHKHUHDQGWKHQ

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW  %XWWKLVLVLPSRVVLEOH
`

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
ODEHOVHW7H[W ³7KDWKXUW´ 
`
`

)ODZ<RXFDQ·W9OUCANTIMPLEMENTTHESAMEMETHODTWICEINA*AVACLASS)TWONTCOMPILE
!NDEVENIFYOUCOULD HOWWOULDTHEEVENTSOURCEKNOWWHICHOFTHETWOMETHODSTOCALL

 RSWLRQWZR
5HJLVWHUWKHVDPHOLVWHQHUZLWKERWKEXWWRQV
FODVV0\*XLLPSOHPHQWV$FWLRQ/LVWHQHU^
GHFODUHDEXQFKRILQVWDQFHYDULDEOHVKHUH

SXEOLFYRLGJR ^
EXLOGJXL
FRORU%XWWRQ QHZ-%XWWRQ 
ODEHO%XWWRQ QHZ-%XWWRQ 
FRORU%XWWRQDGG$FWLRQ/LVWHQHU WKLV  5HJLVWHUWKHVDPHOLVWHQHU
ODEHO%XWWRQDGG$FWLRQ/LVWHQHU WKLV  ZLWKERWKEXWWRQV
PRUHJXLFRGHKHUH
`

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
LI HYHQWJHW6RXUFH  FRORU%XWWRQ ^
REMHFW
IUDPHUHSDLQW  4XHU\WKHHYHZQW
KL FKEXWWRQ
`HOVH^ WRILQGRXWHGLWDQGXVH
ODEHOVHW7H[W ³7KDWKXUW´  DFWXDOO\ILUFLGHZKDWWRGR
` WKDWWRGH
`
`
)ODZWKLVGRHVZRUNEXWLQPRVWFDVHVLW·VQRWYHU\22/NEEVENTHANDLER
DOINGMANYDIFFERENTTHINGSMEANSTHATYOUHAVEASINGLEMETHODDOINGMANYDIFFERENTTHINGS
)FYOUNEEDTOCHANGEHOWONESOURCEISHANDLED YOUHAVETOMESSWITHEVERYBODYSEVENT
HANDLER3OMETIMESITISAGOODSOLUTION BUTUSUALLYITHURTSMAINTAINABILITYANDEXTENSIBILITY

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
PXOWLSOHOLVWHQHUV

0W_LWaW]OM\IK\QWVM^MV\[NWZ\ _WLQNNMZMV\J]\\WV[
_PMVMIKPJ]\\WVVMML[\WLW[WUM\PQVOLQNNMZMV\'

 RSWLRQWKUHH
&UHDWHWZRVHSDUDWH$FWLRQ/LVWHQHUFODVVHV

FODVV0\*XL^
-)UDPHIUDPH
-/DEHOODEHO
YRLGJXL ^
FRGHWRLQVWDQWLDWHWKHWZROLVWHQHUVDQGUHJLVWHURQH
ZLWKWKHFRORUEXWWRQDQGWKHRWKHUZLWKWKHODEHOEXWWRQ
`
`FORVHFODVV

FODVV&RORU%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW 
` QFHWR
` :RQ·WZRUN7KLVFODVVGRHVQ·WKDYHDUHIHUH
WKH¶IUDPH·YDULDEOHRIWKH0\*XLFODVV
FODVV/DEHO%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
ODEHOVHW7H[W ³7KDWKXUW´ 
`
` 3UREOHP7KLVFODVVKDVQRUHIHU HQFHWRWKHYDULDEOH¶ODEHO·

)ODZWKHVHFODVVHVZRQ·WKDYHDFFHVVWRWKHYDULDEOHVWKH\QHHG
WRDFWRQ¶IUDPH·DQG¶ODEHO·9OUCOULDlXIT BUTYOUDHAVETOGIVEEACHOFTHE
LISTENERCLASSESAREFERENCETOTHEMAIN'5)CLASS SOTHATINSIDETHEACTION0ERFORMED
METHODSTHELISTENERCOULDUSETHE'5)CLASSREFERENCETOACCESSTHEVARIABLESOFTHE'5)
CLASS"UTTHATSBREAKINGENCAPSULATION SOWEDPROBABLYNEEDTOMAKEGETTERMETHODS
FORTHEGUIWIDGETSGET&RAME GET,ABEL ETC !NDYOUDPROBABLYNEEDTOADDA
CONSTRUCTORTOTHELISTENERCLASSSOTHATYOUCANPASSTHE'5)REFERENCETOTHELISTENERAT
THETIMETHELISTENERISINSTANTIATED!ND WELL ITGETSMESSIERANDMORECOMPLICATED

4HEREHASGOTTOBEABETTERWAY

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

:RXOGQ·WLWEHZRQGHUIXOLI\RX
FRXOGKDYHWZRGLIIHUHQWOLVWHQHUFODVVHV
EXWWKHOLVWHQHUFODVVHVFRXOGDFFHVVWKH
LQVWDQFHYDULDEOHVRIWKHPDLQ*8,FODVV
DOPRVWDVLIWKHOLVWHQHUFODVVHVEHORQJHG
WRWKHRWKHUFODVV7KHQ\RX·GKDYHWKHEHVW
RIERWKZRUOGV<HDKWKDWZRXOGEHGUHDP\
%XWLW·VMXVWDIDQWDV\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQQHUFODVVHV

1VVMZKTI[[\W\PMZM[K]M
9OUCANHAVEONECLASSNESTEDINSIDEANOTHER)TSEASY
*USTMAKESURETHATTHEDElNITIONFORTHEINNERCLASSIS
INSIDETHECURLYBRACESOFTHEOUTERCLASS

6LPSOHLQQHUFODVV
An inner class can
FODVV0\2XWHU&ODVV^

use all the methods
\
FODVV0\,QQHU&ODVV^
Q H U  F OD VVLVIXWOOHUFODVV and variables of the
,Q HGE\RX
YRLGJR ^
`
HQFORV outer class, even the
` private ones.
` The inner class gets
to use those variables
and methods just
as if the methods
!NINNERCLASSGETSASPECIALPASSTOUSETHEOUTERCLASSSSTUFF%VEN
and variables were
THEPRIVATESTUFF!NDTHEINNERCLASSCANUSETHOSEPRIVATEVARIABLES declared within the
ANDMETHODSOFTHEOUTERCLASSASIFTHEVARIABLESANDMEMBERS
WEREDElNEDINTHEINNERCLASS4HATSWHATSSOHANDYABOUTINNER
inner class.
CLASSESˆTHEYHAVEMOSTOFTHEBENElTSOFANORMALCLASS BUTWITH
SPECIALACCESSRIGHTS

,QQHUFODVVXVLQJDQRXWHUFODVVYDULDEOH
FODVV0\2XWHU&ODVV^

SULYDWHLQW[

FODVV0\,QQHU&ODVV^
YRLGJR ^ ULDEOH
[  XVH¶[·DVLILWZHVUHDYD
` RIWKHLQQHUFODV
`FORVHLQQHUFODVV

`FORVHRXWHUFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

)VQVVMZKTI[[QV[\IVKMU][\JM\QML\W
IVW]\MZKTI[[QV[\IVKM $QLQQHUREMHFW
VKDUHVDVSHFLDO
2EMEMBER WHENWETALKABOUTANINNERCLASSACCESSING ERQGZLWKDQ
SOMETHINGINTHEOUTERCLASS WEREREALLYTALKINGABOUTAN RXWHUREMHFW
INSTANCEOFTHEINNERCLASSACCESSINGSOMETHINGINANINSTANCEOF
THEOUTERCLASS"UTWHICHINSTANCE
#ANANYARBITRARYINSTANCEOFTHEINNERCLASSACCESSTHEMETHODS
ANDVARIABLESOFANYINSTANCEOFTHEOUTERCLASS.O

!NINNEROBJECTMUSTBETIEDTOASPECIlCOUTEROBJECTON
 0DNHDQLQVWDQFHRI
THEHEAP
WKHRXWHUFODVV
K
WPL ZZVS
JV

6]LY

FW
0\
2XWHUREMH

O  QV 
V
/M\\Q Q\P
] K P_  0DNHDQLQVWDQFHRI

\W VM Z
WKHLQQHUFODVVE\

 Q V XVLQJWKHLQVWDQFH

aW]Z [
RIWKHRXWHUFODVV

FW

0\
,QQHUREMH

KTI[
jh `ake  7KHRXWHUDQGLQQHUREMHFWV

& Hg dqEg DUHQRZLQWLPDWHO\OLQNHG


<j
WKH LQW[
O O HU IURP &KDU"´
VH \
EHVW HGP
QHZ 0RY HDS
7KH ³: KR
MHFWVRQWKHK
RURI 7KHVHWZRFLREDOERQG7KHLQQHU 6WULQJV RXWH U
DXWK
KDYHDVSH RXWHU·VYDULDEOHV
FDQXVHWKHYHUVD 
DQGYLFH LQQHU

7KHUH¶VDQH[FHSWLRQWRWKLVIRUDYHU\VSHFLDOFDVH²DQLQQHUFODVVGH¿QHG
ZLWKLQDVWDWLFPHWKRG%XWZH¶UHQRWJRLQJWKHUHDQG\RXPLJKWJR\RXUHQWLUH
-DYDOLIHZLWKRXWHYHUHQFRXQWHULQJRQHRIWKHVH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQQHUFODVVLQVWDQFHV

0W_\WUISMIVQV[\IVKMWNIVQVVMZKTI[[
)FYOUINSTANTIATEANINNERCLASSFROMCODEWITHINANOUTERCLASS THEINSTANCE
OFTHEOUTERCLASSISTHEONETHATTHEINNEROBJECTWILL@BONDWITH&OR
EXAMPLE IFCODEWITHINAMETHODINSTANTIATESTHEINNERCLASS THEINNER
OBJECTWILLBONDTOTHEINSTANCEWHOSEMETHODISRUNNING
#ODEINANOUTERCLASSCANINSTANTIATEONEOFITSOWNINNERCLASSES INEXACTLY
THESAMEWAYITINSTANTIATESANYOTHERCLASSQHZ0\,QQHU

[
FODVV0\2XWHU^ WH
ODVVKDVDSULYD
LQW
7KHRXWHUF EOH ¶ [·
SULYDWHLQW[ LQVWDQFHYDULD
gml]j
0DNHDQLQVW
LQQHUFODVV DQFHRIWKH
0\,QQHULQQHU QHZ0\,QQHU 

SXEOLFYRLGGR6WXII ^ 0\2XWHU
LQQHUJR 
` FDOODPHWKRGRQWKH
LQQHUFODVV

FODVV0\,QQHU^
YRLGJR ^
[
[  7KHPHWKRGLQWKHLQQHUFODOH¶VVX VHVWKH
` RXWHUFODVVLQVWD QFH YD ULDE [· DVLI¶[· LQW
`FORVHLQQHUFODVV EHORQJHGWRWKHLQQHUFODVV VSHFLDO
ERQG
`FORVHRXWHUFODVV gml]j

0\2XWHU

aff]j
Side bar
9OUCANINSTANTIATEANINNERINSTANCEFROMCODERUNNINGOUTSIDETHEOUTERCLASS BUTYOU
HAVETOUSEASPECIALSYNTAX#HANCESAREYOULLGOTHROUGHYOURENTIRE*AVALIFEANDNEVER 0\,QQHU
NEEDTOMAKEANINNERCLASSFROMOUTSIDE BUTJUSTINCASEYOUREINTERESTED
FODVV)RR^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0\2XWHURXWHU2EM QHZ0\2XWHU 
0\2XWHU0\,QQHULQQHU2EM RXWHU2EMQHZ0\,QQHU 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

1RZZHFDQJHWWKHWZREXWWRQ
FRGHZRUNLQJ
RHVQ·W
SXEOLFFODVV7ZR%XWWRQV^ WKHPDLQ*8,FODRQVV/GLVWHQHUQRZ
LPSOHPHQW$FWL
-)UDPHIUDPH
-/DEHOODEHO

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7ZR%XWWRQVJXL QHZ7ZR%XWWRQV 
JXLJR 
`

SXEOLFYRLGJR ^
IUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
KH
-%XWWRQODEHO%XWWRQ QHZ-%XWWRQ ³&KDQJH/DEHO´ 
HD G R I S DV VL QJ WKLV WWRLRWQ
LQVW HUUHJLVWUD
EXWWRQ·VOLVWVVHQDQHZLQVWDQFHRI
ODEHO%XWWRQDGG$FWLRQ/LVWHQHU QHZ/DEHO/LVWHQHU 
PHWKRGSD ULDWHOLVWHQHUFODVV
-%XWWRQFRORU%XWWRQ QHZ-%XWWRQ ³&KDQJH&LUFOH´  WKHDSSURS
FRORU%XWWRQDGG$FWLRQ/LVWHQHU QHZ&RORU/LVWHQHU 

ODEHO QHZ-/DEHO ³,¶PDODEHO´ 


7ZR%XWWRQV
0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 
REMHFW

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+FRORU%XWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5GUDZ3DQHO  RXWHU
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67ODEHO%XWWRQ  LQQHU
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW:(67ODEHO  /DEHO/LVWHQHU
REMHFW LQQHU
IUDPHVHW6L]H   &RORU/LVWHQHU
IUDPHVHW9LVLEOH WUXH  REMHFW
`
1RZZHJHWQ/ WRKDYH

7: 2 $ FW LR LVWHQHUV
FODVV/DEHO/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^ LQDVLQJO H FO DV V
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
ODEHOVHW7H[W ³2XFK´ 
` LQQHUFODVVNQ
`FORVHLQQHUFODVV DERXW¶ODEH RZV O·
FODVV&RORU/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW 
` WKHLQQHUFODVVJH
LQVWDQFHYDULDEO WVWRXVHWKH¶IUD
`FORVHLQQHUFODVV H Z PH·
H[SOLFLWUHIHUHQFH LWKRXWKDYLQJDQ

REMHFW W R WK HRXWHUFODVV
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQQHUFODVVHV

,CXC'ZRQUGF
7KLVZHHNVLQWHUYLHZ
,QVWDQFHRI DQ,QQHU&ODVV

+HDG)LUVW?PI\UISM[QVVMZKTI[[M[QUXWZ\IV\' [MXIZI\MNZWUM^MZaJWLaMT[M1VVMZKTI[[M[IZMV¼\M`IK\Ta
ZM][IJTM1VNIK\1¼^MPMIZL\PMUKITTML¹:M][MTM[[¸
,QQHUREMHFW?PMZMLW1[\IZ\'?MOQ^MaW]IKPIVKM\W
][MTM[[W^MZIVLW^MZIOIQVº
QUXTMUMV\\PM[IUMQV\MZNIKMUWZM\PIVWVKMQVIKTI[[
:MUMUJMZaW]KIV¼\QUXTMUMV\IUM\PWLUWZM\PIV ,QQHUREMHFWAM[Q\¼[\Z]M\PI\\PMQVVMZKTI[[Q[VW\I[
WVKMQVIVWZUIT2I^IKTI[[*]\][QVOQVVMZKTI[[M[MIKP ZM][IJTMQVNIK\[WUM\QUM[VW\ZM][IJTMI\ITTJMKI][MQ\¼[
QVVMZKTI[[KIVQUXTMUMV\\PM[IUMQV\MZNIKM[WaW]KIV QV\QUI\MTa\QML\W\PMQV[\IVKM^IZQIJTM[IVLUM\PWL[WN 
PI^MITT\PM[MLQNNMZMV\QUXTMUMV\I\QWV[WN \PM^MZa[IUM \PMW]\MZKTI[[*]\Q\¸
QV\MZNIKMUM\PWL[ +HDG)LUVW¸_PQKPWVTaXZW^M[UaXWQV\ 1N \PMa¼ZMVW\
+HDG)LUVW?Pa_W]TLaW]M^MZ_IV\\WQUXTMUMV\\PM ZM][IJTM_PaJW\PMZ_Q\PI[MXIZI\MKTI[['1UMIVW\PMZ
[IUMUM\PWL\_QKM' \PIV\PMQV\MZNIKMQ[[]M_PQKP[W]VL[TQSMI_WZSIZW]VL
\WUM
,QQHUREMHFW4M\¼[ZM^Q[Q\/=1M^MV\PIVLTMZ[<PQVS
IJW]\Q\QN aW]_IV\\PZMMJ]\\WV[\WMIKPPI^MI ,QQHUREMHFW)[1_I[[IaQVOaW]VMML\W\PQVSIJW]\
LQNNMZMV\M^MV\JMPI^QWZ\PMV][M\PZMMQVVMZKTI[[M[ITT 1;)IVLXWTaUWZXPQ[U
QUXTMUMV\QVO)K\QWV4Q[\MVMZ¸_PQKPUMIV[MIKPKTI[[ +HDG)LUVW73)VL1¼U\PQVSQVOIJW]\\PMUJMKI][M
OM\[\WQUXTMUMV\Q\[W_VIK\QWV8MZNWZUMLUM\PWL
,QQHUREMHFW*MKI][M\PMW]\MZIVLQVVMZKTI[[M[
+HDG)LUVW;WIZMM^MV\PIVLTMZ[\PMWVTaZMI[WV\W][M UQOP\VMML\WXI[[LQNNMZMV\1;)\M[\[ 4M\¼[[\IZ\_Q\P\PM
QVVMZKTI[[M[' XWTaUWZXPQK/=1TQ[\MVMZM`IUXTM?PI\¼[\PMLMKTIZML
,QQHUREMHFW7POW[PVW-^MV\PIVLTMZ[IZMR][\IV IZO]UMV\\aXMNWZ\PMJ]\\WV¼[TQ[\MVMZZMOQ[\ZI\QWV
WJ^QW][M`IUXTM)Va\QUMaW]VMMLI[MXIZI\MKTI[[J]\ UM\PWL'1VW\PMZ_WZL[QN aW]OW\W\PM)81IVLKPMKS
[\QTT_IV\\PI\KTI[[\WJMPI^MI[QN Q\_MZMXIZ\WN IVW\PMZ _PI\SQVLWN \PQVOKTI[[WZQV\MZNIKM\aXMLWaW]PI^M\W
KTI[[IVQVVMZKTI[[Q[\PMJM[\¸IVL[WUM\QUM[WVTa¸_Ia XI[[\W\PMILL)K\QWV4Q[\MVMZUM\PWL'
\WLWQ\ +HDG)LUVWAW]PI^M\WXI[[ITQ[\MVMZ;WUM\PQVO\PI\
+HDG)LUVW1¼U[\QTTKWVN][MLPMZM1N aW]_IV\\PMQVVMZ QUXTMUMV\[IXIZ\QK]TIZTQ[\MVMZQV\MZNIKMQV\PQ[KI[M
KTI[[\WJMPI^MTQSMQ\JMTWVO[\W\PMW]\MZKTI[[_PaPI^M )K\QWV4Q[\MVMZAMIP_MSVW_ITT\PQ[?PI\¼[aW]ZXWQV\'
I[MXIZI\MKTI[[QV\PMÅZ[\XTIKM'?Pa_W]TLV¼\\PMQVVMZ ,QQHUREMHFW5aXWQV\Q[\PI\XWTaUWZXPQKITTaaW]PI^M
KTI[[KWLMR][\JMQV\PMW]\MZKTI[[QV\PMÅZ[\XTIKM' IUM\PWL\PI\\ISM[WVTaWVMXIZ\QK]TIZ\aXM;WUM\PQVO
,QQHUREMHFW1R][\OI^MaW]WVM[KMVIZQW_PMZMaW] \PI\XI[[M[\PM1;)\M[\NWZ)K\QWV4Q[\MVMZ*]\¸IVL
VMMLUWZM\PIVWVMQUXTMUMV\I\QWVWN IVQV\MZNIKM*]\ PMZM¼[\PMJQO\PQVO¸_PI\QN aW]ZKTI[[VMML[\WJMIV1;
M^MV_PMVaW]¼ZMVW\][QVOQV\MZNIKM[aW]UQOP\VMML )WN [WUM\PQVO\PI\¼[IKTI[[\aXMZI\PMZ\PIVIVQV\MZNIKM'
\_WLQNNMZMV\KTI[[M[JMKI][M\PW[MKTI[[M[ZMXZM[MV\\_W +HDG)LUVW?W]TLV¼\aW]PI^MaW]ZKTI[[R][\M`\MVL\PM
LQNNMZMV\\PQVO[1\¼[OWWL77 KTI[[aW]VMML\WJMIXIZ\WN '1[V¼\\PI\\PM_PWTMXWQV\
+HDG)LUVW?PWI0WTLWVPMZM1\PW]OP\IJQOXIZ\WN  WN PW_[]JKTI[[QVO_WZS['1N *Q[I[]JKTI[[WN )\PMV
77LM[QOVQ[IJW]\ZM][MIVLUIQV\MVIVKMAW]SVW_\PM IVa_PMZMIV)Q[M`XMK\MLI*KIVJM][ML<PM_PWTM
QLMI\PI\QN aW]PI^M\_W[MXIZI\MKTI[[M[\PMaKIVMIKP XI[[I,WO_PMZMIV)VQUITQ[\PMLMKTIZML\aXM\PQVO
JMUWLQÅMLIVL][MLQVLMXMVLMV\TaI[WXXW[ML\W[\]NÅVO ,QQHUREMHFWAM[ *QVOW ;WVW__PI\PIXXMV[QN aW]
Q\ITTQV\WWVMKTI[[aILIaILIaILI*]\_Q\PIVQVVMZKTI[[ VMML\WXI[[\PM1;)\M[\NWZ\_WLQNNMZMV\KTI[[M['+TI[[M[
aW]¼ZM[\QTTR][\_WZSQVO_Q\PWVMZMITKTI[[QV\PMMVLZQOP\' \PI\IZMV¼\QV\PM[IUMQVPMZQ\IVKMPQMZIZKPa'
<PMMVKTW[QVOKTI[[Q[\PMWVTaWVM\PI\¼[ZM][IJTMIVL

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

+HDG)LUVW7P_MTTaW]R][\PUUU1\PQVS1¼UOM\ +HDG)LUVW?PW[MTQNM'AW]Z['<PMW]\MZWJRMK\'*W\P'
\QVOQ\AW]KIVIT_Ia[QUXTMUMV\UWZM\PIVWVMQV\MZNIKM ,QQHUREMHFW5QVM1KIV¼\JM\QML\WIVaW\PMZW]\MZ
J]\aW]KIVM`\MVLWVTaWVMKTI[[AW]KIVWVTaJMWVMSQVL WJRMK\5aWVTa_IaW]\Q[OIZJIOMKWTTMK\QWV
WN 1;)_PMVQ\KWUM[\WKTI[[\aXM[
+HDG)LUVW?PI\IJW]\\PMW]\MZWJRMK\'+IVQ\JM
,QQHUREMHFW?MTTLWVM AM[aW]KIV¼\JMJW\PI,WO I[[WKQI\ML_Q\PIVaW\PMZQVVMZWJRMK\['
IVLI*]\\WV*]\QN aW]¼ZMI,WO\PI\VMML[\W[WUM
\QUM[JMI*]\\WVQVWZLMZ\WXI[[aW]Z[MTN \WUM\PWL[ ,QQHUREMHFW;WVW__MPI^MQ\<PQ[Q[_PI\aW]ZMITTa
\PI\\ISMI*]\\WV\PM,WOKTI[[_PQKPM`\MVL[)VQUIT _IV\MLAM[aM[5a[WKITTML»UI\M¼KIVPI^MI[UIVa
[WQ\KIV¼\M`\MVL*]\\WVKIVPI^MIVQVVMZKTI[[\PI\IK\[ QVVMZWJRMK\[I[Q\_IV\[
WV\PM,WO¼[JMPITN I[I*]\\WVJaM`\MVLQVO*]\\WV +HDG)LUVW1[\PI\TQSM[MZQITUWVWOIUa'7ZKIVQ\PI^M
IVL\P][_PMZM^MZI*]\\WVQ[ZMY]QZML\PM,WOKIV \PMUITTI\\PM[IUM\QUM'
XI[[PQ[QVVMZ*]\\WVQV[\MILWN PQU[MTN1VW\PMZ_WZL[
,QQHUREMHFW)TTI\\PM[IUM\QUM<PMZM;I\Q[ÅML'
QV[\MILWN [IaQVO`\ISM*]\\WV\PQ[\PM,WOWJRMK\KITT[
`\ISM*]\\WVVM_5a1VVMZ*]\\WV +HDG)LUVW?MTTQ\LWM[UISM[MV[M)VLTM\¼[VW\
NWZOM\Q\_I[aW]M`\WTTQVO\PM^QZ\]M[WN ¹U]T\QXTM
+HDG)LUVW+IV1OM\IKTMIZM`IUXTM'
QUXTMUMV\I\QWV[WN \PM[IUMQV\MZNIKMº;WQ\UISM[[MV[M
,QQHUREMHFW:MUMUJMZ\PMLZI_QVOXIVMT_M][ML \PI\QN \PMW]\MZKTI[[PI[\PZMMJ]\\WV[Q\_W]TLVMML
_PMZM_MUILMW]ZW_V[]JKTI[[WN 28IVMT':QOP\VW_ \PZMMLQNNMZMV\QVVMZKTI[[M[IVL\P][\PZMMLQNNMZMV\QVVMZ
\PI\KTI[[Q[I[MXIZI\MVWVQVVMZKTI[[)VL\PI\¼[ÅVM KTI[[WJRMK\[\WPIVLTM\PMM^MV\[<PIVS[NWZM^MZa\PQVO
JMKI][M\PMKTI[[LWM[V¼\VMML[XMKQITIKKM[[\W\PMQV[\IVKM 0MZM¼[I\Q[[]M
^IZQIJTM[WN \PMUIQV/=1*]\_PI\QN Q\LQL'?PI\QN 
_M¼ZMLWQVOIVIVQUI\QWVWV\PI\XIVMTIVLQ\¼[OM\\QVOQ\[
KWWZLQVI\M[NZWU\PMUIQVIXXTQKI\QWV[IaJI[MLWV[WUM
\PQVO\PM][MZLWM[MT[M_PMZMQV\PM/=11V\PI\KI[MQN 
_MUISM\PMLZI_QVOXIVMTIVQVVMZKTI[[\PMLZI_QVO +HWKLQNVKH·V
XIVMTKTI[[OM\[\WJMI[]JKTI[[WN 28IVMT_PQTM\PMW]\MZ JRWLWPDGHKDYLQJWZR
KTI[[Q[[\QTTNZMM\WJMI[]JKTI[[WN [WUM\PQVOMT[M LQQHUFODVVREMHFWV%XWZH
+HDG)LUVWAM[1[MM )VL\PMLZI_QVOXIVMTQ[V¼\ZM][ KDYHDFFHVVWRDOOKLVSULYDWH
IJTMMVW]OP\WJMI[MXIZI\MKTI[[IVa_Ia[QVKM_PI\Q\¼[ GDWDVRMXVWLPDJLQHWKHGDPDJH
IK\]ITTaXIQV\QVOQ[[XMKQÅK\W\PQ[WVM/=1IXXTQKI\QWV ZHFRXOGGR
,QQHUREMHFWAM[ AW]¼^MOW\Q\ 
+HDG)LUVW/WWL<PMV_MKIVUW^MWV\W\PMVI\]ZMWN 
\PMZMTI\QWV[PQXJM\_MMVaW]IVL\PMW]\MZQV[\IVKM
,QQHUREMHFW?PI\Q[Q\_Q\PaW]XMWXTM'6W\MVW]OP
[WZLQLOW[[QXQVI[MZQW][\WXQKTQSMXWTaUWZXPQ[U'
+HDG)LUVW0MaaW]PI^MVWQLMIPW_U]KP\PMX]JTQKQ[
_QTTQVO\WXIaNWZ[WUMOWWLWTL\IJTWQLLQZ\;W[WUMWVM
KZMI\M[aW]IVLJMKWUM[QV[\IV\TaJWVLML\W\PMW]\MZ
WJRMK\Q[\PI\ZQOP\'
,QQHUREMHFWAM[\PI\¼[ZQOP\)VLaM[[WUMPI^M
KWUXIZMLQ\\WIVIZZIVOMLUIZZQIOM?MLWV¼\PI^MI[Ia
QV_PQKPWJRMK\_M¼ZMJWVLML\W
+HDG)LUVW)TZQOP\1¼TTOW_Q\P\PMUIZZQIOMIVITWOa
+IVaW]OM\ILQ^WZKMIVLZMUIZZa[WUM\PQVOMT[M'
,QQHUREMHFW6WQ\¼[NWZTQNM
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LQQHUFODVVHV

=[QVOIVQVVMZKTI[[NWZIVQUI\QWV
7ESAWWHYINNERCLASSESAREHANDYFOREVENTLISTENERS BECAUSE
YOUGETTOIMPLEMENTTHESAMEEVENT HANDLINGMETHODMORE
THANONCE"UTNOWWELLLOOKATHOWUSEFULANINNERCLASSISWHEN
USEDASASUBCLASSOFSOMETHINGTHEOUTERCLASSDOESNTEXTEND)N
OTHERWORDS WHENTHEOUTERCLASSANDINNERCLASSAREINDIFFERENT
INHERITANCETREES
/URGOALISTOMAKEASIMPLEANIMATION WHERETHECIRCLEMOVES
ACROSSTHESCREENFROMTHEUPPERLEFTDOWNTOTHELOWERRIGHT

VWDUW ILQLVK

Licensed byQ:
WKHUH DUH QR
'XPE 4XHVWLRQV
7HYAREWELEARNINGABOUT

Eduard Simons
ANIMATIONHERE)DOUBTIF)M
GOINGTOBEMAKINGGAMES

A: 9OUMIGHTNOTBEMAKING
GAMES BUTYOUMIGHTBE
+RZVLPSOHDQLPDWLRQZRUNV

104038
CREATINGSIMULATIONS WHERE
THINGSCHANGEOVERTIMETOSHOW
 3DLQWDQREMHFWDWDSDUWLFXODU[DQG\FRRUGLQDWH THERESULTSOFAPROCESS/RYOU
MIGHTBEBUILDINGAVISUALIZATION
J¿OO2YDO  
TOOLTHAT FOREXAMPLE UPDATES
AGRAPHICTOSHOWHOWMUCH
SL[HOVIURPWKHOHIW MEMORYAPROGRAMISUSING
SL[HOVIURPWKHWRS ORTOSHOWYOUHOWMUCH
TRAFFICISCOMINGTHROUGH
YOURLOAD BALANCINGSERVER
!NYTHINGTHATNEEDSTOTAKEA
 5HSDLQWWKHREMHFWDWDGLIIHUHQW[DQG\FRRUGLQDWH SETOFCONTINUOUSLY CHANGING
J¿OO2YDO   NUMBERSANDTRANSLATETHEMINTO
SOMETHINGUSEFULFORGETTING
INFORMATIONOUTOFTHENUMBERS
SL[HOVIURPWKHOHIW
SL[HOVIURPWKHWRS $OESNTTHATALLSOUNDBUSINESS
LIKE4HATSJUSTTHEhOFFICIAL
WKHREMHFWPRYHGDOLWWOH JUSTIFICATIONv OFCOURSE4HEREAL
GRZQDQGWRWKHULJKW  REASONWERECOVERINGITHEREIS
JUSTBECAUSEITSASIMPLEWAY
TODEMONSTRATEANOTHERUSE
OFINNERCLASSES!NDBECAUSE
WEJUSTLIKEANIMATION ANDOUR
 5HSHDWWKHSUHYLRXVVWHSZLWKFKDQJLQJ[DQG\YDOXHV
NEXT(EAD&IRSTBOOKISABOUT
IRUDVORQJDVWKHDQLPDWLRQLVVXSSRVHGWRFRQWLQXH *%%ANDWEKNOWWECANTGET
ANIMATIONINTHATONE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

:KDWZHUHDOO\ZDQWLVVRPHWKLQJOLNH

FODVV0\'UDZ3DQHOH[WHQGV-3DQHO^
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORURUDQJH 
J¿OO2YDO [\ 
LV
`
W&RPSRQHQW
` HDFKWLPHHSDRYLQDOJHWVSDLQWHGDWD
FDOOHGWK ORFDWLRQ
GLIIHUHQW

6KDUSHQ \RXU SHQFLO

%XWZKHUHGRZHJHWWKHQHZ[DQG\
FRRUGLQDWHV"

$QGZKRFDOOVUHSDLQW "
3EEIFYOUCANDESIGNASIMPLESOLUTIONTOGETTHEBALLTOANIMATEFROMTHETOPLEFTOFTHE
DRAWINGPANELDOWNTOTHEBOTTOMRIGHT/URANSWERISONTHENEXTPAGE SODONTTURN
THISPAGEUNTILYOUREDONE
"IG(UGE(INTMAKETHEDRAWINGPANELANINNERCLASS
!NOTHER(INTDONTPUTANYKINDOFREPEATLOOPINTHEPAINT#OMPONENT METHOD
7RITEYOURIDEASORTHECODE HERE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DQLPDWLRQXVLQJDQLQQHUFODVV

7KHFRPSOHWHVLPSOHDQLPDWLRQFRGH

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 

KH
SXEOLFFODVV6LPSOH$QLPDWLRQ^
W Z R LQV W D QF HYDULDEOHVLQW
\ 
LQW[ 
PDNH
* 8 , FO D VVIRUWKH[DQG
PD LQ IWKHFLUFOH
LQW\ 
FRRUGLQDWHVR
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6LPSOH$QLPDWLRQJXL QHZ6LPSOH$QLPDWLRQ 
JXLJR 
`

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 

0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 


1RWKLQJQHZKHU
IUDPHJHW&RQWHQW3DQH DGG GUDZ3DQHO  DQGSXWWKHPLQWH0DNHWKHZLGJHWV
KHIUDPH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

HWKH UHSHDWWKLVWLPHV
7KLVLVZKHUIRU LQWL LL ^
DFWLRQLV [ LQFUHPHQWWKH[DQG\
\ FRRUGLQDWHV ZH
W R UH SDLQWLWVHOI VR
WHOOW KH S DQ HO RF LRQ
DW
GUDZ3DQHOUHSDLQW 
QVH H W KH F LU FOHLQWKHQHZO
 FD
WU\^
7KUHDGVOHHS   6ORZLWGRZQDOLWWOH RWKHUZ
`FDWFK ([FHSWLRQH[ ^`
TXLFNO\\RXZRQ·W6((LW LVHLWZLOOPRYHVR
` PR YH
ZHUHQ·WVXSSRVHGWRDOUHDG\N 'RQ·WZRUU\\RX

WKUHDGVLQFKDSWHU QRZWKLV:H·OOJHWWR
`FORVHJR PHWKRG

 DQ
LW·VFODVV0\'UDZ3DQHOH[WHQGV-3DQHO^
R Z
1 UFO DVV
LQQH SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORUJUHHQ 
J¿OO2YDO [\  8VHWKHFRQWLQX
FRRUGLQDWHVRIWDOKHO\XSGDWHG[DQG\
` RXWHUFODVV
`FORVHLQQHUFODVV
`FORVHRXWHUFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

8KRK,WGLGQ·WPRYHLWVPHDUHG
:KDWGLGZHGRZURQJ"

7KHUH·VRQHOLWWOHÁDZLQWKHSDLQW&RPSRQHQW 
PHWKRG

:HIRUJRWWRHUDVHZKDWZDV 1RWH[DFWO\WKH
DOUHDG\WKHUH6RZHJRWWUDLOV ZHZHUHJRLQJIROURRN
7RÀ[LWDOOZHKDYHWRGRLVÀOOLQWKHHQWLUHSDQHOZLWK
WKHEDFNJURXQGFRORUEHIRUHSDLQWLQJWKHFLUFOHHDFK
WLPH7KHFRGHEHORZDGGVWZROLQHVDWWKHVWDUWRIWKH
PHWKRGRQHWRVHWWKHFRORUWRZKLWH WKHEDFNJURXQG
FRORURIWKHGUDZLQJSDQHO DQGWKHRWKHUWRÀOOWKH
HQWLUHSDQHOUHFWDQJOHZLWKWKDWFRORU,Q(QJOLVKWKH
FRGHEHORZVD\V´)LOODUHFWDQJOHVWDUWLQJDW[DQG\RI
 SL[HOVIURPWKHOHIWDQGSL[HOVIURPWKHWRS DQG
PDNHLWDVZLGHDQGDVKLJKDVWKHSDQHOLVFXUUHQWO\

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORUZKLWH 
J¿OO5HFW WKLVJHW:LGWK WKLVJHW+HLJKW 

JVHW&RORU &RORUJUHHQ 
JHW:LGWK DQG
PHWKRGVLQKHULWHJGHW+HLJKW DUH
J¿OO2YDO [\ 

`
IURP-3DQHO

<QJ[YNW bX^[ YNWLRU XY]RXWJU S^\] OX[ O^W


7HATCHANGESWOULDYOUMAKETOTHEXANDYCOORDINATESTOPRODUCETHEANIMATIONSBELOW
ASSUMETHElRSTONEEXAMPLEMOVESINPIXELINCREMENTS

 ;  ;

< <
START lNISH START lNISH

 ;  ;

< <
START lNISH START lNISH

 ;  ;

< <
START lNISH START lNISH
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&RGH.LWFKHQ

Code Kitchen

EHDWRQH EHDWWZR EHDWWKUHH EHDWIRXU

LetÕs make a music video. WeÕll use Java-generated random


graphics that keep time with the music beats.
Along the way weÕll register (and listen for) a new kind of
non-GUI event, triggered by the music itself.

5HPHPEHUWKLVSDUWLVDOORSWLRQDO%XWZHWKLQNLW·VJRRGIRU\RX
$QG\RX·OOOLNHLW$QG\RXFDQXVHLWWRLPSUHVVSHRSOH
2NVXUHLWPLJKWZRUNRQO\RQSHRSOHZKRDUHUHDOO\HDV\WRLPSUHVV
EXWVWLOO 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

4Q[\MVQVONWZIVWV/=1M^MV\
/+ MAYBENOTAMUSICVIDEO BUTWEWILLMAKE
APROGRAMTHATDRAWSRANDOMGRAPHICSONTHE
SCREENWITHTHEBEATOFTHEMUSIC)NANUTSHELL :KDWWKHPXVLFDUWSURJUDP
THEPROGRAMLISTENSFORTHEBEATOFTHEMUSIC QHHGVWRGR
ANDDRAWSARANDOMGRAPHICRECTANGLEWITHEACH
BEAT
 0DNHDVHULHVRI0,',PHVVDJHV
4HATBRINGSUPSOMENEWISSUESFORUS3OFAR
WEVELISTENEDFORONLY'5)EVENTS BUTNOW HYHQWVWRSOD\UDQGRPQRWHVRQDSLDQR
WENEEDTOLISTENFORAPARTICULARKINDOF-)$) RUZKDWHYHULQVWUXPHQW\RXFKRRVH
EVENT4URNSOUT LISTENINGFORANON '5)EVENTIS
JUSTLIKELISTENINGFOR'5)EVENTSYOUIMPLEMENT
 5HJLVWHUDOLVWHQHUIRUWKHHYHQWV
ALISTENERINTERFACE REGISTERTHELISTENERWITHAN
EVENTSOURCE THENSITBACKANDWAITFORTHEEVENT
SOURCETOCALLYOUREVENT HANDLERMETHODTHE  6WDUWWKHVHTXHQFHUSOD\LQJ
METHODDElNEDINTHELISTENERINTERFACE 
4HESIMPLESTWAYTOLISTENFORTHEBEATOFTHE
 (DFKWLPHWKHOLVWHQHU·VHYHQW
MUSICWOULDBETOREGISTERANDLISTENFORTHE
ACTUAL-)$)EVENTS SOTHATWHENEVERTHE KDQGOHUPHWKRGLVFDOOHGGUDZD
SEQUENCERGETSTHEEVENT OURCODEWILLGETIT UDQGRPUHFWDQJOHRQWKHGUDZLQJ
TOOANDCANDRAWTHEGRAPHIC"UTTHERESA SDQHODQGFDOOUHSDLQW
PROBLEM!BUG ACTUALLY THATWONTLETUSLISTEN
FORTHE-)$)EVENTSWEREMAKINGTHEONESFOR
./4%/. 
3OWEHAVETODOALITTLEWORK AROUND4HERE
ISANOTHERTYPEOF-)$)EVENTWECANLISTEN :H·OOEXLOGLWLQWKUHHLWHUDWLRQV
FOR CALLEDA#ONTROLLER%VENT/URSOLUTION
ISTOREGISTERFOR#ONTROLLER%VENTS ANDTHEN
MAKESURETHATFOREVERY./4%/.EVENT  9HUVLRQ2QH&RGHWKDWVLPSOLÀHVPDN
THERESAMATCHING#ONTROLLER%VENTlREDAT LQJDQGDGGLQJ0,',HYHQWVVLQFHZH·OO
THESAME@BEAT(OWDOWEMAKESURETHE EHPDNLQJDORWRIWKHP
#ONTROLLER%VENTISlREDATTHESAMETIME7E
ADDITTOTHETRACKJUSTLIKETHEOTHEREVENTS)N
OTHERWORDS OURMUSICSEQUENCEGOESLIKETHIS  9HUVLRQ7ZR5HJLVWHUDQGOLVWHQIRU
WKHHYHQWVEXWZLWKRXWJUDSKLFV
"%!4 ./4%/. #/.42/,,%2%6%.4
3ULQWVDPHVVDJHDWWKHFRPPDQGOLQH
"%!4 ./4%/&& ZLWKHDFKEHDW
"%!4 ./4%/. #/.42/,,%2%6%.4
 9HUVLRQ7KUHH7KHUHDOGHDO$GGV
"%!4 ./4%/&&
JUDSKLFVWRYHUVLRQWZR
ANDSOON
"EFOREWEDIVEINTOTHEFULLPROGRAM THOUGH
LETSMAKEITALITTLEEASIERTOMAKEANDADD-)$)
MESSAGESEVENTSSINCEINTHISPROGRAM WERE
GONNAMAKEALOTOFTHEM
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XWLOLW\PHWKRGIRUHYHQWV

)VMI[QMZ_Ia\WUISM
UM[[IOM[M^MV\[
7KLQJVWKDWKDYHWRKDSSHQIRU
2IGHTNOW MAKINGANDADDINGMESSAGESAND HDFKHYHQW
EVENTSTOATRACKISTEDIOUS&OREACHMESSAGE
WEHAVETOMAKETHEMESSAGEINSTANCEINTHIS  0DNHDPHVVDJHLQVWDQFH
CASE 3HORT-ESSAGE CALLSET-ESSAGE MAKEA 6KRUW0HVVDJH¿UVW QHZ6KRUW0HVVDJH 
-IDI%VENTFORTHEMESSAGE ANDADDTHEEVENT
TOTHETRACK)NLASTCHAPTERSCODE WEWENT
THROUGHEACHSTEPFOREVERYMESSAGE4HAT
 &DOOVHW0HVVDJH ZLWKWKHLQVWUXFWLRQV
MEANSEIGHTLINESOFCODEJUSTTOMAKEANOTE
PLAYANDTHENSTOPPLAYING&OURLINESTOADDA ¿UVWVHW0HVVDJH LQVWUXPHQW
./4%/.EVENT ANDFOURLINESTOADDA./4%
/&&EVENT
 0DNHD0LGL(YHQWLQVWDQFHIRUWKHPHVVDJH
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH QRWH  0LGL(YHQWQRWH2Q QHZ0LGL(YHQW ¿UVW 
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 
WUDFNDGG QRWH2Q 
 $GGWKHHYHQWWRWKHWUDFN
6KRUW0HVVDJHE QHZ6KRUW0HVVDJH 
EVHW0HVVDJH QRWH  WUDFNDGG QRWH2Q 
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 
WUDFNDGG QRWH2II 

/HW·VEXLOGDVWDWLFXWLOLW\PHWKRGWKDW 7KHHYHQW¶WLFN·IRU

PDNHVDPHVVDJHDQGUHWXUQVD0LGL(YHQW DUJXPHQWV :+(1WKLVPHVVDJH
WKHIRXHUPHVVDJH VKRXOGKDSSHQ
IRUWK
SXEOLFVWDWLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
ZKRR$PHWKRGZLWKILYHSDUDPHWHUV
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
PDNHWK H
WKHPHWKHRP
DVHW0HVVDJH FRPGFKDQRQHWZR 
VVDJHD
HYHQW QHZ0LGL(YHQW DWLFN  GSDUDPHWQHGUWKHHYHQWXVLQJ
V

`FDWFK ([FHSWLRQH ^`
UHWXUQHYHQW QWDOO
UHWXUQWKHHYHQW D0LGL(YH
`
ORDGHGXSZLWKWKHPHVVDJH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

-`IUXTM"PW_\W][M\PMVM_[\I\QK
UISM-^MV\UM\PWL
4HERESNOEVENTHANDLINGORGRAPHICSHERE JUSTASEQUENCEOF
NOTESTHATGOUPTHESCALE4HEPOINTOFTHISCODEISSIMPLYTOLEARN
HOWTOUSEOURNEWMAKE%VENT METHOD4HECODEFORTHENEXT
TWOVERSIONSISMUCHSMALLERANDSIMPLERTHANKSTOTHISMETHOD

LPSRUWMDYD[VRXQGPLGL  GRQ·WIRU
JHWWKHLP
SXEOLFFODVV0LQL0XVLF3OD\HU^ UW SR

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

WU\^
FHU
RSHQ DVHTXHQ
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
VHTXHQFHURSHQ 
PDNH DQG


6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334  PDNHDVHTXHQFH
7UDFNWUDFN VHTFUHDWH7UDFN  DQGDWUDFN

IRU LQWL LL  ^ PDNHDEXQFKRIHYHQWVWRPDNHWKHQRWHVNHHS
 JRLQJXS IURPSLDQRQRWHWRSLDQRQRWH 
WUDFNDGG PDNH(YHQW LL 
FDOORXUQHZPD (Y
WUDFNDGG PDNH(YHQW LL 
PHVVDJHDQGHYHNH
QW W
HQW PHWKRGWRPD
NHWKH
0LGL(YHQWUHWXUQHG KHQDGGWKHUHVXOW WKH
`HQGORRS IU RP
WKHWUDFN7KHVHDUH PDNH(YHQW WR

127(2))  127(21  DQ
VHTXHQFHUVHW6HTXHQFH VHT  SDLUV G
VHTXHQFHUVHW7HPSR,Q%30   VWDUWLWUXQQLQJ
VHTXHQFHUVWDUW 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHPDLQ

SXEOLFVWDWLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 

`FDWFK ([FHSWLRQH ^`
UHWXUQHYHQW
`
`FORVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRQWUROOHUHYHQWV

>MZ[QWV<_W"ZMOQ[\MZQVOIVLOM\\QVO+WV\ZWTTMZ-^MV\[
:HQHHGWROLVWHQIRU&RQWHUL UROOHU(YHQWV
VRZHLPSOHP HQW WK HOLV WHQ QWHUIDFH
LPSRUWMDYD[VRXQGPLGL 
SXEOLFFODVV0LQL0XVLF3OD\HULPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF3OD\HUPLQL QHZ0LQL0XVLF3OD\HU 
PLQLJR 
` U
WKHVHTXHQFHWK
SXEOLFYRLGJR ^ IRUHYHQWVZLWK H
5HJLVWHU HJLVWUDWLRQPHWKRGWDNHV
7KHH YHQWU
\UHSUHV W HQWLQJ
WU\^
QH U $ 1'DQLQWDUUD ZDQ
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU  &RQWUROOHU(YHQWV\RX
OLVWH
VHTXHQFHURSHQ  WKHOLVWRI O\RQHHYHQW
:HZDQWRQ
LQW>@HYHQWV,:DQW ^`
VHTXHQFHUDGG&RQWUROOHU(YHQW/LVWHQHU WKLVHYHQWV,:DQW 

6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 


7UDFNWUDFN VHTFUHDWH7UDFN 
+HUH·VKRZZHSLFNXSWKHE
IRU LQWL LL  ^
RXU2:1&RQWUROOHU( HDWZHLQVHUW
WUDFNDGG PDNH(YHQW LL  YHQ W 
W\SHLV&RQWUROOHU( W Z VD\VWKHHYHQW
HYHQWQXPEHUYHQ 7 KLV
LWKDQDUJXPHQWIRU
WUDFNDGG PDNH(YHQW L  HY
,1*:HSXWLWLQ 867 HQWZLOOGR127+
DQHYHQWHDFKWLPH-D QR WH
VRWKDWZHFDQJHW
WUDFNDGG PDNH(YHQW LL 
ZRUGVLWVVROHSXU LVSOD\HG,QRWKH
`HQGORRS VRWKDWVRPHWKLQJZULOO
ILUHWKDW:(FDQOSRLVWVHHQLVIR
IRU127(212))HYHQW U ZHFDQ·WOLVWHQ
VHTXHQFHUVHW6HTXHQFH VHT 
PDNLQJWKLVHYHQWKD V 1RWHWKDWZH·UH
VHTXHQFHUVHW7HPSR,Q%30   SS HQ DW
WKH127(216RZ QW WKH6$0(WLFNDV
KDSSHQVZH·OONQRZDEKHRXW KH127(21HYHQW
VHTXHQFHUVWDUW 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH ` LW
ZLOOILUHDWWKHVDPHWLPH EHFDXVH285HYHQW
`FORVH 
I WUROOHU
URPWKH&RQJH
GO HU P HW KR G ZH WWKH
7KHHYHQWKDQ
SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
L QW HU ID FH (DFKWLPHG
(YHQWOLVW SULQW´ODµWRWKHFRPPDQ OLQH
HQ HU
6\VWHPRXWSULQWOQ ³OD´ 
HYHQWZH·OO
`

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 
 &RGHWKDW·VGLIIHUHQWIURPWKHSUHYLRXV
`FDWFK ([FHSWLRQH ^` YHUVLRQLVKLJKOLJKWHGLQJUD\ DQGZH·UH
UHWXUQHYHQW QRWUXQQLQJLWDOOZLWKLQPDLQ WKLVWLPH
`
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

>MZ[QWV<PZMM"LZI_QVOOZIXPQK[QV\QUM_Q\P\PMU][QK
4HISlNALVERSIONBUILDSONVERSIONTWOBYADDINGTHE'5)PARTS7EBUILDA
FRAME ADDADRAWINGPANELTOIT ANDEACHTIMEWEGETANEVENT WEDRAWA
NEWRECTANGLEANDREPAINTTHESCREEN4HEONLYOTHERCHANGEFROMVERSION
TWOISTHATTHENOTESPLAYRANDOMLYASOPPOSEDTOSIMPLYMOVINGUPTHE
SCALE
4HEMOSTIMPORTANTCHANGETOTHECODEBESIDESBUILDINGASIMPLE'5)
ISTHATWEMAKETHEDRAWINGPANELIMPLEMENTTHE#ONTROLLER%VENT,ISTENER
RATHERTHANTHEPROGRAMITSELF3OWHENTHEDRAWINGPANELANINNERCLASS
GETSTHEEVENT ITKNOWSHOWTOTAKECAREOFITSELFBYDRAWINGTHERECTANGLE
#OMPLETECODEFORTHISVERSIONISONTHENEXTPAGE

7KHGUDZLQJSDQHOLQQHUFODVV

OLVDOLVWH QHU
7KHGUDZLQJSDQH
FODVV0\'UDZ3DQHOH[WHQGV-3DQHOLPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^

ERROHDQPVJ IDOVH
:HVHWDIODJWRIDOVHDQGZH·OOVHWLW
WRWUXHRQO\ZKHQZHJHWDQHYHQW
SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
PVJ WUXH
:HJRWDQHYHQWVRZHVHWWKHIODJWR
UHSDLQW 
` WUXHDQGFDOOUHSDLQW
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
LI PVJ ^
:HKDYHWRXVHDIODJEHFDXVH27+(5WKLQJ
 DQG ZHZDQWWRSDLQW21/<ZKHQWKHUH·VDVPLJKWWULJJHUDUHSDLQW 
&RQWUROOHU(YHQW
*UDSKLFV'J  *UDSKLFV' J

LQWU  LQW  0DWKUDQGRP   


LQWJU  LQW  0DWKUDQGRP   
LQWE  LQW  0DWKUDQGRP    7KHUHVWLVFRGHWRJHQHUDWH
DUDQGRPFRORUDQGSDLQWD
JVHW&RORU QHZ&RORU UJUE  VHPLUDQGRPUHFWDQJOH
LQWKW  LQW  0DWKUDQGRP    
LQWZLGWK  LQW  0DWKUDQGRP    
LQW[  LQW  0DWKUDQGRP    
LQW\  LQW  0DWKUDQGRP    
J¿OO5HFW [\KWZLGWK 
PVJ IDOVH

`FORVHLI
`FORVHPHWKRG
`FORVHLQQHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
0LQL0XVLF3OD\HUFRGH

6KDUSHQ \RXU SHQFLO


LPSRUWMDYD[VRXQGPLGL  7KLVLVWKHFRPSOHWHFRGHOLVWLQJIRU9HUVLRQ
LPSRUWMDYDLR  7KUHH,WEXLOGVGLUHFWR\RQ9HUVLRQ7ZR7U\
LPSRUWMDYD[VZLQJ  WRDQQRWDWHLW\RXUVHOIZLWKRXWORRNLQJDWWKH
LPSRUWMDYDDZW 
SUHYLRXVSDJHV
SXEOLFFODVV0LQL0XVLF3OD\HU^

VWDWLF-)UDPHI QHZ-)UDPH ³0\)LUVW0XVLF9LGHR´ 


VWDWLF0\'UDZ3DQHOPO

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF3OD\HUPLQL QHZ0LQL0XVLF3OD\HU 

Licensed by
PLQLJR 
`FORVHPHWKRG


SXEOLFYRLGVHW8S*XL ^
PO QHZ0\'UDZ3DQHO 

Eduard Simons
IVHW&RQWHQW3DQH PO 
IVHW%RXQGV  
IVHW9LVLEOH WUXH 
`FORVHPHWKRG


104038
SXEOLFYRLGJR ^
VHW8S*XL 

WU\^

6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
VHTXHQFHURSHQ 
VHTXHQFHUDGG&RQWUROOHU(YHQW/LVWHQHU POQHZLQW>@^` 
6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 
7UDFNWUDFN VHTFUHDWH7UDFN 

LQWU 
IRU LQWL LL  ^

U  LQW  0DWKUDQGRP    


WUDFNDGG PDNH(YHQW UL 
WUDFNDGG PDNH(YHQW L 
WUDFNDGG PDNH(YHQW UL 
`HQGORRS

VHTXHQFHUVHW6HTXHQFH VHT 
VHTXHQFHUVWDUW 
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHPHWKRG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 

`FDWFK ([FHSWLRQH ^`
UHWXUQHYHQW
`FORVHPHWKRG

FODVV0\'UDZ3DQHOH[WHQGV-3DQHOLPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^
ERROHDQPVJ IDOVH

SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
PVJ WUXH
UHSDLQW 
`

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
LI PVJ ^

*UDSKLFV'J  *UDSKLFV' J

LQWU  LQW  0DWKUDQGRP   


LQWJU  LQW  0DWKUDQGRP   
LQWE  LQW  0DWKUDQGRP   

JVHW&RORU QHZ&RORU UJUE 

LQWKW  LQW  0DWKUDQGRP    


LQWZLGWK  LQW  0DWKUDQGRP    

LQW[  LQW  0DWKUDQGRP    


LQW\  LQW  0DWKUDQGRP    

J¿OO5HFW [\KWZLGWK 
PVJ IDOVH

`FORVHLI
`FORVHPHWKRG
`FORVHLQQHUFODVV

`FORVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH:KR$P,

!BUNCHOF*AVAHOT SHOTS INFULLCOSTUME AREPLAYINGTHEPARTYGAMEh7HO


AM)v4HEYGIVEYOUACLUE ANDYOUTRYTOGUESSWHOTHEYARE BASEDON
WHATTHEYSAY!SSUMETHEYALWAYSTELLTHETRUTHABOUTTHEMSELVES)FTHEY
1dQ^OU_Q HAPPENTOSAYSOMETHINGTHATCOULDBETRUEFORMORETHANONEGUY THEN
WRITEDOWNALLFORWHOMTHATSENTENCEAPPLIES&ILLINTHEBLANKSNEXTTOTHE
SENTENCEWITHTHENAMESOFONEORMOREATTENDEES

*1#/ 4ONIGHTSATTENDEES
 ` !NYOFTHECHARMINGPERSONALITIESFROMTHISCHAPTERJUST
MIGHTSHOWUP

,JRWWKHZKROH*8,LQP\KDQGV

(YHU\HYHQWW\SHKDVRQHRI WKHVH  

7KHOLVWHQHU·VNH\PHWKRG 

7KLVPHWKRGJLYHV-)UDPHLWVVL]H  

<RXDGGFRGHWRWKLVPHWKRGEXWQHYHUFDOOLW 

:KHQWKHXVHUDFWXDOO\GRHVVRPHWKLQJLW·VDQBBBBB

0RVWRI WKHVHDUHHYHQWVRXUFHV  

,FDUU\GDWDEDFNWRWKHOLVWHQHU  

$QDGG;[[/LVWHQHU  PHWKRGVD\VDQREMHFWLVDQBBBBB

+RZDOLVWHQHUVLJQVXS   

7KHPHWKRGZKHUHDOOWKHJUDSKLFVFRGHJRHV

,·PW\SLFDOO\ERXQGWRDQLQVWDQFH  

7KH¶J·LQ *UDSKLFVJ LVUHDOO\RI FODVV 

7KHPHWKRGWKDWJHWVSDLQW&RPSRQHQW  UROOLQJ 

7KHSDFNDJHZKHUHPRVWRI WKH6ZLQJHUVUHVLGH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

"%THECOMPILER
1dQ^OU_Q 7KH-DYDILOHRQWKLVSDJHUHSUHVHQWVD
FRPSOHWHVRXUFHILOH<RXUMRELVWRSOD\
LPSRUWMDYD[VZLQJ 
FRPSLOHUDQGGHWHUPLQHZKHWKHUWKLVILOH
LPSRUWMDYDDZWHYHQW  ZLOOFRPSLOH,ILWZRQ·WFRPSLOHKRZ
LPSRUWMDYDDZW  ZRXOG\RXIL[LWDQGLILWGRHV
FRPSLOHZKDWZRXOGLWGR"
FODVV,QQHU%XWWRQ^

-)UDPHIUDPH
-%XWWRQE

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
,QQHU%XWWRQJXL QHZ,QQHU%XWWRQ 
JXLJR 
`

SXEOLFYRLGJR ^
IUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ
   -)UDPH(;,7B21B&/26( 

E QHZ-%XWWRQ ´$µ 


EDGG$FWLRQ/LVWHQHU 

IUDPHJHW&RQWHQW3DQH DGG
   %RUGHU/D\RXW6287+E 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

FODVV%/LVWHQHUH[WHQGV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWH ^
LI EJHW7H[W HTXDOV ´$µ ^
EVHW7H[W ´%µ 
`HOVH^
EVHW7H[W ´$µ 
`
`
`
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OH3RRO3X]]OH LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
SXEOLFFODVV$QLPDWH^
LQW[ 
3RRO3X]]OH LQW\ 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
9OURJOBISTOTAKECODESNIPPETSFROM $QLPDWHJXL QHZ$QLPDWH 
THEPOOLANDPLACETHEMINTOTHEBLANK JXLJR 
LINESINTHECODE9OUMAYUSETHE `
SAMESNIPPETMORETHANONCE SXEOLFYRLGJR ^
ANDYOUWONTNEEDTOUSEALLTHE
-)UDPHBBBBBBBBB QHZ-)UDPH 
SNIPPETS9OURGOALISTOMAKEA
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ
CLASSTHATWILLCOMPILEANDRUN
ANDPRODUCETHEOUTPUTLISTED    -)UDPH(;,7B21B&/26( 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBJHW&RQWHQW3DQH DGG GUDZ3 
/UTPUT BBBBBBBBBBBBBBBBBBBBBBBBBB
4HE!MAZING 3HRINKING "LUE2ECTANGLE BBBBBBBBBVHW9LVLEOH WUXH 
4HISPROGRAMWILLPRODUCEABLUE IRU LQWL LBBBBBBBBBBBBBBB ^
RECTANGLETHATWILLSHRINKANDSHRINKAND BBBBBBBBBBBBBBBBBBBBB
DISAPPEARINTOAlELDOFWHITE BBBBBBBBBBBBBBBBBBBBB
WU\^
7KUHDGVOHHS  
`FDWFK ([FHSWLRQH[ ^`
`
`
FODVV0\'UDZ3H[WHQGV-3DQHO^
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLF
BBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
.OTE%ACHSNIPPET BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
FROMTHEPOOLCANBE BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
USEDMORETHANONCE `
`
`

GFILL2ECTX Y X  Y 


I
GFILL2ECTX Y  X
  Y

I Y
GFILL2ECT X
  Y
 X Y
X GFILL2ECT    I Y X
Y GFILL2ECT    !NIMATEFRAMENEW!NIMATE
G -Y$RAW0DRAW0NEW-Y$RAW0
GSET#OLORBLUE
DRAW0PAINT #ONTENT0ANEDRAW0NEW#ONTENT0ANE
GSET#OLORWHITE DRAW
DRAWREPAINT DRAW0SET3IZE 
GSET#OLOR#OLORBLUE FRAME
DRAW0REPAINT FRAMESET3IZE 
GSET#OLOR#OLORWHITE PANEL
PANELSET3IZE 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJJXL

([HUFLVH6ROXWLRQV "%THECOMPILER
LPSRUWMDYD[VZLQJ  2QFHWKLVFRGH
LPSRUWMDYDDZWHYHQW  LVÀ[HGLWZLOO
*1#/ ` LPSRUWMDYDDZW 
FUHDWHD*8,ZLWK
DEXWWRQWKDW
WRJJOHVEHWZHHQ
)GOTTHEWHOLE'5) INMYHANDS -)UDPH FODVV,QQHU%XWWRQ^ $DQG%ZKHQ\RX
FOLFNLW
%VERYEVENTTYPEHASONEOFTHESE OLVWHQHULQWHUIDFH -)UDPHIUDPH
-%XWWRQE
4HELISTENERSKEYMETHOD DFWLRQ3HUIRUPHG 

4HISMETHODGIVES*&RAMEITSSIZE VHW6L]H  SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


,QQHU%XWWRQJXL QHZ,QQHU%XWWRQ 
9OUADDCODETOTHISMETHODBUT JXLJR 
NEVERCALLIT SDLQW&RPSRQHQW  `

7HENTHEUSERACTUALLYDOES SXEOLFYRLGJR ^
SOMETHING ITSAN???? HYHQW
IUDPH QHZ-)UDPH 
-OSTOFTHESEAREEVENTSOURCES VZLQJFRPSRQHQWV IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ
   -)UDPH(;,7B21B&/26( 
)CARRYDATABACKTOTHELISTENER HYHQWREMHFW
7KHDGG$FWLRQ/LVWHQHU  
!NADD8XX,ISTENER METHOD PHWKRGWDNHVDFODVVWKDW
SAYSANOBJECTISAN??? HYHQWVRXUFH LPSOHPHQWVWKH$FWLRQ/LV
WHQHULQWHUIDFH
(OWALISTENERSIGNSUP DGG$FWLRQ/LVWHQHU 

4HEMETHODWHEREALLTHE E QHZ-%XWWRQ ´$µ 


GRAPHICSCODEGOES SDLQW&RPSRQHQW  EDGG$FWLRQ/LVWHQHU VM_*4Q[\MVMZ 

)MTYPICALLYBOUNDTOANINSTANCE LQQHUFODVV IUDPHJHW&RQWHQW3DQH DGG
   %RUGHU/D\RXW6287+E 
4HE@GIN'RAPHICSG IS
IUDPHVHW6L]H  
REALLYOFTHISCLASS *UDSKLFVG
IUDPHVHW9LVLEOH WUXH 
4HEMETHODTHATGETS `
PAINT#OMPONENT ROLLING UHSDLQW 
FODVV%/LVWHQHUQUXTMUMV\[$FWLRQ/LVWHQHU^
4HEPACKAGEWHEREMOSTOFTHE SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWH ^
3WINGERSRESIDE MDYD[VZLQJ LI EJHW7H[W HTXDOV ´$µ ^
EVHW7H[W ´%µ 
`HOVH^ $FWLRQ/LVWHQHULVDQ
EVHW7H[W ´$µ  LQWHUIDFHLQWHUIDFHV
DUHLPSOHPHQWHGQRW
`
H[WHQGHG
`
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

3RRO3X]]OH
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
SXEOLFFODVV$QLPDWH^
LQW[ 
LQW\ 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$QLPDWHJXL QHZ$QLPDWH 
JXLJR 
`
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ
4HE!MAZING 3HRINKING "LUE    -)UDPH(;,7B21B&/26( 
2ECTANGLE
0\'UDZ3GUDZ3 QHZ0\'UDZ3 
IUDPHJHW&RQWHQW3DQH DGG GUDZ3 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
IRU LQWL LL[\ ^
[
GUDZ3UHSDLQW 
WU\^
7KUHDGVOHHS  
`FDWFK ([FHSWLRQH[ ^`
`
`
FODVV0\'UDZ3H[WHQGV-3DQHO^
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORUZKLWH 
 JÀOO5HFW  
JVHW&RORU &RORUEOXH 
JÀOO5HFW [\[ \  
`
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

:RUNRQ<RXU :K\ZRQ·W
WKHEDOOJRZKHUH,ZDQW
6ZLQJ LWWRJR" OLNHVPDFNLQ6X]\
6PLWK·VIDFH ,·YHJRWWDOHDUQ
WRFRQWUROLW

6ZLQJLVHDV\5NLESSYOUACTUALLYCAREWHERETHINGSENDUPONTHESCREEN3WINGCODE
LOOKSEASY BUTTHENYOUCOMPILEIT RUNIT LOOKATITANDTHINK hHEY THATSNOTSUPPOSEDTOGO
THEREv4HETHINGTHATMAKESITEASYTOCODEISTHETHINGTHATMAKESITHARDTOCONTROLˆTHE
,AYOUT-ANAGER,AYOUT-ANAGEROBJECTSCONTROLTHESIZEANDLOCATIONOFTHEWIDGETSINA
*AVA'5)4HEYDOATONOFWORKONYOURBEHALF BUTYOUWONTALWAYSLIKETHERESULTS9OUWANT
TWOBUTTONSTOBETHESAMESIZE BUTTHEYARENT9OUWANTTHETEXTFIELDTOBETHREEINCHESLONG
BUTITSNINE/RONE!NDUNDERTHELABELINSTEADOFNEXTTOIT"UTWITHALITTLEWORK YOUCANGET
LAYOUTMANAGERSTOSUBMITTOYOURWILL)NTHISCHAPTER WELLWORKONOUR3WINGANDINADDITION
TOLAYOUTMANAGERS WELLLEARNMOREABOUTWIDGETS7ELLMAKETHEM DISPLAYTHEMWHEREWE
CHOOSE ANDUSETHEMINAPROGRAM)TSNOTLOOKINGTOOGOODFOR3UZY

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRPSRQHQWVDQGFRQWDLQHUV

;_QVOKWUXWVMV\[
#OMPONENTISTHEMORECORRECTTERMFORWHATWEVEBEENCALLINGAWIDGET
4HETHINGSYOUPUTINA'5)4HETHINGSAUSERSEESANDINTERACTSWITH4EXT
lELDS BUTTONS SCROLLABLELISTS RADIOBUTTONS ETCAREALLCOMPONENTS)N A widget is technically
FACT THEYALLEXTENDMDYD[VZLQJ-&RPSRQHQW
a Swing Component.
+WUXWVMV\[KIVJMVM[\ML Almost every thing
)N3WING VIRTUALLYALLCOMPONENTSARECAPABLEOFHOLDINGOTHER you can stick in a
COMPONENTS)NOTHERWORDS YOUCANSTICKJUSTABOUTANYTHINGINTOANYTHING
ELSE"UTMOSTOFTHETIME YOULLADDUSERINTERACTIVECOMPONENTSSUCHAS GUI extends from
BUTTONSANDLISTSINTOBACKGROUNDCOMPONENTSSUCHASFRAMESANDPANELS javax.swing.JComponent.
!LTHOUGHITSPOSSIBLETOPUT SAY APANELINSIDEABUTTON THATSPRETTY
WEIRD ANDWONTWINYOUANYUSABILITYAWARDS
7ITHTHEEXCEPTIONOF*&RAME THOUGH THEDISTINCTIONBETWEENINTERACTIVE
COMPONENTSANDBACKGROUNDCOMPONENTSISARTIlCIAL!*0ANEL FOR
EXAMPLE ISUSUALLYUSEDASABACKGROUNDFORGROUPINGOTHERCOMPONENTS
BUTEVENA*0ANELCANBEINTERACTIVE*USTASWITHOTHERCOMPONENTS YOU
CANREGISTERFORTHE*0ANELSEVENTSINCLUDINGMOUSECLICKSANDKEYSTROKES

)RXUVWHSVWRPDNLQJD*8, UHYLHZ
 0DNHDZLQGRZ D-)UDPH
-)UDPHIUDPH QHZ-)UDPH 

 0DNHDFRPSRQHQW EXWWRQWH[WÀHOGHWF
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFNPH´ 

 $GGWKHFRPSRQHQWWRWKHIUDPH
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67EXWWRQ 

 'LVSOD\LW JLYHLWDVL]HDQGPDNHLWYLVLEOH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

3XWLQWHUDFWLYHFRPSRQHQWV ,QWREDFNJURXQGFRPSRQHQWV

-%XWWRQ
-)UDPH -3DQHO
-&KHFN%R[

-7H[W)LHOG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

4IaW]\5IVIOMZ[
!LAYOUTMANAGERISA*AVAOBJECTASSOCIATED $VDOD\RXWPDQDJHU
WITHAPARTICULARCOMPONENT ALMOSTALWAYSA ,·PLQFKDUJHRIWKH VL]H
BACKGROUNDCOMPONENT4HELAYOUTMANAGER DQGSODFHPHQWRI\RXUFRPSRQHQWV
CONTROLSTHECOMPONENTSCONTAINEDWITHINTHE ,QWKLV*8,,·PWKHRQHZKRGHFLGHG
COMPONENTTHELAYOUTMANAGERISASSOCIATED KRZELJWKHVHEXWWRQVVKRXOGEHDQG
WITH)NOTHERWORDS IFAFRAMEHOLDSAPANEL
ZKHUHWKH\DUHUHODWLYHWRHDFK
ANDTHEPANELHOLDSABUTTON THEPANELSLAYOUT
MANAGERCONTROLSTHESIZEANDPLACEMENTOF RWKHUDQGWKH IUDPH
THEBUTTON WHILETHEFRAMESLAYOUTMANAGER
CONTROLSTHESIZEANDPLACEMENTOFTHE
PANEL4HEBUTTON ONTHEOTHERHAND
DOESNTNEEDALAYOUTMANAGERBECAUSETHE
BUTTONISNTHOLDINGOTHERCOMPONENTS
)FAPANELHOLDSlVETHINGS EVENIFTHOSE
lVETHINGSEACHHAVETHEIROWNLAYOUT
MANAGERS THESIZEANDLOCATIONOFTHElVE
THINGSINTHEPANELAREALLCONTROLLEDBYTHE
PANELSLAYOUTMANAGER)FTHOSElVETHINGS
INTURN HOLDOTHERTHINGS THENTHOSEOTHER
THINGSAREPLACEDACCORDINGTOTHELAYOUT
MANAGEROFTHETHINGHOLDINGTHEM
7HENWESAYHOLDWEREALLYMEANADDASIN A
PANELHOLDSABUTTONBECAUSETHEBUTTONWAS 3DQHO$·VOD\RXWP
FRQWUROVWKHVL] DQDJHU
ADDEDTOTHEPANELUSINGSOMETHINGLIKE 
OD \ R X W  PDQDJSHUODFHPHQW SODFHPHQWRI3DQHHODQG
·V G %
P\3DQHODGG EXWWRQ 
3DQHO%ROVWKHVL]HDWQRQV
,AYOUTMANAGERSCOMEINSEVERALmAVORS AND Q W U
FR HWKUHH E X W
EACHBACKGROUNDCOMPONENTCANHAVEITSOWN RIWK EXWWRQ
LAYOUTMANAGER,AYOUTMANAGERSHAVETHEIR
OWNPOLICIESTOFOLLOWWHENBUILDINGALAYOUT EXWWRQ
&OREXAMPLE ONELAYOUTMANAGERMIGHTINSIST
THATALLCOMPONENTSINAPANELMUSTBETHESAME EXWWRQ
SIZE ARRANGEDINAGRID WHILEANOTHERLAYOUT
MANAGERMIGHTLETEACHCOMPONENTCHOOSEITS
3DQHO%
OWNSIZE BUTSTACKTHEMVERTICALLY(ERESAN
EXAMPLEOFNESTEDLAYOUTS
-3DQHOSDQHO$ QHZ-3DQHO  3DQHO$
-3DQHOSDQHO% QHZ-3DQHO 
3DQHO$·VOD\RXWPDQDJHU V127
SDQHO%DGG QHZ-%XWWRQ ³EXWWRQ´  VD\DERXWWKHWKUHHEXWWKD +,1*WR
RIFRQWUROLVRQO\RQHOHYHRQV 7KHKLHUDUFK\
PDQDJHUFRQWUROVRQO\WKHO³3 DQHO$·VOD\RXW
SDQHO%DGG QHZ-%XWWRQ ³EXWWRQ´ 
SDQHO%DGG QHZ-%XWWRQ ³EXWWRQ´  WR3DQHO$DQGGRHVQRWF WKLQJVDGGHGGLUHFWO\
SDQHO$DGG SDQHO%  QHVWHGZLWKLQWKRVHDGGHGFRQW URODQ\WKLQJ
RPSRQHQWV
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
OD\RXWPDQDJHUV

0W_LWM[\PMTIaW]\UIVIOMZLMKQLM'
$IFFERENTLAYOUTMANAGERSHAVEDIFFERENTPOLICIESFORARRANGING
COMPONENTSLIKE ARRANGEINAGRID MAKETHEMALLTHESAMESIZE
STACKTHEMVERTICALLY ETC BUTTHECOMPONENTSBEINGLAYEDOUTDO
GETATLEASTSOMESMALLSAYINTHEMATTER)NGENERAL THEPROCESSOF
LAYINGOUTABACKGROUNDCOMPONENTLOOKSSOMETHINGLIKETHIS
/HW·VVHHKHUHWKH
$OD\RXWVFHQDULR ÀUVWEXWWRQZDQWVWREH
SL[HOVZLGHDQGWKHWH[WÀHOG
 0DNHDSDQHODQGDGGWKUHHEXWWRQVWRLW QHHGVDQGWKHIUDPHLVSL[HOV
ZLGHDQG,·PVXSSRVHGWRDUUDQJH

Licensed by
 7KHSDQHO·VOD\RXWPDQDJHUDVNVHDFKEXWWRQKRZELJ HYHU\WKLQJYHUWLFDOO\
WKDWEXWWRQSUHIHUVWREH

 7KHSDQHO·VOD\RXWPDQDJHUXVHVLWVOD\RXWSROLFLHVWRGHFLGH

Eduard Simons
ZKHWKHULWVKRXOGUHVSHFWDOOSDUWRUQRQHRIWKHEXWWRQV·
SUHIHUHQFHV

 $GGWKHSDQHOWRDIUDPH


SUHIHUVWREH 104038
7KHIUDPH·VOD\RXWPDQDJHUDVNVWKHSDQHOKRZELJWKHSDQHO

 7KHIUDPH·VOD\RXWPDQDJHUXVHVLWVOD\RXWSROLFLHVWRGHFLGH
ZKHWKHULWVKRXOGUHVSHFWDOOSDUWRUQRQHRIWKHSDQHO·V
SUHIHUHQFHV
DQDJHU
OD\RXWP
,QNNMZMV\TIaW]\UIVIOMZ[PI^MLQNNMZMV\XWTQKQM[
3OMELAYOUTMANAGERSRESPECTTHESIZETHECOMPONENTWANTSTO
BE)FTHEBUTTONWANTSTOBEPIXELSBYPIXELS THATSWHATTHE
LAYOUTMANAGERALLOCATESFORTHATBUTTON/THERLAYOUTMANAGERS
RESPECTONLYPARTOFTHECOMPONENTSPREFERREDSIZE)FTHEBUTTON
WANTSTOBEPIXELSBYPIXELS ITLLBEPIXELSBYHOWEVER
WIDETHEBUTTONSBACKGROUNDPANELIS3TILLOTHERLAYOUTMANAGERS
RESPECTTHEPREFERENCEOFONLYTHELARGESTOFTHECOMPONENTS
BEINGLAYEDOUT ANDTHERESTOFTHECOMPONENTSINTHATPANEL
AREALLMADETHATSAMESIZE)NSOMECASES THEWORKOFTHELAYOUT
MANAGERCANGETVERYCOMPLEX BUTMOSTOFTHETIMEYOUCAN
lGUREOUTWHATTHELAYOUTMANAGERWILLPROBABLYDO ONCEYOUGET
TOKNOWTHATLAYOUTMANAGERSPOLICIES

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

<PM*QO<PZMMTIaW]\UIVIOMZ["
JWZLMZNTW_IVLJW`

%RUGHU/D\RXW
$%RUGHU/D\RXWPDQDJHUGLYLGHVDEDFNJURXQG
FRPSRQHQWLQWRÀYHUHJLRQV<RXFDQDGGRQO\RQH
QW
FRPSRQHQWSHUUHJLRQWRDEDFNJURXQGFRQWUROOHG RQHFRPSRQQH
SHUU H J LR
E\D%RUGHU/D\RXWPDQDJHU&RPSRQHQWVODLGRXW
E\WKLVPDQDJHUXVXDOO\GRQ·WJHWWRKDYHWKHLU
SUHIHUUHGVL]H%RUGHU/D\RXWLVWKHGHIDXOWOD\RXW
PDQDJHUIRUDIUDPH

)ORZ/D\RXW
$)ORZ/D\RXWPDQDJHUDFWVNLQGRIOLNHDZRUG
SURFHVVRUH[FHSWZLWKFRPSRQHQWVLQVWHDGRI FRPSRQHQWVDGGHGOH
ZRUGV(DFKFRPSRQHQWLVWKHVL]HLWZDQWVWREH WRULJKWZUDSS IW
LQ J WR
QHZOLQHZKHQQHHGH D
DQGWKH\·UHODLGRXWOHIWWRULJKWLQWKHRUGHUWKDW G
WKH\·UHDGGHGZLWK´ZRUGZUDSµWXUQHGRQ6R
ZKHQDFRPSRQHQWZRQ·WÀWKRUL]RQWDOO\LWGURSV
WRWKHQH[W´OLQHµLQWKHOD\RXW)ORZ/D\RXWLVWKH
GHIDXOWOD\RXWPDQDJHUIRUDSDQHO

%R[/D\RXW
$%R[/D\RXWPDQDJHULVOLNH)ORZ/D\RXWLQWKDW
HDFKFRPSRQHQWJHWVWRKDYHLWVRZQVL]HDQG
WKHFRPSRQHQWVDUHSODFHGLQWKHRUGHULQZKLFK
FRPSRQHQWVDGGHGWRS
SHU¶OLQH·
WRERWWRP RQH
WKH\·UHDGGHG%XWXQOLNH)ORZ/D\RXWD%R[/D\RXW
PDQDJHUFDQVWDFNWKHFRPSRQHQWVYHUWLFDOO\ RU
KRUL]RQWDOO\EXWXVXDOO\ZH·UHMXVWFRQFHUQHGZLWK
YHUWLFDOO\ ,W·VOLNHD)ORZ/D\RXWEXWLQVWHDGRI
KDYLQJDXWRPDWLF¶FRPSRQHQWZUDSSLQJ·\RXFDQ
LQVHUWDVRUWRI¶FRPSRQHQWUHWXUQNH\·DQGIRUFH
WKHFRPSRQHQWVWRVWDUWDQHZOLQH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ERUGHUOD\RXW

%RUGHU/D\RXWFDUHV
DERXWILYHUHJLRQV
HDVWZHVWQRUWK
VRXWKDQGFHQWHU

/HW·VDGGDEXWWRQWRWKHHDVWUHJLRQ

LPSRUWMDYD[VZLQJ 
MDYDDZWSDFNDJH
LPSRUWMDYDDZW  %RUGHU/D\RXWLVLQ
SXEOLFFODVV%XWWRQ^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%XWWRQJXL QHZ%XWWRQ 
JXLJR 
`

SXEOLFYRLGJR ^ KHUHJLRQ
-)UDPHIUDPH QHZ-)UDPH  VSHFLI\W
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFNPH´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
`

DLQ EDUEHOO
EU%UDLQ%DUEHOO
+RZGLGWKH%RUGHU/D\RXWPDQDJHUFRPHXSZLWK
WKLVVL]HIRUWKHEXWWRQ"

:KDWDUHWKHIDFWRUVWKHOD\RXWPDQDJHUKDVWR
FRQVLGHU"

:K\LVQ·WLWZLGHURUWDOOHU"

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

:DWFKZKDWKDSSHQVZKHQZHJLYH
KHW H[W
WKHEXWWRQPRUHFKDUDFWHUV
H F K D Q J HGRQO\W
: EXWWRQ
SXEOLFYRLGJR ^
RQWKH
-)UDPHIUDPH QHZ-)UDPH 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFNOLNH\RXPHDQLW´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

)LUVW,DVNWKH
EXWWRQIRULWV
SUHIHUUHGVL]H ,KDYHDORWRIZRUGV
QRZVR,·GSUHIHUWREH
SL[HOVZLGHDQG
SL[HOVWDOO

FW
%X
WWRQREMH

6LQFHLW·VLQWKHHDVW
UHJLRQRIDERUGHUOD\RXW
,·OOUHVSHFWLWVSUHIHUUHGZLGWK%XW 1H[WWLPH
,GRQ·WFDUHKRZWDOOLWZDQWVWREH ,·PJRLQ·ZLWKÁRZ
LW·VJRQQDEHDVWDOODVWKHIUDPH OD\RXW7KHQ,JHW
EHFDXVHWKDW·VP\SROLF\ (9(5<7+,1*,
ZDQW

RQJHWV
7KHEXWIWHUUHGZLGWK
LWVSUH WKHLJKW
FW

EXWQR %X
WWRQREMH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ERUGHUOD\RXW

/HW·VWU\DEXWWRQLQWKH1257+UHJLRQ

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³7KHUHLVQRVSRRQ´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
DVLW
H E X W W R Q LVDVWDDVOOZLGHDV
7K WREHEXW
ZDQWV DPH
WKHIU

1RZOHW·VPDNHWKHEXWWRQDVNWREHWDOOHU
+RZGRZHGRWKDW"7KHEXWWRQLVDOUHDG\DVZLGH
DVLWFDQHYHUEH³DVZLGHDVWKHIUDPH%XWZH
FDQWU\WRPDNHLWWDOOHUE\JLYLQJLWDELJJHUIRQW

FHWKH
WZLOOIPRRUUHVSDFH
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH  J H U I R Q
-%XWWRQEXWWRQ QHZ-%XWWRQ ³&OLFN7KLV´  $ELJ WRDOORFDWH KW
IUDPH HEXWWRQ·VKHLJ
IRUWK
)RQWELJ)RQW QHZ)RQW ³VHULI´)RQW%2/' 
EXWWRQVHW)RQW ELJ)RQW 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

KHVDPHEXWQRZ
`
 7KHZLGWKVWD\VW WK OOHU7KHQRU H
WKHEXWWRQLVWD RDFFRPRGDW W
UHJLRQVWUHWFK ZW
HG
SUHIHUUHGKHLJK
WKHEXWWRQ·VQH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

,WKLQN,·PJHWWLQJLWLI,·PLQHDVWRU
ZHVW,JHWP\SUHIHUUHGZLGWKEXWWKH
KHLJKWLVXSWRWKHOD\RXWPDQDJHU$QG
LI,·PLQQRUWKRUVRXWKLW·VMXVWWKH
RSSRVLWH³,JHWP\SUHIHUUHGKHLJKWEXW
But what happens
QRWZLGWK
FW
in the center region?

%X
WWRQREMH

7KHFHQWHUUHJLRQJHWVZKDWHYHU·VOHIW
H[FHSWLQRQHVSHFLDOFDVHZH¶OOORRNDWODWHU

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 

-%XWWRQHDVW QHZ-%XWWRQ ³(DVW´ 
-%XWWRQZHVW QHZ-%XWWRQ ³:HVW´ 
-%XWWRQQRUWK QHZ-%XWWRQ ³1RUWK´ 
-%XWWRQVRXWK QHZ-%XWWRQ ³6RXWK´ 
-%XWWRQFHQWHU QHZ-%XWWRQ ³&HQWHU´ 

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67HDVW 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW:(67ZHVW 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+QRUWK 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+VRXWK 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5FHQWHU 

IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

&RPSRQHQWV
ZKDWHYHUVSDFLQHWLVKHFHQWHUJHW :KHQ\RXSXWVRP
LQWKHQRUWKR HWKLQJ
EDVHGRQWKHIUD OHIWRYHU JRHVDOOWKHZD\UDVRXWKLW
[LQWKPHGLPHQVLRQV
SL[HOV

LVFRGH  WKHIUDPHV FURVV


LQWKHHDVWDQRGWKZHWKLQJV
ZRQ·WEHDVWDOODVHVW
HDVWDQG ZRXOGEHLIWKH WKH\
&RPSRQHQWVHLLQUWSUKHHIHUUHGZLGWK VRXWKUHJLRQVZHUQRUWKDQG
ZHVWJHWWK HHPSW\
QRUWKDQG
&RPSRQHQWVLQHLWUKH SU HIHUUHG
VRXWKJHWWK
KHLJKW
SL[HOV
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IORZOD\RXW

)ORZ/D\RXWFDUHV
DERXWWKHÁRZRIWKH
FRPSRQHQWV
OHIWWRULJKWWRSWRERWWRPLQ
WKHRUGHUWKH\ZHUHDGGHG

/HW·VDGGDSDQHOWRWKHHDVWUHJLRQ
$-3DQHO·VOD\RXWPDQDJHULV)ORZ/D\RXWE\GHIDXOW:KHQZHDGG
DSDQHOWRDIUDPHWKHVL]HDQGSODFHPHQWRIWKHSDQHOLVVWLOO
XQGHUWKH%RUGHU/D\RXWPDQDJHU·VFRQWURO%XWDQ\WKLQJLQVLGHWKH
SDQHO LQRWKHUZRUGVFRPSRQHQWVDGGHGWRWKHSDQHOE\FDOOLQJ
SDQHODGG D&RPSRQHQW DUHXQGHUWKHSDQHO·V)ORZ/D\RXW
PDQDJHU·VFRQWURO:H·OOVWDUWE\SXWWLQJDQHPSW\SDQHOLQWKHIUDPH·V
HDVWUHJLRQDQGRQWKHQH[WSDJHVZH·OODGGWKLQJVWRWKHSDQHO
KDYHDQ\WKLQJ
7KHSDQHOGRHRHVQVQ·W·WDVNIRUPXFK
LQLWVRLWG HDVWUHJLRQ
ZLGWKLQWKH
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 

SXEOLFFODVV3DQHO^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
3DQHOJXL QHZ3DQHO 
JXLJR 
`

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH  0DNHWKHSDQHOJUD\VRZHFDQVHH
-3DQHOSDQHO QHZ-3DQHO  ZKHUHLWLVRQWKHIUDPH
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
`


 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

/HW·VDGGDEXWWRQWRWKHSDQHO

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
KH
-3DQHOSDQHO QHZ-3DQHO 
E XW WR Q WR W KH SDQHODQGDGGWPDQDJHU
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\  $GGWKH \RXW
PH7KHSDQHO·VODWKHIUDPH·V
SDQHOWRWKHIUDWK HEXWW RQ  DQ G
IORZ FRQWUROV ERUGHU FRQWUROVWKHSDQHO
-%XWWRQEXWWRQ QHZ-%XWWRQ ³VKRFNPH´ 

OD\RXWPDQ DJ HU
SDQHODGG EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 

IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

7KHSDQHOH[SDQGHG
$QGWKHEXWWRQJRWLW
SDQHO SDQHO SUHIHUUHGVL]HLQ V
GLPHQVLRQVEHFDXVHER WK
WKHSDQHO
XVHVIORZOD\RXWDQG
EXWWRQLVSDUWRIWKHWSKH
QRWWKHIUDPH  DQHO

2N,QHHGWR ,QHHG
NQRZKRZELJWKH WRNQRZKRZELJWKH
SDQHOZDQWVWREH EXWWRQZDQWVWR

%DVHGRQP\IRQWVL]H
,KDYHDEXWWRQQRZ DQGWKHQXPEHURI
VRP\OD\RXWPDQDJHU·V FKDUDFWHUV,ZDQWWREH
JRQQDKDYHWRÀJXUHRXW SL[HOVZLGHDQGSL[HOVWDOO
KRZELJ,QHHGWREH FW

FRQWUROV FRQWUROV %X
3D WWRQREMH
W

QHOREMHF

7KHIUDPH·V 7KHSDQHO·V
%RUGHU/D\RXWPDQDJHU )ORZ/D\RXWPDQDJHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
IORZOD\RXW

:KDWKDSSHQVLIZHDGG7:2EXWWRQV
WRWKHSDQHO"
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
V
2EXWWRQ
-%XWWRQEXWWRQ QHZ-%XWWRQ ³VKRFNPH´  PDNH7:
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³EOLVV´ 

SDQHODGG EXWWRQ  DGG%27+WR
SDQHODGG EXWWRQ7ZR  WKHSDQHO
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`


ZKDWZHZDQWHG ZKDWZHJRW


 Z D Q W WK HEXWWRQHVDFK 7KHSDQHO
:H GRQWRSRI
VWDFNH ILWERWKEHXW[WSDQGHGWR
E\VLGH RQVVLGH
RWKHU

DQ
·E XWWRQ LVVPDOOHUZW K
WWKH¶EOLWVVRQWKDW·VKRZIORKDWLW
QRWLFHWFKNDPH·EXW VMXVWZ
WKH¶VKR RUNV7KHEXWWRQJHW
OD\RXWZ QGQRPRUH 
QHHGV D
6KDUSHQ \RXU SHQFLO
)FTHECODEABOVEWEREMODIlEDTOTHECODEBELOW $RAWWHATYOU
WHATWOULDTHE'5)LOOKLIKE THINKTHE'5)WOULD
LOOKLIKEIFYOURAN
-%XWWRQEXWWRQ QHZ-%XWWRQ ³VKRFNPH´  THECODETOTHELEFT
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³EOLVV´ 
-%XWWRQEXWWRQ7KUHH QHZ-%XWWRQ ³KXK"´  4HENTRYIT
SDQHODGG EXWWRQ 
SDQHODGG EXWWRQ7ZR 
SDQHODGG EXWWRQ7KUHH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

%R[/D\RXWWRWKHUHVFXH
,WNHHSVFRPSRQHQWV
VWDFNHGHYHQLIWKHUH·VURRP
WRSXWWKHPVLGHE\VLGH

8QOLNH)ORZ/D\RXW%R[/D\RXWFDQIRUFHD
¶QHZOLQH·WRPDNHWKHFRPSRQHQWVZUDSWR
WKHQH[WOLQHHYHQLIWKHUH·VURRPIRUWKHP
WRÀWKRUL]RQWDOO\

%XWQRZ\RX·OOKDYHWRFKDQJHWKHSDQHO·VOD\RXWPDQDJHUIURPWKH
GHIDXOW)ORZ/D\RXWWR%R[/D\RXW

SXEOLFYRLGJR ^
QHZ
-)UDPHIUDPH QHZ-)UDPH 
D\ R X W PD QDJHUWREHD
O
&KDQJHWKHI%R[/D\RXW
-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\  HR
 LQVW D QF
SDQHOVHW/D\RXW QHZ%R[/D\RXW SDQHO%R[/D\RXW<B$;,6 

7KH%R[/D\RXW
-%XWWRQEXWWRQ QHZ-%XWWRQ ³VKRFNPH´  WKHFRPSRQHQWLWFR
V
QVWUXFWRUQHHGVWR
NQRZ
OD
DQGZKLFKD[LVWRX \LQJRXW LHWKHSDQHO 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³EOLVV´ 
SDQHODGG EXWWRQ 
SDQHODGG EXWWRQ7ZR 
YHUWLFDOVWDFN  VH ZHXVH<B$;,6IRUD
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
HUDJDLQ WRQV
OLVQDUURZE
W K HS D QH RWKEXW
1RWLFHKRZGRHVQ·WQHHGWRILWOGWKHIUDPH
EHFDXVHLW OO\6RWKHSDQHOWR O\WKHODUJHVW
KRUL]RQWD HQRXJKURRPIRURQ
LWQHHGHG KRFNPH·
EXWWRQ¶V

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
OD\RXWPDQDJHUV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: (OWCOMEYOUCANTADDDIRECTLYTOAFRAMETHEWAY
YOUCANTOAPANEL
:MDD=LHGAFLK
ƒ /D\RXWPDQDJHUVFRQWUROWKHVL]HDQGORFDWLRQRI
FRPSRQHQWVQHVWHGZLWKLQRWKHUFRPSRQHQWV

A: !*&RAMEISSPECIALBECAUSEITSWHERETHERUBBER
MEETSTHEROADINMAKINGSOMETHINGAPPEARONTHESCREEN
ƒ :KHQ\RXDGGDFRPSRQHQWWRDQRWKHUFRPSRQHQW
VRPHWLPHVUHIHUUHGWRDVDEDFNJURXQGFRPSRQHQW
EXWWKDW·VQRWDWHFKQLFDOGLVWLQFWLRQ WKHDGGHG
7HILEALLYOUR3WINGCOMPONENTSAREPURE*AVA A*&RAME
HASTOCONNECTTOTHEUNDERLYING/3INORDERTOACCESSTHE FRPSRQHQWLVFRQWUROOHGE\WKHOD\RXWPDQDJHURIWKH
DISPLAY4HINKOFTHECONTENTPANEASAPURE*AVALAYER EDFNJURXQGFRPSRQHQW
THATSITSONTOPOFTHE*&RAME/RTHINKOFITASTHOUGH*&RAME ƒ $OD\RXWPDQDJHUDVNVFRPSRQHQWVIRUWKHLU
ISTHEWINDOWFRAMEANDTHECONTENTPANEISTHEGLASS9OU SUHIHUUHGVL]HEHIRUHPDNLQJDGHFLVLRQDERXW
KNOW THEWINDOWPANE!NDYOUCANEVENSWAPTHECONTENT WKHOD\RXW'HSHQGLQJRQWKHOD\RXWPDQDJHU·V

Licensed by
PANEWITHYOUROWN*0ANEL TOMAKEYOUR*0ANELTHEFRAMES SROLFLHVLWPLJKWUHVSHFWDOOVRPHRUQRQHRIWKH
CONTENTPANE USING
FRPSRQHQW·VZLVKHV
P\)UDPHVHW&RQWHQW3DQH P\3DQHO 
ƒ 7KH%RUGHU/D\RXWPDQDJHUOHWV\RXDGGD
FRPSRQHQWWRRQHRIILYHUHJLRQV<RXPXVWVSHFLI\
Q:
Eduard Simons
#AN)CHANGETHELAYOUTMANAGEROFTHEFRAME WKHUHJLRQZKHQ\RXDGGWKHFRPSRQHQWXVLQJWKH
7HATIF)WANTTHEFRAMETOUSEmOWINSTEADOFBORDER IROORZLQJV\QWD[
DGG %RUGHU/D\RXW($67SDQHO 

A: 4HEEASIESTWAYTODOTHISISTOMAKEAPANEL BUILD
ƒ :LWK%RUGHU/D\RXWFRPSRQHQWVLQWKHQRUWKDQG
VRXWKJHWWKHLUSUHIHUUHGKHLJKWEXWQRWZLGWK

104038
THE'5)THEWAYYOUWANTINTHEPANEL ANDTHENMAKETHAT
&RPSRQHQWVLQWKHHDVWDQGZHVWJHWWKHLUSUHIHUUHG
PANELTHEFRAMESCONTENTPANEUSINGTHECODEINTHEPREVI
OUSANSWERRATHERTHANUSINGTHEDEFAULTCONTENTPANE 
ZLGWKEXWQRWKHLJKW7KHFRPSRQHQWLQWKHFHQWHU
JHWVZKDWHYHULVOHIWRYHU XQOHVV\RXXVHSDFN 

Q: 7HATIF)WANTADIFFERENTPREFERREDSIZE)STHEREA
ƒ 7KHSDFN PHWKRGLVOLNHVKULQNZUDSIRUWKH
FRPSRQHQWVLWXVHVWKHIXOOSUHIHUUHGVL]HRIWKH
SET3IZE METHODFORCOMPONENTS FHQWHUFRPSRQHQWWKHQGHWHUPLQHVWKHVL]HRIWKH
IUDPHXVLQJWKHFHQWHUDVDVWDUWLQJSRLQWEXLOGLQJ
A: 9ES THEREISASET3IZE BUTTHELAYOUTMANAGERSWILL
IGNOREIT4HERESADISTINCTIONBETWEENTHEPREFERREDSIZEOF ƒ
WKHUHVWEDVHGRQZKDW·VLQWKHRWKHUUHJLRQV
)ORZ/D\RXWSODFHVFRPSRQHQWVOHIWWRULJKWWRSWR
THECOMPONENTANDTHESIZEYOUWANTITTOBE4HEPREFERRED ERWWRPLQWKHRUGHUWKH\ZHUHDGGHGZUDSSLQJWRD
SIZEISBASEDONTHESIZETHECOMPONENTACTUALLYNEEDS QHZOLQHRIFRPSRQHQWVRQO\ZKHQWKHFRPSRQHQWV
THECOMPONENTMAKESTHATDECISIONFORITSELF 4HELAYOUT ZRQ·WILWKRUL]RQWDOO\
MANAGERCALLSTHECOMPONENTSGET0REFERRED3IZE METHOD
ANDTHATMETHODDOESNTCAREIFYOUVEPREVIOUSLYCALLED
ƒ )ORZ/D\RXWJLYHVFRPSRQHQWVWKHLUSUHIHUUHGVL]HLQ
SET3IZE ONTHECOMPONENT ERWKGLPHQVLRQV
ƒ %R[/D\RXWOHWV\RXDOLJQFRPSRQHQWVVWDFNHG
Q: #ANT)JUSTPUTTHINGSWHERE)WANTTHEM#AN)TURN
THELAYOUTMANAGERSOFF
YHUWLFDOO\HYHQLIWKH\FRXOGILWVLGHE\VLGH/LNH
)ORZ/D\RXW%R[/D\RXWXVHVWKHSUHIHUUHGVL]HRI
WKHFRPSRQHQWLQERWKGLPHQVLRQV
ƒ %RUGHU/D\RXWLVWKHGHIDXOWOD\RXWPDQDJHUIRUD
A: 9EP/NACOMPONENTBYCOMPONENTBASIS YOUCANCALL IUDPH)ORZ/D\RXWLVWKHGHIDXOWIRUDSDQHO
VHW/D\RXW QXOO ANDTHENITSUPTOYOUTOHARD CODE ƒ ,I\RXZDQWDSDQHOWRXVHVRPHWKLQJRWKHUWKDQIORZ
THEEXACTSCREENLOCATIONSANDDIMENSIONS)NTHELONGRUN \RXKDYHWRFDOOVHW/D\RXW RQWKHSDQHO
THOUGH ITSALMOSTALWAYSEASIERTOUSELAYOUTMANAGERS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

8TIaQVO_Q\P;_QVOKWUXWVMV\[
9OUVELEARNEDTHEBASICSOFLAYOUTMANAGERS SONOWLETSTRYOUTA
FEWOFTHEMOSTCOMMONCOMPONENTSATEXTlELD SCROLLINGTEXTAREA
CHECKBOX ANDLIST7EWONTSHOWYOUTHEWHOLEDARN!0)FOREACHOF
THESE JUSTAFEWHIGHLIGHTSTOGETYOUSTARTED

-7H[W)LHOG
-7H[W)LHOG
O
-/DEH

L[HOV
  F R OX P Q VQRWLGSWKRI
&RQVWUXFWRUV PHDQVLQHVWKHSUHIHUUHGZ
7KLVGHIWILHOG
-7H[W)LHOG¿HOG QHZ-7H[W)LHOG  
WKHWH[
-7H[W)LHOG¿HOG QHZ-7H[W)LHOG ³<RXUQDPH´ 

+RZWRXVHLW

 *HWWH[WRXWRILW
6\VWHPRXWSULQWOQ ¿HOGJHW7H[W 

 3XWWH[WLQLW
¿HOGVHW7H[W ³ZKDWHYHU´ 
¿HOGVHW7H[W ³³  LHOG
7KLVFOHDUVWKHI
<RXFDQDOVRUHJLVWHU
*HWDQ$FWLRQ(YHQWZKHQWKHXVHU
UHDOO\ZDQWWRKHDUD IRUNH\HYHQWVLI\RX

SUHVVHVUHWXUQRUHQWHU XVHUSUHVVHVDNH\ ERXWLWHYHU\WLPHWKH
¿HOGDGG$FWLRQ/LVWHQHU P\$FWLRQ/LVWHQHU 

 6HOHFW+LJKOLJKWWKHWH[WLQWKHÀHOG

¿HOGVHOHFW$OO 

 3XWWKHFXUVRUEDFNLQWKHÀHOG VRWKHXVHU
FDQMXVWVWDUWW\SLQJ
¿HOGUHTXHVW)RFXV 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WH[WDUHD

-7H[W$UHD

8QOLNH-7H[W)LHOG-7H[W$UHDFDQKDYHPRUHWKDQRQHOLQHRIWH[W,W
WDNHVDOLWWOHFRQÀJXUDWLRQWRPDNHRQHEHFDXVHLWGRHVQ·WFRPHRXWRI
WKHER[ZLWKVFUROOEDUVRUOLQHZUDSSLQJ7RPDNHD-7H[W$UHDVFUROO\RX
KDYHWRVWLFNLWLQD6FUROO3DQH$6FUROO3DQHLVDQREMHFWWKDWUHDOO\ORYHV
WRVFUROODQGZLOOWDNHFDUHRIWKHWH[WDUHD·VVFUROOLQJQHHGV
KHLJKW
VW K HSUHIHUUHG WK
PHDQV
OLQ H V V H W
H W VW K H S U HIHUUHGZLG
FROXPQV V
&RQVWUXFWRU PHDQV
-7H[W$UHDWH[W QHZ-7H[W$UHD  

WKH U
+RZWRXVHLW
H  DQGJLYHLW IR
D N H  D -6FU LW·VJRLQJWR UROO
R OO 3 D Q V F
0 WKDW 
WH[WDUHD
 0DNHLWKDYHDYHUWLFDOVFUROOEDURQO\
-6FUROO3DQHVFUROOHU QHZ-6FUROO3DQH WH[W  7HOOWKHVFUROOSDQHWR
WH[WVHW/LQH:UDS WUXH  DYHUWLFDOVFUROOEDU XVHRQO\
7XUQRQOLQHZUDSSLQJ
VFUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
VFUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 

SDQHODGG VFUROOHU  ,PSRUWDQW<RXJ


VFUROOSDQHFRQ LYHWKHWH[WDUHD
WRW VFUROOSDQH
GRQ·WDGGWKHWH FWRU WKHQDGGWKHVFKH
VW UX  WKURXJKWKH
UROOSDQHWRWK
[WDUHDGLUHFWO\W HSDQHO<RX
 5HSODFHWKHWH[WWKDW·VLQLW
R WK H SD QHO
WH[WVHW7H[W ³1RWDOOZKRDUHORVWDUHZDQGHULQJ´ 

 $SSHQGWRWKHWH[WWKDW·VLQLW

WH[WDSSHQG ³EXWWRQFOLFNHG´ 

 6HOHFW+LJKOLJKWWKHWH[WLQWKHÀHOG

WH[WVHOHFW$OO 

 3XWWKHFXUVRUEDFNLQWKHÀHOG VRWKHXVHU
FDQMXVWVWDUWW\SLQJ
WH[WUHTXHVW)RFXV 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

-7H[W$UHDH[DPSOH

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV7H[W$UHDLPSOHPHQWV$FWLRQ/LVWHQHU^

-7H[W$UHDWH[W

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7H[W$UHDJXL QHZ7H[W$UHD 
JXLJR 
`

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-3DQHOSDQHO QHZ-3DQHO 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³-XVW&OLFN,W´ 
EXWWRQDGG$FWLRQ/LVWHQHU WKLV 
WH[W QHZ-7H[W$UHD  
WH[WVHW/LQH:UDS WUXH 

-6FUROO3DQHVFUROOHU QHZ-6FUROO3DQH WH[W 
VFUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
VFUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 

SDQHODGG VFUROOHU 

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5SDQHO 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+EXWWRQ 

IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WH[WDSSHQG ³EXWWRQFOLFNHG?Q´ 
`
` ,QVHUWDQHZOLQHVRWKH
 VHSDUDWHOL ZRUGVJRRQD
QHHDF WLPHWKHEXWW
FOLFNHG2WKHUZLVHKW RQLV
KH\·OOUXQWRJHWKHU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FKHFNER[

WKHUH DUH QR
-&KHFN%R[ 'XPE 4XHVWLRQV
Q: !RENTTHELAYOUTMANAG
ERSJUSTMORETROUBLETHANTHEYRE
WORTH)F)HAVETOGOTOALLTHIS
TROUBLE )MIGHTASWELLJUSTHARD
CODETHESIZEANDCOORDINATESFOR
WHEREEVERYTHINGSHOULDGO

&RQVWUXFWRU
-&KHFN%R[FKHFN QHZ-&KHFN%R[ ³*RHVWR´  A: 'ETTINGTHEEXACTLAYOUT
YOUWANTFROMALAYOUTMAN
AGERCANBEACHALLENGE"UTTHINK
ABOUTWHATTHELAYOUTMANAGER
+RZWRXVHLW
ISREALLYDOINGFORYOU%VENTHE
SEEMINGLYSIMPLETASKOFFIGURING
 /LVWHQIRUDQLWHPHYHQW ZKHQLW·VVHOHFWHGRUGHVHOHFWHG OUTWHERETHINGSSHOULDGOON
FKHFNDGG,WHP/LVWHQHU WKLV  THESCREENCANBECOMPLEX&OR
EXAMPLE THELAYOUTMANAGERTAKES
CAREOFKEEPINGYOURCOMPONENTS
FROMOVERLAPPINGONEANOTHER
 +DQGOHWKHHYHQW DQGÀQGRXWZKHWKHURUQRWLW·VVHOHFWHG )NOTHERWORDS ITKNOWSHOWTO
MANAGETHESPACINGBETWEEN
SXEOLFYRLGLWHP6WDWH&KDQJHG ,WHP(YHQWHY ^ COMPONENTSANDBETWEENTHE
6WULQJRQ2U2II ³RII´ EDGEOFTHEFRAME 3UREYOUCAN
LI FKHFNLV6HOHFWHG RQ2U2II ³RQ´ DOTHATYOURSELF BUTWHATHAPPENS
6\VWHPRXWSULQWOQ ³&KHFNER[LV³RQ2U2II  IFYOUWANTCOMPONENTSTOBE
` VERYTIGHTLYPACKED9OUMIGHTGET
THEMPLACEDJUSTRIGHT BYHAND
BUTTHATSONLYGOODFORYOUR*6-
 6HOHFWRUGHVHOHFWLWLQFRGH 7HY"ECAUSETHECOMPONENTS
CANBESLIGHTLYDIFFERENTFROM
FKHFNVHW6HOHFWHG WUXH  PLATFORMTOPLATFORM ESPECIALLYIF
FKHFNVHW6HOHFWHG IDOVH  THEYUSETHEUNDERLYINGPLATFORMS
NATIVE@LOOKANDFEEL3UBTLETHINGS
LIKETHEBEVELOFTHEBUTTONSCAN
BEDIFFERENTINSUCHAWAYTHAT
COMPONENTSTHATLINEUPNEATLY
ONONEPLATFORMSUDDENLYSQUISH
TOGETHERONANOTHER
!NDWERESTILLNOTATTHEREALLY"IG
4HINGTHATLAYOUTMANAGERSDO
4HINKABOUTWHATHAPPENSWHEN
THEUSERRESIZESTHEWINDOW/R
YOUR'5)ISDYNAMIC WHERECOM
PONENTSCOMEANDGO)FYOUHAD
TOKEEPTRACKOFRE LAYINGOUTALL
THECOMPONENTSEVERYTIMETHERES
ACHANGEINTHESIZEORCONTENTSOF
ABACKGROUNDCOMPONENTYIKES

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

-/LVW

-/LVWFRQVWUXFWRUW
W\SH7KH\GRQ·WKD DNHVDQDUUD\RIDQ\REMHFW
6WULQJUHSUHVHQWDW YHWREH6WULQJVEXWD
LRQZLOODSSHDULQW
&RQVWUXFWRU KHOLVW
6WULQJ>@OLVW(QWULHV ^³DOSKD´³EHWD´³JDPPD´³GHOWD´
    ³HSVLORQ´³]HWD´³HWD´³WKHWD³`

OLVW QHZ-/LVW OLVW(QWULHV 

DNHD
LWK-7H[W $ UHD\RXP WKH
+RZWRXVHLW HZ GG
7KLVLVMXVWOLN QGJLYHLWWKHOLVW WKHQD
-6FUROO3 DQ H D WRWKH SD QH O
27WKHOLVW 
 0DNHLWKDYHDYHUWLFDOVFUROOEDU
-6FUROO3DQHVFUROOHU QHZ-6FUROO3DQH OLVW  VFUROOSDQH 1
VFUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
VFUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 

SDQHODGG VFUROOHU 

 6HWWKHQXPEHURIOLQHVWRVKRZEHIRUHVFUROOLQJ

OLVWVHW9LVLEOH5RZ&RXQW  

 5HVWULFWWKHXVHUWRVHOHFWLQJRQO\21(WKLQJDWDWLPH
OLVWVHW6HOHFWLRQ0RGH /LVW6HOHFWLRQ0RGHO6,1*/(B6(/(&7,21 

 5HJLVWHUIRUOLVWVHOHFWLRQHYHQWV
OLVWDGG/LVW6HOHFWLRQ/LVWHQHU WKLV 
:,&(LI\RXGRQ ·W
<RX·OOJHWWKHHYHQW7
 +DQGOHHYHQWV ÀQGRXWZKLFKWKLQJLQWKHOLVWZDVVHOHFWHG SXWLQWKLVLIWHVW
SXEOLFYRLGYDOXH&KDQJHG /LVW6HOHFWLRQ(YHQWOVH ^
 LI OVHJHW9DOXH,V$GMXVWLQJ ^
6WULQJVHOHFWLRQ  6WULQJ OLVWJHW6HOHFWHG9DOXH  JHW6HOHFWHG9DOXH DFWX
 6\VWHPRXWSULQWOQ VHOHFWLRQ  UHWXUQVDQ2EMHFW$OLVWDOO\
 `
OLPLWHGWRRQO\6WULQJREMHLVQ·W
` FWV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&RGH.LWFKHQ

Code Kitchen

This partÕs optional. WeÕre making the full BeatBox, GUI


and all. In the Saving Objects chapter, weÕll learn how to
save and restore drum patterns. Finally, in the networking
chapter (Make a Connection), weÕll turn the BeatBox into a
working chat client.
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

5ISQVO\PM*MI\*W`
4HISISTHEFULLCODELISTINGFORTHISVERSIONOFTHE"EAT"OX WITHBUTTONSFORSTARTING
STOPPING ANDCHANGINGTHETEMPO4HECODELISTINGISCOMPLETE ANDFULLY
ANNOTATED BUTHERESTHEOVERVIEW

 %XLOGD*8,WKDWKDVFKHFNER[HV -&KHFN%R[ WKDWVWDUWRXW


XQFKHFNHGODEHOV -/DEHO IRUWKHLQVWUXPHQWQDPHVDQGIRXU
EXWWRQV

 5HJLVWHUDQ$FWLRQ/LVWHQHUIRUHDFKRIWKHIRXUEXWWRQV:HGRQ·W
QHHGOLVWHQHUVIRUWKHLQGLYLGXDOFKHFNER[HVEHFDXVHZHDUHQ·W
WU\LQJWRFKDQJHWKHSDWWHUQVRXQGG\QDPLFDOO\ LHDVVRRQDVWKH
XVHUFKHFNVDER[ ,QVWHDGZHZDLWXQWLOWKHXVHUKLWVWKH¶VWDUW·
EXWWRQDQGWKHQZDONWKURXJKDOOFKHFNER[HVWRJHWWKHLUVWDWH
DQGPDNHD0,',WUDFN

 6HWXSWKH0,',V\VWHP \RX·YHGRQHWKLVEHIRUH LQFOXGLQJJHWWLQJ


D6HTXHQFHUPDNLQJD6HTXHQFHDQGFUHDWLQJDWUDFN:HDUHXVLQJ
DVHTXHQFHUPHWKRGWKDW·VQHZWR-DYDVHW/RRS&RXQW  7KLV
PHWKRGDOORZV\RXWRVSHFLI\KRZPDQ\WLPHV\RXZDQWDVHTXHQFH
WRORRS:H·UHDOVRXVLQJWKHVHTXHQFH·VWHPSRIDFWRUWRDGMXVWWKH
WHPSRXSRUGRZQDQGPDLQWDLQWKHQHZWHPSRIURPRQHLWHUDWLRQRI
WKHORRSWRWKHQH[W

 :KHQWKHXVHUKLWV¶VWDUW·WKHUHDODFWLRQEHJLQV7KHHYHQWKDQGOLQJ
PHWKRGIRUWKH¶VWDUW·EXWWRQFDOOVWKHEXLOG7UDFN$QG6WDUW PHWKRG
,QWKDWPHWKRGZHZDONWKURXJKDOOFKHFNER[HV RQHURZDW
DWLPHDVLQJOHLQVWUXPHQWDFURVVDOOEHDWV WRJHWWKHLUVWDWH
WKHQXVHWKHLQIRUPDWLRQWREXLOGD0,',WUDFN XVLQJWKHKDQG\
PDNH(YHQW PHWKRGZHXVHGLQWKHSUHYLRXVFKDSWHU 2QFHWKHWUDFN
LVEXLOWZHVWDUWWKHVHTXHQFHUZKLFKNHHSVSOD\LQJ EHFDXVHZH·UH
ORRSLQJLW XQWLOWKHXVHUKLWV¶VWRS·

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
%HDW%R[FRGH

LPSRUWMDYDDZW 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYD[VRXQGPLGL 
LPSRUWMDYDXWLO 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV%HDW%R[^

$UUD\/LVW
-3DQHOPDLQ3DQHO
$UUD\/LVW-&KHFN%R[!FKHFNER[/LVW
:HVWRUHWKHFKHFNER[HVLQDQ
6HTXHQFHUVHTXHQFHU
6HTXHQFHVHTXHQFH
7UDFNWUDFN
-)UDPHWKH)UDPH 7KHVHDUHWKHQDPHVRIWKHLQVWUXPHQWVDVD6WULQJ
DUUD\IRUEXLOGLQJWKH*8,ODEHOV RQHDFKURZ
6WULQJ>@LQVWUXPHQW1DPHV ^³%DVV'UXP´³&ORVHG+L+DW´
³2SHQ+L+DW´´$FRXVWLF6QDUH´³&UDVK&\PEDO´³+DQG&ODS´
³+LJK7RP´³+L%RQJR´³0DUDFDV´³:KLVWOH´³/RZ&RQJD´
³&RZEHOO´³9LEUDVODS´³/RZPLG7RP´³+LJK$JRJR´
³2SHQ+L&RQJD´`
LQW>@LQVWUXPHQWV ^`

7KHVHUHSUHVHQWWKHDFWXDOGUXP¶NH
\V·
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 7KHGUXPFKDQQHOLVOLNHDSLDQRH[FHSW
QHZ%HDW%R[ EXLOG*8,  HDFK¶NH\·RQWKHSLDQRLVDGLIIHUHQWGU
` 6RWKHQXPEHU¶·LVWKHNH\I XP
 GUXPLV&ORVHG+L+DWHWFRUWKH%DVV
SXEOLFYRLGEXLOG*8, ^
WKH)UDPH QHZ-)UDPH ³&\EHU%HDW%R[´ 
WKH)UDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
%RUGHU/D\RXWOD\RXW QHZ%RUGHU/D\RXW 
-3DQHOEDFNJURXQG QHZ-3DQHO OD\RXW 
EDFNJURXQGVHW%RUGHU %RUGHU)DFWRU\FUHDWH(PSW\%RUGHU  

FKHFNER[/LVW QHZ$UUD\/LVW-&KHFN%R[! 
$Q¶HPSW\ERUGH
%R[EXWWRQ%R[ QHZ%R[ %R[/D\RXW<B$;,6 
EHWZHHQWKHHGJHU·VRJLYIHV XVDPDUJLQ
ZKHUHWKHFRPSRQHQWVDWKHSDQHODQG
-%XWWRQVWDUW QHZ-%XWWRQ ³6WDUW´ 
3XUHO\DHVWKHWLF UHSODFHG
VWDUWDGG$FWLRQ/LVWHQHU QHZ0\6WDUW/LVWHQHU 
EXWWRQ%R[DGG VWDUW 

-%XWWRQVWRS QHZ-%XWWRQ ³6WRS´ 
VWRSDGG$FWLRQ/LVWHQHU QHZ0\6WRS/LVWHQHU 
EXWWRQ%R[DGG VWRS  UHMXVWORWVRI*8, 
1RWKLQJVSHFLDOKHP LWEHIRUH
-%XWWRQXS7HPSR QHZ-%XWWRQ ³7HPSR8S´  FRGH<RX·YHVHHQ RVWRI
XS7HPSRDGG$FWLRQ/LVWHQHU QHZ0\8S7HPSR/LVWHQHU 
EXWWRQ%R[DGG XS7HPSR 

-%XWWRQGRZQ7HPSR QHZ-%XWWRQ ³7HPSR'RZQ´ 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

GRZQ7HPSRDGG$FWLRQ/LVWHQHU QHZ0\'RZQ7HPSR/LVWHQHU 
EXWWRQ%R[DGG GRZQ7HPSR 

%R[QDPH%R[ QHZ%R[ %R[/D\RXW<B$;,6 


IRU LQWL LL ^
QDPH%R[DGG QHZ/DEHO LQVWUXPHQW1DPHV>L@ 
`

XSFRGH 
EDFNJURXQGDGG %RUGHU/D\RXW($67EXWWRQ%R[  6WLOOPRUH*8,VHW
OH
EDFNJURXQGDGG %RUGHU/D\RXW:(67QDPH%R[  1RWKLQJUHPDUN DE

WKH)UDPHJHW&RQWHQW3DQH DGG EDFNJURXQG 



*ULG/D\RXWJULG QHZ*ULG/D\RXW  
JULGVHW9JDS  
JULGVHW+JDS  
PDLQ3DQHO QHZ-3DQHO JULG 
EDFNJURXQGDGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 

IRU LQWL LL ^


-&KHFN%R[F QHZ-&KHFN%R[ 
FVHW6HOHFWHG IDOVH 
FKHFNER[/LVWDGG F  0DNHWKHFKHFNER[HVVHWW
PDLQ3DQHODGG F  ¶IDOVH· VRWKH\DUHQ·WF KHPWR
`HQGORRS DGGWKHPWR KHF NHG DQG
WKH$UUD\/LVW$1'WR
WKH*8,SDQHO
VHW8S0LGL 

WKH)UDPHVHW%RXQGV  
WKH)UDPHSDFN 
WKH)UDPHVHW9LVLEOH WUXH 
`FORVHPHWKRG

SXEOLFYRLGVHW8S0LGL ^
WU\^
7KHXVXDO0,',VHWXSVWXII
VHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
JHWWLQJWKH6HTXHQFHUWKH6 IRU
VHTXHQFHURSHQ 
DQGWKH7UDFN$JDLQQRWKLQ HTXHQFH
VHTXHQFH QHZ6HTXHQFH 6HTXHQFH334  JVSHFLDO
WUDFN VHTXHQFHFUHDWH7UDFN 
VHTXHQFHUVHW7HPSR,Q%30  

`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
`FORVHPHWKRG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
%HDW%R[FRGH

SSHQV:KHUHZH
7KLVLVZKHUHLWDOOKDLQW 
0,',HYHQWV W KHYDOXHVIHQRUWLV
WXUQFKHFNER[VWDWH 7R D \ W R K R OG
WDUU WV,IWKHLQVWUXP HQW
FN :H·OOPDNXP HDHOHPRHQ OOEHD YDOXHDWWKDWHOHP R
DQGDGGWKHPWRWKH UD W  D FU VV D
RQHLQVWU RHQSOD\RQWKDWEHDWWHQKH V127VXSSRVH
GW
S S R VH G W L QVW U XP W L
SXEOLFYRLGEXLOG7UDFN$QG6WDUW ^ VX NH\,IWKXW DW
LQW>@WUDFN/LVW QXOO ZLOOEHWKH D W E HD W  S LQD]HUR
 SOD \ R Q W K
VHTXHQFHGHOHWH7UDFN WUDFN  PDNHDIUHVKRQH
WUDFN VHTXHQFHFUHDWH7UDFN  JHWULGRIWKHROGWUDFN
WF
KLV I RU HD FK RI W KH  52:6 LH%DVV&RQJRH
IRU LQWL LL ^ GR W
WUDFN/LVW QHZLQW>@
SUHVHQWVZKLFKLQVWUU UXPHQWWKLV

Licensed by

6HWWKH¶NH\·WKDWWFUH7 LQVW UX PH QWVD D\KROGVWKH
LQWNH\ LQVWUXPHQWV>L@ LV %DVV+L+DWH UVIRKH UHDFKLQVWUXPH QW 
DFWXDO0,',QXPEH
IRU LQWM MM ^ KLVIRUHDFKRIWKH%($76IRUW
KLVURZ
'RW

Eduard Simons

-&KHFN%R[MF  -&KHFN%R[ FKHFNER[/LVWJHW M  L 
LI MFLV6HOHFWHG ^
WUDFN/LVW>M@ NH\
`HOVH^ ,VWKHFKHFNER[DWWKLVEHDWVHOHFWHG",I\HVSXW
WKHNH\YDOXHLQWKLVVORWLQWKHDUUD\ WKHVORWWKDW

104038
WUDFN/LVW>M@ 
` UHSUHVHQWVWKLVEHDW 2WKHUZLVHWKHLQVWUXPHQWLV
`FORVHLQQHUORRS 127VXSSRVHGWRSOD\DWWKLVEHDWVRVHWLWWR]HUR


EHDWV
PDNH7UDFNV WUDFN/LVW  )RUWKLVLQVWUXPHQWDQGIRUDOO
WUDFNDGG PDNH(YHQW   PDNHHYHQWVDQGDGGWKHPWRWKHWUDFN
`FORVHRXWHU

:HDOZD\VZDQWWRPDNHVXUHWKDWWKHUH,6DQHYHQWDW
WUDFNDGG PDNH(YHQW   EHDW LWJRHVWR 2WKHUZLVHWKH%HDW%R[PLJKW
WU\^ QRWJRWKHIXOOEHDWVEHIRUHLWVWDUWVRYHU

VHTXHQFHUVHW6HTXHQFH VHTXHQFH 
 /HW·V\RXVSHFLI\WKHQXPEHU
VHTXHQFHUVHW/RRS&RXQW VHTXHQFHU/223B&217,18286/< 
VHTXHQFHUVWDUW  RIORRSLWHUDWLRQVRULQWKLV
VHTXHQFHUVHW7HPSR,Q%30   FDVHFRQWLQXRXVORRSLQJ
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
`FORVHEXLOG7UDFN$QG6WDUWPHWKRG
 12:3/$<7+(7+,1*

SXEOLFFODVV0\6WDUW/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
EXLOG7UDFN$QG6WDUW  )LUVWRIWKHLQQHUFOD V
` OLVWHQHUVIRUWKHEXWWVVH
RQV
`FORVHLQQHUFODVV 1RWKLQJVSHFLDOK HUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

SXEOLFFODVV0\6WRS/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
VHTXHQFHUVWRS 
`
`FORVHLQQHUFODVV
7KHRWKHULQQHUFODVV
SXEOLFFODVV0\8S7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^ OLVWHQHUVIRUWKHEXWWRQV
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
 ÀRDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU 
VHTXHQFHUVHW7HPSR)DFWRU ÀRDW WHPSR)DFWRU  
`
`FORVHLQQHUFODVV
7KH7HPSR)DFWRUVFDOHV
SXEOLFFODVV0\'RZQ7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^ WKHVHTXHQFHU·VWHPSRE\
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^ WKHIDFWRUSURYLGHG7KH
 ÀRDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU  GHIDXOWLVVRZH·UH
VHTXHQFHUVHW7HPSR)DFWRU ÀRDW WHPSR)DFWRU   DGMXVWLQJSHU
` FOLFN
`FORVHLQQHUFODVV

RQHLQVWUXPHQWDWDWK WLPHIRU
7KLVPDNHVHYHQWVIRUJKW

WDQLQW> @ IRU H%DVV
DOOEHDWV6RLWPL LQJH WKH DU UD\ ZL OOK ROG HL WKHU
SXEOLFYRLGPDNH7UDFNV LQW>@OLVW ^
GUX P DQG HDFKLQGH[ ]H UR ,I LW ·VD]HUR

WKH NH \R IW KDWLQVWUXPHQWRUDSOD \DWWKDW DW EH
IRU LQWL LL ^
LQ VWU XP HQW LVQ·WVXSSRVHGWR WW
WKH DGGL RWKHWUDFN
2WKHUZLVHPDNHDQHYHQWDQG
LQWNH\ OLVW>L@

LI NH\  ^
0DNHWKH127(21DQG
WUDFNDGG PDNH(YHQW NH\L 
1272))HYHQWVDQG 
WUDFNDGG PDNH(YHQW NH\L 
DGGWKHPWRWKH7UDFN
`
`
`

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
7KLVLVWKHXWLOLW\
HYHQW QHZ0LGL(YHQW DWLFN  PHWKRG FKDSWHU·V&RGH.LW IURPODVW
FKHQ1RWKLQJQ HZ
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
UHWXUQHYHQW
`

`FORVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH:KLFK/D\RXW"

1dQ^OU_Q :KLFKFRGHJRHVZLWK
ZKLFKOD\RXW"
)LYHRIWKHVL[VFUHHQVEHORZZHUHPDGHIURPRQH
RIWKHFRGHIUDJPHQWVRQWKHRSSRVLWHSDJH0DWFK
HDFKRIWKH¿YHFRGHIUDJPHQWVZLWKWKHOD\RXWWKDW
IUDJPHQWZRXOGSURGXFH

 

 " 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

&RGH)UDJPHQWV
-)UDPHIUDPH QHZ-)UDPH 
, -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+SDQHO 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 

-)UDPHIUDPH QHZ-)UDPH 


* -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 

+ -)UDPHIUDPH QHZ-)UDPH 


-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 

-)UDPHIUDPH QHZ-)UDPH 


)
-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 

-)UDPHIUDPH QHZ-)UDPH 


- -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+SDQHO 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHFURVVZRUG

*8,&URVV
  

  

  

  9OUCANDOIT


 



  



 

 





!CROSS 3HAKEITBABY $OWN -ANAGERSRULES


!RTISTSSANDBOX ,OTSTOSAY 3WINGSDAD 3OURCESBEHAVIOR
"ORDERSCATCHALL #HOOSEMANY &RAMESPURVIEW "ORDERBYDEFAULT
*AVALOOK "UTTONSPAL (ELPSHOME 5SERSBEHAVIOR
'ENERICWAITER (OMEOF -OREFUNTHANTEXT )NNERSSQUEEZE
!HAPPENING ACTION0ERFORMED #OMPONENTSLANG "ACKSTAGEWIDGET
!PPLYAWIDGET 2OMULINCOMMAND -ACLOOK
*0ANELSDEFAULT !RRANGE "ORDERSRIGHT
0OLYMORPHICTEST "ORDERSTOP

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJVZLQJ

([HUFLVH6ROXWLRQV

-)UDPHIUDPH QHZ-)UDPH 


 + -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 

-)UDPHIUDPH QHZ-)UDPH 


 , -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+SDQHO 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 

-)UDPHIUDPH QHZ-)UDPH 


 - -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+SDQHO 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 

-)UDPHIUDPH QHZ-)UDPH 


 ) -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 

-)UDPHIUDPH QHZ-)UDPH 


 * -3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³WHVXML´ 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ ³ZDWDUL´ 
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

3X]]OH$QVZHUV
*8,&URVV
  
'5$:3$1(/6

:&(17(5
  
0(7$/7*:
  
6(/,67(1(5,
 
(9(17$,2$''

783<=53*
 
9&)/2:2(7+(

,6$5/8+,7
  
6/$1,0$7,21&

,/0&&83
 
%%(<7(;7$5($$
/$,(41
 
(&+(&.%2;58(

.$1/$%(/
6

$&7,21/,67(1(5

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

6DYLQJ2EMHFWV ,I,KDYHWRUHDG
RQHPRUHÀOHIXOORI
GDWD,WKLQN,·OOKDYHWRNLOOKLP+H
NQRZV,FDQVDYHZKROHREMHFWVEXW
GRHVKHOHWPH"12WKDWZRXOGEH
WRRHDV\:HOOZH·OOMXVWVHHKRZ
KHIHHOVDIWHU,

2EMHFWVFDQEHIODWWHQHGDQGLQIODWHG/BJECTSHAVESTATEANDBEHAVIOR
"EHAVIORLIVESINTHECLASS BUTSTATELIVESWITHINEACHINDIVIDUALOBJECT3OWHATHAPPENSWHEN
ITSTIMETOSAVETHESTATEOFANOBJECT)FYOUREWRITINGAGAME YOUREGONNANEEDA3AVE
2ESTORE'AMEFEATURE)FYOUREWRITINGANAPPTHATCREATESCHARTS YOUREGONNANEEDA3AVE
/PEN&ILEFEATURE)FYOURPROGRAMNEEDSTOSAVESTATE YOUCANDOITTHEHARDWAY INTERROGATING
EACHOBJECT THENPAINSTAKINGLYWRITINGTHEVALUEOFEACHINSTANCEVARIABLETOAFILE INA
FORMATYOUCREATE/R YOUCANDOITTHEEASY//WAYˆYOUSIMPLYFREEZE DRYFLATTENPERSIST
DEHYDRATETHEOBJECTITSELF ANDRECONSTITUTEINFLATERESTOREREHYDRATEITTOGETITBACK"UTYOULL
STILLHAVETODOITTHEHARDWAYSOMETIMES ESPECIALLYWHENTHEFILEYOURAPPSAVESHASTOBEREAD
BYSOMEOTHERNON *AVAAPPLICATION SOWELLLOOKATBOTHINTHISCHAPTER

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VDYLQJREMHFWV

+IX\]ZM\PM*MI\
9OUVEMADETHEPERFECTPATTERN9OUWANTTOSAVETHEPATTERN
9OUCOULDGRABAPIECEOFPAPERANDSTARTSCRIBBLINGITDOWN BUT
INSTEADYOUHITTHE3AVEBUTTONORCHOOSE3AVEFROMTHE&ILE
MENU 4HENYOUGIVEITANAME PICKADIRECTORY
ANDEXHALEKNOWINGTHATYOURMASTERPIECEWONTGO
OUTTHEWINDOWWITHTHEBLUESCREENOFDEATH
9OUHAVELOTSOFOPTIONSFORHOWTOSAVETHESTATEOF
YOUR*AVAPROGRAM ANDWHATYOUCHOOSEWILLPROBABLY
DEPENDONHOWYOUPLANTOUSETHESAVEDSTATE(ERE
ARETHEOPTIONSWELLBELOOKINGATINTHISCHAPTER

,I\RXUGDWDZLOOEHXVHGE\RQO\WKH-DYD
SURJUDPWKDWJHQHUDWHGLW

 8VHVHULDOL]DWLRQ
:ULWHDÀOHWKDWKROGVÁDWWHQHG VHULDOL]HG 
REMHFWV7KHQKDYH\RXUSURJUDPUHDGWKH
VHULDOL]HGREMHFWVIURPWKHÀOHDQGLQÁDWHWKHP
EDFNLQWROLYLQJEUHDWKLQJKHDSLQKDELWLQJREMHFWV

,I\RXUGDWDZLOOEHXVHGE\RWKHUSURJUDPV

 :ULWHDSODLQWH[WÀOH
:ULWHDÀOHZLWKGHOLPLWHUVWKDWRWKHUSURJUDPVFDQSDUVH
)RUH[DPSOHDWDEGHOLPLWHGÀOHWKDWDVSUHDGVKHHWRU
GDWDEDVHDSSOLFDWLRQFDQXVH

4HESEARENTTHEONLYOPTIONS OFCOURSE9OUCANSAVEDATAINANY
FORMATYOUCHOOSE)NSTEADOFWRITINGCHARACTERS FOREXAMPLE
YOUCANWRITEYOURDATAASBYTES/RYOUCANWRITEOUTANYKIND
OF*AVAPRIMITIVEASA*AVAPRIMITIVEˆTHEREAREMETHODSTOWRITE
INTS LONGS BOOLEANS ETC"UTREGARDLESSOFTHEMETHODYOUUSE
THEFUNDAMENTAL)/TECHNIQUESAREPRETTYMUCHTHESAME
WRITESOMEDATATOSOMETHING ANDUSUALLYTHATSOMETHINGISEITHER
AlLEONDISKORASTREAMCOMINGFROMANETWORKCONNECTION
2EADINGTHEDATAISTHESAMEPROCESSINREVERSEREADSOMEDATA
FROMEITHERAlLEONDISKORANETWORKCONNECTION!NDOFCOURSE
EVERYTHINGWETALKABOUTINTHISPARTISFORTIMESWHENYOUARENT
USINGANACTUALDATABASE
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

;I^QVO;\I\M
)MAGINEYOUHAVEAPROGRAM SAY AFANTASY
ADVENTUREGAME THATTAKESMORETHANONE
SESSIONTOCOMPLETE!STHEGAMEPROGRESSES
CHARACTERSINTHEGAMEBECOMESTRONGER WEAKER
SMARTER ETC ANDGATHERANDUSEANDLOSE Imagine you
WEAPONS9OUDONTWANTTOSTARTFROMSCRATCH have three
g
characters ame
EACHTIMEYOULAUNCHTHEGAMEˆITTOOKYOU
FOREVERTOGETYOURCHARACTERSINTOPSHAPEFOR
ASPECTACULARBATTLE3O YOUNEEDAWAYTOSAVE
to save...
*DPH&KDUDFWHU
THESTATEOFTHECHARACTERS ANDAWAYTORESTORE
THESTATEWHENYOURESUMETHEGAME!NDSINCE LQWSRZHU
YOUREALSOTHEGAMEPROGRAMMER YOUWANTTHE 6WULQJW\SH
WHOLESAVEANDRESTORETHINGTOBEASEASYAND :HDSRQ>@ZHDSRQV
FOOLPROOF ASPOSSIBLE
JHW:HDSRQ
XVH:HDSRQ
LQFUHDVH3RZHU
SRZHU
 2SWLRQRQH PRUH W\SH(OI
:ULWHWKHWKUHHVHULDOL]HG ZHDSRQVERZ
FKDUDFWHUREMHFWVWRDÀOH VZRUGGXVW
&UHDWHDÀOHDQGZULWHWKUHHVHULDOL]HG R EMHFW
FKDUDFWHUREMHFWV7KHÀOHZRQ·WPDNH SRZHU
VHQVHLI\RXWU\WRUHDGLWDVWH[W W\SH7UROO
ZHDSRQVEDUH
ñÔ[Z/IUM+PIZIK\MZ
KDQGVELJD[

ñ Ow 5Ú1XW_MZ4RI^ITIVO
;\ZQVO#C_MIXWV[\C4RI^ITIVO
R EMHFW
;\ZQVO#`X\TN]ZC4RI^ITIVO;\ZQVO#”¹>Î SRZHU
Ðc/`X\JW_\[_WZL\L][\[Yf¯\<ZWTT]Yf\J W\SH0DJLFLDQ
IZMPIVL[\JQOI`[Yf`\5IOQKQIV]Yf\[XM
ZHDSRQVVSHOOV
TT[\QV^Q[QJQTQ\a
LQYLVLELOLW\
 2SWLRQWZR R EMHFW
7KHVHULDOL]HGI
EXWLW·VPXFKHD LOHLVPXFKKDUGHUIRUKXPDQVWR
:ULWHDSODLQWH[WÀOH
&UHDWHDÀOHDQGZULWHWKUHHOLQHVRIWH[W UHVWRUHWKHWKUHVLHU DQGVDIHU IRU\RXUSURJUD UHDG
RQHSHUFKDUDFWHUVHSDUDWLQJWKHSLHFHV UHDGLQJLQWKHR HREMHFWVIURPVHULDOL]DWLRQWK PWR
RIVWDWHZLWKFRPPDV WRDWH[WILOH)EMHFW·VYDULDEOHYDOXHVWKDWZHU DQIURP
\RXFRXOGDFFLGH RUH[DPSOHLPDJLQHDOOWKHZD\HVDYHG
-TNJW_[_WZLL][\
RUGHU7KHW\S QWDOO\UHDGEDFNWKHYDOXHVLQW VLQZKLFK
<ZWTTJIZMPIVL[JQOI`
ZKLOHWKH(OIEHFHPLJKWEHFRPH´GXVWµLQVWHDGRKHZURQJ
5IOQKQIV[XMTT[QV^Q[QJQTQ\a RPHVDZHDSRQ I´(OIµ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VDYLQJREMHFWV

?ZQ\QVOI[MZQITQbMLWJRMK\\WINQTM
(EREARETHESTEPSFORSERIALIZINGSAVING ANOBJECT$ONTBOTHER
MEMORIZINGALLTHISWELLGOINTOMOREDETAILLATERINTHISCHAPTER

,IWKHILOH´0EH\* DPHVHUµGRHVQDW·WLF DOO\


DWHGDXWRP
H[LVWLWZLOO FUH
 0DNHD)LOH2XWSXW6WUHDP
)LOH2XWSXW6WUHDP¿OH6WUHDP QHZ)LOH2XWSXW6WUHDP ³0\*DPHVHU´ 
0DNHD)
NQRZVKRZLOWH2R XWSXW6WUHDPREMHFW
FRQQHFWWR )LOH2XWSXW6
DQGFUHDWH W
DILOH UHDP


Licensed by
0DNHDQ2EMHFW2XWSXW6WUHDP

Eduard Simons
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP ¿OH6WUHDP 

REMHFWV
2EMHFW2XWSXW6W UHDPOHWV\RXZWRULDWHILOH,W
\FRQQHFW
EXWLWFDQ·WGLUGHFDWO¶KHOSHU·7KLVLVDFWXDOO\
IH
QHHGVWREH J·RQHVWUHDPWRDQRWKHU

104038 FDOOHG¶FKDLQLQ

 :ULWHWKHREMHFW UDFWHU
DO L] HV W KHR EM HF WVUHIHUHQFHGE\7FKUKDHHDQG
RVZULWH2EMHFW FKDUDFWHU2QH  VHUL 7ZRDQGFKD\* UDFWHU
2QHFKDUDFWHU W KH I LOH ´ 0 DPHVHUµ
RVZULWH2EMHFW FKDUDFWHU7ZR  ZULWHVWKHPWR
RVZULWH2EMHFW FKDUDFWHU7KUHH 

 &ORVHWKH2EMHFW2XWSXW6WUHDP
RVFORVH 
&ORVLQJWKHVWUH
XQGHUQHDWKVRWKDPHD)LWOH2
WKHWRSFORVHVWKHRQH
V
ILOH ZLOOFORVHDXWRPDW XWSXW6WUHDP DQGWKH
LFDOO\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

,I\IUW^M[QV[\ZMIU[NZWUWVMXTIKM\WIVW\PMZ
+WVVMK\QWV
[\ZMIU[ZMXZM[MV\
IKWVVMK\QWV
\WI[W]ZKMWZ
'HVWLQDWLRQ LM[\QVI\QWVNQTM
[WKSM\M\K_PQTM
KPIQV[\ZMIU[
KIV¼\KWVVMK\WV
\PMQZW_VIVLU][\
JMKPIQVML\WI
6RXUFH KWVVMK\QWV[\ZMIU

4HE*AVA)/!0)HASCONNECTIONSTREAMS THATREPRESENTCONNECTIONSTODESTINATIONSAND
SOURCESSUCHASlLESORNETWORKSOCKETS ANDCHAINSTREAMSTHATWORKONLYIFCHAINEDTO
OTHERSTREAMS
/FTEN ITTAKESATLEASTTWOSTREAMSHOOKEDTOGETHERTODOSOMETHINGUSEFULˆONETO
REPRESENTTHECONNECTIONANDANOTHERTOCALLMETHODSON7HYTWO"ECAUSECONNECTION
STREAMSAREUSUALLYTOOLOW LEVEL&ILE/UTPUT3TREAMACONNECTIONSTREAM FOREXAMPLE
HASMETHODSFORWRITINGBYTES"UTWEDONTWANTTOWRITEBYTES7EWANTTOWRITEOBJECTS SO
WENEEDAHIGHER LEVELCHAINSTREAM
/+ THENWHYNOTHAVEJUSTASINGLESTREAMTHATDOESEXACTLYWHATYOUWANT/NETHATLETS
YOUWRITEOBJECTSBUTUNDERNEATHCONVERTSTHEMTOBYTES4HINKGOOD//%ACHCLASS
DOESONETHINGWELL&ILE/UTPUT3TREAMSWRITEBYTESTOAlLE/BJECT/UTPUT3TREAMSTURN
OBJECTSINTODATATHATCANBEWRITTENTOASTREAM3OWEMAKEA&ILE/UTPUT3TREAMTHATLETS
USWRITETOAlLE ANDWEHOOKAN/BJECT/UTPUT3TREAMACHAINSTREAM ONTHEENDOFIT
7HENWECALLWRITE/BJECT ONTHE/BJECT/UTPUT3TREAM THEOBJECTGETSPUMPEDINTOTHE
STREAMANDTHENMOVESTOTHE&ILE/UTPUT3TREAMWHEREITULTIMATELYGETSWRITTENASBYTES
TOAlLE
4HEABILITYTOMIXANDMATCHDIFFERENTCOMBINATIONSOFCONNECTIONANDCHAINSTREAMS

GHVWLQDWLRQ
GIVESYOUTREMENDOUSmEXIBILITY)FYOUWEREFORCEDTOUSEONLYASINGLESTREAMCLASS YOUD
BEATTHEMERCYOFTHE!0)DESIGNERS HOPINGTHEYDTHOUGHTOFEVERYTHINGYOUMIGHTEVER
WANTTODO"UTWITHCHAINING YOUCANPATCHTOGETHERYOUROWNCUSTOMCHAINS

REMHFWLVÁDWWHQHG VHULDOL]HG REMHFWLVZULWWHQDVE\WHVWR

 
LVZULWWHQWR LVFKDLQHGWR
2EMHFW 2EMHFW2XWSXW6WUHDP )LOH2XWSXW6WUHDP
)LOH
DFKDLQVWUHDP DFRQQHFWLRQVWUHDP
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]HGREMHFWV

?PI\ZMITTaPIXXMV[\WIVWJRMK\
_PMVQ\¼[[MZQITQbML'

 2EMHFWRQWKHKHDS  2EMHFWVHULDOL]HG

2EMHFWVRQWKHKHDSKDYHVWDWH³WKH 6HULDOL]HGREMHFWVVDYHWKHYDOXHV
YDOXHRIWKHREMHFW·VLQVWDQFH RIWKHLQVWDQFHYDULDEOHVVRWKDW
YDULDEOHV7KHVHYDOXHVPDNHRQH DQLGHQWLFDOLQVWDQFH REMHFW FDQEH
LQVWDQFHRIDFODVVGLIIHUHQWIURP EURXJKWEDFNWROLIHRQWKHKHDS
DQRWKHULQVWDQFHRIWKHVDPHFODVV

H
LW K  W Z R SULPLWLY  7KHLQVWDQFHYDULDEOHYD
2EMHFWFHZYDULDEOHV IRUZLGWKDQGKHLJKWDUOXHV
LQVWDQ  VDYHGWRWKHILOH´I H

 

7KHYDOXHVD UHVXFNHG RR VH
DORQJZLWKDOLWW PRUH Uµ

 

RXWDQGSXP SHGLQWR WKH-90QHHGVWOH LQIR
 R UH VW RUH
WKHVWUH D P  WKHREMHFW OLNHZ
IRRVHU FODVVW\SHLV  KDWLWV
ZLGWK KHLJKW )LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP ³IRRVHU´ 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 
RVZULWH2EMHFW P\)RR 
0DNHD)LOH2XWSXW6WUHDP DW
)RRP\)RR QHZ)RR 
WRWKHILOH´IRRVHUµWKHQWK FRQQHFWV
P\)RRVHW:LGWK  
2EMHFW2XWSXW6WUHDPWRLWFK DLQDQ
2EMHFW2XWSXW6WUHDPWRZUDQ GWHOOWKH
P\)RRVHW+HLJKW  
LWHWKHREMHFW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

*]\_PI\M`IK\Ta1;IVWJRMK\¼[[\I\M'
?PI\VMML[\WJM[I^ML'
.OWITSTARTSTOGETINTERESTING%ASYENOUGHTOSAVETHEPRIMITIVE
VALUESAND"UTWHATIFANOBJECTHASANINSTANCEVARIABLE
THATSANOBJECTREFERENCE7HATABOUTANOBJECTTHATHASlVE
INSTANCEVARIABLESTHATAREOBJECTREFERENCES7HATIFTHOSEOBJECT
INSTANCEVARIABLESTHEMSELVESHAVEINSTANCEVARIABLES
4HINKABOUTIT7HATPARTOFANOBJECTISPOTENTIALLYUNIQUE
)MAGINEWHATNEEDSTOBERESTOREDINORDERTOGETANOBJECTTHATS
IDENTICALTOTHEONETHATWASSAVED)TWILLHAVEADIFFERENTMEMORY
LOCATION OFCOURSE BUTWEDONTCAREABOUTTHAT!LLWECAREABOUT
ISTHATOUTTHEREONTHEHEAP WELLGETANOBJECTTHATHASTHESAME
STATETHEOBJECTHADWHENITWASSAVED

DLQ EDUEHOO
EU%UDLQ%DUEHOO
7HATHASTOHAPPENFORTHE#AR 7KH&DUREMHFWKDVWZR
OBJECTTOBESAVEDINSUCHAWAY LQVWDQFHYDULDEOHVWKDW
THATITCANBERESTOREDBACKTOITS UHIHUHQFHWZRRWKHU
ORIGINALSTATE REMHFWV
(Q

W
4HINKOFWHATˆANDHOWˆYOU JLQH EMHF
R
MIGHTNEEDTOSAVETHE#AR
]f_
!NDWHATHAPPENSIFAN%NGINE laj]k
OBJECTHASAREFERENCETOA (QJLQH

W
7LUH> @
#ARBURATOR!NDWHATSINSIDETHE 7L
UH F
MH
4IRE;=ARRAYOBJECT > @DUUD\RE
& DU 
REMHFW

:KDWGRHVLWWDNHWR
VDYHD&DUREMHFW"

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]HGREMHFWV

:KHQDQREMHFWLVVHULDOL]HGDOOWKHREMHFWV
LWUHIHUVWRIURPLQVWDQFHYDULDEOHVDUHDOVR
VHULDOL]HG$QGDOOWKHREMHFWVWKRVHREMHFWV Serialization saves the
UHIHUWRDUHVHULDOL]HG$QGDOOWKHREMHFWVWKRVH
REMHFWVUHIHUWRDUHVHULDOL]HGDQGWKHEHVW
entire object graph.
SDUWLVLWKDSSHQVDXWRPDWLFDOO\ All objects referenced
7KLV.HQQHOREMHFWKDVDUHIHUHQFHWRD'RJ>@DUUD\REMHFW7KH by instance variables,
'RJ>@KROGVUHIHUHQFHVWRWZR'RJREMHFWV(DFK'RJREMHFWKROGV starting with the
DUHIHUHQFHWRD6WULQJDQGD&ROODUREMHFW7KH6WULQJREMHFWV
KDYHDFROOHFWLRQRIFKDUDFWHUVDQGWKH&ROODUREMHFWVKDYHDQLQW
object being serialized.
:KHQ\RXVDYHWKH.HQQHODOORIWKLVLVVDYHG ´)LGRµ

6W


FW
ULQ EMH
J R

kar]
\g_k
LQW
fYe] &R

W
'RJ>@
OODU EMHF
R
6WULQJ [gd

.H HF W


QQHOREM &ROODU

R FW
LQJKDVW ' RJ


REMH
(YHU\WK LQRUGHUWR 
EHVDYHG WKH.HQQHOEDFN ´6SLNHµ
UHVWRUH VWDWH
WRWKLV 6W
^gg^ ZYj^


FW
ULQ EMH
J R
'RJ 'RJ

kar]
W

'R F
J> @ MH
DUU D\RE LQW
fYe] &R
W
OODU EMHF
R
6WULQJ [gd

&ROODU

' RJ FW


REMH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

1NaW]_IV\aW]ZKTI[[\WJM[MZQITQbIJTM
QUXTMUMV\;MZQITQbIJTM
4HE3ERIALIZABLEINTERFACEISKNOWNASAMARKERORTAGINTERFACE
BECAUSETHEINTERFACEDOESNTHAVEANYMETHODSTOIMPLEMENT)TS
SOLEPURPOSEISTOANNOUNCETHATTHECLASSIMPLEMENTINGITIS WELL
SERIALIZABLE)NOTHERWORDS OBJECTSOFTHATTYPEARESAVEABLETHROUGH
THESERIALIZATIONMECHANISM)FANYSUPERCLASSOFACLASSISSERIALIZABLE
THESUBCLASSISAUTOMATICALLYSERIALIZABLEEVENIFTHESUBCLASSDOESNT
EXPLICITLYDECLAREIMPLEMENTS3ERIALIZABLE4HISISHOWINTERFACESALWAYS
WORK)FYOURSUPERCLASSh)3 !v3ERIALIZABLE YOUARETOO 
H U H 0 867 LPSOHPHQW
RHVK LPH
REMHFW2XWSXW6WUHDPZULWH2EMHFW P\%R[  :KDWHYHUJ ULWZLOOIDLODWUXQW
OH R
6HULDOL]DE

KH M D Y D L R SDFNDJHVR
LVLQW
6HULDOL]DEOHKHLPSRUW XVD\
LPSRUWMDYDLR 
\RXQHHGW HPHQWEXWZKHQ\R
1RPHWKRGVWRLPSO OHµLWVD\VWRWKH-90
SXEOLFFODVV%R[LPSOHPHQWV6HULDOL]DEOH^ ´LPSOHPHQWV6HULDOL]DE µ
REMHFWVRIWKLVW\SH
´LW·V2.WRVHULDOL]H

SULYDWHLQWZLGWK
WKHVHWZRYDOXHVZLOOEH
SULYDWHLQWKHLJKW VDYHG
SXEOLFYRLGVHW:LGWK LQWZ ^
ZLGWK Z
`

SXEOLFYRLGVHW+HLJKW LQWK ^
KHLJKW K
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
HUµ
R D I LO H Q DPHG´IRRVHD
&RQQHFWW ,ILWGRHVQ·WPDN
%R[P\%R[ QHZ%R[ 
P\%R[VHW:LGWK  
KURZH[FHS WLRQV LILWH[LVWVPHG´IRRVHUµ
P\%R[VHW+HLJKW  
,2RSHUDWLRQVFDQW QHZILOHQD
WU\^
)LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP ³IRRVHU´ 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 
RVZULWH2EMHFW P\%R[  0DNHDQ2EMH
RVFORVH  FKDLQHGWRW FW2XWSXW6WUHDP
`FDWFK ([FHSWLRQH[ ^ KHFRQQHFWLR
7 H QVWUHDP
H[SULQW6WDFN7UDFH  OO LWWRZULWH
` W KH REMHFW
`
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]HGREMHFWV

6HULDOL]DWLRQLVDOORUQRWKLQJ
&DQ\RXLPDJLQHZKDWZRXOG
KDSSHQLIVRPHRIWKHREMHFW·V
VWDWHGLGQ·WVDYHFRUUHFWO\" (HHZZZ7KDW
FUHHSVPHRXWMXVWWKLQNLQJ
DERXWLW/LNHZKDWLID'RJFRPHV
EDFNZLWKQRZHLJKW2UQRHDUV2U
WKHFROODUFRPHVEDFNVL]HLQVWHDG
RI7KDWMXVWFDQ·WEHDOORZHG

(LWKHUWKHHQWLUH
REMHFWJUDSKLV
VHULDOL]HGFRUUHFWO\
RUVHULDOL]DWLRQIDLOV

<RXFDQ·WVHULDOL]H
D3RQGREMHFWLI
LPSRUWMDYDLR  LWV'XFNLQVWDQFH
3RQGREMHFWVFDQEHVHULDOL]HG YDULDEOHUHIXVHVWR
SXEOLFFODVV3RQGLPSOHPHQWV6HULDOL]DEOH^
EHVHULDOL]HG E\
HLQVWDQFH
SULYDWH'XFNGXFN QHZ'XFN  &ODVV3RQGKDXFVNRQ QRWLPSOHPHQWLQJ
YDULDEOHD' 6HULDOL]DEOH 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
3RQGP\3RQG QHZ3RQG 
WU\^
)LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP ³3RQGVHU´ 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 

:KHQ\RXVHULD
REMHFW LWV'XFOL]NHLQVP\3RQG D3RQG
RVZULWH2EMHFW P\3RQG 
RVFORVH 
DXWRPDWLFDOO\JHWVVHWDQFHYDULDEOH
ULDOL]HG
RQG
WKHPDLQLQFODVV3
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
:KHQ\RXWU\HOSWR5UHJXQUHW
RZ+
)LOH(GLW:LQG
`
MDYD3RQ
G 'XFN
` H([FHSWLRQ
L R1R W6HULDOL]DEO MD YD  
MDYD RQ G
<LNHV'XFNLVQRWVHULDOL]DEOH   DW 3 RQ G PD LQ 3

,WGRHVQ·WLPSOHPHQW6HULDOL]D
SXEOLFFODVV'XFN^
GXFNFRGHKHUH
VRZKHQ\RXWU\WRVHULDOL]HDEOH
3RQGREMHFWLWIDLOVEHFDXVHWKH
`
3RQG·V'XFNLQVWDQFHYDULDEOH 
FDQ·WEHVDYHG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

,W·VKRSHOHVV
WKHQ",·PFRPSOHWHO\
VFUHZHGLIWKHLGLRWZKR
ZURWHWKHFODVVIRUP\LQVWDQFH
YDULDEOHIRUJRWWRPDNHLW
6HULDOL]DEOH"

0DUNDQLQVWDQFHYDULDEOHDVWUDQVLHQW
LILWFDQ·W RUVKRXOGQ·W EHVDYHG
)FYOUWANTANINSTANCEVARIABLETOBESKIPPEDBYTHE
SERIALIZATIONPROCESS MARKTHEVARIABLEWITHTHEWUDQVLHQW
KEYWORD
LPSRUWMDYDQHW 

VD\V´GRQ·W FODVV&KDWLPSOHPHQWV6HULDOL]DEOH^
WUDQVLHQLVWYDULDEOHGXULQJµWUDQVLHQW6WULQJFXUUHQW,'
W K
VDYH DWLRQMXVWVNLS   LW
VHULDOL] 6WULQJXVHU1DPH
XVHU1DPHYDULDEOH PRUHFRGH
ZLOOEHVDYHGDVSDUW
RIWKHREMHFW·VVW `
GXULQJVHULDOL]DWLRQDWH

)FYOUHAVEANINSTANCEVARIABLETHATCANTBESAVEDBECAUSE
ITISNTSERIALIZABLE YOUCANMARKTHATVARIABLEWITHTHE
TRANSIENTKEYWORDANDTHESERIALIZATIONPROCESSWILLSKIPRIGHT
OVERIT
3OWHYWOULDAVARIABLENOTBESERIALIZABLE)TCOULDBE
THATTHECLASSDESIGNERSIMPLYFORGOTTOMAKETHECLASS
IMPLEMENT3ERIALIZABLE/RITMIGHTBEBECAUSETHEOBJECT
RELIESONRUNTIME SPECIlCINFORMATIONTHATSIMPLYCANTBE
SAVED!LTHOUGHMOSTTHINGSINTHE*AVACLASSLIBRARIESARE
SERIALIZABLE YOUCANTSAVETHINGSLIKENETWORKCONNECTIONS
THREADS ORlLEOBJECTS4HEYREALLDEPENDENTONAND
SPECIlCTO APARTICULARRUNTIME@EXPERIENCE)NOTHERWORDS
THEYREINSTANTIATEDINAWAYTHATSUNIQUETOAPARTICULARRUN
OFYOURPROGRAM ONAPARTICULARPLATFORM INAPARTICULAR
*6-/NCETHEPROGRAMSHUTSDOWN THERESNOWAYTOBRING
THOSETHINGSBACKTOLIFEINANYMEANINGFULWAYTHEYHAVETO
BECREATEDFROMSCRATCHEACHTIME
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]HGREMHFWV

there are no
Dumb Questions
Q: )FSERIALIZATIONISSOIMPORTANT A: 9ES)FTHECLASSITSELFIS
ASNULL REGARDLESSOFTHEVALUEITHAD
ATTHETIMEITWASSAVED4HATMEANS
WHYISNTITTHEDEFAULTFORALLCLASSES EXTENDABLEIENOTFINAL YOUCAN THEENTIREOBJECTGRAPHCONNECTEDTO
7HYDOESNTCLASS/BJECTIMPLEMENT MAKEASERIALIZABLESUBCLASS ANDJUST THATPARTICULARINSTANCEVARIABLEWONT
3ERIALIZABLE ANDTHENALLSUBCLASSES SUBSTITUTETHESUBCLASSEVERYWHERE BESAVED4HISCOULDBEBAD OBVIOUSLY
WILLBEAUTOMATICALLY3ERIALIZABLE YOURCODEISEXPECTINGTHESUPERCLASS BECAUSEYOUPROBABLYNEEDANON NULL
TYPE2EMEMBER POLYMORPHISM VALUEFORTHATVARIABLE
ALLOWSTHIS 7HICHBRINGSUPANOTHER
A: %VENTHOUGHMOSTCLASSESWILL
ANDSHOULD IMPLEMENT3ERIALIZABLE
INTERESTINGISSUEWHATDOESITMEANIF
THESUPERCLASSISNOTSERIALIZABLE
9OUHAVETWOOPTIONS
 7HENTHEOBJECTISBROUGHTBACK
YOUALWAYSHAVEACHOICE!NDYOU REINITIALIZETHATNULLINSTANCEVARIABLE
MUSTMAKEACONSCIOUSDECISIONON
ACLASS BY CLASSBASIS FOREACHCLASS
Q: 9OUBROUGHTITUPWHATDOESIT
BACKTOSOMEDEFAULTSTATE4HIS
WORKSIFYOURDESERIALIZEDOBJECTISNT
YOUDESIGN TO@ENABLESERIALIZATION MEANTOHAVEASERIALIZABLESUBCLASS DEPENDENTONAPARTICULARVALUEFOR
BYIMPLEMENTING3ERIALIZABLE OFANON SERIALIZABLESUPERCLASS THATTRANSIENTVARIABLE)NOTHERWORDS
&IRSTOFALL IFSERIALIZATIONWERETHE ITMIGHTBEIMPORTANTTHATTHE$OG
HAVEA#OLLAR BUTPERHAPSALL#OLLAR
DEFAULT HOWWOULDYOUTURNITOFF
)NTERFACESINDICATEFUNCTIONALITY NOT A: &IRSTWEHAVETOLOOKATWHAT
HAPPENSWHENACLASSISDESERIALIZED
OBJECTSARETHESAMESOITDOESNT
MATTERIFYOUGIVETHERESURRECTED$OG
ALACKOFFUNCTIONALITY SOTHEMODEL
OFPOLYMORPHISMWOULDNTWORK WELLTALKABOUTTHATONTHENEXTFEW ABRANDNEW#OLLARNOBODYWILLKNOW
CORRECTLYIFYOUHADTOSAY hIMPLEMENTS PAGES )NANUTSHELL WHENANOBJECT THEDIFFERENCE
.ON3ERIALIZABLEvTOTELLTHEWORLDTHAT ISDESERIALIZEDANDITSSUPERCLASSISNOT  )FTHEVALUEOFTHETRANSIENTVARIABLE
YOUCANNOTBESAVED SERIALIZABLE THESUPERCLASSCONSTRUCTOR DOESMATTERSAY IFTHECOLORANDDESIGN
WILLRUNJUSTASTHOUGHANEWOBJECTOF OFTHETRANSIENT#OLLARAREUNIQUEFOR
THATTYPEWEREBEINGCREATED)FTHERES EACH$OG THENYOUNEEDTOSAVETHE
Q: 7HYWOULD)EVERWRITEACLASS
NODECENTREASONFORACLASSTONOT
BESERIALIZABLE MAKINGASERIALIZABLE
KEYVALUESOFTHE#OLLARANDUSETHEM
WHENTHE$OGISBROUGHTBACKTO
THATWASNTSERIALIZABLE SUBCLASSMIGHTBEAGOODSOLUTION ESSENTIALLYRE CREATEABRANDNEW#OLLAR
THATSIDENTICALTOTHEORIGINAL

A: Q: 7HOA)JUSTREALIZED
4HEREAREVERYFEWREASONS BUT
YOUMIGHT FOREXAMPLE HAVEASECURITY
ISSUEWHEREYOUDONTWANTAPASSWORD
SOMETHINGBIGIFYOUMAKEA
VARIABLE@TRANSIENT THISMEANSTHE
Q: 7HATHAPPENSIFTWOOBJECTSIN
THEOBJECTGRAPHARETHESAMEOBJECT
OBJECTSTORED/RYOUMIGHTHAVEAN VARIABLESVALUEISSKIPPEDOVER ,IKE IFYOUHAVETWODIFFERENT#AT
OBJECTTHATMAKESNOSENSETOSAVE DURINGSERIALIZATION4HENWHAT OBJECTSINTHE+ENNEL BUTBOTH#ATS
BECAUSEITSKEYINSTANCEVARIABLESARE HAPPENSTOIT7ESOLVETHEPROBLEM HAVEAREFERENCETOTHESAME/WNER
THEMSELVESNOTSERIALIZABLE SOTHERES OFHAVINGANON SERIALIZABLEINSTANCE OBJECT$OESTHE/WNERGETSAVED
NOUSEFULWAYFORYOUTOMAKEYOUR VARIABLEBYMAKINGTHEINSTANCE TWICE)MHOPINGNOT
CLASSSERIALIZABLE VARIABLETRANSIENT BUTDONTWE.%%$
THATVARIABLEWHENTHEOBJECTIS
BROUGHTBACKTOLIFE)NOTHERWORDS A: %XCELLENTQUESTION3ERIALIZATION

Q: )FACLASS)MUSINGISNT
ISNTTHEWHOLEPOINTOFSERIALIZATION
TOPRESERVEANOBJECTSSTATE
ISSMARTENOUGHTOKNOWWHENTWO
OBJECTSINTHEGRAPHARETHESAME)N
SERIALIZABLE BUTTHERESNOGOOD THATCASE ONLYONEOFTHEOBJECTSIS
REASONEXCEPTTHATTHEDESIGNERJUST
FORGOTORWASSTUPID CAN)SUBCLASS
THE@BADCLASSANDMAKETHESUBCLASS
A: 9ES THISISANISSUE BUT
FORTUNATELYTHERESASOLUTION)FYOU
SAVED ANDDURINGDESERIALIZATION ANY
REFERENCESTOTHATSINGLEOBJECTARE
RESTORED
SERIALIZABLE SERIALIZEANOBJECT ATRANSIENTREFERENCE
INSTANCEVARIABLEWILLBEBROUGHTBACK

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

,M[MZQITQbI\QWV"ZM[\WZQVOIVWJRMK\ GHVHULDOL]HG
4HEWHOLEPOINTOFSERIALIZINGANOBJECTISSOTHATYOUCAN
VHULDOL]HG
RESTOREITBACKTOITSORIGINALSTATEATSOMELATERDATE INA
DIFFERENT@RUNOFTHE*6-WHICHMIGHTNOTEVENBETHESAME
*6-THATWASRUNNINGATTHETIMETHEOBJECTWASSERIALIZED 
$ESERIALIZATIONISALOTLIKESERIALIZATIONINREVERSE

HVHUµGRHVQ·W
 0DNHD)LOH,QSXW6WUHDP ,IWKHILOH´0HW\*DDPH[FHSWLRQ
H[LVW\RX·OOJ Q
)LOH,QSXW6WUHDP¿OH6WUHDP QHZ)LOH,QSXW6WUHDP ³0\*DPHVHU´ 

0DNHD)
NQRZVKRZLOWH,RQSXW6WUHDPREMHFW7
FRQQHFWWRD K
QH[LVWLQJHI)LOLOH,QSXW6WUHDP
H
 0DNHDQ2EMHFW,QSXW6WUHDP
2EMHFW,QSXW6WUHDPRV QHZ2EMHFW,QSXW6WUHDP ¿OH6WUHDP 
V
MHFW,Q SX W6 WU HD P OHWV\RXUHDGDREIMHLOHFW
2E \FRQQHFWWR
EXWLWFDQ·WGLUFHFKDWOLQHGWRDFRQQHFWLRQ
,WQHHGVWREHLVFDVHD)LOH,QSXW6WUHDP
VWUHDPLQWK

 UHDGWKHREMHFWV
2EMHFWRQH RVUHDG2EMHFW  (DFKWLPH\RXVD\UHDG2EMHFW \
REMHFWLQWKHVWUHDP6R RXJHWWKHQH[W
2EMHFWWZR RVUHDG2EMHFW 
WKHVDPHRUGHULQZKLFKW\RX·OOUHDGWKHPEDFNLQ
2EMHFWWKUHH RVUHDG2EMHFW  JHWDELJIDWH[FHSWLRQ KH\ZHUHZULWWHQ<RX·OO
REMHFWVWKDQ\RXZURWH LI\RXWU\WRUHDGPRUH

 &DVWWKHREMHFWV
*DPH&KDUDFWHUHOI  *DPH&KDUDFWHU RQH RI
*DPH&KDUDFWHUWUROO  *DPH&KDUDFWHU WZR 7KHUHWXUQYDLVOXH
W \SH2EMHFW
2EMH FW
*DPH&KDUDFWHUPDJLFLDQ  *DPH&KDUDFWHU WKUHHUHDGWOLNHZLWK$UUD\/LVW VR
MXV EDFNWR
\RXKDYHWRFDNVWQRLW
Z LWUHDOO\LV
WKHW\SH\RX
 &ORVHWKH2EMHFW,QSXW6WUHDP
RVFORVH 
&ORVLQJWKHVWUH
XQGHUQHDWKVRWKDPHD)LWOH,WKHWRSFORVHVWKHRQHV
ILOH ZLOOFORVHDXWRPDW QSXW6WUHDP DQGWKH
LFDOO\
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVHULDOL]LQJREMHFWV

?PI\PIXXMV[L]ZQVOLM[MZQITQbI\QWV'
7HENANOBJECTISDESERIALIZED THE*6-ATTEMPTSTOBRING
THEOBJECTBACKTOLIFEBYMAKINGANEWOBJECTONTHEHEAP
THATHASTHESAMESTATETHESERIALIZEDOBJECTHADATTHETIMEIT
WASSERIALIZED7ELL EXCEPTFORTHETRANSIENTVARIABLES WHICH WKH-90
COMEBACKEITHERNULLFOROBJECTREFERENCES ORASDEFAULT
WK U R Z  D Q H[FHSWLRQLI
LOO
PRIMITIVEVALUES 7KLVVWHSZ RUORDGWKHFODVV
FDQ·WI LQ G 

FODVVLVIRXQGDQGORDGHGVDYHG

Licensed by
 REMHFWLVUHDGDVE\WHV LQVWDQFHYDULDEOHVUHDVVLJQHG

 
LVUHDGE\ LVFKDLQHGWR

)LOH,QSXW6WUHDP 2EMHFW,QSXW6WUHDP 2EMHFW

Eduard Simons
DFRQQHFWLRQVWUHDP DFKDLQVWUHDP
)LOH

104038
 7KHREMHFWLVUHDGIURPWKHVWUHDP

 7KH-90GHWHUPLQHV WKURXJKLQIRVWRUHGZLWK
WKHVHULDOL]HGREMHFW WKHREMHFW·VFODVVW\SH

 7KH-90DWWHPSWVWRÀQGDQGORDGWKHRE
MHFW·VFODVV,IWKH-90FDQ·WÀQGDQGRUORDG
WKHFODVVWKH-90WKURZVDQH[FHSWLRQDQG
WKHGHVHULDOL]DWLRQIDLOV

 $QHZREMHFWLVJLYHQVSDFHRQWKHKHDSEXW
WKHVHULDOL]HGREMHFW·VFRQVWUXFWRUGRHV
127UXQ2EYLRXVO\LIWKHFRQVWUXFWRUUDQLW
ZRXOGUHVWRUHWKHVWDWHRIWKHREMHFWEDFN
WRLWVRULJLQDO¶QHZ·VWDWHDQGWKDW·VQRWZKDW
ZHZDQW:HZDQWWKHREMHFWWREHUHVWRUHG
WRWKHVWDWHLWKDGZKHQLWZDVVHULDOL]HGQRW
ZKHQLWZDVÀUVWFUHDWHG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

 ,IWKHREMHFWKDVDQRQVHULDOL]DEOHFODVV
VRPHZKHUHXSLWVLQKHULWDQFHWUHHWKH
FRQVWUXFWRUIRUWKDWQRQVHULDOL]DEOHFODVV
ZLOOUXQDORQJZLWKDQ\FRQVWUXFWRUVDERYH
WKDW HYHQLIWKH\·UHVHULDOL]DEOH 2QFHWKH
FRQVWUXFWRUFKDLQLQJEHJLQV\RXFDQ·WVWRSLW
ZKLFKPHDQVDOOVXSHUFODVVHVEHJLQQLQJZLWK
WKHÀUVWQRQVHULDOL]DEOHRQHZLOOUHLQLWLDOL]H
WKHLUVWDWH

 7KHREMHFW·VLQVWDQFHYDULDEOHVDUHJLYHQWKH
YDOXHVIURPWKHVHULDOL]HGVWDWH7UDQVLHQW
YDULDEOHVDUHJLYHQDYDOXHRIQXOOIRUREMHFW
UHIHUHQFHVDQGGHIDXOWV IDOVHHWF IRU
SULPLWLYHV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HYDOESNTTHECLASSGETSAVEDASPARTOFTHEOB
ARGUMENT ANDIFTHE*6-RECEIVINGTHECALLDOESNTHAVE
THECLASS ITCANUSETHE52,TOFETCHTHECLASSFROMTHE
JECT4HATWAYYOUDONTHAVETHEPROBLEMWITHWHETHER NETWORKANDLOADIT ALLAUTOMATICALLY7ELLTALKABOUT2-)
THECLASSCANBEFOUND INCHAPTER

A: 3URE THEYCOULDHAVEMADESERIALIZATIONWORKTHAT
Q: 7HATABOUTSTATICVARIABLES!RETHEYSERIALIZED
WAY"UTWHATATREMENDOUSWASTEANDOVERHEAD!ND
WHILEITMIGHTNOTBESUCHAHARDSHIPWHENYOUREUSING
SERIALIZATIONTOWRITEOBJECTSTOAFILEONALOCALHARDDRIVE A: .OPE2EMEMBER STATICMEANShONEPERCLASSvNOT
SERIALIZATIONISALSOUSEDTOSENDOBJECTSOVERANETWORK hONEPEROBJECTv3TATICVARIABLESARENOTSAVED ANDWHENAN
CONNECTION)FACLASSWASBUNDLEDWITHEACHSERIALIZED OBJECTISDESERIALIZED ITWILLHAVEWHATEVERSTATICVARIABLE
SHIPPABLE OBJECT BANDWIDTHWOULDBECOMEAMUCHLARGER ITSCLASSCURRENTLYHAS4HEMORALDONTMAKESERIALIZABLEOB
PROBLEMTHANITALREADYIS JECTSDEPENDENTONADYNAMICALLY CHANGINGSTATICVARIABLE
)TMIGHTNOTBETHESAMEWHENTHEOBJECTCOMESBACK
&OROBJECTSSERIALIZEDTOSHIPOVERANETWORK THOUGH THERE
ACTUALLYISAMECHANISMWHERETHESERIALIZEDOBJECTCANBE
@STAMPEDWITHA52,FORWHEREITSCLASSCANBEFOUND4HIS
ISUSEDIN*AVAS2EMOTE-ETHOD)NVOCATION2-) SOTHAT
YOUCANSENDASERIALIZEDOBJECTASPARTOF SAY AMETHOD

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQH[DPSOH

;I^QVOIVLZM[\WZQVO\PMOIUMKPIZIK\MZ[
LPSRUWMDYDLR 

SXEOLFFODVV*DPH6DYHU7HVW^ 0DNHVRPHFKDUDFWHUV
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
*DPH&KDUDFWHURQH QHZ*DPH&KDUDFWHU ³(OI´QHZ6WULQJ>@^³ERZ´³VZRUG´³GXVW´` 
*DPH&KDUDFWHUWZR QHZ*DPH&KDUDFWHU ³7UROO´QHZ6WULQJ>@^³EDUHKDQGV´³ELJD[´` 
*DPH&KDUDFWHUWKUHH QHZ*DPH&KDUDFWHU ³0DJLFLDQ´QHZ6WULQJ>@^³VSHOOV´³LQYLVLELOLW\´` 

LPDJLQHFRGHWKDWGRHVWKLQJVZLWKWKHFKDUDFWHUVWKDWPLJKWFKDQJHWKHLUVWDWHYDOXHV

WU\^
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP QHZ)LOH2XWSXW6WUHDP ³*DPHVHU´ 
RVZULWH2EMHFW RQH 
RVZULWH2EMHFW WZR 
RVZULWH2EMHFW WKUHH 
RVFORVH 
`FDWFK ,2([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
HFDQ·W
RQH QXOO :HVHWWKHPWRQXOOVRZKHKHDS
WZR QXOO DFFHVVWKHREMHFWVRQW
WKUHH QXOO
1RZUHDGWKHPE
DFNLQIURPWKHILOH

WU\^
2EMHFW,QSXW6WUHDPLV QHZ2EMHFW,QSXW6WUHDP QHZ)LOH,QSXW6WUHDP ³*DPHVHU´ 
*DPH&KDUDFWHURQH5HVWRUH  *DPH&KDUDFWHU LVUHDG2EMHFW 
*DPH&KDUDFWHUWZR5HVWRUH  *DPH&KDUDFWHU LVUHDG2EMHFW 
*DPH&KDUDFWHUWKUHH5HVWRUH  *DPH&KDUDFWHU LVUHDG2EMHFW 
WZRUNHG
6\VWHPRXWSULQWOQ ³2QH¶VW\SH³RQH5HVWRUHJHW7\SH  &KHFNWRVHHLIL
6\VWHPRXWSULQWOQ ³7ZR¶VW\SH³WZR5HVWRUHJHW7\SH 
6\VWHPRXWSULQWOQ ³7KUHH¶VW\SH³WKUHH5HVWRUHJHW7\SH 
`FDWFK ([FHSWLRQH[ ^ SRZHU
H[SULQW6WDFN7UDFH  W\SH(OI
` ZHDSRQVERZ
)LOH(GLW:LQGRZ+HOS5HVXVFLWDWH
` VZRUGGXVW
MDYD*DPH6DYHU SRZHU
W\SH7UROO R EMHFW
(OI ZHDSRQVEDUH
7UROO KDQGVELJD[
SRZHU
R EMHFW W\SH0DJLFLDQ
0DJLFLDQ ZHDSRQVVSHOOV
LQYLVLELOLW\
R EMHFW
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

<PM/IUM+PIZIK\MZKTI[[
LPSRUWMDYDLR 
SXEOLFFODVV*DPH&KDUDFWHULPSOHPHQWV6HULDOL]DEOH^
LQWSRZHU
RUWHVWLQJ
6WULQJW\SH
6WULQJ>@ZHDSRQV 7KLVLVDEDVLFFODVVMXVWRQI·WKDYHDQ
Z HG
6HULDOL]DWLRQDQG OOHDYHWKDWWR
SXEOLF*DPH&KDUDFWHU LQWS6WULQJW6WULQJ>@Z ^ DFWXDOJDPHEXWZH·O
SRZHU S \RXWRH[SHULPHQW
W\SH W
ZHDSRQV Z
`
SXEOLFLQWJHW3RZHU ^
UHWXUQSRZHU
`
SXEOLF6WULQJJHW7\SH ^
UHWXUQW\SH
`
SXEOLF6WULQJJHW:HDSRQV ^
6WULQJZHDSRQ/LVW ³´
IRU LQWL LZHDSRQVOHQJWKL ^
ZHDSRQ/LVW ZHDSRQV>L@³³
`
UHWXUQZHDSRQ/LVW
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VDYLQJREMHFWV

Object Serialization

:MDD=LHGAFLK
 <RXFDQVDYHDQREMHFW·VVWDWHE\VHULDOL]LQJWKHREMHFW
 7RVHULDOL]HDQREMHFW\RXQHHGDQ2EMHFW2XWSXW6WUHDP IURPWKH
MDYDLRSDFNDJH
 6WUHDPVDUHHLWKHUFRQQHFWLRQVWUHDPVRUFKDLQVWUHDPV
 &RQQHFWLRQVWUHDPVFDQUHSUHVHQWDFRQQHFWLRQWRDVRXUFHRU
GHVWLQDWLRQW\SLFDOO\DILOHQHWZRUNVRFNHWFRQQHFWLRQRUWKH
FRQVROH
 &KDLQVWUHDPVFDQQRWFRQQHFWWRDVRXUFHRUGHVWLQDWLRQDQGPXVW
EHFKDLQHGWRDFRQQHFWLRQ RURWKHU VWUHDP
 7RVHULDOL]HDQREMHFWWRDILOHPDNHD)LOH2XSXW6WUHDPDQGFKDLQLW
LQWRDQ2EMHFW2XWSXW6WUHDP
 7RVHULDOL]HDQREMHFWFDOOZULWH2EMHFW WKH2EMHFW RQWKH
2EMHFW2XWSXW6WUHDP<RXGRQRWQHHGWRFDOOPHWKRGVRQWKH
)LOH2XWSXW6WUHDP
 7REHVHULDOL]HGDQREMHFWPXVWLPSOHPHQWWKH6HULDOL]DEOHLQWHUIDFH
,IDVXSHUFODVVRIWKHFODVVLPSOHPHQWV6HULDOL]DEOHWKHVXEFODVVZLOO
DXWRPDWLFDOO\EHVHULDOL]DEOHHYHQLILWGRHVQRWVSHFLILFDOO\GHFODUH
LPSOHPHQWV6HULDOL]DEOH
 :KHQDQREMHFWLVVHULDOL]HGLWVHQWLUHREMHFWJUDSKLVVHULDOL]HG7KDW
PHDQVDQ\REMHFWVUHIHUHQFHGE\WKHVHULDOL]HGREMHFW·VLQVWDQFH
YDULDEOHVDUHVHULDOL]HGDQGDQ\REMHFWVUHIHUHQFHGE\WKRVH
REMHFWVDQGVRRQ
 ,IDQ\REMHFWLQWKHJUDSKLVQRWVHULDOL]DEOHDQH[FHSWLRQZLOOEH
WKURZQDWUXQWLPHXQOHVVWKHLQVWDQFHYDULDEOHUHIHUULQJWRWKHREMHFW
LVVNLSSHG
 0DUNDQLQVWDQFHYDULDEOHZLWKWKHWUDQVLHQWNH\ZRUGLI\RXZDQW
VHULDOL]DWLRQWRVNLSWKDWYDULDEOH7KHYDULDEOHZLOOEHUHVWRUHGDVQXOO
IRUREMHFWUHIHUHQFHV RUGHIDXOWYDOXHV IRUSULPLWLYHV 
 'XULQJGHVHULDOL]DWLRQWKHFODVVRIDOOREMHFWVLQWKHJUDSKPXVWEH
DYDLODEOHWRWKH-90
 <RXUHDGREMHFWVLQ XVLQJUHDG2EMHFW LQWKHRUGHULQZKLFKWKH\
ZHUHRULJLQDOO\ZULWWHQ
 7KHUHWXUQW\SHRIUHDG2EMHFW LVW\SH2EMHFWVRGHVHULDOL]HG
REMHFWVPXVWEHFDVWWRWKHLUUHDOW\SH
 6WDWLFYDULDEOHVDUHQRWVHULDOL]HG,WGRHVQ·WPDNHVHQVHWRVDYH
DVWDWLFYDULDEOHYDOXHDVSDUWRIDVSHFLILFREMHFW·VVWDWHVLQFHDOO
REMHFWVRIWKDWW\SHVKDUHRQO\DVLQJOHYDOXH³WKHRQHLQWKHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

?ZQ\QVOI;\ZQVO\WI<M`\.QTM
3AVINGOBJECTS THROUGHSERIALIZATION ISTHEE ASIESTWAYTOSAVEAND
RESTOREDATABETWEENRUNNINGSOFA*AVAPROGRAM"UTSOMETIMESYOU :KDWWKHJDPHFKDUDFWHUGDWD
NEEDTOSAVEDATATOAPLAINOLDTEXTlLE)MAGINEYOUR*AVAPROGRAM PLJKWORRNOLNHLI\RXZURWHLW
HASTOWRITEDATATOASIMPLETEXTlLETHATSOMEOTHERPERHAPSNON RXWDVDKXPDQUHDGDEOHWH[WILOH
*AVA PROGRAMNEEDSTOREAD9OUMIGHT FOREXAMPLE HAVEASERVLET
*AVACODERUNNINGWITHINYOURWEBSERVER THATTAKESFORMDATATHE
-TNJW_[_WZLL][\
USERTYPEDINTOABROWSER ANDWRITESITTOATEXTlLETHATSOMEBODYELSE
LOADSINTOASPREADSHEETFORANALYSIS <ZWTTJIZMPIVL[JQOI`
5IOQKQIV[XMTT[QV^Q[QJQTQ\a
7RITINGTEXTDATAA3TRING ACTUALLY ISSIMILARTOWRITINGANOBJECT
EXCEPTYOUWRITEA3TRINGINSTEADOFANOBJECT ANDYOUUSEA
&ILE7RITERINSTEADOFA&ILE/UTPUT3TREAMANDYOUDONTCHAINITTOAN
/BJECT/UTPUT3TREAM 

7RZULWHDVHULDOL]HGREMHFW
REMHFW2XWSXW6WUHDPZULWH2EMHFW VRPH2EMHFW 

7RZULWHD6WULQJ
¿OH:ULWHUZULWH ³0\¿UVW6WULQJWRVDYH´ 

HU
RU)LOH:ULW
RSDFNDJHI
LPSRUWMDYDLR  :HQH HGWKHMDYDL

W
FODVV:ULWH$)LOH^
H  ´ ) RR W[ WµGRHVWQHRLW
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
,IWKHILOLOH:ULWHUZLOOFUH D
H[LVW)
WU\^
)LOH:ULWHUZULWHU QHZ)LOH:ULWHU ³)RRW[W´ 

,2VWXIFIDWFK
$//WKHHLQ DWU\ZULWHUZULWH ³KHOORIRR´ 
 7KHZULWH PHWKRGWDNHV
PXVWE KLQJFDQWKURZDQ D6WULQJ
(YHU\W SWLRQ ZULWHUFORVH  &ORVHLW
,2([FH ZKHQ\RX·UHGRQH
`FDWFK ,2([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDWH[WILOH

<M`\.QTM-`IUXTM"M.TI[PKIZL[ ROGID
IURQW LQGH[IVODKVLRQHG[
2EMEMBERTHOSEmASHCARDSYOUUSEDINSCHOOL7HEREYOU KFDUGV
HADAQUESTIONONONESIDEANDTHEANSWERONTHEBACK HILUVW
4HEYARENTMUCHHELPWHENYOURETRYINGTOUNDERSTAND :KDW·VWKRXQWU\GXH
SOMETHING BUTNOTHINGBEATS@EMFORRAWDRILL AND PRACTICE IRUHLJQF 'HWURLW EDFN
ANDROTEMEMORIZATION7HENYOUHAVETOBURNINAFACT!ND VRXWKRI
THEYREALSOGREATFORTRIVIAGAMES
0LFKLJDQ" &DQDGD 2QWDULR
7EREGOINGTOMAKEANELECTRONICVERSIONTHATHASTHREE
CLASSES
 1UIZ#ARD"UILDER ASIMPLEAUTHORINGTOOLFORCREATINGAND
SAVINGASETOFE &LASHCARDS
 1UIZ#ARD0LAYER APLAYBACKENGINETHATCANLOADA
mASHCARDSETANDPLAYITFORTHEUSER 4XL]&DUG
 1UIZ#ARD ASIMPLECLASSREPRESENTINGCARDDATA7ELL 4XL]&DUG TD
WALKTHROUGHTHECODEFORTHEBUILDERANDTHEPLAYER AND
HAVEYOUMAKETHE1UIZ#ARDCLASSYOURSELF USINGTHIS TXHVWLRQ
DQVZHU

JHW4XHVWLRQ
JHW$QVZHU

4XL]&DUG%XLOGHU 4XL]&DUG3OD\HU

+DVD)LOHPHQXZLWKD´6DYHµRSWLRQIRUVDYLQJ +DVD)LOHPHQXZLWKD´/RDGµRSWLRQIRUORDGLQJD
WKHFXUUHQWVHWRIFDUGVWRDWH[WÀOH VHWRIFDUGVIURPDWH[WÀOH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

9]Qb+IZL*]QTLMZKWLMW]\TQVM
PUBLICCLASS1UIZ#ARD"UILDER[

KH*8,LQFOXGLQJ
%XLOGVDQGGLVSODLVW\VHUWLQJHYHQWOLVWHQHUV
PUBLICVOIDGO [
BUILDANDDISPLAYGUI PDNLQJDQGUHJ
]
,QQHUFODVV
WRQ
KLWV¶1H[W&DUGF·EDUXWGLQ
PRIVATECLASS.EXT#ARD,ISTENERIMPLEMENTS!CTION,ISTENER[
7 ULJ JHUH G ZKHQ X VHU DW
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
PHDQVWKHXVHUZ DQWVWRVWRUHWK
QHZFDUG
ADDTHECURRENTCARDTOTHELISTANDCLEARTHETEXTAREAS
WKHOLVWDQGVW WD
DU
]
]
,QQHUFODVV
PRIVATECLASS3AVE-ENU,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
7ULJJHUHGZKHQXVHFK
BRINGUPAlLEDIALOGBOX )LOHPHQXPHDQV RRVHV¶6DYH·IURPWKH
LETTHEUSERNAMEANDSAVETHESET WKHFDUGVLQWKHWFXKHUUXVHUZDQWVWRVDYHDOO
4XDQWXP0HFKD V6 HQWOLVWDVD¶VHW· OLNH
]
-DYD5XOHVHWF QLF

HW+ROO\ZRRG7ULYLD
]
,QQHUFODVV
PRIVATECLASS.EW-ENU,ISTENERIMPLEMENTS!CTION,ISTENER[
WKH)LOH
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [ E \ FK R R VL QJ¶1HZ·IURRVPWDUWD
7ULJJHUHG QVWKHXVHUZDQWVWXWWKHFDUG
CLEAROUTTHECARDLIST ANDCLEAROUTTHETEXTAREAS PHQXPHD VHW VRZHFOHDUR
] EUDQGQHZKHWH[WDUHDV 
] OLVWDQGW


PRIVATEVOIDSAVE&ILE&ILElLE [
ITERATETHROUGHTHELISTOFCARDS ANDWRITEEACHONEOUTTOATEXTlLE
INAPARSEABLEWAYINOTHERWORDS WITHCLEARSEPARATIONSBETWEENPARTS
]
] HU
&DOOHGE\WKH6DYH0HQX/LVWHQ
GRHVWKHDFWXDOILOHZULWLQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
4XL]&DUG%XLOGHUFRGH

LPSRUWMDYDXWLO 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDLR 
SXEOLFFODVV4XL]&DUG%XLOGHU^
SULYDWH-7H[W$UHDTXHVWLRQ
SULYDWH-7H[W$UHDDQVZHU
SULYDWH$UUD\/LVW4XL]&DUG!FDUG/LVW
SULYDWH-)UDPHIUDPH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
4XL]&DUG%XLOGHUEXLOGHU QHZ4XL]&DUG%XLOGHU 
EXLOGHUJR 
`

SXEOLFYRLGJR ^
EXLOGJXL 7KLVLVDOO*8
VSHFLDODOWKRX K ,FRGH
IUDPH QHZ-)UDPH ³4XL]&DUG%XLOGHU´ 
WRORRND JK\RXPHLJUHKW1ZRWKLQJ
DQG0HQXW,WWHPKH0HQX%DU0HQDXQW
-3DQHOPDLQ3DQHO QHZ-3DQHO 
)RQWELJ)RQW QHZ)RQW ³VDQVHULI´)RQW%2/' 
TXHVWLRQ QHZ-7H[W$UHD   VFRGH
TXHVWLRQVHW/LQH:UDS WUXH 
TXHVWLRQVHW:UDS6W\OH:RUG WUXH 
TXHVWLRQVHW)RQW ELJ)RQW 

-6FUROO3DQHT6FUROOHU QHZ-6FUROO3DQH TXHVWLRQ 
T6FUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
T6FUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 
DQVZHU QHZ-7H[W$UHD  
DQVZHUVHW/LQH:UDS WUXH 
DQVZHUVHW:UDS6W\OH:RUG WUXH 
DQVZHUVHW)RQW ELJ)RQW 

-6FUROO3DQHD6FUROOHU QHZ-6FUROO3DQH DQVZHU 
D6FUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
D6FUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 

-%XWWRQQH[W%XWWRQ QHZ-%XWWRQ ³1H[W&DUG´ 

FDUG/LVW QHZ$UUD\/LVW4XL]&DUG! 
-/DEHOT/DEHO QHZ-/DEHO ³4XHVWLRQ´ 
-/DEHOD/DEHO QHZ-/DEHO ³$QVZHU´ 

PDLQ3DQHODGG T/DEHO 
PDLQ3DQHODGG T6FUROOHU 
PDLQ3DQHODGG D/DEHO 
PDLQ3DQHODGG D6FUROOHU 
PDLQ3DQHODGG QH[W%XWWRQ 
QH[W%XWWRQDGG$FWLRQ/LVWHQHU QHZ1H[W&DUG/LVWHQHU 
-0HQX%DUPHQX%DU QHZ-0HQX%DU 
-0HQX¿OH0HQX QHZ-0HQX ³)LOH´ 
-0HQX,WHPQHZ0HQX,WHP QHZ-0HQX,WHP ³1HZ´ 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2


-0HQX,WHPVDYH0HQX,WHP QHZ-0HQX,WHP ³6DYH´  :HPDNHDPHQ
QHZ0HQX,WHPDGG$FWLRQ/LVWHQHU QHZ1HZ0HQX/LVWHQHU 
 P HQXWKHQSXW¶XEDUPDNHD)LOH
VDYH0HQX,WHPDGG$FWLRQ/LVWHQHU QHZ6DYH0HQX/LVWHQHU  LW HPVLQWRWKH QHZ·DQG¶VDYH·PHQX
¿OH0HQXDGG QHZ0HQX,WHP  PHQXWRWKH )LOHPHQX:H
DG
¿OH0HQXDGG VDYH0HQX,WHP  IUDPHWRXVHPHQXEDUWKHQWHOOGWWKHKH
PHQX%DUDGG ¿OH0HQX  LWHPVFDQILUHW K LV P HQXE
IUDPHVHW-0HQX%DU PHQX%DU  DQ$FWLRQ(DUYHQW0HQX
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
SXEOLFFODVV1H[W&DUG/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^

4XL]&DUGFDUG QHZ4XL]&DUG TXHVWLRQJHW7H[W DQVZHUJHW7H[W 
FDUG/LVWDGG FDUG 
FOHDU&DUG 
`
`
SXEOLFFODVV6DYH0HQX/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
4XL]&DUGFDUG QHZ4XL]&DUG TXHVWLRQJHW7H[W DQVZHUJHW7H[W 
KLV
ZDLWVRQW
FDUG/LVWDGG FDUG 
 J ER [ D QG K H 
-)LOH&KRRVHU¿OH6DYH QHZ-)LOH&KRRVHU 
% U LQ J VX S DILOHGLDFORKRRVHV¶6DYH·IURDPWWLR Q D QG
¿OH6DYHVKRZ6DYH'LDORJ IUDPH 
W LO WK U
HXVH LOHGLDORJQDYLJ \WKH
Q H X Q
VDYH)LOH ¿OH6DYHJHW6HOHFWHG)LOH  OL $OOWKHI RU\RXE
` GLDORJER[DILOHHWFLVGRQHKILVHDV\
` VHOHFWLQJ HDOO\LVW U
SXEOLFFODVV1HZ0HQX/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU LO
-)^ H&KRRVHU ,W
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
FDUG/LVWFOHDU 
FOHDU&DUG 
`
J
OILOHZULWDLQQGOHU 
`

W K H D F W X D
SULYDWHYRLGFOHDU&DUG ^ WKDWGRHV QHU·VHYHQWK LQJ
TXHVWLRQVHW7H[W ³´  7KHPHWK\RWG KH6DYH0HQX/LVRWEHMHFWWKHXVHULVVDY
DQVZHUVHW7H[W ³´  H G E LO H ·
FDOO XPHQWLVWKH¶) RQWKHQH[WS D J H
TXHVWLRQUHTXHVW)RFXV 
` 7KHDUJRNDWWKH)LOHFODVV
·OOOR :H
SULYDWHYRLGVDYH)LOH )LOH¿OH ^
WU\^
%XIIHUHG:ULWHUZULWHU QHZ%XIIHUHG:ULWHU QHZ)LOH:ULWHU ¿OH 

:HFKDLQD%XI
)LOH:ULWHUWRPDIHNHUHZG:ULWHURQWRDQHZ
IRU 4XL]&DUGFDUGFDUG/LVW ^
ZULWHUZULWH FDUGJHW4XHVWLRQ ³´ 
ZULWHUZULWH FDUGJHW$QVZHU ³?Q´  :H·OOWDONDERXWWKDWULWLQJPRUHHIILFLHQW
` LQDIHZSDJHV 
ZULWHUFORVH 
:DONWKURXJKW
`FDWFK ,2([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ ³FRXOGQ¶WZULWHWKHFDUG/LVWRXW´  FDUGVDQGZULWHKHWK$HPUUD\/LVWRI
H[SULQW6WDFN7UDFH  SHUOLQHZLWKW RXWRQHFDUG
` VZHUVHSDUDWHGKHE\TDXH´VWLRQDQGDQ
` DGGDQHZOLQHFKDUDFW µDQGWKHQ
` HU ´?Qµ

 \RXDUHKHUH 




Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJILOHV

<PMRI^IQW.QTMKTI[[
4HEJAVAIO&ILECLASSREPRESENTSAlLEONDISK BUTDOESNT
ACTUALLYREPRESENTTHECONTENTSOFTHElLE7HAT4HINKOF
A&ILEOBJECTASSOMETHINGMORELIKEAPATHNAMEOFAlLE
OREVENADIRECTORY RATHERTHAN4HE!CTUAL&ILE)TSELF
4HE&ILECLASSDOESNOT FOREXAMPLE HAVEMETHODSFOR
READINGANDWRITING/NE6%29USEFULTHINGABOUTA&ILE
OBJECTISTHATITOFFERSAMUCHSAFERWAYTOREPRESENTA $)LOHREMHFWUHSUHVHQWVWKHQDPH
lLETHANJUSTUSINGA3TRINGlLENAME&OREXAMPLE MOST DQGSDWKRIDÀOHRUGLUHFWRU\RQ
CLASSESTHATTAKEA3TRINGlLENAMEINTHEIRCONSTRUCTOR GLVNIRUH[DPSOH
LIKE&ILE7RITEROR&ILE)NPUT3TREAM CANTAKEA&ILE
8VHUV.DWK\'DWD*DPH)LOHW[W
OBJECTINSTEAD9OUCANCONSTRUCTA&ILEOBJECT VERIFY

Licensed by
THATYOUVEGOTAVALIDPATH ETCANDTHENGIVETHAT&ILE %XWLWGRHV127UHSUHVHQWRUJLYH
OBJECTTOTHE&ILE7RITEROR&ILE)NPUT3TREAM \RXDFFHVVWRWKHGDWDLQWKHÀOH

6RPHWKLQJV\RXFDQGRZLWKD)LOHREMHFW

Eduard Simons
7WKH
$QDGGUHVVLV12XDO
 0DNHD)LOHREMHFWUHSUHVHQWLQJDQ D FW
VDPHDVWKH EMHFWLV
H[LVWLQJÀOH KRXVH$)LOHRGGUHVV
)LOHI QHZ)LOH ³0\&RGHW[W´  OLNHDVWUHHWD HQDPH
LWUHSUHVHQWVWK DSDU
 0DNHDQHZGLUHFWRU\ 104038
)LOHGLU QHZ)LOH ³&KDSWHU´ 
DQGORFDWLRQRILWLVQ·W
WLFXODUILOHEXW
WKHILOHLWVHOI
GLUPNGLU 
KH
UHSUHVHQWVW
$)LOHREMHFW
H)LOHW[Wµ
 /LVWWKHFRQWHQWVRIDGLUHFWRU\
ILOHQDPH´*DP *DPH)LOHW[W
LI GLULV'LUHFWRU\ ^ -TNJW_[_WZLL][\
6WULQJ>@GLU&RQWHQWV GLUOLVW 
IRU LQWL LGLU&RQWHQWVOHQJWKL ^ <ZWTTJIZMPIVL[JQOI`
6\VWHPRXWSULQWOQ GLU&RQWHQWV>L@  5IOQKQIV[XMTT[QV^Q[QJQTQ\a
`
`
GRHV127
$)LOHREMH FW JLYH\RX
UHSUHVHQW HVRUV WR WKH
 *HWWKHDEVROXWHSDWKRIDÀOHRUGLUHFWRU\ GLUHFWDFFHWKHILOH
6\VWHPRXWSULQWOQ GLUJHW$EVROXWH3DWK  GDWDLQVLG

 'HOHWHDÀOHRUGLUHFWRU\ UHWXUQVWUXHLI
VXFFHVVIXO
ERROHDQLV'HOHWHG IGHOHWH 
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

7KHEHDXW\RIEXIIHUV
,IWKHUHZHUHQREXIIHUVLWZRXOGEHOLNH
VKRSSLQJZLWKRXWDFDUW<RX·GKDYHWR
FDUU\HDFKWKLQJRXWWR\RXUFDURQHVRXS
FDQRUWRLOHWSDSHUUROODWDWLPH

EXIIHUVJL
SODFHWRJUYHRX\SRXDWHPSRUDU\KROGLQJ
OLNHWKHFDUW WKLQJVXQWLOWKHKROGHU
LVIXOO RXJ
IDUIHZHUW ULSVZKHQ\R<X HWWRPDNH
XVHDEXIIHU

GHVWLQDWLRQ

6WULQJLVSXWLQWRDEXIIHU :KHQWKHEXIIHULVIXOOWKH
$VSHQ
ZLWKRWKHU6WULQJV 6WULQJVDUHDOOZULWWHQWR
'HQYHU
¹*W]TLMZº ¹*W]TLMZº ¹)[XMVº ´$VSHQ'HQYHU%RXOGHUµ %RXOGHU
LVZULWWHQWR ¹,MV^MZº LVFKDLQHGWR
6WULQJ
%XIIHUHG:ULWHU )LOH:ULWHU
)LOH
DFKDLQVWUHDPWKDW DFRQQHFWLRQVWUHDP
ZRUNVZLWKFKDUDFWHUV WKDWZULWHVFKDUDFWHUV
DVRSSRVHGWRE\WHV

%XIIHUHG:ULWHUZULWHU QHZ%XIIHUHG:ULWHU QHZ)LOH:ULWHU D)LOH 


1RWLFHWKD
QHHGWRNHHSWZ D
HGRQ·WHYHQ
4HECOOLTHINGABOUTBUFFERSISTHATTHEYREMUCHMOREEFlCIENTTHAN WKH)LOH:ULWHU UHIHUHQFHWR
RQO\WKLQJZ REMHFW7KH
WORKINGWITHOUTTHEM9OUCANWRITETOAlLEUSING&ILE7RITERALONE BY H FD UHDERXWLVWKH
%XIIHUHG 
CALLINGWRITESOME3TRING BUT&ILE7RITERWRITESEACHANDEVERYTHINGYOU
WKHREMHFW:ZULH·WHUEHFDXVHWKDW·V
PASSTOTHElLEEACHANDEVERYTIME4HATSOVERHEADYOUDONTWANTOR
RQDQGZKHQZ OO FD OO PHW
NEED SINCEEVERYTRIPTOTHEDISKISA"IG$EALCOMPAREDTOMANIPULATING %XIIHUHG: HFORVHWKHKR GV
DATAINMEMORY"YCHAININGA"UFFERED7RITERONTOA&ILE7RITER THE UL
FDUHRIWKHUWHULWZLOOWDNH
"UFFERED7RITERWILLHOLDALLTHESTUFFYOUWRITETOITUNTILITSFULL/NLYWHEN HVWRIWKHFKD
LQ
THEBUFFERISFULLWILLTHE&ILE7RITERACTUALLYBETOLDTOWRITETOTHElLEONDISK
)FYOUDOWANTTOSENDDATABEFORETHEBUFFERISFULL YOUDOHAVECONTROL
*UST&LUSH)T#ALLSTOWRITERmUSH SAY hSENDWHATEVERSINTHEBUFFER NOWv

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHDGLQJILOHV

:MILQVONZWUI<M`\.QTM
2EADINGTEXTFROMAlLEISSIMPLE BUTTHISTIMEWELLUSEA&ILE
OBJECTTOREPRESENTTHElLE A&ILE2EADERTODOTHEACTUALREADING $ILOHZLWKWZROLQHVRIWH[W
ANDA"UFFERED2EADERTOMAKETHEREADINGMOREEFlCIENT
4HEREADHAPPENSBYREADINGLINESINAWHILELOOP ENDINGTHELOOP ?PI\¼['
WHENTHERESULTOFAREAD,INE ISNULL4
HATSTHEMOSTCOMMON ?PI\¼[
STYLEFORREADINGDATAPRETTYMUCHANYTHINGTHATSNOTA3ERIALIZED
OBJECT READSTUFFINAWHILELOOPACTUALLYAWHILELOOPTEST
TERMINATINGWHENTHERESNOTHINGLEFTTOREADWHICHWEKNOW
BECAUSETHERESULTOFWHATEVERREADMETHODWEREUSINGISNULL 

WWKHLP SRUW
'RQ·WIRUJH
0\7H[WW[W
LPSRUWMDYDLR 

FODVV5HDG$)LOH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$)LOH5HDGHULVDFRQQHFWLRQ
FKDUDFWHUVWKDWFRQQHFWVW IRU VWUHDP
WU\^ RDWH[WILOH
)LOHP\)LOH QHZ)LOH ³0\7H[WW[W´ 
)LOH5HDGHU¿OH5HDGHU QHZ)LOH5HDGHU P\)LOH 

%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU ¿OH5HDGHU 


D
 WK H  ) LO H 5HDGHUWPRRUH
&KDLQ HG5HDGHUIRU JREDFN
DULDEOHWRKROG %XIIHUQWUHDGLQJ,W·OO ZKHQ
0DNHD6WULWQJKHYOLQHLVUHDG
HDFKOLQHDV HIILFLH ILOHWRUHDGRQO\HFDXVHWKH
WRWKH IHULVHPSW\ E WKLQJLQLW 
WKHEXIPKDVUHDGHYHU\
6WULQJOLQH QXOO SURJUD
ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
6\VWHPRXWSULQWOQ OLQH 
` 7KLVVD\V´5HDGDOL
UHDGHUFORVH  6WULQJYDULDEOH¶OL QHRIWH[WDQGDVVLJQLWWR WKH
EHFDXVHWKHUH $QH6·:KLOHWKDWYDULDEOHLVQRWQXOO
`FDWFK ([FHSWLRQH[ ^ OLQHWKDWZDVM: VRPHWKLQJWRUHDG
XVWUHDGµ SULQWRXWWKH

H[SULQW6WDFN7UDFH  2UDQRWKHUZ
` WRUHDGUHDGD\WKRHPIVD\LQJLW´:KLOHWKHUHDUHVWLOO
` DQGSULQWWKHPµ OLQHV
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

9]Qb+IZL8TIaMZKWLMW]\TQVM
PUBLICCLASS1UIZ#ARD0LAYER[

PUBLICVOIDGO [
BUILDANDDISPLAYGUI
]

CLASS.EXT#ARD,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
IFTHISISAQUESTION SHOWTHEANSWER OTHERWISESHOWNEXTQUESTION
SETAmAGFORWHETHERWEREVIEWINGAQUESTIONORANSWER
]
]

CLASS/PEN-ENU,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
BRINGUPAlLEDIALOGBOX
LETTHEUSERNAVIGATETOANDCHOOSEACARDSETTOOPEN
]
]

PRIVATEVOIDLOAD&ILE&ILElLE [
MUSTBUILDAN!RRAY,ISTOFCARDS BYREADINGTHEMFROMATEXTlLE
CALLEDFROMTHE/PEN-ENU,ISTENEREVENTHANDLER READSTHElLEONELINEATATIME
ANDTELLSTHEMAKE#ARD METHODTOMAKEANEWCARDOUTOFTHELINE
ONELINEINTHElLEHOLDSBOTHTHEQUESTIONANDANSWER SEPARATEDBYAhv
]

PRIVATEVOIDMAKE#ARD3TRINGLINE4O0ARSE [
CALLEDBYTHELOAD&ILEMETHOD TAKESALINEFROMTHETEXTlLE
ANDPARSESINTOTWOPIECESˆQUESTIONANDANSWERˆANDCREATESANEW1UIZ#ARD
ANDADDSITTOTHE!RRAY,ISTCALLED#ARD,IST
]
]

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
4XL]&DUG3OD\HUFRGH

LPSRUWMDYDXWLO 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDLR 
SXEOLFFODVV4XL]&DUG3OD\HU^
SULYDWH-7H[W$UHDGLVSOD\
SULYDWH-7H[W$UHDDQVZHU
SULYDWH$UUD\/LVW4XL]&DUG!FDUG/LVW
SULYDWH4XL]&DUGFXUUHQW&DUG
SULYDWHLQWFXUUHQW&DUG,QGH[ -XVW*8,FRGHRQ
SULYDWH-)UDPHIUDPH QRWKLQJVSHFLDO WKLVSDJH
SULYDWH-%XWWRQQH[W%XWWRQ
SULYDWHERROHDQLV6KRZ$QVZHU

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
4XL]&DUG3OD\HUUHDGHU QHZ4XL]&DUG3OD\HU 
UHDGHUJR 
`

SXEOLFYRLGJR ^

EXLOGJXL
IUDPH QHZ-)UDPH ³4XL]&DUG3OD\HU´ 
-3DQHOPDLQ3DQHO QHZ-3DQHO 
)RQWELJ)RQW QHZ)RQW ³VDQVHULI´)RQW%2/' 

GLVSOD\ QHZ-7H[W$UHD  
GLVSOD\VHW)RQW ELJ)RQW 

GLVSOD\VHW/LQH:UDS WUXH 
GLVSOD\VHW(GLWDEOH IDOVH 

-6FUROO3DQHT6FUROOHU QHZ-6FUROO3DQH GLVSOD\ 
T6FUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
T6FUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 
QH[W%XWWRQ QHZ-%XWWRQ ³6KRZ4XHVWLRQ´ 
PDLQ3DQHODGG T6FUROOHU 
PDLQ3DQHODGG QH[W%XWWRQ 
QH[W%XWWRQDGG$FWLRQ/LVWHQHU QHZ1H[W&DUG/LVWHQHU 
-0HQX%DUPHQX%DU QHZ-0HQX%DU 
-0HQX¿OH0HQX QHZ-0HQX ³)LOH´ 
-0HQX,WHPORDG0HQX,WHP QHZ-0HQX,WHP ³/RDGFDUGVHW´ 
ORDG0HQX,WHPDGG$FWLRQ/LVWHQHU QHZ2SHQ0HQX/LVWHQHU 
¿OH0HQXDGG ORDG0HQX,WHP 
PHQX%DUDGG ¿OH0HQX 
IUDPHVHW-0HQX%DU PHQX%DU 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

`FORVHJR



 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

SXEOLFFODVV1H[W&DUG/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
LI LV6KRZ$QVZHU ^
VKRZWKHDQVZHUEHFDXVHWKH\¶YHVHHQWKHTXHVWLRQ
GLVSOD\VHW7H[W FXUUHQW&DUGJHW$QVZHU 
QH[W%XWWRQVHW7H[W ³1H[W&DUG´ 
LV6KRZ$QVZHU IDOVH &KHFNWKHLV6KRZ
`HOVH^
VHHLIWKH\·UH $QVZHUERR DQI
VKRZWKHQH[WTXHVWLRQ
RUDQDQVZHUF XUUHQWO\YLHZLQOHJ ODJWR
LI FXUUHQW&DUG,QGH[FDUG/LVWVL]H ^ DTX HVWL
 WKLQJGHSHQGLQJRQ GRWKHDSSURSULDWH RQ
DQ G
VKRZ1H[W&DUG  WKHDQVZHU

`HOVH^
WKHUHDUHQRPRUHFDUGV
GLVSOD\VHW7H[W ³7KDWZDVODVWFDUG´ 
QH[W%XWWRQVHW(QDEOHG IDOVH 
`
`
`
`

SXEOLFFODVV2SHQ0HQX/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
-)LOH&KRRVHU¿OH2SHQ QHZ-)LOH&KRRVHU 
¿OH2SHQVKRZ2SHQ'LDORJ IUDPH 
ORDG)LOH ¿OH2SHQJHW6HOHFWHG)LOH  ER KHP
[DQGOHWWHQ
I LOH G LD OR J 
`
` %ULQJXSWKH
WR DQG F KR RV HWKHILOHWRRS
JDWH QDYL
SULYDWHYRLGORDG)LOH )LOH¿OH ^
FDUG/LVW QHZ$UUD\/LVW4XL]&DUG! 
WU\^
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
6WULQJOLQH QXOO HUFKDLQHG
ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
0 DNH D%XIIHUHG5HUHDGJLYLQJWKH
PDNH&DUG OLQH 
WRDQHZ)WLOH5HDG EMHFWWKHXVHU
` )LOHR
UHDGHUFORVH  )LOH5HDGHU KH RSHQILOHGLDORJ
FKRVHIURPWKH 
`FDWFK ([FHSWLRQH[ ^
D O LQHDW D WLPHSDVVLQJWGKH

6\VWHPRXWSULQWOQ ³FRXOGQ¶WUHDGWKHFDUG¿OH´  5HDG KR
DNH&DUG PLHWWLQWRD
H[SULQW6WDFN7UDFH  OLQHWRWKHP D QG WXU QV
`
WKDWSDUVHVDULWGDQGDGGVLWWRWKH
QRZWLPHWRVWDUWE\VKRZLQJWKH¿UVWFDUG UHDO4XL]&
VKRZ1H[W&DUG  $UUD\/LVW
`
SULYDWHYRLGPDNH&DUG 6WULQJOLQH7R3DUVH ^ (DFKOLQHRIWH[WFRUUHVSRQGVWRRXW DVLQJOH
6WULQJ>@UHVXOW OLQH7R3DUVHVSOLW ³´  IODVKFDUGEXWZHKD YHW RSD UVH WKH
4XL]&DUGFDUG QHZ4XL]&DUG UHVXOW>@UHVXOW>@ 
TXHV WLRQ DQG DQV ZHU DVVH SDUD WHS LHFHV:H
FDUG/LVWDGG FDUG 
XVHWKH6WULQJVSOLW PH WKRG WR EUHD NWKH
6\VWHPRXWSULQWOQ ³PDGHDFDUG´  VWLR Q
` OLQH LQWR WZR WRN HQV RQH IRU WKH TXH
 DQGRQHIRUWKHDQVZ HU  :H·OOORR NDW WKH 
SULYDWHYRLGVKRZ1H[W&DUG ^
VSOLW P HWKR GRQ WKH QH[ WSD JH
FXUUHQW&DUG FDUG/LVWJHW FXUUHQW&DUG,QGH[ 
FXUUHQW&DUG,QGH[
GLVSOD\VHW7H[W FXUUHQW&DUGJHW4XHVWLRQ 
QH[W%XWWRQVHW7H[W ³6KRZ$QVZHU´ 
LV6KRZ$QVZHU WUXH
`
`FORVHFODVV
 \RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDUVLQJ6WULQJVZLWKVSOLW

8IZ[QVO_Q\P;\ZQVO[XTQ\
6DYHGLQDTXHVWLRQÀOHOLNHWKLV
,PDJLQH\RXKDYHDÁDVKFDUGOLNHWKLV

TXHVWLRQ ?PI\Q[JT]MaMTTW_'OZMMV
?PI\Q[ZMLJT]M'X]ZXTM
TW_'
?PI\Q[JT]MaMT
DQVZHU
OZMMV

+RZGR\RXVHSDUDWHWKHTXHVWLRQDQGDQVZHU"
:KHQ\RXUHDGWKHÀOHWKHTXHVWLRQDQGDQVZHUDUHVPRRVKHG
WRJHWKHULQRQHOLQHVHSDUDWHGE\DIRUZDUGVODVK´µ EHFDXVH
WKDW·VKRZZHZURWHWKHÀOHLQWKH4XL]&DUG%XLOGHUFRGH 

6WULQJVSOLW OHWV\RXEUHDND6WULQJLQWRSLHFHV
7KHVSOLW PHWKRGVD\V´JLYHPHDVHSDUDWRUDQG,·OOEUHDNRXWDOO
WKHSLHFHVRIWKLV6WULQJIRU\RXDQGSXWWKHPLQD6WULQJDUUD\µ

WRNHQ VHSDUDWRU WRNHQ


\HUDSSWKLV
,QWKH4XL]&DUHG3OLQODHORRNVOLNH
LVZKDWDVLQJO LQIURPWKHILOH
6WULQJWR7HVW ³:KDWLVEOXH\HOORZ"JUHHQ´
ZKHQLW·VUHDG
6WULQJ>@UHVXOW WR7HVWVSOLW ³´  7KHVSOLW PHWKRGWDNHVWKH´
EUHDNDSDUWWKH6WULQJLQWR LQµDQGXVHVLWWR
IRU 6WULQJWRNHQUHVXOW ^ SLHFHV 1RWHVSOLW LV)$5PRUHWKLVFDVH WZR
ZKDWZH·UHXVLQJLWIRUK SRZHUIXOWKDQ
6\VWHPRXWSULQWOQ WRNHQ  HUH ,W FD
FRPSOH[SDUVLQJZLWKILOWHUVZ QGRH[WUHPHO\
/RRSWKURXJKWKH LOGFDUGVHWF
` DU UD
SLHFH ,QWKLVH[ \ DQ GSULQWHDFKWRNHQ
WRNHQV´:KDWLV DPSOHWKHUHDUH 
EOXH\HOORZ"µDRQO\WZR
QG´JUHHQµ
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: /+ )LOOKINTHE!0)ANDTHEREAREABOUTlVE

0DNH LW 6WLFN
MILLIONCLASSESINTHEJAVAIOPACKAGE(OWTHEHECKDO
YOUKNOWWHICHONESTOUSE

IOLETSARENEXT
A: 4HE)/!0)USESTHEMODULAR@CHAININGCONCEPTSO
2OSESAREFIRST V
2EADERSAND7
RITERSAREONLYF
ORTEXT
THATYOUCANHOOKTOGETHERCONNECTIONSTREAMSANDCHAIN
STREAMSALSOCALLED@FILTERSTREAMS INAWIDERANGEOF
COMBINATIONSTOGETJUSTABOUTANYTHINGYOUCOULDWANT
4HECHAINSDONTHAVETOSTOPATTWOLEVELSYOUCANHOOK
MULTIPLECHAINSTREAMSTOONEANOTHERTOGETJUSTTHERIGHT
AMOUNTOFPROCESSINGYOUNEED
-OSTOFTHETIME THOUGH YOULLUSETHESAME
SMALLHANDFULOFCLASSES)FYOUREWRITINGTEXTFILES
"UFFERED2EADERAND"UFFERED7RITERCHAINEDTO&ILE2EADER :MDD=LHGAFLK
AND&ILE7RITER AREPROBABLYALLYOUNEED)FYOUREWRITING
SERIALIZEDOBJECTS YOUCANUSE/BJECT/UTPUT3TREAMAND ƒ 7RZULWHDWH[WILOHVWDUWZLWKD)LOH:ULWHU
/BJECT)NPUT3TREAMCHAINEDTO&ILE)NPUT3TREAMAND FRQQHFWLRQVWUHDP
&ILE/UTPUT3TREAM  ƒ &KDLQWKH)LOH:ULWHUWRD%XIIHUHG:ULWHUIRU
)NOTHERWORDS OFWHATYOUMIGHTTYPICALLYDOWITH HIILFLHQF\
*AVA)/CANUSEWHATWEVEALREADYCOVERED ƒ $)LOHREMHFWUHSUHVHQWVDILOHDWDSDUWLFXODU
SDWKEXWGRHVQRWUHSUHVHQWWKHDFWXDO
Q: 7HATABOUTTHENEW)/NIOCLASSESADDEDIN
ƒ
FRQWHQWVRIWKHILOH
:LWKD)LOHREMHFW\RXFDQFUHDWHWUDYHUVH

A: 4HEJAVANIOCLASSESBRINGABIGPERFORMANCE ƒ
DQGGHOHWHGLUHFWRULHV
0RVWVWUHDPVWKDWFDQXVHD6WULQJILOHQDPH
IMPROVEMENTANDTAKEGREATERADVANTAGEOFNATIVE FDQXVHD)LOHREMHFWDVZHOODQGD)LOHREMHFW
CAPABILITIESOFTHEMACHINEYOURPROGRAMISRUNNING
FDQEHVDIHUWRXVH
ON/NEOFTHEKEYNEWFEATURESOFNIOISTHATYOUHAVE
DIRECTCONTROLOFBUFFERS!NOTHERNEWFEATUREISNON ƒ 7RUHDGDWH[WILOHVWDUWZLWKD)LOH5HDGHU
BLOCKING)/ WHICHMEANSYOUR)/CODEDOESNTJUSTSIT FRQQHFWLRQVWUHDP
THERE WAITING IFTHERESNOTHINGTOREADORWRITE3OME ƒ &KDLQWKH)LOH5HDGHUWRD%XIIHUHG5HDGHUIRU
OFTHEEXISTINGCLASSESINCLUDING&ILE)NPUT3TREAMAND HIILFLHQF\
&ILE/UTPUT3TREAM TAKEADVANTAGEOFSOMEOFTHENEW
FEATURES UNDERTHECOVERS4HENIOCLASSESAREMORE ƒ 7RSDUVHDWH[WILOH\RXQHHGWREHVXUHWKH
COMPLICATEDTOUSE HOWEVER SOUNLESSYOUREALLYNEEDTHE ILOHLVZULWWHQZLWKVRPHZD\WRUHFRJQL]HWKH
NEWFEATURES YOUMIGHTWANTTOSTICKWITHTHESIMPLER GLIIHUHQWHOHPHQWV$FRPPRQDSSURDFKLVWR
VERSIONSWEVEUSEDHERE0LUS IFYOURENOTCAREFUL NIOCAN XVHVRPHNLQGRIFKDUDFWHUWRVHSDUDWHWKH
LEADTOAPERFORMANCELOSS.ON NIO)/ISPROBABLYRIGHT LQGLYLGXDOSLHFHV
FOROFWHATYOULLNORMALLYDO ESPECIALLYIFYOUREJUST
GETTINGSTARTEDIN*AVA
ƒ 8VHWKH6WULQJVSOLW PHWKRGWRVSOLWD6WULQJ
XSLQWRLQGLYLGXDOWRNHQV$6WULQJZLWKRQH
"UTYOUCANEASEYOURWAYINTOTHENIOCLASSES BYUSING VHSDUDWRUZLOOKDYHWZRWRNHQVRQHRQHDFK
&ILE)NPUT3TREAMANDACCESSINGITSCHANNELTHROUGHTHE VLGHRIWKHVHSDUDWRU7KHVHSDUDWRUGRHVQ·W
GET#HANNEL METHODADDEDTO&ILE)NPUT3TREAMASOF
FRXQWDVDWRNHQ
VERSION 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VDYLQJREMHFWV

>MZ[QWV1,")*QO;MZQITQbI\QWV/W\KPI
.OWYOUVESEENTHAT)/IN*AVAISACTUALLYPRETTYSIMPLE ESPECIALLYIF  <RXZULWHD'RJFODVV
YOUSTICKTOTHEMOSTCOMMONCONNECTIONCHAINCOMBINATIONS"UT

THERESONEISSUEYOUMIGHTREALLYCAREABOUT 
Q ,'
FODVVYHUVLR





9HUVLRQ&RQWUROLVFUXFLDO 
 
)FYOUSERIALIZEANOBJECT YOUMUSTHAVETHECLASSINORDERTO 'RJFODVV
DESERIALIZEANDUSETHEOBJECT/+ THATSOBVIOUS"UTWHATMIGHT
BELESSOBVIOUSISWHATHAPPENSIFYOUCHANGETHECLASSINTHE
MEANTIME9IKES)MAGINETRYINGTOBRINGBACKA$OGOBJECTWHEN  <RXVHULDOL]HD'RJREMHFW
ONEOFITSINSTANCEVARIABLESNON TRANSIENT HASCHANGEDFROMA XVLQJWKDWFODVV
DOUBLETOA3TRING4HATVIOLATES*AVASTYPE SAFESENSIBILITIESINA"IG
7AY"UTTHATSNOTTHEONLYCHANGETHATMIGHTHURTCOMPATIBILITY 'RJREMHFW 

4HINKABOUTTHEFOLLOWING
'RJREMHFW
2EMHFWLVZLWK
VWDPSHG 
&KDQJHVWRDFODVVWKDWFDQKXUWGHVHULDOL]DWLRQ YHUVLRQ
$ELETINGANINSTANCEVARIABLE
#HANGINGTHEDECLAREDTYPEOFANINSTANCEVARIABLE  <RXFKDQJHWKH'RJFODVV
#HANGINGANON TRANSIENTINSTANCEVARIABLETOTRANSIENT 

FODVVYHUVLRQ,'



-OVINGACLASSUPORDOWNTHEINHERITANCEHIERARCHY 




#HANGINGACLASSANYWHEREINTHEOBJECTGRAPH FROM3ERIALIZABLE 

TONOT3ERIALIZABLEBYREMOVING@IMPLEMENTS3ERIALIZABLEFROMA 'RJFODVV
CLASSDECLARATION
#HANGINGANINSTANCEVARIABLETOSTATIC
 <RXGHVHULDOL]HD'RJREMHFW
XVLQJWKHFKDQJHGFODVV
&KDQJHVWRDFODVVWKDWDUHXVXDOO\2. 

 
!DDINGNEWINSTANCEVARIABLESTOTHECLASSEXISTINGOBJECTSWILL 'RJREMHFW


DESERIALIZEWITHDEFAULTVALUESFORTHEINSTANCEVARIABLESTHEYDIDNT 


2EMHFWLV

HAVEWHENTHEYWERESERIALIZED
!DDINGCLASSESTOTHEINHERITANCETREE VWDPSHGZLWK 'RJFODVV
YHUVLRQ QLV
2EMOVINGCLASSESFROMTHEINHERITANCETREE FODVVYHUVLR
 
#HANGINGTHEACCESSLEVELOFANINSTANCEVARIABLEHASNOAFFECTON
THEABILITYOFDESERIALIZATIONTOASSIGNAVALUETOTHEVARIABLE
#HANGINGANINSTANCEVARIABLEFROMTRANSIENTTONON TRANSIENT
 6HUDLOL]DWLRQIDLOV
PREVIOUSLY SERIALIZEDOBJECTSWILLSIMPLYHAVEADEFAULTVALUEFORTHE
PREVIOUSLY TRANSIENTVARIABLES 7KH-90VD\V´\RXFDQ·W
WHDFKDQROG'RJQHZFRGHµ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

=[QVO\PM[MZQIT>MZ[QWV=1,
%ACHTIMEANOBJECTISSERIALIZED THEOBJECTINCLUDING
EVERYOBJECTINITSGRAPH IS@STAMPEDWITHAVERSION
)$NUMBERFORTHEOBJECTSCLASS4HE)$ISCALLED
THESERIAL6ERSION5)$ ANDITSCOMPUTEDBASEDON
INFORMATIONABOUTTHECLASSSTRUCTURE!SANOBJECTIS :KHQ\RXWKLQN\RXUFODVV
BEINGDESERIALIZED IFTHECLASSHASCHANGEDSINCETHE PLJKWHYROYHDIWHUVRPHRQHKDV
OBJECTWASSERIALIZED THECLASSCOULDHAVEADIFFERENT VHULDOL]HGREMHFWVIURPLW
SERIAL6ERSION5)$ ANDDESERIALIZATIONWILLFAIL"UTYOU
CANCONTROLTHIS
 8VHWKHVHULDOYHUFRPPDQGOLQHWRRO
WRJHWWKHYHUVLRQ,'IRU\RXUFODVV
,I\RXWKLQNWKHUHLV$1<SRVVLELOLW\WKDW
\RXUFODVVPLJKWHYROYHSXWDVHULDOYHUVLRQ )LOH(GLW:LQGRZ+HOSVHULDO.LOOHU
,'LQ\RXUFODVV
VHULDOYHU'RJ
7HEN*AVATRIESTODESERIALIZEANOBJECT ITCOMPARES
'RJVWDWLFILQDOORQJ
THESERIALIZEDOBJECTSSERIAL6ERSION5)$WITHTHATOFTHE
VHULDO9HUVLRQ8,' 
CLASSTHE*6-ISUSINGFORDESERIALIZINGTHEOBJECT&OR
/
EXAMPLE IFA$OGINSTANCEWASSERIALIZEDWITHAN)$OF
SAYINREALITYASERIAL6ERSION5)$ISMUCHLONGER
WHENTHE*6-DESERIALIZESTHE$OGOBJECTITWILLlRST
COMPARETHE$OGOBJECTSERIAL6ERSION5)$WITHTHE
$OGCLASSSERIAL6ERSION5)$)FTHETWONUMBERSDONT
MATCH THE*6-ASSUMESTHECLASSISNOTCOMPATIBLE  3DVWHWKHRXWSXWLQWR\RXUFODVV
WITHTHEPREVIOUSLY SERIALIZEDOBJECT ANDYOULLGETAN
EXCEPTIONDURINGDESERIALIZATION SXEOLFFODVV'RJ^

3O THESOLUTIONISTOPUTASERIAL6ERSION5)$ VWDWLF¿QDOORQJVHULDO9HUVLRQ8,'
INYOURCLASS ANDTHENASTHECLASSEVOLVES THE /
SERIAL6ERSION5)$WILLREMAINTHESAMEANDTHE*6-
WILLSAY h/+ COOL THECLASSISCOMPATIBLEWITHTHIS SULYDWH6WULQJQDPH
SERIALIZEDOBJECTvEVENTHOUGHTHECLASSHASACTUALLY SULYDWHLQWVL]H
CHANGED
PHWKRGFRGHKHUH
4HISWORKSONLYIFYOURECAREFULWITHYOURCLASS `
CHANGES)NOTHERWORDS YOUARETAKINGRESPONSIBILITY
FORANYISSUESTHATCOMEUPWHENANOLDEROBJECTIS
BROUGHTBACKTOLIFEWITHANEWERCLASS
 %HVXUHWKDWZKHQ\RXPDNHFKDQJHVWR
4OGETASERIAL6ERSION5)$FORACLASS USETHESERIALVER WKHFODVV\RXWDNHUHVSRQVLELOLW\LQ\RXU
TOOLTHATSHIPSWITHYOUR*AVADEVELOPMENTKIT FRGHIRUWKHFRQVHTXHQFHVRIWKHFKDQJHV
\RXPDGHWRWKHFODVV)RUH[DPSOHEH
)LOH(GLW:LQGRZ+HOSVHULDO.LOOHU VXUHWKDW\RXUQHZ'RJFODVVFDQGHDOZLWK
DQROG'RJEHLQJGHVHULDOL]HGZLWKGHIDXOW
VHULDOYHU'RJ
YDOXHVIRULQVWDQFHYDULDEOHVDGGHGWRWKH
'RJVWDWLFILQDOORQJ FODVVDIWHUWKH'RJZDVVHULDOL]HG
VHULDO9HUVLRQ8,' 
/

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&RGH.LWFKHQ

Code Kitchen

Licensed by
Eduard Simons
µ
FN´VHULDOL]H,W
:KHQ\RXHQFWOLSDWWHUQZLOO
WKHFXUU 
EHVDYHG

104038
´UHVWRUHµORDGVWKHV
SDWWHUQEDFNLQ DYHG
WKHFKHFNER[HV DQGUHVHWV

LetÕs make the BeatBox save and


restore our favorite pattern

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

;I^QVOI*MI\*W`XI\\MZV
2EMEMBER INTHE"EAT"OX ADRUMPATTERNISNOTHINGMORETHANABUNCHOF
CHECKBOXES7HENITSTIMETOPLAYTHESEQUENCE THECODEWALKSTHROUGHTHE
CHECKBOXESTOlGUREOUTWHICHDRUMSSOUNDSAREPLAYINGATEACHOFTHE
BEATS3OTOSAVEAPATTERN ALLWENEEDTODOISSAVETHESTATEOFTHECHECKBOXES
7ECANMAKEASIMPLEBOOLEANARRAY HOLDINGTHESTATEOFEACHOFTHE
CHECKBOXES!NARRAYOBJECTISSERIALIZABLEASLONGASTHETHINGSINTHEARRAYARE
SERIALIZABLE SOWELLHAVENOTROUBLESAVINGANARRAYOFBOOLEANS
4OLOADAPATTERNBACKIN WEREADTHESINGLEBOOLEANARRAYOBJECTDESERIALIZE
IT ANDRESTORETHECHECKBOXES-OSTOFTHECODEYOUVEALREADYSEEN INTHE
#ODE+ITCHENWHEREWEBUILTTHE"EAT"OX'5) SOINTHISCHAPTER WELOOKAT
ONLYTHESAVEANDRESTORECODE
4HIS#ODE+ITCHENGETSUSREADYFORTHENEXTCHAPTER WHEREINSTEADOFWRITING
THEPATTERNTOAlLE WESENDITOVERTHENETWORKTOTHESERVER!NDINSTEADOF
LOADINGAPATTERNINFROMAlLE WEGETPATTERNSFROMTHESERVER EACHTIMEA
PARTICIPANTSENDSONETOTHESERVER

6HULDOL]LQJDSDWWHUQ

7KLVLVDQLQQHUFODVVLQVLGH
WKH% HDW %R [FRG H
SXEOLFFODVV0\6HQG/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
,WDOOKDSSHQVZKHQWKHX VHUFOLFNVWKH
HV
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^ EXWWRQDQGWKH$FWLRQ(YHQWILU
ERROHDQ>@FKHFNER[6WDWH QHZERROHDQ>@ 0DNHDERROHDQ UUD\
VWDWHRIHDFKFKDHF WRKROGWKH
NER[
IRU LQWL LL ^

-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L  :DONWK


URXJK
LI FKHFNLV6HOHFWHG ^ $UUD\/LVWRIWKFKHHFFKNEHFNER[/LVW
FKHFNER[6WDWH>L@ WUXH JHWWKHVWDWHRIHDF R[HV DQG
` DGGLWWRWKHER KRQHDQG
` ROHDQDUUD\
WU\^
)LOH2XWSXW6WUHDP¿OH6WUHDP QHZ)LOH2XWSXW6WUHDP QHZ)LOH ³&KHFNER[VHU´ 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP ¿OH6WUHDP 
RVZULWH2EMHFW FKHFNER[6WDWH 
7KLVSDUW·VDSLHFHR
ZULWHVHULDOL]HWKHRQIFDNH-XVW
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH  HERROHDQDUUD\
`

`FORVHPHWKRG
`FORVHLQQHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHVHULDOL]LQJWKHSDWWHUQ

:M[\WZQVOI*MI\*W`XI\\MZV
4HISISPRETTYMUCHTHESAVEINREVERSEREADTHEBOOLEANARRAYANDUSEIT
TORESTORETHESTATEOFTHE'5)CHECKBOXES)TALLHAPPENSWHENTHEUSERHITS
THEhRESTOREv@BUTTON

5HVWRULQJDSDWWHUQ
HUFODVV
7KLVLVDQRWKHULQQ[F
LQVLGHWK H% HDW %R ODVV
SXEOLFFODVV0\5HDG,Q/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
ERROHDQ>@FKHFNER[6WDWH QXOO
WU\^
)LOH,QSXW6WUHDP¿OH,Q QHZ)LOH,QSXW6WUHDP QHZ)LOH ³&KHFNER[VHU´ 
2EMHFW,QSXW6WUHDPLV QHZ2EMHFW,QSXW6WUHDP ¿OH,Q 
FKHFNER[6WDWH  ERROHDQ>@ LVUHDG2EMHFW 
5HDGWKHVLQJOHREMHFDVW WLQWKHILOH WKH

ER ROH DQ DUUD\ DQ GF LWEDFNWRD
W 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH ` DUUD\ UHPHPEHUUHDG2EMHFERROHDQ 2EMHFW
UHWXUQVDUHIHUHQFHRIW\SH
IRU LQWL LL ^
-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L 
LI FKHFNER[6WDWH>L@ ^
FKHFNVHW6HOHFWHG WUXH  1RZUHVWRUHWKHVWDW IHDFK
`HOVH^ FKHFNER[HVLQWKH$UUDHR RIWKH
FKHFNVHW6HOHFWHG IDOVH  -&KHFN%R[REMHFWV FKH\/ LVWRIDFWXDO
FNER[/LVW 
`
`

VHTXHQFHUVWRS 
1RZVWRSZKDWHYHULVFXUUHQWO\SOD\LQ J
EXLOG7UDFN$QG6WDUW 
DQGUHEX LOGW KHV HTXH QFH XVLQJ WKH QHZ 
VWDWHRIWKHFKHFNER[HV LQWK H$U UD\/ LVW
`FORVHPHWKRG
`FORVHLQQHUFODVV

6KDUSHQ \RXU SHQFLO


4HISVERSIONHASAHUGELIMITATION7HENYOUHITTHEhSERIALIZE)TvBUTTON IT
SERIALIZESAUTOMATICALLY TOAFILENAMEDh#HECKBOXSERvWHICHGETSCREATEDIFIT
DOESNTEXIST "UTEACHTIMEYOUSAVE YOUOVERWRITETHEPREVIOUSLY SAVEDFILE
)MPROVETHESAVEANDRESTOREFEATURE BYINCORPORATINGA*&ILE#HOOSERSOTHAT
YOUCANNAMEANDSAVEASMANYDIFFERENTPATTERNSASYOULIKE ANDLOADRESTORE
FROMANYOFYOURPREVIOUSLY SAVEDPATTERNFILES

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

6KDUSHQ \RXU SHQFLO &DQWKH\EHVDYHG"


7HICHOFTHESEDOYOUTHINKARE ORSHOULDBE
SERIALIZABLE)FNOT WHYNOT.OTMEANINGFUL
3ECURITYRISK/NLYWORKSFORTHECURRENT
EXECUTIONOFTHE*6--AKEYOURBESTGUESS
WITHOUTLOOKINGITUPINTHE!0)

2EMHFWW\SH 6HULDOL]DEOH"  ,IQRWZK\QRW"

2EMHFW <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

6WULQJ <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

)LOH <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

'DWH <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

2XWSXW6WUHDP <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

-)UDPH <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

,QWHJHU <HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

6\VWHP<HV1R BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

:KDW·V/HJDO" )LOH5HDGHU¿OH5HDGHU QHZ)LOH5HDGHU 


%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU ¿OH5HDGHU 
&LUFOHWKHFRGHIUDJPHQWV
WKDWZRXOGFRPSLOH DVVXPLQJ
)LOH2XWSXW6WUHDPI QHZ)LOH2XWSXW6WUHDP QHZ)LOH ³)RRVHU´ 
WKH\·UHZLWKLQDOHJDOFODVV  2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP I 

%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 


6WULQJOLQH QXOO
ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
PDNH&DUG OLQH 
`


2EMHFW,QSXW6WUHDPLV QHZ2EMHFW,QSXW6WUHDP QHZ)LOH2XWSXW6WUHDP ³*DPHVHU´ 


*DPH&KDUDFWHURQH$JDLQ  *DPH&KDUDFWHU LVUHDG2EMHFW 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH7UXHRU)DOVH

4HISCHAPTEREXPLOREDTHEWONERFULWORLDOF
*AVA)/9OURJOBISTODECIDEWHETHEREACH
OFTHEFOLLOWING)/ RELATEDSTATEMENTSIS
TRUEORFALSE
1dQ^OU_Q
&=[^N X[ /JU\N'
3ERIALIZATIONISAPPROPRIATEWHENSAVINGDATAFORNON *AVAPROGRAMSTOUSE

/BJECTSTATECANBESAVEDONLYBYUSINGSERIALIZATION

/BJECT/UTPUT3TREAMISACLASSUSEDTOSAVESERIALIZEDOBJECTS

#HAINSTREAMSCANBEUSEDONTHEIROWNORWITHCONNECTIONSTREAMS

!SINGLECALLTOWRITE/BJECT CANCAUSEMANYOBJECTSTOBESAVED

!LLCLASSESARESERIALIZABLEBYDEFAULT

4HETRANSIENTMODIlERALLOWSYOUTOMAKEINSTANCEVARIABLESSERIALIZABLE

)FASUPERCLASSISNOTSERIALIZABLETHENTHESUBCLASSCANTBESERIALIZABLE

7HENOBJECTSAREDESERIALIZED THEYAREREADBACKINLAST IN lRSTOUTSEQUENCE

7HENANOBJECTISDESERIALIZED ITSCONSTRUCTORDOESNOTRUN

"OTHSERIALIZATIONANDSAVINGTOATEXTlLECANTHROWEXCEPTIONS

"UFFERED7RITERSCANBECHAINEDTO&ILE7RITERS

&ILEOBJECTSREPRESENTlLES BUTNOTDIRECTORIES

9OUCANTFORCEABUFFERTOSENDITSDATABEFOREITSFULL

"OTHlLEREADERSANDlLEWRITERSCANBEBUFFERED

4HE3TRINGSPLIT METHODINCLUDESSEPARATORSASTOKENSINTHERESULTARRAY

!NYCHANGETOACLASSBREAKSPREVIOUSLYSERIALIZEDOBJECTSOFTHATCLASS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2
Code Magnets
4HISONESTRICKY SOWEPROMOTEDITFROMAN%XERCISETOFULL0UZZLESTATUS
2ECONSTRUCTTHECODESNIPPETSTOMAKEAWORKING*AVAPROGRAMTHAT
PRODUCESTHEOUTPUTLISTEDBELOW9OUMIGHTNOTNEEDALLOFTHEMAGNETS
ANDYOUMAYREUSEAMAGNETMORETHANONCE

^
6HULDOL]DEOH
DPHLPSOHPHQWV
FODVV'XQJHRQ* WU\^

HZ
UHDPIRV Q
)LOH2XWSXW6W VKRUWJHW= ^
VHUµ 
W6WUHDP ´GJ
)LOH2XWSX UHWXUQ]

HSULQW6WDFN7UDFH 
RRVFORVH 

Z
2EMHFW,QSXW6WUHDPRLV QH
LQWJHW; ^
2EMHFW,QSXW6WUHDP ÀV 
UHWXUQ[

6\VWHPRXWSULQWOQ GJHW; GJHW< GJHW= 

)LOH,QSXW6WUHDPÀV QHZ SXEOLFLQW[ 


WUH DP ´GJ VH Uµ  WUDQVLHQWORQJ\ 
)LOH,QSXW6
SULYDWHVKRUW] 

ORQJJHW< ^ FODVV'X
QJHRQ7HV
W^
UHWXUQ\

RLVFORVH 
LPSRUWMDYDLR


IRVZULWH2EMHFW G 
`FDWFK ([FHSWL
RQH ^

G  'XQJHRQ*DPH RLVUHDG2EMHFW 

2EMHFW2XWSXW6WUHDPRRV QHZ
)LOH(GLW:LQGRZ+HOS7RUWXUH
G 
MDYD'XQJHRQ7HVW 2EMHFW2XWSXW6WUHDP IRV  RRVZULWH2EMHFW

 JV ^
PDLQ 6WULQJ>@DU
SXEOLFVWDWLFYRLG

QHZ'XQJHRQ*DPH
'XQJHRQ*DPHG
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

%XERCISE3OLUTIONS

3ERIALIZATIONISAPPROPRIATEWHENSAVINGDATAFORNON *AVAPROGRAMSTOUSE )DOVH

/BJECTSTATECANBESAVEDONLYBYUSINGSERIALIZATION )DOVH

/BJECT/UTPUT3TREAMISACLASSUSEDTOSAVESERIALIZEDOBJECTS 7UXH

#HAINSTREAMSCANBEUSEDONTHEIROWNORWITHCONNECTIONSTREAMS )DOVH

!SINGLECALLTOWRITE/BJECT CANCAUSEMANYOBJECTSTOBESAVED 7UXH

!LLCLASSESARESERIALIZABLEBYDEFAULT )DOVH

4HETRANSIENTMODIlERALLOWSYOUTOMAKEINSTANCEVARIABLESSERIALIZABLE )DOVH

)FASUPERCLASSISNOTSERIALIZABLETHENTHESUBCLASSCANTBESERIALIZABLE )DOVH

7HENOBJECTSAREDESERIALIZEDTHEYAREREADBACKINLAST IN lRSTOUTSEQUENCE )DOVH

7HENANOBJECTISDESERIALIZED ITSCONSTRUCTORDOESNOTRUN 7UXH

"OTHSERIALIZATIONANDSAVINGTOATEXTlLECANTHROWEXCEPTIONS 7UXH

"UFFERED7RITERSCANBECHAINEDTO&ILE7RITERS 7UXH

&ILEOBJECTSREPRESENTlLES BUTNOTDIRECTORIES )DOVH

9OUCANTFORCEABUFFERTOSENDITSDATABEFOREITSFULL )DOVH

"OTHlLEREADERSANDlLEWRITERSCANOPTIONALLYBEBUFFERED 7UXH

4HE3TRINGSPLIT METHODINCLUDESSEPARATORSASTOKENSINTHERESULTARRAY )DOVH

!NYCHANGETOACLASSBREAKSPREVIOUSLYSERIALIZEDOBJECTSOFTHATCLASS )DOVH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHULDOL]DWLRQDQGILOH,2

*RRGWKLQJZH·UH
ÀQDOO\DWWKHDQVZHUV
,ZDVJHWWLQ·NLQGRI
WLUHGRIWKLVFKDSWHU

LPSRUWMDYDLR 

FODVV'XQJHRQ*DPHLPSOHPHQWV6HULDOL]DEOH^
SXEOLFLQW[ 
WUDQVLHQWORQJ\ 
SULYDWHVKRUW] 
LQWJHW; ^
UHWXUQ[
`
ORQJJHW< ^
UHWXUQ\
`
VKRUWJHW= ^
UHWXUQ]
`
`

FODVV'XQJHRQ7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'XQJHRQ*DPHG QHZ'XQJHRQ*DPH 
6\VWHPRXWSULQWOQ GJHW; GJHW< GJHW= 
WU\^
)LOH2XWSXW6WUHDPIRV QHZ)LOH2XWSXW6WUHDP ´GJVHUµ 
2EMHFW2XWSXW6WUHDPRRV QHZ2EMHFW2XWSXW6WUHDP IRV 
RRVZULWH2EMHFW G 
RRVFORVH 
)LOH,QSXW6WUHDPÀV QHZ)LOH,QSXW6WUHDP ´GJVHUµ 
)LOH(GLW:LQGRZ+HOS(VFDSH 2EMHFW,QSXW6WUHDPRLV QHZ2EMHFW,QSXW6WUHDP ÀV 
MDYD'XQJHRQ7HVW G  'XQJHRQ*DPH RLVUHDG2EMHFW 
 RLVFORVH 
 `FDWFK ([FHSWLRQH ^
HSULQW6WDFN7UDFH 
`
6\VWHPRXWSULQWOQ GJHW; GJHW< GJHW= 
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

0DNHD&RQQHFWLRQ

&RQQHFWZLWKWKHRXWVLGHZRUOG9OUR*AVAPROGRAMCANREACHOUTANDTOUCHA
PROGRAMONANOTHERMACHINE)TSEASY!LLTHELOW LEVELNETWORKINGDETAILSARETAKENCAREOFBY
CLASSESINTHEJAVANETLIBRARY/NEOF*AVASBIGBENEFITSISTHATSENDINGANDRECEIVINGDATAOVER
ANETWORKISJUST)/WITHASLIGHTLYDIFFERENTCONNECTIONSTREAMATTHEENDOFTHECHAIN)FYOUVE
GOTA"UFFERED2EADER YOUCANREAD!NDTHE"UFFERED2EADERCOULDCARELESSIFTHEDATACAME
OUTOFAFILEORFLEWDOWNANETHERNETCABLE)NTHISCHAPTERWELLCONNECTTOTHEOUTSIDEWORLD
WITHSOCKETS7ELLMAKECLIENTSOCKETS7ELLMAKESERVERSOCKETS7ELLMAKECLIENTSANDSERVERS
!NDWELLMAKETHEMTALKTOEACHOTHER"EFORETHECHAPTERSDONE YOULLHAVEAFULLY FUNCTIONAL
MULTITHREADEDCHATCLIENT$IDWEJUSTSAYMULTITHREADED9ES NOWYOUWILLLEARNTHESECRETOF
HOWTOTALKTO"OBWHILESIMULTANEOUSLYLISTENINGTO3UZY

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EHDWER[FKDW

:MIT\QUM*MI\*W`+PI\

WU\WKLVRQH
LW·VEHWWHUIRU
VHTXHQFH 

DJHDQG
VN\OHUIDVWD 7\SHDPHHVVVHQG,WEXWWRQ
VHTXHQFH
QGIXQN\JRRG
IRU SUHVVWK RXUPHVVDJH
WRVHQG\XUFXUUHQWEHDW
HYVWHUOLNHV
N\OHUEXWP
RUH $1'\R
SDWWHUQ
2DNHQIROGLVK

VN\OHU\RX:
,6+7RRSHUN
\

9OUREWORKINGONACOMPUTERGAME9OUANDYOURTEAM
AREDOINGTHESOUNDDESIGNFOREACHPARTOFTHEGAME FOLFNLQJRQDUHFHUQLYH GPHVVDJH
5SINGA@CHATVERSIONOFTHE"EAT"OX YOURTEAMCAN ORDGVWKHSDW WH W KDWZHQW
COLLABORATEˆYOUCANSENDABEATPATTERNALONGWITH ZLWKLW
YOURCHATMESSAGE ANDEVERYBODYINTHE"EAT"OX#HAT
GETSIT3OYOUDONTJUSTGETTOREADTHEOTHER
PARTICIPANTSMESSAGES YOUGETTOLOADAND
PLAYABEATPATTERNSIMPLYBYCLICKINGTHE
MESSAGEINTHEINCOMINGMESSAGESAREA
)NTHISCHAPTERWEREGOINGTOLEARNWHATIT
TAKESTOMAKEACHATCLIENTLIKETHIS7ERE
EVENGOINGTOLEARNALITTLEABOUTMAKINGA
CHATSERVER7ELLSAVETHEFULL"EAT"OX#HAT
FORTHE#ODE+ITCHEN BUTINTHISCHAPTERYOU
WILLWRITEA,UDICROUSLY3IMPLE#HAT#LIENTAND
6ERY3IMPLE#HAT3ERVERTHATSENDANDRECEIVE
TEXTMESSAGES

<RXFDQKDYHFRP WH
DXWKHQWLFLQWHOOHFSOH
WX DOO
O\
VWLPXODWLQJFKDW \
FRQYHUVDWLRQV(YH U\
PHVVDJHLVVHQWW
SDUWLFLSDQWV RDOO
6HQG\RXUPHVVDJHWRWKHVHUYHU
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

&KDW3URJUDP2YHUYLHZ :K\DP,
KHUH"'RQ¶W
H[SHFW0(WR
DQVZHUWKDW
WKHUHDUHFXUUHQWO\
7KH&OLHQWKDVWRNQRZ SDUWLFLSDQWVLQ
DERXWWKH6HUYHU WKLVFKDWVHVVLRQ
&OLHQW$&OLHQW%
&OLHQW$
DQG&OLHQW&
7KH6HUYHUKDVWRNQRZ
DERXW$//WKH&OLHQWV :K\DP,
KHUH"'RQ¶W
6HUYHU
H[SHFW0(WR
DQVZHUWKDW

:K\DP,
KHUH"'RQ¶W

Licensed by
H[SHFW0(WR
DQVZHUWKDW
&OLHQW%

&OLHQW&
+RZLW:RUNV

Eduard Simons
&OLHQWFRQQHFWVWRWKHVHUYHU
6HUYHU,·GOLNHWRFRQQHFW
WRWKHFKDWVHUYLFH
:DLWLQJIRU
FOLHQWUHTXHVWV

104038
&OLHQW$
6HUYHU

3DUWLFLSDQWV
 7KHVHUYHUPDNHVD 2.\RX·UHLQ &OLHQW$
FRQQHFWLRQDQGDGGVWKHFOLHQW
&OLHQW$ 6HUYHU
WRWKHOLVWRISDUWLFLSDQWV
6HUYHU,·GOLNHWRFRQQHFW
:K\DP,KHUH"
'RQ¶WH[SHFW WRWKHFKDWVHUYLFH 3DUWLFLSDQWV
0(WRDQVZHU

 $QRWKHUFOLHQWFRQQHFWV WKDW6RZK\DP &OLHQW$


2.\RX·UHLQ &OLHQW%
&OLHQW% 6HUYHU

:K\DP,KHUH"
'RQ¶WH[SHFW
0(WRDQVZHU
´:KRWRRNWKHODYDODPS 0HVVDJH
 &OLHQW$VHQGVDPHVVDJHWR WKDW6RZK\DP

IURPP\GRUPURRP"µ UHFHLYHG
WKHFKDWVHUYLFH
&OLHQW$ 6HUYHU

:K\DP,KHUH" ´:KRWRRNWKHODYDODPS 0HVVDJH


IURPP\GRUPURRP"µ
'RQ¶WH[SHFW

 7KHVHUYHUGLVWULEXWHVWKH
0(WRDQVZHU
WKDW6RZK\DP GLVWULEXWHGWR
:K\DP,KHUH"
DOOSDUWLFLSDQWV
PHVVDJHWR$//SDUWLFLSDQWV 'RQ¶WH[SHFW
0(WRDQVZHU
WKDW6RZK\DP
&OLHQW$
LQFOXGLQJWKHRULJLQDOVHQGHU 6HUYHU
&OLHQW%

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRFNHWFRQQHFWLRQV

+WVVMK\QVO;MVLQVOIVL:MKMQ^QVO
4HETHREETHINGSWEHAVETOLEARNTOGETTHECLIENTWORKINGARE
 (OWTOESTABLISHTHEINITIALCONNECTIONBETWEENTHECLIENTANDSERVER
 (OWTOSENDMESSAGESTOTHESERVER
 (OWTORECEIVEMESSAGESFROMTHESERVER
4HERESALOTOFLOW LEVELSTUFFTHATHASTOHAPPENFORTHESETHINGSTOWORK"UTWERE
LUCKY BECAUSETHE*AVA!0)NETWORKINGPACKAGEJAVANET MAKESITAPIECEOFCAKE
FORPROGRAMMERS9OULLSEEALOTMORE'5)CODETHANNETWORKINGAND)/CODE
!NDTHATSNOTALL
,URKINGWITHINTHESIMPLECHATCLIENTISAPROBLEMWEHAVENTFACEDSOFARINTHIS
BOOKDOINGTWOTHINGSATTHESAMETIME%STABLISHINGACONNECTIONISAONE TIME
OPERATIONTHATEITHERWORKSORFAILS "UTAFTERTHAT ACHATPARTICIPANTWANTSTO
SENDOUTGOINGMESSAGESANDSIMULTANEOUSLYRECEIVEINCOMINGMESSAGESFROMTHEOTHER
PARTICIPANTSVIATHESERVER (MMMMTHATONESGOINGTOTAKEALITTLETHOUGHT BUT
WELLGETTHEREINJUSTAFEWPAGES

 &RQQHFW
&OLHQWFRQQHFWVWRWKHVHUYHUE\
HVWDEOLVKLQJD6RFNHWFRQQHFWLRQ
FKDWVHUYHUDW
0DNHDVRFNHWFRQQHFWLRQWR 
DWSRUW SRUW
&OLHQW$ 6HUYHU

 6HQG
&OLHQWVHQGVDPHVVDJHWRWKHVHUYHU

6HUYHU
ZULWHUSULQWOQ D0HVVDJH PDFKLQHDW

&OLHQW$ 6HUYHU

 5HFHLYH
&OLHQWJHWVDPHVVDJHIURPWKHVHUYHU

6HUYHU
6WULQJV UHDGHUUHDG/LQH PDFKLQHDW

&OLHQW$ 6HUYHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

5ISMIVM\ _WZS;WKSM\KWVVMK\QWV
7RPDNHD6RFNHW
4OCONNECTTOANOTHERMACHINE WENEEDA3OCKETCONNECTION
!3OCKETJAVANET3OCKETCLASS ISANOBJECTTHATREPRESENTS
FRQQHFWLRQ\RXQHHG
ANETWORKCONNECTIONBETWEENTWOMACHINES7HATSA WRNQRZWZRWKLQJV
CONNECTION!RELATIONSHIPBETWEENTWOMACHINES WHERETWO
PIECESOFSOFTWAREKNOWABOUTEACHOTHER-OSTIMPORTANTLY
DERXWWKHVHUYHUZKR
THOSETWOPIECESOFSOFTWAREKNOWHOWTOCOMMUNICATEWITH LWLVDQGZKLFKSRUW
EACHOTHER)NOTHERWORDS HOWTOSENDBITSTOEACHOTHER
7EDONTCAREABOUTTHELOW LEVELDETAILS THANKFULLY BECAUSE
LW·VUXQQLQJRQ
THEYREHANDLEDATAMUCHLOWERPLACEINTHE@NETWORKING
STACK)FYOUDONTKNOWWHATTHE@NETWORKINGSTACKIS DONT
,QRWKHUZRUGV
WORRYABOUTIT)TSJUSTAWAYOFLOOKINGATTHELAYERSTHAT
INFORMATIONBITS MUSTTRAVELTHROUGHTOGETFROMA*AVA ,3DGGUHVVDQG7&3
PROGRAMRUNNINGINA*6-ONSOME/3 TOPHYSICALHARDWARE SRUWQXPEHU
ETHERNETCABLES FOREXAMPLE ANDBACKAGAINONSOMEOTHER
MACHINE3OMEBODYHASTOTAKECAREOFALLTHEDIRTYDETAILS
"UTNOTYOU4HATSOMEBODYISACOMBINATIONOF/3 SPECIlC
SOFTWAREANDTHE*AVANETWORKING!0)4HEPARTTHATYOUHAVE
TOWORRYABOUTISHIGH LEVELˆMAKETHATVERYHIGH LEVELˆAND
SHOCKINGLYSIMPLE2EADY 7&3SRUWQ
XPEHU
6RFNHWFKDW6RFNHW QHZ6RFNHW ³´ 
VHUYHU
,3DGGUHVVIRUWKH
7KHFKDWVHUYHULVDW 7KLVFOLHQWLVDW

QQHFWLRQ
SRUW SRUW
:KHQ,QHHGWRWDONWRKLP 6RFNHWF
WRSRUWRQQHFWLRQ 6RFNHWRFRWKHFOLHQWDW :KHQ,QHHGWRWDONWR
WKDW·VZKHUH,·OOVHQG RQWKHVHUY  EDFNW SRUW
HUDW  KLPWKDW·VZKHUH,·OOVHQG

WKHPHVVDJH WKHPHVVDJH


&OLHQW 6HUYHU

$6RFNHWFRQQHFWLRQPHDQVWKHWZRPDFKLQHVKDYH
LQIRUPDWLRQDERXWHDFKRWKHULQFOXGLQJQHWZRUN
ORFDWLRQ ,3DGGUHVV DQG7&3SRUW
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZHOONQRZQSRUWV

)<+8XWZ\Q[R][\IV]UJMZ
)JQ\V]UJMZ\PI\QLMV\QNQM[ :HOONQRZQ7&3SRUWQXPEHUV
IRUFRPPRQVHUYHUDSSOLFDWLRQV
I[XMKQNQKXZWOZIUWV\PM[MZ ^MZ
7HOQHW 6073
)73
9OURINTERNETWEB(440 SERVERRUNSONPORT4HATSA
STANDARD)FYOUVEGOTA4ELNETSERVER ITSRUNNINGONPORT   
&400/0MAILSERVER3-404HE4IME  7LPH
6HUYHU
SERVERSITSAT4HINKOFPORTNUMBERSASUNIQUEIDENTIlERS
4HEYREPRESENTALOGICALCONNECTIONTOAPARTICULARPIECEOF
SOFTWARERUNNINGONTHESERVER4HATSIT9OUCANTSPINYOUR   
HARDWAREBOXAROUNDANDlNDA4#0PORT&ORONETHING
+7736 +773
YOUHAVEOFTHEMONASERVER  3OTHEY 323
OBVIOUSLYDONTREPRESENTAPLACETOPLUGINPHYSICALDEVICES
4HEYREJUSTANUMBERREPRESENTINGANAPPLICATION $VHUYHUFDQKDYHXSWR
GLIIHUHQWVHUYHUDSSVUXQQLQJ
7ITHOUTPORTNUMBERS THESERVERWOULDHAVENOWAYOF RQHSHUSRUW
KNOWINGWHICHAPPLICATIONACLIENTWANTEDTOCONNECTTO
!NDSINCEEACHAPPLICATIONMIGHTHAVEITSOWNUNIQUE
PROTOCOL THINKOFTHETROUBLEYOUDHAVEWITHOUTTHESE
IDENTIlERS7HATIFYOURWEBBROWSER FOREXAMPLE LANDED
ATTHE0/0MAILSERVERINSTEADOFTHE(440SERVER4HE 7KH7&3SRUW
MAILSERVERWONTKNOWHOWTOPARSEAN(440REQUEST!ND
EVENIFITDID THE0/0SERVERDOESNTKNOWANYTHINGABOUT
QXPEHUVIURPWR
SERVICINGTHE(440REQUEST DUHUHVHUYHGIRUZHOO
7HENYOUWRITEASERVERPROGRAM YOULLINCLUDECODETHAT NQRZQVHUYLFHV'RQ·W
TELLSTHEPROGRAMWHICHPORTNUMBERYOUWANTITTORUNON
YOULLSEEHOWTODOTHISIN*AVAALITTLELATERINTHISCHAPTER  XVHWKHPIRU\RXURZQ
)NTHE#HATPROGRAMWEREWRITINGINTHISCHAPTER WEPICKED
*USTBECAUSEWEWANTEDTO!NDBECAUSEITMETTHE
VHUYHUSURJUDPV
CRITERIATHATITBEANUMBERBETWEENAND7HY
"ECAUSETHROUGHARERESERVEDFORTHEWELL 7KHFKDWVHUYHUZH·UH
KNOWNSERVICESLIKETHEONESWEJUSTTALKEDABOUT ZULWLQJXVHVSRUW
!NDIFYOUREWRITINGSERVICESSERVERPROGRAMS TORUNON
ACOMPANYNETWORK YOUSHOULDCHECKWITHTHESYS ADMINS
:HMXVWSLFNHGD
TOlNDOUTWHICHPORTSAREALREADYTAKEN9OURSYS ADMINS QXPEHUEHWZHHQ
MIGHTTELLYOU FOREXAMPLE THATYOUCANTUSEANYPORT
NUMBERBELOW SAY )NANYCASE IFYOUVALUEYOURLIMBS DQG
YOUWONTASSIGNPORTNUMBERSWITHABANDON5NLESSITS
YOURHOMENETWORK)NWHICHCASEYOUJUSTHAVETOCHECKWITH
YOURKIDS :HOO\RXPLJKWEHDEOHWRXVHRQHRI
WKHVHEXWWKHV\VDGPLQZKHUH\RX
ZRUNZLOOSUREDEO\NLOO\RX

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: (OWDOYOUKNOWTHEPORT 3RUWQXPEHULV
VWRUHLQWKHPDOOWKHVSHFLILF
NUMBEROFTHESERVERPROGRAMYOU ,3DGGUHVVLVWKHPDOO
WANTTOTALKTO

A: 4HATDEPENDSONWHETHERTHE
PROGRAMISONEOFTHEWELL KNOWN
SERVICES)FYOURETRYINGTOCONNECT
TOAWELL KNOWNSERVICE LIKETHEONES
ONTHEOPPOSITEPAGE(440 3-40
&40 ETC YOUCANLOOKTHESEUPON
THEINTERNET'OOGLEh7ELL +NOWN
4#00ORTv /RASKYOURFRIENDLY ,3DGGUHVVLVOLNHVSHFLI\LQJD
NEIGHBORHOODSYS ADMIN
SDUWLFXODUVKRSSLQJPDOOVD\
"UTIFTHEPROGRAMISNTONEOFTHE
´)ODWLURQV0DUNHWSODFHµ
WELL KNOWNSERVICES YOUNEEDTO
FINDOUTFROMWHOEVERISDEPLOYING
THESERVICE!SKHIM/RHER4YPICALLY
IFSOMEONEWRITESANETWORKSERVICE 3RUWQXPEHULVOLNHQDPLQJ
ANDWANTSOTHERSTOWRITECLIENTSFOR
IT THEYLLPUBLISHTHE)0ADDRESS PORT DVSHFLÀFVWRUHVD\
NUMBER ANDPROTOCOLFORTHESERVICE ´%RE·V&'6KRSµ
&OREXAMPLE IFYOUWANTTOWRITEA
CLIENTFORA'/GAMESERVER YOUCAN
VISITONEOFTHE'/SERVERSITESAND
FINDINFORMATIONABOUTHOWTOWRITEA
CLIENTFORTHATPARTICULARSERVER

DLQ EDUEHOO
EU%UDLQ%DUEHOO
Q: #ANTHEREEVERBEMORETHAN /+ YOUGOTA3OCKETCONNECTION4HECLIENTANDTHE
ONEPROGRAMRUNNINGONASINGLE SERVERKNOWTHE)0ADDRESSAND4#0PORTNUMBERFOR
PORT)NOTHERWORDS CANTWO EACHOTHER.OWWHAT(OWDOYOUCOMMUNICATE
APPLICATIONSONTHESAMESERVERHAVE
THESAMEPORTNUMBER
OVERTHATCONNECTION)NOTHERWORDS HOWDOYOU
MOVEBITSFROMONETOTHEOTHER)MAGINETHEKINDSOF

A: .O)FYOUTRYTOBINDAPROGRAM
MESSAGESYOURCHATCLIENTNEEDSTOSENDANDRECEIVE

TOAPORTTHATISALREADYINUSE YOULL
GETA"IND%XCEPTION4OBINDAPROGRAM
+RZGRWKHVHW ZR &KDWVHUYHU
TOAPORTJUSTMEANSSTARTINGUPA
DFWXDOO\W DO N WR 
SERVERAPPLICATIONANDTELLINGITTORUN
WK HU " SURJUDP
ONAPARTICULARPORT!GAIN YOULLLEARN HDFK R
MOREABOUTTHISWHENWEGETTOTHE 6HUYHU
&OLHQW
SERVERPARTOFTHISCHAPTER

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHDGLQJIURPDVRFNHW

<WZMILLI\INZWUI;WKSM\][MI LQSXWDQGRXWSXWVWUHDPV
WRDQGIURPWKH6RFNHW
*]NNMZML:MILMZ FRQQHFWLRQV
4OCOMMUNICATEOVERA3OCKETCONNECTION YOUUSESTREAMS
2EGULAROLD)/STREAMS JUSTLIKEWEUSEDINTHELASTCHAPTER/NE
OFTHECOOLESTFEATURESIN*AVAISTHATMOSTOFYOUR)/WORKWONT
CAREWHATYOURHIGH LEVELCHAINSTREAMISACTUALLYCONNECTEDTO)N
OTHERWORDS YOUCANUSEA"UFFERED2EADERJUSTLIKEYOUDIDWHEN
YOUWEREWRITINGTOAlLE THEDIFFERENCEISTHATTHEUNDERLYING
CONNECTIONSTREAMISCONNECTEDTOA3OCKETRATHERTHANA&ILE
HUZKLFK\RXN QRZ
7KHSRUWQXPE2/ \RX W KD W LV
EHFDXVHZH7 EHU'IRURXUFKDWVHUYHU
 0DNHD6RFNHWFRQQHFWLRQWRWKHVHUYHU WKHSRUWQXP
6RFNHWFKDW6RFNHW QHZ6RFNHW ³´ 

RWKHUZRULGVV WKH,3DGGUHVVIRU´
FDQXVHWKLVZWKHRQHWKLVFRGHLV ORFDOKRVWµLQ
VHUYHURQDV KHQ\RX·UHWHVWLQJ\UXQQLQJRQ<RX
LQJOHVWDQG R
DORQHPDFKXULQFHOLHQWDQG
 0DNHDQ,QSXW6WUHDP5HDGHUFKDLQHGWRWKH6RFNHW·V
ORZOHYHO FRQQHFWLRQ LQSXWVWUHDP
,QSXW6WUHDP5HDGHUVWUHDP QHZ,QSXW6WUHDP5HDGHU FKDW6RFNHWJHW,QSXW6WUHDP 

U LV ZHHQDORZ
D¶EULGJH·EHWQJ
,QSXW6 WU HD P5 HD GH
 OLNHWKHRQHFW FRPL IURPWKNHH $OOZHKDYHWRGRLV$6.
WKHVRFNHWIRU
OHYHOE\WHVWUHDDP JK O HY
P OL
HOFKDUD HUVRWUXUHDWRSRI DQLQSXWVWUHDP,W·V DO RZ
6RFNHW  DQ G KL DV VWUHDPEXWZH·UHM JR OHYHOFRQQHFWLRQ
WKH%XIIHUHG5DP HDGHUZH·UHDIWHU VRPHWKLQJPRUHWH[XVW QQDFKDLQLWWR
WIULHQGO\
WKHFKDLQVWUH 

&KDLQWKH%XIHD IHUHG5HDGHUWRVWFKKHDLQHGWRWKHORZ
U ZKLF K ZD
,QSXW6WUHDP5LRQGH KH6RFNHW
 0DNHD%XIIHUHG5HDGHUDQGUHDG
YH OF RQQH FW VW UHDPZHJRWIURPW
OH
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU VWUHDP 
6WULQJPHVVDJH UHDGHUUHDG/LQH 

VRXUFH
GHVWLQDWLR
Q EXIIHUHGFKDUDFWHUV FRQYHUWHGWRFKDUDFWHUV E\WHVIURPVHUYHU
'DWDRQWKH
EXIIHUHG FKDUDFWHUV  VHUYHU
FKDUDFWHUV FKDLQHGWR FKDLQHGWR
%XIIHUHG5HDGHU ,QSXW6WUHDP5HDGHU 6RFNHW·VLQSXWVWUHDP
&OLHQW ZHGRQ·WQHHGWRNQRZ
WKHDFWXDOFODVV 6HUYHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

<W_ZQ\MLI\I\WI;WKSM\][MI
8ZQV\?ZQ\MZ
7EDIDNTUSE0RINT7RITERINTHELASTCHAPTER WEUSED"UFFERED7RITER7EHAVE
ACHOICEHERE BUTWHENYOUREWRITINGONE3TRINGATATIME 0RINT7RITERISTHE
STANDARDCHOICE!NDYOULLRECOGNIZETHETWOKEYMETHODSIN0RINT7RITER
PRINT ANDPRINTLN *USTLIKEGOODOL3YSTEMOUT
WKH
WKLVSDUW·VWK HVDPHDVLWZWDVRRWKQH
Z UL WH
RSSRVLWHSDJHLOOKDYWRHWRFRQQHFWWRLW
VHUY HU Z HVW
 0DNHD6RFNHWFRQQHFWLRQWRWKHVHUYHU
6RFNHWFKDW6RFNHW QHZ6RFNHW ³´ 

 0DNHD3ULQW:ULWHUFKDLQHGWRWKH6RFNHW·VORZOHYHO
FRQQHFWLRQ RXWSXWVWUHDP
3ULQW:ULWHUZULWHU QHZ3ULQW:ULWHU FKDW6RFNHWJHW2XWSXW6WUHDP 

ZHHQ
VRZQEULGJHEHWIU 7KH6RFNHWJLYHVXVDORZ
UL WH U DFWV D V LW RPWKH
3ULQW:
GD WD D QG W KHE\WHVLWJHWVFKDLQLQJD VWUHDPDQGZHFKDLQLWWR OHYHOFRQQHFWLRQ
DF WH U WKH3ULQW:ULWHUE\
FKDU XWSXWVWUHDP%\VWUHDPZH JLYLQJLWWRWKH3ULQ
6RFNHW·VORZOHYHWOR 6RFNHW·VRXWSXW
W:ULWHUFRQVWUXFWR U
3ULQW:ULWHUWR VKHWRWKH6RFNHWFRQQHFWLRQ
FDQZULWH6WULQJ

 :ULWH SULQW VRPHWKLQJ


HQGRIZKDWLWVHQ
GV
QHZ OLQH D W WK H
ZULWHUSULQWOQ ³PHVVDJHWRVHQG´  SULQWOQ DGGVD
WKHQHZOLQH
ZULWHUSULQW ³DQRWKHUPHVVDJH´  SULQW GRHVQ·WDGG

GHVWLQDWLRQ
VRXUFH
FKDUDFWHUV E\WHVWRVHUYHU
&KDWVHUYHU
´PHVVDJHµ  SURJUDP
FKDLQHGWR
3ULQW:ULWHU 6RFNHW·VRXWSXW
&OLHQW VWUHDP ZHGRQ·WQHHG 6HUYHU
WRNQRZWKHDFWXDOFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDFOLHQW

<PM,IQTa)L^QKM+TQMV\
7HOO\RXUERVV
"EFOREWESTARTBUILDINGTHE#HATAPP 7UHDW\RXUVHOIWR
WKHUHSRUWZLOO
LETSSTARTWITHSOMETHINGALITTLESMALLER DFROGRQH<RX
KDYHWRZDLW7KHUH·V
4HE!DVICE'UYISASERVERPROGRAMTHAT GHVHUYHLW
SRZGHUDW$VSHQ
OFFERSUPPRACTICAL INSPIRATIONALTIPS
TOGETYOUTHROUGHTHOSELONGDAYSOF
CODING
7EREBUILDINGACLIENTFOR4HE!DVICE 7KDWVKDGHRI
'UYPROGRAM WHICHPULLSAMESSAGE JUHHQLVQ·WUHDOO\
FROMTHESERVEREACHTIMEITCONNECTS ZRUNLQ·IRU\RX
7HATAREYOUWAITINGFOR7HOKNOWS
WHATOPPORTUNITIESYOUVEMISSED
WITHOUTTHISAPP

7KH$GYLFH*X\
 &RQQHFW
&OLHQWFRQQHFWVWRWKHVHUYHUDQGJHWVDQ
LQSXWVWUHDPIURPLW
0DNHDVRFNHWFRQQHFWLRQWR DGYLFHVHUYHU
DWSRUW DW
SRUW
VRFNHWJHW,QSXW6WUHDP
&OLHQW 6HUYHU

 5HDG
&OLHQWUHDGVDPHVVDJHIURPWKHVHUYHU

DGYLFHVHUYHU
FRPSRVHV
DGYLFH UHDGHUUHDG/LQH DGYLFHDQG
VHQGVLW
6HUYHU
&OLHQW$
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

,IQTa)L^QKM+TQMV\KWLM
7KLVSURJUDPPDNHVD6RFNHWPDNHVD%XIIHUHG5HDGHU ZLWKWKH
KHOSRIRWKHUVWUHDPV DQGUHDGVDVLQJOHOLQHIURPWKHVHUYHU
DSSOLFDWLRQ ZKDWHYHULVUXQQLQJDWSRUW 

MDYDQHW
FODVV6RFNHWLVLQ
LPSRUWMDYDLR 
LPSRUWMDYDQHW 

SXEOLFFODVV'DLO\$GYLFH&OLHQW^

FRQQHFWLRQWR ZKDWHYHULV
PDNHD6RFNHW HKRVW
SXEOLFYRLGJR ^ J RQ S RU W  RQ KHVFDDPOKRVW·
W
QJKHUH UXQQLQ QLQJRQ 7KH¶OR
WU\^ DORWFDQJRZUR WKLVFRGHLVUXQ
6RFNHWV QHZ6RFNHW ³´ 

,QSXW6WUHDP5HDGHUVWUHDP5HDGHU QHZ,QSXW6WUHDP5HDGHU VJHW,QSXW6WUHDP 


%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU VWUHDP5HDGHU  FKDLQD%XIIHUHG5HDGHUWR
DQ,QSXW6WUHDP5HDGHUWR
WKHLQSXWVWUHDPIURPWKH
6RFNHW
6WULQJDGYLFH UHDGHUUHDG/LQH  WKLVUHDG/LQ
W H LV(;$&
6\VWHPRXWSULQWOQ ³7RGD\\RXVKRXOG³DGYLFH  KHVDPHDVLI\R 7
%XIIHUHG5H XZHUHXVL/QJ<D
,QRWKHUZRUDGHUFKDLQHGWRD)
UHDGHUFORVH  WKLVFORVHV$//WKHVWUHDP V F DOOD%XIIHUGVE\WKHWLPH\RX,/(
ZULWHUG HG:ULWHUPH
WK
WKHFKDUDRFHWVQ·WNQRZRUFDUHZRGKH WKH
HUVFDPHIUR UH
`FDWFK ,2([FHSWLRQH[ ^ P
H[SULQW6WDFN7UDFH 
`
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'DLO\$GYLFH&OLHQWFOLHQW QHZ'DLO\$GYLFH&OLHQW 
FOLHQWJR 
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRFNHWFRQQHFWLRQV

6KDUSHQ \RXU SHQFLO


4ESTYOURMEMORYOFTHESTREAMSCLASSESFORREADINGANDWRITINGFROMA
3OCKET4RYNOTTOLOOKATTHEOPPOSITEPAGE

VRXUFH
4OREADTEXTFROMA3OCKET

&OLHQW
ZULWHGUDZLQWKHFKDLQRIVWUHDPVWKHFOLHQW
XVHVWRUHDGIURPWKHVHUYHU 6HUYHU

GHVWLQDWLRQ
4OSENDTEXTTOA3OCKET

ZULWHGUDZLQWKHFKDLQRIVWUHDPVWKHFOLHQW
&OLHQW XVHVWRVHQGVRPHWKLQJWRWKHVHUYHU 6HUYHU

6KDUSHQ \RXU SHQFLO


&ILLINTHEBLANKS

7HATTWOPIECESOFINFORMATIONDOESTHECLIENTNEEDINORDERTOMAKEA
3OCKETCONNECTIONWITHASERVER

7HICH4#0PORTNUMBERSARERESERVEDFOR@WELL KNOWNSERVICESLIKE(440AND&40

425%OR&!,3%4HERANGEOFVALID4#0PORTNUMBERSCANBEREPRESENTED
BYASHORTPRIMITIVE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

?ZQ\QVOI[QUXTM[MZ^MZ
3OWHATSITTAKETOWRITEASERVERAPPLICATION*USTA
COUPLEOF3OCKETS9ES ACOUPLEASINTWO!3ERVER3OCKET
WHICHWAITSFORCLIENTREQUESTSWHENACLIENTMAKESA
NEW3OCKET ANDAPLAINOLD3OCKETSOCKETTOUSEFOR
COMMUNICATIONWITHTHECLIENT

+RZLW:RUNV

 6HUYHUDSSOLFDWLRQPDNHVD6HUYHU6RFNHWRQDVSHFLÀFSRUW
HW
6HUYHU6RFN

Licensed by
6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  

7KLVVWDUWVWKHVHUYHUDSSOLFDWLRQOLVWHQLQJ
IRUFOLHQWUHTXHVWVFRPLQJLQIRUSRUW 

Eduard Simons

104038
&OLHQWPDNHVD6RFNHWFRQQHFWLRQWRWKHVHUYHUDSSOLFDWLRQ
6RFNHWVRFN QHZ6RFNHW ³´ 
6RFNHW
6HUYHU6RFN
HW
&OLHQWNQRZVWKH,3DGGUHVVDQGSRUWQXPEHU
SXEOLVKHGRUJLYHQWRKLPE\ZKRPHYHU 
FRQÀJXUHVWKHVHUYHUDSSWREHRQWKDWSRUW

 6HUYHUPDNHVDQHZ6RFNHWWRFRPPXQLFDWHZLWKWKLVFOLHQW
6RFNHWVRFN VHUYHU6RFNDFFHSW 

HW ZDLWLQJ
7KHDFFHSW PHWKRGEORFNV MXVWVLWVWKHUH ZKLOH 6HUYHU6RFQNH[WFOLHQW
LW·VZDLWLQJIRUDFOLHQW6RFNHWFRQQHFWLRQ:KHQD 6RFNHW IRUWKH
FOLHQWÀQDOO\WULHVWRFRQQHFWWKHPHWKRGUHWXUQV
DSODLQROG6RFNHW RQDGLIIHUHQWSRUW WKDWNQRZV 
KRZWRFRPPXQLFDWHZLWKWKHFOLHQW LHNQRZVWKH

FOLHQW·V,3DGGUHVVDQGSRUWQXPEHU 7KH6RFNHWLVRQ
DGLIIHUHQWSRUWWKDQWKH6HUYHU6RFNHWVRWKDWWKH
6RFNHW
6HUYHU6RFNHWFDQJREDFNWRZDLWLQJIRURWKHUFOLHQWV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZULWLQJDVHUYHU

,IQTa)L^QKM;MZ ^MZKWLM
4HISPROGRAMMAKESA3ERVER3OCKETANDWAITSFORCLIENTREQUESTS7HENITGETS
ACLIENTREQUESTIECLIENTSAIDNEW3OCKET FORTHISAPPLICATION THESERVER
MAKESANEW3OCKETCONNECTIONTOTHATCLIENT4HESERVERMAKESA0RINT7RITER
USINGTHE3OCKETSOUTPUTSTREAM ANDSENDSAMESSAGETOTHECLIENT

UHPHPEHUWKHDS VH6WULQJV
KHLPSRUWV ZHUHZRUG USHZU GE\
UHPHPEHUW
LPSRUWMDYDLR 
1 HYHU
LPSRUWMDYDQHW  WKHFRGHHGLWR WKH P LGGOH
\ KL W UHWXUQ LQ
IURPW KL V DU UD
SXEOLFFODVV'DLO\$GYLFH6HUYHU^
GDLO\DGYLFHFRPHV RID6WULQJ
6WULQJ>@DGYLFH/LVW ^³7DNHVPDOOHUELWHV´³*RIRUWKHWLJKWMHDQV1RWKH\GR127
PDNH\RXORRNIDW´³2QHZRUGLQDSSURSULDWH´³-XVWIRUWRGD\EHKRQHVW7HOO\RXU
ERVVZKDW\RX UHDOO\ WKLQN´³<RXPLJKWZDQWWRUHWKLQNWKDWKDLUFXW´`

SXEOLFYRLGJR ^
6HUYHU6RFNHW
DSSOLFDWLRQ¶OLVWPHQDNHVWKLVVHUYHU
WU\^
RQSRUWR ·IRUFOLHQWUHTXHVWV
6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  
FRGHLVUXQQLQJRQQWKHPDFKLQHWKLV
 HQWORRS SHUPDQ 
7KHVHUYHUJRHVLQWRD UYL FLQ J FOLHQWUHTXHVWV
ZDLWLQJI RU  D QG VH
ZKLOH WUXH ^ WKHDFFHSWPHWKRGEORFNV MXVWVLWVWKHUH XQWLOD
UHTXHVWFRPHVLQDQGWKHQWKHPHWKRGUHWXUQVD
6RFNHWVRFN VHUYHU6RFNDFFHSW  6RFNHW RQVRPHDQRQ\PRXVSRUW IRUFRPPXQLFDWLQJ
 ZLWKWKHFOLHQW
3ULQW:ULWHUZULWHU QHZ3ULQW:ULWHU VRFNJHW2XWSXW6WUHDP 
6WULQJDGYLFH JHW$GYLFH 
QRZZHXVHWKH6RFNHWFRQQH
ZULWHUSULQWOQ DGYLFH 
ZULWHUFORVH  PDNHD3ULQW:ULWHUDQ FWLRQWRWKHFOLHQWWR
6\VWHPRXWSULQWOQ DGYLFH  GV HQG
DGYLFHPHVVDJH7KHQZHF LW SULQWOQ D6WULQJ
` ZH·UH ORVHWKH6RFNHWEHFDXVH
GRQHZLWKWKLVFOLHQW 
`FDWFK ,2([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`FORVHJR

SULYDWH6WULQJJHW$GYLFH ^
LQWUDQGRP  LQW  0DWKUDQGRP  DGYLFH/LVWOHQJWK 
UHWXUQDGYLFH/LVW>UDQGRP@
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'DLO\$GYLFH6HUYHUVHUYHU QHZ'DLO\$GYLFH6HUYHU 
VHUYHUJR 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

:MDD=LHGAFLK

ƒ &OLHQWDQGVHUYHUDSSOLFDWLRQVFRPPXQLFDWHRYHUD6RFNHW
DLQ EDUEHOO
EU%UDLQ%DUEHOO FRQQHFWLRQ
ƒ $6RFNHWUHSUHVHQWVDFRQQHFWLRQEHWZHHQWZRDSSOLFDWLRQV
(OWDOESTHESERVERKNOWHOWTO
ZKLFKPD\ RUPD\QRW EHUXQQLQJRQWZRGLIIHUHQWSK\VLFDO
COMMUNICATEWITHTHECLIENT PDFKLQHV
4HECLIENTKNOWSTHE)0ADDRESSANDPORT ƒ $FOLHQWPXVWNQRZWKH,3DGGUHVV RUGRPDLQQDPH DQG
NUMBEROFTHESERVER BUTHOWISTHESERVER 7&3SRUWQXPEHURIWKHVHUYHUDSSOLFDWLRQ
ABLETOMAKEA3OCKETCONNECTIONWITHTHE ƒ $7&3SRUWLVDELWXQVLJQHGQXPEHUDVVLJQHGWRD
CLIENTANDMAKEINPUTANDOUTPUTSTREAMS  VSHFLILFVHUYHUDSSOLFDWLRQ7&3SRUWQXPEHUVDOORZGLIIHUHQW
FOLHQWVWRFRQQHFWWRWKHVDPHPDFKLQHEXWFRPPXQLFDWH
4HINKABOUTHOWWHENWHERETHESERVER
ZLWKGLIIHUHQWDSSOLFDWLRQVUXQQLQJRQWKDWPDFKLQH
GETSKNOWLEDGEABOUTTHECLIENT
ƒ 7KHSRUWQXPEHUVIURPWKURXJKDUHUHVHUYHGIRU
¶ZHOONQRZQVHUYLFHV·LQFOXGLQJ+773)736073HWF
WKHUH DUH QR
'XPE 4XHVWLRQV ƒ $FOLHQWFRQQHFWVWRDVHUYHUE\PDNLQJD6HUYHUVRFNHW
6RFNHWV QHZ6RFNHW ³´ 
Q: 4HEADVICESERVERCODEONTHEOPPOSITE ƒ 2QFHFRQQHFWHGDFOLHQWFDQJHWLQSXWDQGRXWSXWVWUHDPV
PAGEHASA6%29SERIOUSLIMITATIONˆITLOOKS
IURPWKHVRFNHW7KHVHDUHORZOHYHO¶FRQQHFWLRQ·VWUHDPV
LIKEITCANHANDLEONLYONECLIENTATATIME
VRFNJHW,QSXW6WUHDP 

A: 9ES THATSRIGHT)TCANTACCEPTAREQUEST
ƒ 7RUHDGWH[WGDWDIURPWKHVHUYHUFUHDWHD%XIIHUHG5HDGHU
FKDLQHGWRDQ,QSXW6WUHDP5HDGHUZKLFKLVFKDLQHGWRWKH
+
FROMACLIENTUNTILITHASFINISHEDWITHTHE LQSXWVWUHDPIURPWKH6RFNHW
CURRENTCLIENTANDSTARTEDTHENEXTITERATIONOF I
THEINFINITELOOPWHEREITSITSATTHEACCEPT ƒ ,QSXW6WUHDP5HDGHULVD¶EULGJH·VWUHDPWKDWWDNHVLQ 6
CALLUNTILAREQUESTCOMESIN ATWHICHTIMEIT E\WHVDQGFRQYHUWVWKHPWRWH[W FKDUDFWHU GDWD,W·VXVHG [M
MAKESA3OCKETWITHTHENEWCLIENTANDSTARTS SULPDULO\WRDFWDVWKHPLGGOHFKDLQEHWZHHQWKHKLJKOHYHO
THEPROCESSOVERAGAIN 
QV
%XIIHUHG5HDGHUDQGWKHORZOHYHO6RFNHWLQSXWVWUHDP
+
Q: ,ETMEREPHRASETHEPROBLEMHOWCAN
ƒ 7RZULWHWH[WGDWDWRWKHVHUYHUFUHDWHD3ULQW:ULWHUFKDLQHG
GLUHFWO\WRWKH6RFNHW·VRXWSXWVWUHDP&DOOWKHSULQW RU
_
6
YOUMAKEASERVERTHATCANHANDLEMULTIPLE
SULQWOQ PHWKRGVWRVHQG6WULQJVWRWKHVHUYHU ;
CLIENTSCONCURRENTLY4HISWOULDNEVER
WORKFORACHATSERVER FORINSTANCE ƒ 6HUYHUVXVHD6HUYHU6RFNHWWKDWZDLWVIRUFOLHQWUHTXHVWVRQ KI
DSDUWLFXODUSRUWQXPEHU KT
A: !H THATSSIMPLE REALLY5SESEPARATE ƒ :KHQD6HUYHU6RFNHWJHWVDUHTXHVWLW¶DFFHSWV·WKHUHTXHVW +
THREADS ANDGIVEEACHNEWCLIENT3OCKETTOA E\PDNLQJD6RFNHWFRQQHFWLRQZLWKWKHFOLHQW 6
NEWTHREAD7EREJUSTABOUTTOLEARNHOWTO *
DOTHAT 5

1\
\RXDUHKHUH  P
[I

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DVLPSOHFKDWFOLHQW

?ZQ\QVOI+PI\+TQMV\
7ELLWRITETHE#HATCLIENTAPPLICATIONINTWOSTAGES&IRSTWELL
MAKEASEND ONLYVERSIONTHATSENDSMESSAGESTOTHESERVERBUT
DOESNTGETTOREADANYOFTHEMESSAGESFROMOTHERPARTICIPANTS
ANEXCITINGANDMYSTERIOUSTWISTTOTHEWHOLECHATROOM
CONCEPT 
4HENWELLGOFORTHEFULLCHATMONTYANDMAKEONETHATBOTH
SENDSANDRECEIVESCHATMESSAGES

9HUVLRQ2QHVHQGRQO\

6HQG·
JHWKHQSUHVV:¶H
7\SHDPHVVD KHVHUYHU
WRVHQGLWWRQ\WPHVVDJHV)520WKH
D
ZRQ·WJHW LVYHUVLRQVRWKHUH·V
VHUYHULQWK WH[WDUHD
QRVFUROOLQJ

&RGHRXWOLQH
SXEOLFFODVV6LPSOH&KDW&OLHQW$^

-7H[W)LHOGRXWJRLQJ
3ULQW:ULWHUZULWHU
6RFNHWVRFN

SXEOLFYRLGJR ^
PDNHJXLDQGUHJLVWHUDOLVWHQHUZLWKWKHVHQGEXWWRQ
FDOOWKHVHW8S1HWZRUNLQJ PHWKRG
`

SULYDWHYRLGVHW8S1HWZRUNLQJ ^
PDNHD6RFNHWWKHQPDNHD3ULQW:ULWHU
DVVLJQWKH3ULQW:ULWHUWRZULWHULQVWDQFHYDULDEOH
`

SXEOLFFODVV6HQG%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
JHWWKHWH[WIURPWKHWH[W¿HOGDQG
VHQGLWWRWKHVHUYHUXVLQJWKHZULWHU D3ULQW:ULWHU
`
`FORVH6HQG%XWWRQ/LVWHQHULQQHUFODVV

`FORVHRXWHUFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

LPSRUWMDYDLR 

LPSRUWMDYDQHW  VWUHDPV MDYDLR
LPSRUWMDYD[VZLQJ  LPSRUWVIRUWQKHHW DQGWKH*8,
LPSRUWMDYDDZW  6RFNHW MDYD
LPSRUWMDYDDZWHYHQW  VWXII
SXEOLFFODVV6LPSOH&KDW&OLHQW$^

-7H[W)LHOGRXWJRLQJ
3ULQW:ULWHUZULWHU
6RFNHWVRFN

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH ³/XGLFURXVO\6LPSOH&KDW&OLHQW´ 
-3DQHOPDLQ3DQHO QHZ-3DQHO 
RXWJRLQJ QHZ-7H[W)LHOG  
WKLQJQHZ
-%XWWRQVHQG%XWWRQ QHZ-%XWWRQ ³6HQG´  EXLOGWKH*8RW,KLQR
QJ UHODWHGWR
KHUHDQGQRU,2
VHQG%XWWRQDGG$FWLRQ/LVWHQHU QHZ6HQG%XWWRQ/LVWHQHU 
PDLQ3DQHODGG RXWJRLQJ  QHWZRUNLQJ
PDLQ3DQHODGG VHQG%XWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
VHW8S1HWZRUNLQJ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`FORVHJR ZH·UHXVLQJORFDOKRV WVR
\RXFDQWHVWW OLH
SULYDWHYRLGVHW8S1HWZRUNLQJ ^ DQGVHUYHURQRQKHHFPD QW
WU\^
FKLQH
VRFN QHZ6RFNHW ³´ 
7KLVLVZKHUHZHPDNHWK H6RFNHW
ZULWHU QHZ3ULQW:ULWHU VRFNJHW2XWSXW6WUHDP 
DQGWKH3 ULQW:U LWH U LW·V FDOOHG
6\VWHPRXWSULQWOQ ³QHWZRUNLQJHVWDEOLVKHG´ 
IURPWKHJR PHWK RG ULJK WEHIRUH
`FDWFK ,2([FHSWLRQH[ ^ 8,
H[SULQW6WDFN7UDFH  GLVSOD\LQJWKH DS S*
`
`FORVHVHW8S1HWZRUNLQJ

SXEOLFFODVV6HQG%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WU\^
ZULWHUSULQWOQ RXWJRLQJJHW7H[W  1RZZHDFWXDOO\GRWKHZULWLQJ
ZULWHUÀXVK  5HPHPEHUWKHZULWHULVFKDLQHGWR
 WKHLQSXWVWUHDPIURPWKH6RFNHWVR
`FDWFK ([FHSWLRQH[ ^ ZKHQHYHUZHGRDSULQWOQ LWJRHV
H[SULQW6WDFN7UDFH  RYHUWKHQHWZRUNWRWKHVHUYHU
`
RXWJRLQJVHW7H[W ³´ 
RXWJRLQJUHTXHVW)RFXV 
` ,I\RXZDQWWRWU\WKLVQRZW\SHLQ
`FORVH6HQG%XWWRQ/LVWHQHULQQHUFODVV WKH5HDG\EDNHFKDWVHUYHUFRGH
OLVWHGDWWKHHQGRIWKLVFKDSWHU
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ )LUVWVWDUWWKHVHUYHULQRQHWHUPLQDO
QHZ6LPSOH&KDW&OLHQW$ JR 
1H[WXVHDQRWKHUWHUPLQDOWRVWDUW
`
WKLVFOLHQW
`FORVHRXWHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
LPSURYLQJWKHFKDWFOLHQW

9HUVLRQ7ZRVHQG
DQGUHFHLYH
7KH6HUYHUVHQGVDPHVVDJHWRDOO
FOLHQWSDUWLFLSDQWVDVVRRQDVWKH
PHVVDJHLVUHFHLYHGE\WKHVHUYHU
:KHQDFOLHQWVHQGVDPHVVDJHLW
GRHVQ·WDSSHDULQWKHLQFRPLQJ
PHVVDJHGLVSOD\DUHDXQWLOWKH
LQFRPLQJ VHUYHUVHQGVLWWRHYHU\RQH
PHVVDJHV

RXWJRLQJPHVVDJH

%LJ4XHVWLRQ+2:GR\RXJHWPHVVDJHVIURPWKHVHUYHU"
3HOULDBEEASYWHENYOUSETUPTHENETWORKINGMAKEANINPUTSTREAMASWELL
PROBABLYA"UFFERED2EADER 4HENREADMESSAGESUSINGREAD,INE 

%LJJHU4XHVWLRQ:+(1GR\RXJHWPHVVDJHVIURPWKHVHUYHU"
4HINKABOUTTHAT7HATARETHEOPTIONS

 2SWLRQ2QH3ROOWKHVHUYHUHYHU\VHFRQGV
0ROS7ELL ITSDO ABLE
#ONS(OWDOESTHESERVERKNOWWHATYOUVESEENANDWHATYOUHAVENT4HESERVER
WOULDHAVETOSTORETHEMESSAGES RATHERTHANJUSTDOINGADISTRIBUTE AND FORGETEACHTIME
ITGETSONE!NDWHYSECONDS!DELAYLIKETHISAFFECTSUSABILITY BUTASYOUREDUCETHE
DELAY YOURISKHITTINGYOURSERVERNEEDLESSLY)NEFlCIENT

 2SWLRQ7ZR5HDGVRPHWKLQJLQIURPWKHVHUYHUHDFKWLPHWKHXVHU
VHQGVDPHVVDJH
0ROS$O ABLE VERYEASY
#ONS3TUPID7HYCHOOSESUCHANARBITRARYTIMETOCHECKFORMESSAGES7HATIFAUSERIS
ALURKERANDDOESNTSENDANYTHING

 2SWLRQ7KUHH5HDGPHVVDJHVDVVRRQDVWKH\·UHVHQWIURPWKHVHUYHU
0ROS-OSTEFlCIENT BESTUSABILITY
#ONS(OWDOYOUDOYOUDOTWOTHINGSATTHESAMETIME7HEREWOULDYOUPUTTHISCODE
9OUDNEEDALOOPSOMEWHERETHATWASALWAYSWAITINGTOREADFROMTHESERVER"UTWHERE
WOULDTHATGO/NCEYOULAUNCHTHE'5) NOTHINGHAPPENSUNTILANEVENTISlREDBYA'5)
COMPONENT
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

,Q-DYD\RXUHDOO\&$1
ZDONDQGFKHZJXPDW
WKHVDPHWLPH

0XOWLWKUHDGLQJLQ-DYD
*AVAHASMULTIPLETHREADINGBUILTRIGHT
INTOTHEFABRICOFTHELANGUAGE!NDITSA
SNAPTOMAKEANEWTHREADOFEXECUTION
7KUHDGW QHZ7KUHDG 
<RXNQRZE\QRZWKDWZH·UH WVWDUW 
JRLQJZLWKRSWLRQWKUHH 4HATSIT"YCREATINGANEW4HREADOBJECT
YOUVELAUNCHEDASEPARATETHREADOF
7EWANTSOMETHINGTORUNCONTINUOUSLY EXECUTION WITHITSVERYOWNCALLSTACK
CHECKINGFORMESSAGESFROMTHESERVER
BUTWITHOUTINTERRUPTINGTHEUSERSABILITYTO %XCEPTFORONEPROBLEM
INTERACTWITHTHE'5)3OWHILETHEUSERIS 4HATTHREADDOESNTACTUALLYDOANYTHING
HAPPILYTYPINGNEWMESSAGESORSCROLLING SOTHETHREADhDIESvVIRTUALLYTHEINSTANT
THROUGHTHEINCOMINGMESSAGES WE ITSBORN7HENATHREADDIES ITSNEW
WANTSOMETHINGBEHINDTHESCENESTOKEEP STACKDISAPPEARSAGAIN%NDOFSTORY
READINGINNEWINPUTFROMTHESERVER
3OWEREMISSINGONEKEYCOMPONENTˆ
4HATMEANSWElNALLYNEEDANEWTHREAD THETHREADSJOB)NOTHERWORDS WENEED
!NEW SEPARATESTACK THECODETHATYOUWANTTOHAVERUNBYA
7EWANTEVERYTHINGWEDIDINTHE3END SEPARATETHREAD
/NLYVERSIONVERSIONONE TOWORKTHE -ULTIPLETHREADINGIN*AVAMEANSWE
SAMEWAY WHILEANEWPROCESSRUNSALONG HAVETOLOOKATBOTHTHETHREADANDTHEJOB
SIDETHATREADSINFORMATIONFROMTHE THATSRUNBYTHETHREAD!NDWELLALSO
SERVERANDDISPLAYSITINTHEINCOMINGTEXT HAVETOLOOKATTHE4HREADCLASSINTHE
AREA JAVALANGPACKAGE2EMEMBER JAVALANG
7ELL NOTQUITE5NLESSYOUHAVEMULTIPLE ISTHEPACKAGEYOUGETIMPORTEDFOR
PROCESSORSONYOURCOMPUTER EACHNEW FREE IMPLICITLY ANDITSWHERETHECLASSES
*AVATHREADISNOTACTUALLYASEPARATE MOSTFUNDAMENTALTOTHELANGUAGELIVE
PROCESSRUNNINGONTHE/3"UTITALMOST INCLUDING3TRINGAND3YSTEM
FEELSASTHOUGHITIS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKUHDGVDQG7KUHDG

2I^IPI[U]T\QXTM\PZMIL[J]\WVTa $WKUHDGLVDVHSDUDWH
WVM<PZMILKTI[[ ¶WKUHDGRIH[HFXWLRQ·
,QRWKHUZRUGVD
7ECANTALKABOUTTHREADWITHALOWER CASE@TAND4HREAD
WITHACAPITAL@47HENYOUSEETHREAD WERETALKING VHSDUDWHFDOOVWDFN
ABOUTASEPARATETHREADOFEXECUTION)NOTHERWORDS
ASEPARATECALLSTACK7HENYOUSEE4HREAD THINKOF $7KUHDGLVD-DYD
THE*AVANAMINGCONVENTION7HAT IN*AVA STARTSWITHA FODVVWKDWUHSUHVHQWV
CAPITALLETTER#LASSESANDINTERFACES)NTHISCASE 4HREAD
ISACLASSINTHEJAVALANGPACKAGE!4HREADOBJECT DWKUHDG
REPRESENTSATHREADOFEXECUTIONYOULLCREATEANINSTANCEOF
CLASS4HREADEACHTIMEYOUWANTTOSTARTUPANEWTHREAD 7RPDNHDWKUHDG
OFEXECUTION
PDNHD7KUHDG

WKUHDG 7KUHDG

[ED]  GR0RUH  7KUHDG


\EDU  JR  YRLGMRLQ
YRLGVWDUW
[IRR  GR6WXII 
VWDWLFYRLGVOHHS
PDLQ  UXQ 

PDLQWKUHDG DQRWKHUWKUHDG MDYDODQJ7KUHDG


VWDUWHGE\WKHFRGH FODVV
!THREADLOWER CASE@T ISASEPARATETHREADOFEXECUTION 4HREADCAPITAL@4 ISACLASSTHAT
4HATMEANSASEPARATECALLSTACK%VERY*AVAAPPLICATION REPRESENTSATHREADOFEXECUTION
STARTSUPAMAINTHREADˆTHETHREADTHATPUTSTHE )THASMETHODSFORSTARTINGA
MAIN METHODONTHEBOTTOMOFTHESTACK4HE*6- THREAD JOININGONETHREADWITH
ISRESPONSIBLEFORSTARTINGTHEMAINTHREADANDOTHER ANOTHER ANDPUTTINGATHREADTO
THREADS ASITCHOOSES INCLUDINGTHEGARBAGECOLLECTION SLEEP)THASMOREMETHODSTHESE
THREAD !SAPROGRAMMER YOUCANWRITECODETOSTART AREJUSTTHECRUCIALONESWENEED
OTHERTHREADSOFYOUROWN TOUSENOW 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

?PI\LWM[Q\UMIV\WPI^MUWZM\PIV
WVMKITT[\IKS'
7ITHMORETHANONECALLSTACK YOUGETTHEAPPEARANCEOFHAVING
MULTIPLETHINGSHAPPENATTHESAMETIME)NREALITY ONLYATRUE
MULTIPROCESSORSYSTEMCANACTUALLYDOMORETHANONETHINGATA
TIME BUTWITH*AVATHREADS ITCANAPPEARTHATYOUREDOINGSEVERAL
THINGSSIMULTANEOUSLY)NOTHERWORDS EXECUTIONCANMOVEBACK
ANDFORTHBETWEENSTACKSSORAPIDLYTHATYOUFEELASTHOUGHALLSTACKS
AREEXECUTINGATTHESAMETIME2EMEMBER *AVAISJUSTAPROCESS
RUNNINGONYOURUNDERLYING/33OlRST *AVAITSELFHASTOBE@THE
CURRENTLYEXECUTINGPROCESSONTHE/3"UTONCE*AVAGETSITS
TURNTOEXECUTE EXACTLYWHATDOESTHE*6-RUN7HICHBYTECODES
EXECUTE7HATEVERISONTHETOPOFTHECURRENTLY RUNNINGSTACK
!NDINMILLISECONDS THECURRENTLYEXECUTINGCODEMIGHTSWITCH
TOADIFFERENTMETHODONADIFFERENTSTACK
/NEOFTHETHINGSATHREADMUSTDOISKEEPTRACKOFWHICHSTATEMENT
OFWHICHMETHOD ISCURRENTLYEXECUTINGONTHETHREADSSTACK
)TMIGHTLOOKSOMETHINGLIKETHIS
WKHDFWLYHWKUHDG

 7KH-90FDOOVWKHPDLQ PHWKRG
PDLQ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
 PDLQWKUHDG
`

DQHZWKUHDGVWDUWV
DQGEHFRPHVWKHDFWLYH
 PDLQ VWDUWVDQHZWKUHDG7KHPDLQ WKUHDG
WKUHDGLVWHPSRUDULO\IUR]HQZKLOHWKHQHZ WVWDUW
WKUHDGVWDUWVUXQQLQJ
PDLQ UXQ
5XQQDEOHU QHZ0\7KUHDG-RE 
PDLQWKUHDG XVHUWKUHDG$
7KUHDGW QHZ7KUHDG U  \RX·OOOHDU
QZ W
WVWDUW  WKLVPHDQVLQKD
'RJG QHZ'RJ  DPRPHQW MXVW


HWK UHDGDJDLQ
WKHDFWLY
'RJ [JR
 7KH-90VZLWFKHVEHWZHHQWKHQHZ
WKUHDG XVHUWKUHDG$ DQGWKHRULJLQDO PDLQ UXQ
PDLQWKUHDGXQWLOERWKWKUHDGVFRPSOHWH
PDLQWKUHDG XVHUWKUHDG$
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ODXQFKLQJDWKUHDG

+RZWRODXQFKDQHZWKUHDG

 0DNHD5XQQDEOHREMHFW WKHWKUHDG·VMRE
5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH 
5XQQDEOHLVDQLQWHUIDFH\RX·OOOHDUQDERXWRQWKHQH[WSDJH
<RX·OOZULWHDFODVVWKDWLPSOHPHQWVWKH5XQQDEOHLQWHUIDFH

FW
XQ

5
DQGWKDWFODVVLVZKHUH\RX·OOGHÀQHWKHZRUNWKDWDWKUHDG

MH
QDEOHRE
ZLOOSHUIRUP,QRWKHUZRUGVWKHPHWKRGWKDWZLOOEHUXQ
IURPWKHWKUHDG·VQHZFDOOVWDFN

 0DNHD7KUHDGREMHFW WKHZRUNHU DQG


JLYHLWD5XQQDEOH WKHMRE
7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE 

F W
7K
3DVVWKHQHZ5XQQDEOHREMHFWWRWKH7KUHDGFRQVWUXFWRU UHDGREMH
7KLVWHOOVWKHQHZ7KUHDGREMHFWZKLFKPHWKRGWRSXWRQ
WKHERWWRPRIWKHQHZVWDFN³WKH5XQQDEOH·VUXQ PHWKRG

 6WDUWWKH7KUHDG
P\7KUHDGVWDUW 
UXQ
1RWKLQJKDSSHQVXQWLO\RXFDOOWKH7KUHDG·V
VWDUW PHWKRG7KDW·VZKHQ\RXJRIURP
KDYLQJMXVWD7KUHDGLQVWDQFHWRKDYLQJDQHZ

W
WKUHDGRIH[HFXWLRQ:KHQWKHQHZWKUHDG 5X MHF
F W

7K Q QD
VWDUWVXSLWWDNHVWKH5XQQDEOHREMHFW·V UHDGREMH EOHRE
UXQ PHWKRGDQGSXWVLWRQWKHERWWRPRI
WKHQHZWKUHDG·VVWDFN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

-^MZa<PZMILVMML[IRWJ\WLW
)UM\PWL\WX]\WV\PMVM_\PZMIL[\IKS

$OO,QHHGLVDUHDOMRE
-XVWJLYHPHD5XQQDEOH 5XQQDEOHLVWRD
DQG,·OOJHWWRZRUN
7KUHDGZKDWDMRELVWR
DZRUNHU$5XQQDEOH
LVWKHMREDWKUHDGLV

Licensed by
VXSSRVHGWRUXQ
$5XQQDEOHKROGVWKH
PHWKRGWKDWJRHVRQ

Eduard Simons
WKHERWWRPRIWKHQHZ
WKUHDG·VVWDFNUXQ 

104038 7KUHDG

!4HREADOBJECTNEEDSAJOB!JOBTHETHREADWILLRUNWHENTHE
THREADISSTARTED4HATJOBISACTUALLYTHElRSTMETHODTHATGOESON
H G H I LQH V RQO\RQH DQ
THENEWTHREADSSTACK ANDITMUSTALWAYSBEAMETHODTHATLOOKS
5 X Q Q D E OH LQWHUIDF  5HPHPEHULW·VOHVV
LIKETHIS 7KH UXQ
XEOLFYRLG JDUG
SXEOLFUH
 SXEOLFYRLGUXQ ^ PHWKRGS VRWKHPHWKRGLV KDWZD\
FRGHWKDWZLOOEHUXQE\WKHQHZWKUHDG
LQWHUIDFH HU\RXW\SHLWLQW
RIZKHWK
 `

(OWDOESTHETHREADKNOWWHICHMETHODTOPUTATTHEBOTTOMOF 
THESTACK"ECAUSE2UNNABLEDElNESACONTRACT"ECAUSE2UNNABLE
ISANINTERFACE!THREADSJOBCANBEDElNEDINANYCLASSTHAT
IMPLEMENTSTHE2UNNABLEINTERFACE4HETHREADCARESONLYTHATYOU
PASSTHE4HREADCONSTRUCTORANOBJECTOFACLASSTHATIMPLEMENTS
2UNNABLE
7HENYOUPASSA2UNNABLETOA4HREADCONSTRUCTOR YOUREREALLY
JUSTGIVINGTHE4HREADAWAYTOGETTOARUN METHOD9OUREGIVING
THE4HREADITSJOBTODO

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
5XQQDEOHLQWHUIDFH

<WUISMIRWJNWZaW]Z\PZMIL
QUXTMUMV\\PM:]VVIJTMQV\MZNIKM SDFNDJH
LQWKHMDYDLPODSRQJUWLW
5XQQDEOHLV·W GWR
VR\RXGRQ QHH

SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^

SXEOLFYRLGUXQ ^
JR  5XQQDEOHKDVRQO\RQHPHWKRGWR
` LPSOHPHQWSXEOLFYRLGUXQ  Z LWKQR
DUJXPHQWV 7KLVLVZKHUH\RXS XWWKH
SXEOLFYRLGJR ^ -2%WKHWKUHDGLVVXSSRVHGWRUXQ 7KLV
 GR0RUH  LVWKHPHWKRGWKDWJRHVDWWKHERWW
` RIWKHQHZVWDFN RP

SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ ³WRSR¶WKHVWDFN´ 
`
`

QHZ
FODVV7KUHDG7HVWHU^ EOHLQVWDQFHLQWRWKH
3DVVWKHQHZ5XFXQWRQDU7KLVWHOOVWKHWKUHDG Z
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 7KUHDGFRQVWUWRSXWRQWKHERWWRPRIWKHQH 
ZKDWPHWKRG ZRUGVWKHILUVWPHWKRGWKDW
5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH  VWDFN,QRWKHU ZLOOUXQ
7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE  WKHQHZWKUHDG

P\7KUHDGVWDUW 
<RXZRQ·WJHWDQHZWKUHD
6\VWHPRXWSULQWOQ ³EDFNLQPDLQ´  FDOOVWDUW RQWKH7KUHDGGRIH[HFXWLRQXQWLO\RX
` QRWUHDOO\DWKUHDGXQWLO\RLQVWDQFH$WKUHDGLV
XVWDUWLW% RUHWKDW
` LW·VMXVWD7KUHDGLQV WDQFHOLNHDQ\RWKHHI
EXWLWZRQ·WKDYHDQ\U HDO¶WKUHDGQHVV· UREMHFW


DLQ EDUEHOO
EU%UDLQ%DUEHOO

GR0RUH
P\7KUHDGVWDUW
JR
:KDWGR\RXWKLQNWKHRXWSXWZLOOEHLI\RXUXQWKH
PDLQ
UXQ 7KUHDG7HVWHUFODVV" ZH¶OO¿QGRXWLQDIHZSDJHV
PDLQWKUHDG QHZWKUHDG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

7KHWKUHHVWDWHVRIDQHZWKUHDG KUHDG
WKLVLVZKHUHDW
ZDQWVWREH

7KUHDGW QHZ7KUHDG U 

1(: 5811$%/( 5811,1*

WVWDUW  6HOHFWHGWRUXQ

´&DQ,
VXSHUVL]H
´,·PZDLWLQJWR ´,·PJRRGWRJR µ WKDWIRU
JHWVWDUWHGµ \RX"µ

7KUHDGW QHZ7KUHDG U  WVWDUW  4HISISTHESTATEALLTHREADSLUST


!4HREADINSTANCEHASBEEN 7HENYOUSTARTTHETHREAD IT AFTER4OBE4HE#HOSEN/NE
CREATEDBUTNOTSTARTED MOVESINTOTHERUNNABLESTATE 4HE#URRENTLY2UNNING4HREAD
)NOTHERWORDS THEREISA 4HISMEANSTHETHREADISREADY /NLYTHE*6-THREADSCHEDULER
4HREADOBJECT BUTNOTHREAD TORUNANDJUSTWAITINGFORITS CANMAKETHATDECISION9OU
OFEXECUTION "IG#HANCETOBESELECTEDFOR CANSOMETIMESINmUENCETHAT
EXECUTION!TTHISPOINT THEREIS DECISION BUTYOUCANNOTFORCEA
ANEWCALLSTACKFORTHISTHREAD THREADTOMOVEFROMRUNNABLE
TORUNNING)NTHERUNNING
STATE ATHREADAND/.,9THIS
THREAD HASANACTIVECALLSTACK
ANDTHEMETHODONTHETOPOF
THESTACKISEXECUTING

%XWWKHUH·VPRUH2QFHWKHWKUHDGEHFRPHV
UXQQDEOHLWFDQPRYHEDFNDQGIRUWKEHWZHHQ
UXQQDEOHUXQQLQJDQGDQDGGLWLRQDOVWDWH
WHPSRUDULO\QRWUXQQDEOH DOVRNQRZQDV¶EORFNHG· 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKUHDGVWDWHV

7\SLFDOUXQQDEOHUXQQLQJORRS

5811$%/( 5811,1*
4YPICALLY ATHREADMOVESBACKAND
6HOHFWHGWRUXQ
FORTHBETWEENRUNNABLEANDRUNNING
ASTHE*6-THREADSCHEDULERSELECTSA
THREADTORUNANDTHENKICKSITBACK
OUTSOANOTHERTHREADGETSACHANCE

6HQWEDFNWRUXQQDEOH
VRDQRWKHUWKUHDGFDQ
KDYHDFKDQFH

$WKUHDGFDQEHPDGH
WHPSRUDULO\QRWUXQQDEOH
4HETHREADSCHEDULERCANMOVEA 5811$%/( 5811,1*
RUNNINGTHREADINTOABLOCKEDSTATE
FORAVARIETYOFREASONS&OREXAMPLE
THETHREADMIGHTBEEXECUTINGCODE
TOREADFROMA3OCKETINPUTSTREAM
BUTTHEREISNTANYDATATOREAD4HE
SCHEDULERWILLMOVETHETHREADOUT
OFTHERUNNINGSTATEUNTILSOMETHING
BECOMESAVAILABLE/RTHEEXECUTING
CODEMIGHTHAVETOLDTHETHREADTO
PUTITSELFTOSLEEPSLEEP /RTHE
THREADMIGHTBEWAITINGBECAUSEIT \
DU
TRIEDTOCALLAMETHODONANOBJECT S RU H
%/2&.(' P DW H
WH VW
ANDTHATOBJECTWAS@LOCKED)NTHAT RD EOH FRP
W D H
CASE THETHREADCANTCONTINUEUNTIL QW QQ QE Q
6H QUX WFD JDL
THEOBJECTSLOCKISFREEDBYTHETHREAD QR WLOL OHD
THATHASIT XQ QQDE
UX
!LLOFTHOSECONDITIONSANDMORE
CAUSEATHREADTOBECOMETEMPORARILY
NOT RUNNABLE VOHHSLQJZDLWLQJIRUDQRWKHUWKUHDGWRILQLVK
ZDLWLQJIRUGDWDWREHDYDLODEOHRQWKHVWUHDP
ZDLWLQJIRUDQREMHFW·VORFN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

<PM<PZMIL;KPML]TMZ
4HETHREADSCHEDULERMAKESALLTHEDECISIONSABOUT
WHOMOVESFROMRUNNABLETORUNNING ANDABOUTWHEN
ANDUNDERWHATCIRCUMSTANCES ATHREADLEAVESTHE
RUNNINGSTATE4HESCHEDULERDECIDESWHORUNS ANDFOR
HOWLONG ANDWHERETHETHREADSGOWHENTHESCHEDULER
DECIDESTOKICKTHEMOUTOFTHECURRENTLY RUNNINGSTATE
1XPEHUIRXU\RX·YHKDG
9OUCANTCONTROLTHESCHEDULER4HEREISNO!0)FOR
CALLINGMETHODSONTHESCHEDULER-OSTIMPORTANTLY HQRXJKWLPH%DFNWRUXQQDEOH
THEREARENOGUARANTEESABOUTSCHEDULING4HEREAREA 1XPEHUWZRORRNVOLNH\RX·UHXS
FEWALMOST GUARANTEES BUTEVENTHOSEAREALITTLEFUZZY
2KQRZLWORRNVOLNH\RX·UHJRQQDKDYH
4HEBOTTOMLINEISTHISDONOTBASEYOURPROGRAMS WRVOHHS1XPEHUÀYHFRPHWDNHKLV
CORRECTNESSONTHESCHEDULERWORKINGINAPARTICULARWAY
SODFH1XPEHUWZR\RX·UHVWLOO
4HESCHEDULERIMPLEMENTATIONSAREDIFFERENTFOR
VOHHSLQJ
DIFFERENT*6-S ANDEVENRUNNINGTHESAMEPROGRAM
ONTHESAMEMACHINECANGIVEYOUDIFFERENTRESULTS
/NEOFTHEWORSTMISTAKESNEW*AVAPROGRAMMERS
MAKEISTOTESTTHEIRMULTI THREADEDPROGRAMONA
SINGLEMACHINE ANDASSUMETHETHREADSCHEDULERWILL
ALWAYSWORKTHATWAY REGARDLESSOFWHERETHEPROGRAM
RUNS
3OWHATDOESTHISMEANFORWRITE ONCE RUN ANYWHERE
)TMEANSTHATTOWRITEPLATFORM INDEPENDENT*AVACODE 7KHWKUHDG
YOURMULTI THREADEDPROGRAMMUSTWORKNOMATTERHOW VFKHGXOHUPDNHVDOO
THETHREADSCHEDULERBEHAVES4HATMEANSTHATYOUCANT
BEDEPENDENTON FOREXAMPLE THESCHEDULERMAKING WKHGHFLVLRQVDERXW
SUREALLTHETHREADSTAKENICE PERFECTLYFAIRANDEQUAL
TURNSATTHERUNNINGSTATE!LTHOUGHHIGHLYUNLIKELY
ZKRUXQVDQGZKR
TODAY YOURPROGRAMMIGHTENDUPRUNNINGONA*6- GRHVQ·W+HXVXDOO\
WITHASCHEDULERTHATSAYS h/+THREADlVE YOUREUP
ANDASFARAS)MCONCERNED YOUCANSTAYHEREUNTIL PDNHVWKHWKUHDGVWDNH
YOUREDONE WHENYOURRUN METHODCOMPLETESv WXUQVQLFHO\%XW
4HESECRETTOALMOSTEVERYTHINGISSLEEP4HATS
RIGHT SLEEP0UTTINGATHREADTOSLEEP EVENFORAFEW
WKHUH·VQRJXDUDQWHH
MILLISECONDS FORCESTHECURRENTLY RUNNINGTHREADTO DERXWWKDW+HPLJKW
LEAVETHERUNNINGSTATE THUSGIVINGANOTHERTHREADA
CHANCETORUN4HETHREADSSLEEP METHODDOESCOME OHWRQHWKUHDGUXQ
WITHONEGUARANTEEASLEEPINGTHREADWILLNOTBECOME WRLWVKHDUW·VFRQWHQW
THECURRENTLY RUNNINGTHREADBEFORETHETHELENGTHOF
ITSSLEEPTIMEHASEXPIRED&OREXAMPLE IFYOUTELLYOUR ZKLOHWKHRWKHU
THREADTOSLEEPFORTWOSECONDS MILLISECONDS
THATTHREADCANNEVERBECOMETHERUNNINGTHREADAGAIN
WKUHDGV¶VWDUYH·
UNTILSOMETIMEAFTERTHETWOSECONDSHAVEPASSED

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKUHDGVFKHGXOLQJ

$QH[DPSOHRIKRZXQSUHGLFWDEOHWKH
VFKHGXOHUFDQEH

5XQQLQJWKLVFRGHRQRQHPDFKLQH 3URGXFHGWKLVRXWSXW
SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^ )LOH(GLW:LQGRZ+HOS3LFN0H

MDYD7KUHDG7HVW'ULYH
SXEOLFYRLGUXQ ^
JR  EDFNLQPDLQ
`
WRSR¶WKHVWDFN
SXEOLFYRLGJR ^ MDYD7KUHDG7HVW'ULYH
GR0RUH 
WRSR¶WKHVWDFN
`
EDFNLQPDLQ
SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ ³WRSR¶WKHVWDFN´ 
MDYD7KUHDG7HVW'ULYH
` WRSR¶WKHVWDFN
`
EDFNLQPDLQ
MDYD7KUHDG7HVW'ULYH
FODVV7KUHDG7HVW'ULYH^ WRSR¶WKHVWDFN
EDFNLQPDLQ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
MDYD7KUHDG7HVW'ULYH
5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH 
WRSR¶WKHVWDFN
7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE 
EDFNLQPDLQ
P\7KUHDGVWDUW 
MDYD7KUHDG7HVW'ULYH
6\VWHPRXWSULQWOQ ³EDFNLQPDLQ´  WRSR¶WKHVWDFN
`
EDFNLQPDLQ
`
RUGHUFKDQJ HV
1RW LF H K R Z W K H
LP QH
HVWKH WZ WKUHDG  MDYD7KUHDG7HVW'ULYH
P HW DLQ
UDQGRP LUVWDQGVRPHWLPHV KHP
O\  6 R EDFNLQPDLQ
ILQ LV KHV I
HVILUVW
WKUHDGILQLVK WRSR¶WKHVWDFN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

+RZGLGZHHQGXSZLWKGLIIHUHQWUHVXOWV"

6RPHWLPHVLWUXQVOLNHWKLV

PDLQ VWDUWVWKH 7KHVFKHGXOHUVHQGV 7KHVFKHGXOHUOHWV 7KHQHZWKUHDGJRHV


QHZWKUHDG WKHPDLQWKUHDGRXW WKHQHZWKUHDG DZD\EHFDXVHLWVUXQ 
RIUXQQLQJDQGEDFN UXQWRFRPSOHWLRQ FRPSOHWHG7KHPDLQ
WRUXQQDEOHVRWKDW SULQWLQJRXW´WRSR· WKUHDGRQFHDJDLQ
WKHQHZWKUHDGFDQ WKHVWDFNµ EHFRPHVWKHUXQQLQJ
UXQ WKUHDGDQGSULQWV´EDFN
GR0RUH
LQPDLQµ
P\7KUHDGVWDUW P\7KUHDGVWDUW JR
PDLQ PDLQ UXQ PDLQ

PDLQWKUHDG PDLQWKUHDG QHZWKUHDG PDLQWKUHDG

WLPH

$QGVRPHWLPHVLWUXQVOLNHWKLV

PDLQ VWDUWVWKH 7KHVFKHGXOHUVHQGV 7KHVFKHGXOHUOHWVWKH 7KHVFKHGXOHU 7KHVFKHGXOHU 7KHQHZWKUHDGUHWXUQV


QHZWKUHDG WKHPDLQWKUHDGRXW QHZWKUHDGUXQIRUD VHQGVWKHQHZ VHOHFWVWKHPDLQ WRWKHUXQQLQJVWDWH
RIUXQQLQJDQGEDFN OLWWOHZKLOHQRWORQJ WKUHDGEDFNWR WKUHDGWREHWKH DQGSULQWVRXW´WRSR·
WRUXQQDEOHVRWKDW HQRXJKIRUWKHUXQ  UXQQDEOH UXQQLQJWKUHDG WKHVWDFNµ
WKHQHZWKUHDGFDQ PHWKRGWRFRPSOHWH DJDLQ0DLQSULQWV
UXQ RXW´EDFNLQPDLQµ GR0RUH
P\7KUHDGVWDUW
P\7KUHDGVWDUW JR JR JR
PDLQ PDLQ UXQ UXQ PDLQ UXQ

PDLQWKUHDG PDLQWKUHDG QHZWKUHDG QHZWKUHDG PDLQWKUHDG QHZWKUHDG

WLPH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRFNHWFRQQHFWLRQV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: )VESEENEXAMPLESTHATDONTUSEASEPARATE :MDD=LHGAFLK
2UNNABLEIMPLEMENTATION BUTINSTEADJUSTMAKEA
SUBCLASSOF4HREADANDOVERRIDETHE4HREADSRUN ƒ $WKUHDGZLWKDORZHUFDVH¶W·LVDVHSDUDWHWKUHDGRI
METHOD4HATWAY YOUCALLTHE4HREADSNO ARG H[HFXWLRQLQ-DYD
CONSTRUCTORWHENYOUMAKETHENEWTHREAD
4HREADTNEW4HREAD NO2UNNABLE ƒ (YHU\WKUHDGLQ-DYDKDVLWVRZQFDOOVWDFN
ƒ $7KUHDGZLWKDFDSLWDO¶7·LVWKHMDYDODQJ7KUHDG
A: 9ES THATISANOTHERWAYOFMAKINGYOUROWN
FODVV$7KUHDGREMHFWUHSUHVHQWVDWKUHDGRI
H[HFXWLRQ
THREAD BUTTHINKABOUTITFROMAN//PERSPECTIVE
7HATSTHEPURPOSEOFSUBCLASSING2EMEMBERTHAT ƒ $7KUHDGQHHGVDMREWRGR$7KUHDG·VMRELVDQ
WERETALKINGABOUTTWODIFFERENTTHINGSHEREˆTHE LQVWDQFHRIVRPHWKLQJWKDWLPSOHPHQWVWKH5XQQDEOH
4HREADANDTHETHREADSJOB&ROMAN//VIEW THOSE
LQWHUIDFH
TWOAREVERYSEPARATEACTIVITIES ANDBELONGINSEPARATE
CLASSES4HEONLYTIMEYOUWANTTOSUBCLASSEXTEND ƒ 7KH5XQQDEOHLQWHUIDFHKDVMXVWDVLQJOHPHWKRGUXQ 
THE4HREADCLASS ISIFYOUAREMAKINGANEWANDMORE 7KLVLVWKHPHWKRGWKDWJRHVRQWKHERWWRPRIWKHQHZ
SPECIFICTYPEOF4HREAD)NOTHERWORDS IFYOUTHINKOF
FDOOVWDFN,QRWKHUZRUGVLWLVWKHILUVWPHWKRGWRUXQLQ
THE4HREADASTHEWORKER DONTEXTENDTHE4HREADCLASS
WKHQHZWKUHDG
UNLESSYOUNEEDMORESPECIFICWORKERBEHAVIORS"UTIF
ALLYOUNEEDISANEWJOBTOBERUNBYA4HREADWORKER ƒ 7RODXQFKDQHZWKUHDG\RXQHHGD5XQQDEOHWRSDVV
THENIMPLEMENT2UNNABLEINASEPARATE JOB SPECIFIC WRWKH7KUHDG·VFRQVWUXFWRU
NOTWORKER SPECIFIC CLASS
4HISISADESIGNISSUEANDNOTAPERFORMANCEOR ƒ $WKUHDGLVLQWKH1(:VWDWHZKHQ\RXKDYH
LANGUAGEISSUE)TSPERFECTLYLEGALTOSUBCLASS4HREAD LQVWDQWLDWHGD7KUHDGREMHFWEXWKDYHQRW\HWFDOOHG
ANDOVERRIDETHERUN METHOD BUTITSRARELYAGOOD VWDUW 
IDEA
ƒ :KHQ\RXVWDUWDWKUHDG E\FDOOLQJWKH7KUHDGREMHFW·V
Q: #ANYOUREUSEA4HREADOBJECT#ANYOUGIVEIT
VWDUW PHWKRG DQHZVWDFNLVFUHDWHGZLWKWKH
5XQQDEOH·VUXQ PHWKRGRQWKHERWWRPRIWKHVWDFN
ANEWJOBTODOANDTHENRESTARTITBYCALLINGSTART 7KHWKUHDGLVQRZLQWKH5811$%/(VWDWHZDLWLQJWR
AGAIN EHFKRVHQWRUXQ
ƒ $WKUHDGLVVDLGWREH5811,1*ZKHQWKH-90·V
A: .O/NCEATHREADSRUN METHODHASCOMPLETED WKUHDGVFKHGXOHUKDVVHOHFWHGLWWREHWKHFXUUHQWO\
THETHREADCANNEVERBERESTARTED)NFACT ATTHAT UXQQLQJWKUHDG2QDVLQJOHSURFHVVRUPDFKLQHWKHUH
POINTTHETHREADMOVESINTOASTATEWEHAVENTTALKED FDQEHRQO\RQHFXUUHQWO\UXQQLQJWKUHDG
ABOUTˆDEAD)NTHEDEADSTATE THETHREADHAS
FINISHEDITSRUN METHODANDCANNEVERBERESTARTED ƒ 6RPHWLPHVDWKUHDGFDQEHPRYHGIURPWKH5811,1*
4HE4HREADOBJECTMIGHTSTILLBEONTHEHEAP ASA VWDWHWRD%/2&.(' WHPSRUDULO\QRQUXQQDEOH VWDWH
LIVINGOBJECTTHATYOUCANCALLOTHERMETHODSONIF $WKUHDGPLJKWEHEORFNHGEHFDXVHLW·VZDLWLQJIRUGDWD
APPROPRIATE BUTTHE4HREADOBJECTHASPERMANENTLY IURPDVWUHDPRUEHFDXVHLWKDVJRQHWRVOHHSRU
LOSTITS@THREADNESS)NOTHERWORDS THEREISNOLONGERA
EHFDXVHLWLVZDLWLQJIRUDQREMHFW·VORFN
SEPARATECALLSTACK ANDTHE4HREADOBJECTISNOLONGER
ATHREAD)TSJUSTANOBJECT ATTHATPOINT LIKEALLOTHER ƒ 7KUHDGVFKHGXOLQJLVQRWJXDUDQWHHGWRZRUNLQDQ\
OBJECTS SDUWLFXODUZD\VR\RXFDQQRWEHFHUWDLQWKDWWKUHDGV
"UT THEREAREDESIGNPATTERNSFORMAKINGAPOOLOF ZLOOWDNHWXUQVQLFHO\<RXFDQKHOSLQIOXHQFHWXUQWDNLQJ
THREADSTHATYOUCANKEEPUSINGTOPERFORMDIFFERENT E\SXWWLQJ\RXUWKUHDGVWRVOHHSSHULRGLFDOO\
JOBS"UTYOUDONTDOITBYRESTARTING ADEADTHREAD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

8]\\QVOI\PZMIL\W[TMMX
/NEOFTHEBESTWAYSTOHELPYOURTHREADSTAKETURNSIS
TOPUTTHEMTOSLEEPPERIODICALLY!LLYOUNEEDTODO
ISCALLTHESTATICSLEEP METHOD PASSINGITTHESLEEP
DURATION INMILLISECONDS
3XW\RXUWKUHDGWRVOHHS
&OREXAMPLE
7KUHDGVOHHS  
LI\RXZDQWWREHVXUH
WILLKNOCKATHREADOUTOFTHERUNNINGSTATE AND WKDWRWKHUWKUHDGVJHWD
KEEPITOUTOFTHERUNNABLESTATEFORTWOSECONDS
4HETHREADCANTBECOMETHERUNNINGTHREAD
FKDQFHWRUXQ
AGAINUNTILAFTERATLEASTTWOSECONDSHAVEPASSED
:KHQWKHWKUHDGZDNHV
!BITUNFORTUNATELY THESLEEPMETHODTHROWSAN
)NTERRUPTED%XCEPTION ACHECKEDEXCEPTION SOALL XSLWDOZD\VJRHVEDFN
CALLSTOSLEEPMUSTBEWRAPPEDINATRYCATCHOR
DECLARED 3OASLEEPCALLREALLYLOOKSLIKETHIS
WRWKHUXQQDEOHVWDWH
WU\^ DQGZDLWVIRUWKHWKUHDG
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^
VFKHGXOHUWRFKRRVHLW
H[SULQW6WDFN7UDFH 
`
WRUXQDJDLQ
9OURTHREADWILLPROBABLYNEVERBEINTERRUPTEDFROM
SLEEPTHEEXCEPTIONISINTHE!0)TOSUPPORTATHREAD
COMMUNICATIONMECHANISMTHATALMOSTNOBODYUSESIN
THE2EAL7ORLD"UT YOUSTILLHAVETOOBEYTHEHANDLE
ORDECLARELAW SOYOUNEEDTOGETUSEDTOWRAPPINGYOUR
SLEEP CALLSINATRYCATCH
.OWYOUKNOWTHATYOURTHREADWONTWAKEUPBEFORETHE
SPECIlEDDURATION BUTISITPOSSIBLETHATITWILLWAKEUP
SOMETIMEAFTERTHE@TIMERHASEXPIRED9ESANDNO)T
DOESNTMATTER REALLY BECAUSEWHENTHETHREADWAKES
UP ITALWAYSGOESBACKTOTHERUNNABLESTATE4HETHREAD
WONTAUTOMATICALLYWAKEUPATTHEDESIGNATEDTIMEAND
BECOMETHECURRENTLY RUNNINGTHREAD7HENATHREAD
WAKESUP THETHREADISONCEAGAINATTHEMERCYOF
THETHREADSCHEDULER.OW FORAPPLICATIONSTHATDONT
REQUIREPERFECTTIMING ANDTHATHAVEONLYAFEWTHREADS
ITMIGHTAPPEARASTHOUGHTHETHREADWAKESUPAND
RESUMESRUNNINGRIGHTONSCHEDULESAY AFTERTHE
MILLISECONDS "UTDONTBETYOURPROGRAMONIT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJ7KUHDGVOHHS

=[QVO[TMMX\WUISMW]ZXZWOZIU 7KLVLVZKDWZHZDQW³DFRQVLVWHQWRUGHU
RISULQWVWDWHPHQWV
UWZMXZMLQK\IJTM )LOH(GLW:LQGRZ+HOS6QRR]H%XWWRQ

MDYD7KUHDG7HVW'ULYH
2EMEMBEROUREARLIEREXAMPLETHATKEPTGIVINGUSDIFFERENT
RESULTSEACHTIMEWERANIT,OOKBACKANDSTUDYTHECODE EDFNLQPDLQ
ANDTHESAMPLEOUTPUT3OMETIMESMAINHADTOWAITUNTILTHE WRSR¶WKHVWDFN
NEWTHREADlNISHEDANDPRINTEDhTOPOTHESTACKv WHILE MDYD7KUHDG7HVW'ULYH
OTHERTIMESTHENEWTHREADWOULDBESENTBACKTORUNNABLE
BEFOREITWASlNISHED ALLOWINGTHEMAINTHREADTOCOMEBACK EDFNLQPDLQ
INANDPRINTOUThBACKINMAINv(OWCANWElXTHAT3TOP WRSR¶WKHVWDFN
FORAMOMENTANDANSWERTHISQUESTIONh7HERECANYOUPUT
MDYD7KUHDG7HVW'ULYH
ASLEEP CALL TOMAKESURETHAThBACKINMAINvALWAYSPRINTS
BEFOREhTOPOTHESTACKv EDFNLQPDLQ
7ELLWAITWHILEYOUWORKOUTANANSWERTHERESMORETHAN WRSR¶WKHVWDFN
ONEANSWERTHATWOULDWORK  MDYD7KUHDG7HVW'ULYH
&IGUREITOUT EDFNLQPDLQ
WRSR¶WKHVWDFN
SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^ MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ
SXEOLFYRLGUXQ ^
JR  WRSR¶WKHVWDFN
`

K HU FHWKHQHZLQ J
HZLOOIRUHQ
S QQ
HFXUU WO\UX
SXEOLFYRLGJR ^ VO HH
&D OO LQ J W K
W R OHD YH
WU\^ WKUHDG
VWDWH HWKH
DGZLOOEHFGRPDJDLQDQGSULQW
7KUHDGVOHHS  
K H P D LQ W K UH
LQJWKUHD
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^ 7
H[SULQW6WDFN7UDFH  FXUUHQWO\LUXQQQPDLQµ7KHQWKHUHZHI LOOEHD
HZH
` RXW´EDFN DERXWWZRVHFRQGV E RURU H DQG
 I RU
SDXVH LVOLQHZKLFKFDOOV G R0
GR0RUH  JHWWRWK ´WRSR·WKHVWDFNµ
` SULQWVRXW
SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ ³WRSR¶WKHVWDFN´ 
`
`

FODVV7KUHDG7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
5XQQDEOHWKH-RE QHZ0\5XQQDEOH 
7KUHDGW QHZ7KUHDG WKH-RE 
WVWDUW 
6\VWHPRXWSULQWOQ ³EDFNLQPDLQ´ 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

5ISQVOIVL[\IZ\QVO\ _W\PZMIL[
4HREADSHAVENAMES9OUCANGIVEYOURTHREADSANAMEOF
YOURCHOOSING ORYOUCANACCEPTTHEIRDEFAULTNAMES"UTTHE
COOLTHINGABOUTNAMESISTHATYOUCANUSETHEMTOTELLWHICH
THREADISRUNNING4HEFOLLOWINGEXAMPLESTARTSTWOTHREADS
%ACHTHREADHASTHESAMEJOBRUNINALOOP PRINTINGTHE
CURRENTLY RUNNINGTHREADSNAMEWITHEACHITERATION

SXEOLFFODVV5XQ7KUHDGVLPSOHPHQWV5XQQDEOH^
H
QQD EOHLQVWDQF
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0 DNHRQH5X
5XQ7KUHDGVUXQQHU QHZ5XQ7KUHDGV 
7KUHDGDOSKD QHZ7KUHDG UXQQHU 
0DNHWZRWKUHDGVZLWKWKHVDPH5XQQDEOH WKH

Licensed by
7KUHDGEHWD QHZ7KUHDG UXQQHU 
DOSKDVHW1DPH ³$OSKDWKUHDG´ 
VDPHMREZH·OOWDONPRUHDERXWWKH´WZRWKUHDGV
EHWDVHW1DPH ³%HWDWKUHDG´ 
DQG RQH5XQQDEOHµLQDIHZSDJHV 
DOSKDVWDUW  1DPHWKHWKUHDG
V
EHWDVWDUW  6WDUWWKHWKUHDGV

Eduard Simons
`
RS
DF K WK UH DG Z LOO U XQWKURXJKWKLVOR
( HDFKWLPH
SULQWLQJLWVQDPH
SXEOLFYRLGUXQ ^
IRU LQWL LL ^
6WULQJWKUHDG1DPH 7KUHDGFXUUHQW7KUHDG JHW1DPH 

104038
6\VWHPRXWSULQWOQ WKUHDG1DPH³LVUXQQLQJ´ 
`
`
` )LOH(GLW:LQGRZ+HOS&HQWDXUL

3DUWRIWKHRXWSXWZKHQ $OSKDWKUHDGLVUXQQLQJ
WKHORRSLWHUDWHV $OSKDWKUHDGLVUXQQLQJ
?PI\_QTTPIXXMV' WLPHV $OSKDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
7ILLTHETHREADSTAKETURNS7ILLYOUSEETHETHREADNAMES $OSKDWKUHDGLVUXQQLQJ
ALTERNATING(OWOFTENWILLTHEYSWITCH7ITHEACHITERATION %HWDWKUHDGLVUXQQLQJ
!FTERlVEITERATIONS %HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
9OUALREADYKNOWTHEANSWERWEDONTKNOW)TSUPTOTHE
%HWDWKUHDGLVUXQQLQJ
SCHEDULER!NDONYOUR/3 WITHYOURPARTICULAR*6- ON
%HWDWKUHDGLVUXQQLQJ
YOUR#05 YOUMIGHTGETVERYDIFFERENTRESULTS
%HWDWKUHDGLVUXQQLQJ
2UNNINGUNDER/38*AGUAR WITHlVEORFEWER %HWDWKUHDGLVUXQQLQJ
ITERATIONS THE!LPHATHREADRUNSTOCOMPLETION THEN %HWDWKUHDGLVUXQQLQJ
THE"ETATHREADRUNSTOCOMPLETION6ERYCONSISTENT.OT %HWDWKUHDGLVUXQQLQJ
GUARANTEED BUTVERYCONSISTENT %HWDWKUHDGLVUXQQLQJ
"UTWHENYOUUPTHELOOPTOORMOREITERATIONS THINGS %HWDWKUHDGLVUXQQLQJ
STARTTOWOBBLE4HE!LPHATHREADMIGHTNOTGETTOCOMPLETE %HWDWKUHDGLVUXQQLQJ
ALLITERATIONSBEFORETHESCHEDULERSENDSITBACKTO %HWDWKUHDGLVUXQQLQJ
RUNNABLETOLETTHE"ETATHREADHAVEACHANCE %HWDWKUHDGLVUXQQLQJ
$OSKDWKUHDGLVUXQQLQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DUHQ·WWKUHDGVZRQGHUIXO"

:RZ7KUHDGVDUH
WKHJUHDWHVWWKLQJVLQFHWKH
0,1,&RRSHU,FDQ·WWKLQN
RIDVLQJOHGRZQVLGHWRXVLQJ
WKUHDGVFDQ\RX"

=UaM[<PMZM1;ILIZS[QLM 
<PZMIL[KIVTMIL\WKWVK]ZZMVKa»Q[[]M[¼
#ONCURRENCYISSUESLEADTORACECONDITIONS2ACECONDITIONS
LEADTODATACORRUPTION$ATACORRUPTIONLEADSTOFEARYOU
KNOWTHEREST
)TALLCOMESDOWNTOONEPOTENTIALLYDEADLYSCENARIOTWOOR
MORETHREADSHAVEACCESSTOASINGLEOBJECTSDATA)NOTHER
WORDS METHODSEXECUTINGONTWODIFFERENTSTACKSAREBOTH
CALLING SAY GETTERSORSETTERSONASINGLEOBJECTONTHEHEAP
)TSAWHOLE@LEFT HAND DOESNT KNOW WHAT THE RIGHT HAND
IS DOINGTHING4WOTHREADS WITHOUTACAREINTHEWORLD
HUMMINGALONGEXECUTINGTHEIRMETHODS EACHTHREAD
THINKINGTHATHEISTHE/NE4RUE4HREAD4HEONLYONE
THATMATTERS!FTERALL WHENATHREADISNOTRUNNING ANDIN
RUNNABLEORBLOCKED ITSESSENTIALLYKNOCKEDUNCONSCIOUS
7HENITBECOMESTHECURRENTLY RUNNINGTHREADAGAIN ITDOESNT
KNOWTHATITEVERSTOPPED

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

0DUULDJHLQ7URXEOH
&DQWKLVFRXSOHEHVDYHG"
1H[WRQDYHU\VSHFLDO'U6WHYH6KRZ

>7UDQVFULSWIURPHSLVRGH@

?MTKWUM\W\PM,Z;\M^M[PW_

?M¼^MOW\I[\WZa\WLIa\PI\¼[KMV\MZMLIZW]VL\PM\WX\_WZMI[WV[_Pa
KW]XTM[[XTQ\]X¸ÅVIVKM[IVL[TMMX

<WLIa¼[\ZW]JTMLXIQZ:aIVIVL5WVQKI[PIZMIJMLIVLI
JIVSIKKW]V\*]\VW\NWZTWVOQN_MKIV¼\ÅVLI[WT]\QWV<PM
XZWJTMU'<PMKTI[[QK¹\_WXMWXTM¸WVMJIVSIKKW]V\º\PQVO

0MZM¼[PW_5WVQKILM[KZQJMLQ\\WUM"

¹:aIVIVL1IOZMML\PI\VMQ\PMZWN][_QTTW^MZLZI_\PMKPMKSQVOIKKW]V\
;W\PMXZWKML]ZMQ[_PWM^MZ_IV\[\W_Q\PLZI_UWVMaU][\KPMKS\PM
JITIVKMQV\PMIKKW]V\JMNWZMUISQVO\PM_Q\PLZI_IT1\ITT[MMUML[W
[QUXTM*]\[]LLMVTa_M¼ZMJW]VKQVOKPMKS[IVLOM\\QVOPQ\_Q\PW^MZLZIN\ 5\DQDQG0RQLFDY
NMM[ RIWKH´WZRSHRSOH LFWLPV
1\PW]OP\Q\_I[V¼\XW[[QJTM1\PW]OP\W]ZXZWKML]ZM_I[[INM*]\\PMV
DFFRXQWµSUREOHP RQH
\PQ[PIXXMVML"

:aIVVMMLML [WPMKPMKSML\PMJITIVKMQV\PMIKKW]V\
HU
IVL[I_\PI\Q\_I[ 6WXZWJTMU;WPMXTIV[\W
5\DQIDOOVDVOHHSDIWH
_Q\PLZI_\PMUWVMa*]\ÅZ[\PMNITT[I[TMMX  QF
KHFKHFNVWKHEDOD VWKH
)VL\PI\¼[_PMZM1KWUMQV_PQTM:aIV¼[[\QTTI[TMMXIVL EXWEHIRUHKHPDNH ZDNHV
VW_1_IV\\W_Q\PLZI_ 1KPMKS\PMJITIVKMIVL ZLWKGUDZDO:KHQKHPDNHV
XSKHLPPHGLDWHO\ XW
WKHZLWKGUDZOZLWKR DJDLQ
Q\¼[ JMKI][M:aIV¼[[\QTTI[TMMXIVLPI[V¼\aM\UILM

FKHFNLQJWKHEDODQFH
PQ[_Q\PLZI_IT[W1\PQVSVWXZWJTMU;W1UISM\PM
_Q\PLZI_IT IVL IOIQV VW XZWJTMU *]\ \PMV :aIV _ISM[ ]X
KWUXTM\M[PQ[_Q\PLZI_ITIVL_M¼ZM[]LLMVTaW^MZLZI_V 0MLQLV¼\
M^MVSVW_\PI\PMNMTTI[TMMX[WPMR][\_MV\IPMILIVLKWUXTM\MLPQ[
\ZIV[IK\QWV_Q\PW]\KPMKSQVO\PMJITIVKMIOIQVAW]¼^MOW\\WPMTX][,Z
;\M^M º

1[\PMZMI[WT]\QWV')ZM\PMaLWWUML'?MKIV¼\[\WX:aIVNZWUNITTQVO
I[TMMXJ]\KIV_MUISM[]ZM\PI\5WVQKIKIV¼\OM\PMZPIVL[WV\PMJIVS
IKKW]V\]V\QTIN\MZPM_ISM[]X'

<ISMIUWUMV\IVL\PQVSIJW]\\PI\_PQTM_MOW\WIKWUUMZKQITJZMIS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
5\DQDQG0RQLFDFRGH

<PM:aIVIVL5WVQKIXZWJTMUQVKWLM
4HEFOLLOWINGEXAMPLESHOWSWHATCANHAPPENWHENTWO
5XQQDEOH
THREADS2YANAND-ONICA SHAREASINGLEOBJECTTHEBANK
ACCOUNT 
4HECODEHASTWOCLASSES "ANK!CCOUNT AND
-ONICA!ND2YAN*OB4HE-ONICA!ND2YAN*OBCLASS
IMPLEMENTS2UNNABLE ANDREPRESENTSTHEBEHAVIORTHAT2YAN
AND-ONICABOTHHAVEˆCHECKINGTHEBALANCEANDMAKING
WITHDRAWALS"UTOFCOURSE EACHTHREADFALLSASLEEPINBETWEEN %DQN$FFRXQW
CHECKINGTHEBALANCEANDACTUALLYMAKINGTHEWITHDRAWAL LQWEDODQFH
4HE-ONICA!ND2YAN*OBCLASSHASANINSTANCEVARIABLEOFTYPE JHW%DODQFH 5\DQ$QG0RQLFD-RE
"ANK!CCOUNT THATREPRESENTSTHEIRSHAREDACCOUNT ZLWKGUDZ %DQN$FFRXQWDFFRXQW
4HECODEWORKSLIKETHIS UXQ
PDNH:LWKGUDZDO

 0DNHRQHLQVWDQFHRI5\DQ$QG0RQLFD-RE
7KH5\DQ$QG0RQLFD-REFODVVLVWKH5XQQDEOH WKHMREWRGR 
DQGVLQFHERWK0RQLFDDQG5\DQGRWKHVDPHWKLQJ FKHFN
EDODQFHDQGZLWKGUDZPRQH\ ZHQHHGRQO\RQHLQVWDQFH ,QWKHUXQ PHWKRGGR
5\DQ$QG0RQLFD-REWKH-RE QHZ5\DQ$QG0RQLFD-RE 
H[DFWO\ZKDW5\DQDQG
0RQLFDZRXOGGR³FKHFN
WKHEDODQFHDQGLI
 0DNHWZRWKUHDGVZLWKWKHVDPH5XQQDEOH WKHUH·VHQRXJKPRQH\
WKH5\DQ$QG0RQLFD-RELQVWDQFH PDNHWKHZLWKGUDZDO
7KUHDGRQH QHZ7KUHDG WKH-RE 
7KUHDGWZR QHZ7KUHDG WKH-RE  7KLVVKRXOGSURWHFW
DJDLQVWRYHUGUDZLQJWKH
DFFRXQW
 1DPHDQGVWDUWWKHWKUHDGV
([FHSW5\DQDQG
RQHVHW1DPH ³5\DQ´ 
WZRVHW1DPH ³0RQLFD´ 
0RQLFDDOZD\VIDOO
RQHVWDUW  DVOHHSDIWHUWKH\
WZRVWDUW  FKHFNWKHEDODQFHEXW
EHIRUHWKH\ÀQLVKWKH
ZLWKGUDZDO
 :DWFKERWKWKUHDGVH[HFXWHWKHUXQ PHWKRG
FKHFNWKHEDODQFHDQGPDNHDZLWKGUDZDO
2QHWKUHDGUHSUHVHQWV5\DQWKHRWKHUUHSUHVHQWV0RQLFD
%RWKWKUHDGVFRQWLQXDOO\FKHFNWKHEDODQFHDQGWKHQPDNHD
ZLWKGUDZDOEXWRQO\LILW·VVDIH
LI DFFRXQWJHW%DODQFH ! DPRXQW ^
WU\^
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

<PM:aIVIVL5WVQKIM`IUXTM
WDUWVZLWKD
FODVV%DQN$FFRXQW^
SULYDWHLQWEDODQFH  7KHDFFRXQWV 

SXEOLFLQWJHW%DODQFH ^
EDODQFHRI
UHWXUQEDODQFH
`
SXEOLFYRLGZLWKGUDZ LQWDPRXQW ^
EDODQFH EDODQFHDPRXQW
`
IWKH
`
LOOE H RQ O\ 2 1(LQVWDQFHRQO\
7KHUHZ D-RE7KDWPHD
QVR
SXEOLFFODVV5\DQ$QG0RQLFD-RELPSOHPHQWV5XQQDEOH^ 5\DQ$QG0RQLF IWKHEDQNDFFRXQW%RWK
21(LQVWDQFHRFFHVVWKLVRQHDFFRXQW
WKUHDGVZLOOD
SULYDWH%DQN$FFRXQWDFFRXQW QHZ%DQN$FFRXQW 

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
5\DQ$QG0RQLFD-REWKH-RE QHZ5\DQ$QG0RQLFD-RE  ,QVWDQWLDWHWKH
7KUHDGRQH QHZ7KUHDG WKH-RE  5XQQDEOH MRE
7KUHDGWZR QHZ7KUHDG WKH-RE  0DNHWZRWKUH
RQHVHW1DPH ³5\DQ´ 
DG V
MRE7KDWPHDQV JLYLQJHDFKWKUHDGWKHVDP
WZRVHW1DPH ³0RQLFD´  DFFRXQWLQVWDQFHERWKWKUHDGVZLOOEHDFFHVVLQ H5XQQDEOH
YDULDEOHLQWKH J
5XQQDEOHFODVV WKHRQH
RQHVWDUW 
WZRVWDUW 
`
KDQGWULHV
SXEOLFYRLGUXQ ^ XQ PHW KR G D W KUHDGORRSVWKURXJ$IWHUWKH
,QWKHU DOZLWKHDFKLWHUDW
LRQ

WRPDNHDZLWKGUDZNVWKHEDODQFHRQFHDJDLQWRVHHLI
IRU LQW[ [[ ^
PDNH:LWKGUDZO  
LI DFFRXQWJHW%DODQFH  ^ ZLWKGUDZDOLWFKHF GUDZQ
6\VWHPRXWSULQWOQ ³2YHUGUDZQ´  WKHDFFRXQWLVRYHU
`
HUH·VQRW
` &KHFNWKHDFFRXQWEDODQFHDQGLIWKJH,IWKHUH,6
`
HQRXJKPRQH\ZHMXVWSULQWDPHVVD DQGFRPSOHWH
HQRXJKZHJRWRVOHHSWKHQZDNHXS
WKHZLWKGUDZDOMXVWOLNH5\DQGLG
SULYDWHYRLGPDNH:LWKGUDZDO LQWDPRXQW ^
LI DFFRXQWJHW%DODQFH ! DPRXQW ^
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³LVDERXWWRZLWKGUDZ´ 
WU\^
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³LVJRLQJWRVOHHS´ 
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³ZRNHXS´ 
DFFRXQWZLWKGUDZ DPRXQW 
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³FRPSOHWHVWKHZLWKGUDZO´ 
`
HOVH^
6\VWHPRXWSULQWOQ ³6RUU\QRWHQRXJKIRU³7KUHDGFXUUHQW7KUHDG JHW1DPH 
`
:HSXWLQDEXQFKRISULQW
ZKDW·VKDSSHQLQJDVLWUXVWDWHPHQWVVRZHFDQ
`
` VHH
QV
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
5\DQDQG0RQLFDRXWSXW

)LOH(GLW:LQGRZ+HOS9LVD

5\DQLVDERXWWRZLWKGUDZ
5\DQLVJRLQJWRVOHHS 7KHPDNH:LWKGUDZDO PHWKRG
0RQLFDZRNHXS DOZD\VFKHFNVWKHEDODQFH
EHIRUHPDNLQJDZLWKGUDZDO
0RQLFDFRPSOHWHVWKHZLWKGUDZO
EXWVWLOOZHRYHUGUDZWKH
0RQLFDLVDERXWWRZLWKGUDZ DFFRXQW
0RQLFDLVJRLQJWRVOHHS
5\DQZRNHXS +HUH·VRQHVFHQDULR
5\DQFRPSOHWHVWKHZLWKGUDZO 5\DQFKHFNVWKHEDODQFHVHHVWKDW
5\DQLVDERXWWRZLWKGUDZ WKHUH¶VHQRXJKPRQH\DQGWKHQIDOOV
5\DQLVJRLQJWRVOHHS DVOHHS
0RQLFDZRNHXS 0HDQZKLOH0RQLFDFRPHVLQDQGFKHFNV
0RQLFDFRPSOHWHVWKHZLWKGUDZO WKHEDODQFH6KHWRRVHHVWKDWWKHUH¶V
0RQLFDLVDERXWWRZLWKGUDZ HQRXJKPRQH\6KHKDVQRLGHDWKDW
0RQLFDLVJRLQJWRVOHHS 5\DQLVJRLQJWRZDNHXSDQGFRPSOHWHD
ZLWKGUDZDO
5\DQZRNHXS
5\DQFRPSOHWHVWKHZLWKGUDZO 0RQLFDIDOOVDVOHHS
5\DQLVDERXWWRZLWKGUDZ 5\DQZDNHVXSDQGFRPSOHWHVKLV
5\DQLVJRLQJWRVOHHS ZLWKGUDZDO
0RQLFDZRNHXS 0RQLFDZDNHVXSDQGFRPSOHWHVKHU
0RQLFDFRPSOHWHVWKHZLWKGUDZO ZLWKGUDZDO%LJ3UREOHP,QEHWZHHQWKH
6RUU\QRWHQRXJKIRU0RQLFD WLPHZKHQVKHFKHFNHGWKHEDODQFHDQG
PDGHWKHZLWKGUDZDO5\DQZRNHXSDQG
6RUU\QRWHQRXJKIRU0RQLFD SXOOHGPRQH\IURPWKHDFFRXQW
6RUU\QRWHQRXJKIRU0RQLFD
0RQLFD¶VFKHFNRIWKHDFFRXQWZDV
6RUU\QRWHQRXJKIRU0RQLFD QRWYDOLGEHFDXVH5\DQKDGDOUHDG\
6RUU\QRWHQRXJKIRU0RQLFD FKHFNHGDQGZDVVWLOOLQWKHPLGGOHRI
5\DQZRNHXS PDNLQJDZLWKGUDZDO

5\DQFRPSOHWHVWKHZLWKGUDZO 0RQLFDPXVWEHVWRSSHGIURPJHWWLQJ
+RZGLGWKLV 2YHUGUDZQ LQWRWKHDFFRXQWXQWLO5\DQZDNHVXSDQG
KDSSHQ" 6RUU\QRWHQRXJKIRU5\DQ
¿QLVKHVKLVWUDQVDFWLRQ$QGYLFHYHUVD

2YHUGUDZQ
6RUU\QRWHQRXJKIRU5\DQ
2YHUGUDZQ
6RUU\QRWHQRXJKIRU5\DQ
2YHUGUDZQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

7KH\QHHGDORFNIRUDFFRXQWDFFHVV

7KHORFNZRUNVOLNHWKLV

 7KHUH·VDORFNDVVRFLDWHGZLWKWKHEDQN
DFFRXQWWUDQVDFWLRQ FKHFNLQJWKHEDODQFH 7KHEDQNDFFRXQW
DQGZLWKGUDZLQJPRQH\ 7KHUH·VRQO\ WUDQVDFWLRQLV
RQHNH\DQGLWVWD\VZLWKWKHORFNXQWLO XQORFNHGZKHQ
VRPHERG\ZDQWVWRDFFHVVWKHDFFRXQW QRERG\LVXVLQJ
WKHDFFRXQW

:KHQ5\DQ
 :KHQ5\DQZDQWVWRDFFHVVWKHEDQN
ZDQWVWRDFFHVV
DFFRXQW WRFKHFNWKHEDODQFHDQGZLWKGUDZ
WKHDFFRXQWKH
PRQH\ KHORFNVWKHORFNDQGSXWVWKHNH\
VHFXUHVWKHORFN
LQKLVSRFNHW1RZQRERG\HOVHFDQDFFHVV
DQGWDNHVWKHNH\
WKHDFFRXQWVLQFHWKHNH\LVJRQH

 5\DQNHHSVWKHNH\LQKLVSRFNHWXQWLOKH
:KHQ5\DQLV
ÀQLVKHVWKHWUDQVDFWLRQ+HKDVWKHRQO\
ÀQLVKHGKH
NH\VR0RQLFDFDQ·WDFFHVVWKHDFFRXQW
XQORFNVWKHORFN
RUWKHFKHFNERRN XQWLO5\DQXQORFNVWKH
DQGUHWXUQVWKH
DFFRXQWDQGUHWXUQVWKHNH\
NH\1RZWKHNH\
1RZHYHQLI5\DQIDOOVDVOHHSDIWHUKH LVDYDLODEOHIRU
FKHFNVWKHEDODQFHKHKDVDJXDUDQWHH 0RQLFD RU5\DQ
WKDWWKHEDODQFHZLOOEHWKHVDPHZKHQKH DJDLQ WRDFFHVV
ZDNHVXSEHFDXVHKHNHSWWKHNH\ZKLOHKH WKHDFFRXQW
ZDVDVOHHS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVLQJV\QFKURQL]HG

?MVMML\PMUISM?Q\PLZI_IT  UM\PWL
\WZ]VI[WVMI\WUQK\PQVO
7ENEEDTOMAKESURETHATONCEATHREADENTERSTHE
MAKE7ITHDRAWAL METHOD ITMUSTBEALLOWEDTOlNISHTHEMETHOD
BEFOREANYOTHERTHREADCANENTER
)NOTHERWORDS WENEEDTOMAKESURETHATONCEATHREADHAS
CHECKEDTHEACCOUNTBALANCE THATTHREADHASAGUARANTEETHATITCAN
7KHV\QFKURQL]HG
WAKEUPANDlNISHTHEWITHDRAWALBEFOREANYOTHERTHREADCANCHECKTHE NH\ZRUGPHDQVWKDW
ACCOUNTBALANCE DWKUHDGQHHGVDNH\
5SETHEV\QFKURQL]HGKEYWORDTOMODIFYAMETHODSOTHATONLY LQRUGHUWRDFFHVVWKH
ONETHREADATATIMECANACCESSIT V\QFKURQL]HGFRGH
4HATSHOWYOUPROTECTTHEBANKACCOUNT9OUDONTPUTALOCKON
THEBANKACCOUNTITSELFYOULOCKTHEMETHODTHATDOESTHEBANKING 7RSURWHFW\RXUGDWD
TRANSACTION4HATWAY ONETHREADGETSTOCOMPLETETHEWHOLE OLNHWKHEDQNDFFRXQW 
TRANSACTION STARTTOlNISH EVENIFTHATTHREADFALLSASLEEPINTHE V\QFKURQL]HWKH
MIDDLEOFTHEMETHOD
PHWKRGVWKDWDFWRQ
3OIFYOUDONTLOCKTHEBACKACCOUNT THENWHATEXACTLYISLOCKED)S WKDWGDWD
ITTHEMETHOD4HE2UNNABLEOBJECT4HETHREADITSELF
7ELLLOOKATTHATONTHENEXTPAGE)NCODE THOUGH ITSQUITE
SIMPLEˆJUSTADDTHESYNCHRONIZEDMODIlERTOYOURMETHOD
DECLARATION

SULYDWHV\QFKURQL]HGYRLGPDNH:LWKGUDZDO LQWDPRXQW ^

LI DFFRXQWJHW%DODQFH ! DPRXQW ^


6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³LVDERXWWRZLWKGUDZ´ 
WU\^
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³LVJRLQJWRVOHHS´ 
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³ZRNHXS´ 
DFFRXQWZLWKGUDZ DPRXQW 
6\VWHPRXWSULQWOQ 7KUHDGFXUUHQW7KUHDG JHW1DPH ³FRPSOHWHVWKHZLWKGUDZO´ 
`HOVH^
6\VWHPRXWSULQWOQ ³6RUU\QRWHQRXJKIRU³7KUHDGFXUUHQW7KUHDG JHW1DPH 
`
`

1RWHIRU\RXSK\VLFVVDYY\UHDGHUV\HVWKHFRQYHQWLRQRIXVLQJWKHZRUG¶DWRPLF·KHUHGRHVQRWUHIOHFW
WKHZKROHVXEDWRPLFSDUFWLFOHWKLQJ7KLQN1HZWRQQRW(LQVWHLQZKHQ\RXKHDUWKHZRUG¶DWRPLF·LQWKH
FRQWH[WRIWKUHDGVRUWUDQVDFWLRQV+H\LW·VQRW285FRQYHQWLRQ,I:(ZHUHLQFKDUJHZH·GDSSO\
+HLVHQEHUJ·V8QFHUWDLQW\3ULQFLSOHWRSUHWW\PXFKHYHU\WKLQJUHODWHGWRWKUHDGV
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

=[QVOIVWJRMK\¼[TWKS
%VERYOBJECTHASALOCK-OSTOFTHETIME THE +H\WKLVREMHFW·V
LOCKISUNLOCKED ANDYOUCANIMAGINEAVIRTUAL WDNH0RQH\ PHWKRGLV
KEYSITTINGWITHIT/BJECTLOCKSCOMEINTOPLAY V\QFKURQL]HG,QHHGWRJHW
ONLYWHENTHEREARESYNCHRONIZEDMETHODS WKLVREMHFW·VNH\EHIRUH,
7HENANOBJECTHASONEORMORESYNCHRONIZED FDQJRLQ
METHODS ATHREADCANENTERASYNCHRONIZED
METHODONLYIFTHETHREADCANGETTHEKEYTOTHE
OBJECTSLOCK
4HELOCKSARENOTPERMETHOD THEY
AREPEROBJECT)FANOBJECTHASTWO
SYNCHRONIZEDMETHODS ITDOESNOT
SIMPLYMEANTHATYOUCANTHAVETWO
THREADSENTERINGTHESAMEMETHOD)T
MEANSYOUCANTHAVETWOTHREADSENTERING
ANYOFTHESYNCHRONIZEDMETHODS
4HINKABOUTIT)FYOUHAVEMULTIPLE
METHODSTHATCANPOTENTIALLYACTONAN
OBJECTSINSTANCEVARIABLES ALLTHOSEMETHODS
NEEDTOBEPROTECTEDWITHSYNCHRONIZED
4HEGOALOFSYNCHRONIZATIONISTOPROTECT (YHU\-DYDREMHFWKDVDORFN
CRITICALDATA"UTREMEMBER YOUDONTLOCKTHE $ORFNKDVRQO\RQHNH\
DATAITSELF YOUSYNCHRONIZETHEMETHODSTHAT
ACCESSTHATDATA 0RVWRIWKHWLPHWKHORFNLV
3OWHATHAPPENSWHENATHREADISCRANKING
THROUGHITSCALLSTACKSTARTINGWITHTHERUN XQORFNHGDQGQRERG\FDUHV
METHOD ANDITSUDDENLYHITSASYNCHRONIZED
METHOD4HETHREADRECOGNIZESTHATITNEEDS %XWLIDQREMHFWKDV
AKEYFORTHATOBJECTBEFOREITCANENTERTHE V\QFKURQL]HGPHWKRGVD
METHOD)TLOOKSFORTHEKEYTHISISALLHANDLED
BYTHE*6-THERESNO!0)IN*AVAFORACCESSING WKUHDGFDQHQWHURQHRIWKH
OBJECTLOCKS ANDIFTHEKEYISAVAILABLE THE
THREADGRABSTHEKEYANDENTERSTHEMETHOD
V\QFKURQL]HGPHWKRGV21/<
&ROMTHATPOINTFORWARD THETHREADHANGSON LIWKHNH\IRUWKHREMHFW·VORFN
TOTHATKEYLIKETHETHREADSLIFEDEPENDSON LVDYDLODEOH,QRWKHUZRUGV
IT4HETHREADWONTGIVEUPTHEKEYUNTILIT
COMPLETESTHESYNCHRONIZEDMETHOD3OWHILE RQO\LIDQRWKHUWKUHDGKDVQ·W
THATTHREADISHOLDINGTHEKEY NOOTHERTHREADS
CANENTERANYOFTHATOBJECTSSYNCHRONIZED
DOUHDG\JUDEEHGWKHRQHNH\
METHODS BECAUSETHEONEKEYFORTHATOBJECT
WONTBEAVAILABLE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
V\QFKURQL]DWLRQPDWWHUV

<PMLZMILML¹4W[\=XLI\MºXZWJTMU
(ERESANOTHERCLASSICCONCURRENCYPROBLEM THATCOMESFROMTHEDATABASEWORLD)TS
CLOSELYRELATEDTOTHE2YANAND-ONICASTORY BUTWELLUSETHISEXAMPLETOILLUSTRATEAFEW
MOREPOINTS
4HELOSTUPDATEREVOLVESAROUNDONEPROCESS
3TEP'ETTHEBALANCEINTHEACCOUNT
LQWL EDODQFH
3TEP!DDTOTHATBALANCE
EDODQFH L
4HETRICKTOSHOWINGTHISISTOFORCETHECOMPUTERTOTAKETWOSTEPSTOCOMPLETETHECHANGE
TOTHEBALANCE)NTHEREALWORLD YOUDDOTHISPARTICULARMOVEINASINGLESTATEMENT
EDODQFH
"UTBYFORCINGITINTOTWOSTEPS THEPROBLEMWITHANON ATOMICPROCESSWILLBECOMECLEAR
3OIMAGINETHATRATHERTHANTHETRIVIALhGETTHEBALANCEANDTHENADDTOTHECURRENT
BALANCEvSTEPS THETWOORMORE STEPSINTHISMETHODAREMUCHMORECOMPLEX AND
COULDNTBEDONEINONESTATEMENT
)NTHEh,OST5PDATEvPROBLEM WEHAVETWOTHREADS BOTHTRYINGTOINCREMENTTHEBALANCE
FODVV7HVW6\QFLPSOHPHQWV5XQQDEOH^

LPHV
XQVODWQFHRQ
SULYDWHLQWEDODQFH
W KU H D G  U
SXEOLFYRLGUXQ ^ HDFK HQWLQJWKHED
IRU LQWL LL ^ LQFUHP HUDWLRQ
LQFUHPHQW  HDFKLW
6\VWHPRXWSULQWOQ ³EDODQFHLV³EDODQFH 
`
`

SXEOLFYRLGLQFUHPHQW ^
LQWL EDODQFH
EDODQFH L +HUH·VWKHFUXFLD
` DGGLQJWRZKDWHOSDUW :HLQFUHPHQWWKHEDODQF
` 7,0(:(5($' YHUWKHYDOXHRIEDODQFHZDV$ HE\
WKH&855(17YD ,7 UDWKHUWKDQDGGLQJWRZ 77+(
OXHLV KDWHYHU
SXEOLFFODVV7HVW6\QF7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7HVW6\QFMRE QHZ7HVW6\QF 
7KUHDGD QHZ7KUHDG MRE 
7KUHDGE QHZ7KUHDG MRE 
DVWDUW 
EVWDUW 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

4M\¼[Z]V\PQ[KWLM
 7KUHDG$UXQVIRUDZKLOH
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
$ 3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
%
 7KUHDG%UXQVIRUDZKLOH
Licensed by
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ

Eduard Simons
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
% 3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ

104038
>QRZWKUHDG%LVVHQWEDFNWRUXQQDEOH
EHIRUHLWVHWVWKHYDOXHRIEDODQFHWR@

 7KUHDG$UXQVDJDLQSLFNLQJXSZKHUHLWOHIWRII
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
$ 3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV

 7KUHDG%UXQVDJDLQDQGSLFNVXSH[DFWO\ZKHUHLWOHIWRII
:HORVWWKHODVWXSGDWHV
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
WKDW7KUHDG$PDGH
1RZEDODQFHLV

<LNHV
7KUHDG%KDGSUHYLRXVO\
GRQHD¶UHDG·RIWKHYDOXH
% 7KUHDG$XSGDWHGLWWREXW
RIEDODQFHDQGZKHQ%
QRZ%FDPHEDFNDQGVWHSSHG ZRNHXSLWMXVWNHSWJRLQJ
RQWRSRIWKHXSGDWH$PDGH DVLILWQHYHUPLVVHGDEHDW
DVLI$·VXSGDWHQHYHUKDSSHQHG
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
V\QFKURQL]LQJPHWKRGV

5ISM\PMQVKZMUMV\UM\PWLI\WUQK
;aVKPZWVQbMQ\
3YNCHRONIZINGTHEINCREMENT METHODSOLVESTHEh,OST
5PDATEvPROBLEM BECAUSEITKEEPSTHETWOSTEPSINTHEMETHOD 2QFHDWKUHDGHQWHUV
ASONEUNBREAKABLEUNIT WKHPHWKRGZHKDYH
WRPDNHVXUHWKDWDOO
WKHVWHSVLQWKHPHWKRG
SXEOLFV\QFKURQL]HGYRLGLQFUHPHQW ^
LQWL EDODQFH FRPSOHWH DVRQH
EDODQFH L DWRPLFSURFHVV EHIRUH
` DQ\RWKHUWKUHDGFDQ
HQWHUWKHPHWKRG

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: %
3OUNDSLIKEITSAGOODIDEATOSYNCHRONIZE
EVERYTHING JUSTTOBETHREAD SAFE 

GR6WXII GRHVQ·WQHHGWR
A: .OPE ITSNOTAGOODIDEA3YNCHRONIZATIONDOESNT EHV\QFKURQL]HGVRZHGRQ·W 
COMEFORFREE&IRST ASYNCHRONIZEDMETHODHASACERTAIN V\QFKURQL]HWKHZKROHPHWKRG
AMOUNTOFOVERHEAD)NOTHERWORDS WHENCODEHITSA SXEOLFYRLGJR ^
SYNCHRONIZEDMETHOD THERESGOINGTOBEAPERFORMANCEHIT GR6WXII 
ALTHOUGHTYPICALLY YOUDNEVERNOTICEIT WHILETHEMATTEROF
hISTHEKEYAVAILABLEvISRESOLVED V\QFKURQL]HG WKLV ^
FULWLFDO6WXII 
3ECOND ASYNCHRONIZEDMETHODCANSLOWYOURPROGRAM
PRUH&ULWLFDO6WXII 
DOWNBECAUSESYNCHRONIZATIONRESTRICTSCONCURRENCY)N
`
OTHERWORDS ASYNCHRONIZEDMETHODFORCESOTHERTHREADSTO
`
GETINLINEANDWAITTHEIRTURN4HISMIGHTNOTBEAPROBLEM 1RZRQO\WKHVH P
INYOURCODE BUTYOUHAVETOCONSIDERIT LQWRRQHDWRPLFWXQZR
LW :
HWKRGFDOOVDUHJURXSHG

V\QFKURQL]HGNH\ZRUG KHQ\RXXVHWKH
4HIRD ANDMOSTFRIGHTENING SYNCHRONIZEDMETHODSCANLEAD :
UDWKHUWKDQLQ WK ,7+,1DPHWKRG
KDYHWRSURYLGHDDQPH RGGHFODUDWLRQ
TODEADLOCK3EEPAGE
!GOODRULEOFTHUMBISTOSYNCHRONIZEONLYTHEBARE REMHFWZKRVHNH\WD UJXPHQWWKDWLVW\KHRX 
MINIMUMTHATSHOULDBESYNCHRONIZED!NDINFACT YOU KHWKUHDGQHHGVWRJH
$OWKRXJKWKHUHDUHRWK W
CANSYNCHRONIZEATAGRANULARITYTHATSEVENSMALLERTHAN
ZLOODOPRVWDOZD\ \QFK HU Z D\ VW RGRLW RX
AMETHOD7EDONTUSEITINTHEBOOK BUTYOUCANUSETHE
SYNCHRONIZEDKEYWORDTOSYNCHRONIZEATTHEMOREFINE REMHFW WKLV 7KVV URQL]HRQWKHFXU\ UHQW
GRAINEDLEVELOFONEORMORESTATEMENTS RATHERTHANATTHE ORFNLIWKHZKROHDW ·VWKHVDPHREM
PHWKRGZHUHV\QFHFKUWRQ\RX·G
WHOLE METHODLEVEL L]HG
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

 7KUHDG$UXQVIRUDZKLOH
$WWHPSWWRHQWHUWKHLQFUHPHQW PHWKRG
7KHPHWKRGLVV\QFKURQL]HGVRJHWWKHNH\IRUWKLVREMHFW
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
$ %DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
5HWXUQWKHNH\ LWFRPSOHWHGWKHLQFUHPHQW PHWKRG 
5HHQWHUWKHLQFUHPHQW PHWKRGDQGJHWWKHNH\
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ

>QRZWKUHDG$LVVHQWEDFNWRUXQQDEOHEXWVLQFHLWKDVQRW
FRPSOHWHGWKHV\QFKURQL]HGPHWKRG7KUHDG$NHHSVWKHNH\@

 7KUHDG%LVVHOHFWHGWRUXQ

$WWHPSWWRHQWHUWKHLQFUHPHQW PHWKRG7KHPHWKRGLV
V\QFKURQL]HGVRZHQHHGWRJHWWKHNH\

% 7KHNH\LVQRWDYDLODEOH

>QRZWKUHDG%LVVHQWLQWRDµREMHFWORFNQRWDYDLODEOHORXQJH@

 7KUHDG$UXQVDJDLQSLFNLQJXSZKHUHLWOHIWRII
 UHPHPEHULWVWLOOKDVWKHNH\
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
$ 5HWXUQWKHNH\

>QRZWKUHDG$LVVHQWEDFNWRUXQQDEOHEXWVLQFHLW
KDVFRPSOHWHGWKHLQFUHPHQW PHWKRGWKHWKUHDG
GRHV127KROGRQWRWKHNH\@

 7KUHDG%LVVHOHFWHGWRUXQ

$WWHPSWWRHQWHUWKHLQFUHPHQW PHWKRG7KHPHWKRGLV
V\QFKURQL]HGVRZHQHHGWRJHWWKHNH\

% 7KLVWLPHWKHNH\,6DYDLODEOHJHWWKHNH\
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
>FRQWLQXHVWRUXQ@

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKUHDGGHDGORFN

<PMLMILTa[QLMWN[aVKPZWVQbI\QWV
"ECAREFULWHENYOUUSESYNCHRONIZEDCODE BECAUSENOTHING
WILLBRINGYOURPROGRAMTOITSKNEESLIKETHREADDEADLOCK
4HREADDEADLOCKHAPPENSWHENYOUHAVETWOTHREADS BOTHOF
WHICHAREHOLDINGAKEYTHEOTHERTHREADWANTS4HERESNOWAY
OUTOFTHISSCENARIO SOTHETWOTHREADSWILLSIMPLYSITANDWAIT
!NDWAIT!NDWAIT
)FYOUREFAMILIARWITHDATABASESOROTHERAPPLICATIONSERVERS
YOUMIGHTRECOGNIZETHEPROBLEMDATABASESOFTENHAVEA
LOCKINGMECHANISMSOMEWHATLIKESYNCHRONIZATION"UTA
REALTRANSACTIONMANAGEMENTSYSTEMCANSOMETIMESDEALWITH $OOLWWDNHVIRU
DEADLOCK)TMIGHTASSUME FOREXAMPLE THATDEADLOCKMIGHT GHDGORFNDUHWZR
HAVEOCCURREDWHENTWOTRANSACTIONSARETAKINGTOOLONGTO REMHFWVDQGWZR
COMPLETE"UTUNLIKE*AVA THEAPPLICATIONSERVERCANDOA WKUHDGV
hTRANSACTIONROLLBACKvTHATRETURNSTHESTATEOFTHEROLLED BACK
TRANSACTIONTOWHEREITWASBEFORETHETRANSACTIONTHEATOMIC
PART BEGAN IRR
*AVAHASNOMECHANISMTOHANDLEDEADLOCK)TWONTEVENKNOW $ %
DEADLOCKOCCURRED3OITSUPTOYOUTODESIGNCAREFULLY)FYOU
EDU
lNDYOURSELFWRITINGMUCHMULTITHREADEDCODE YOUMIGHT
WANTTOSTUDYh*AVA4HREADSvBY3COTT/AKSAND(ENRY7ONG
FORDESIGNTIPSONAVOIDINGDEADLOCK/NEOFTHEMOSTCOMMON
TIPSISTOPAYATTENTIONTOTHEORDERINWHICHYOURTHREADSARE
STARTED

$VLPSOHGHDGORFNVFHQDULR

 7KUHDG$HQWHUVD  7KUHDG%HQWHUVD  7KUHDG$ZDNHVXS VWLOO


V\QFKURQL]HGPHWKRG V\QFKURQL]HGPHWKRG KROGLQJWKHIRRNH\ 
RIREMHFWIRRDQGJHWV RIREMHFWEDUDQGJHWV DQGWULHVWRHQWHUD

$ WKHNH\
IRR
% WKHNH\
$ V\QFKURQL]HGPHWKRGRQ
REMHFWEDUEXWFDQ¶WJHW
EDU
WKDWNH\EHFDXVH%KDV
7KUHDG$JRHVWR 7KUHDG%WULHVWRHQWHU LW$JRHVWRWKHZDLWLQJ
VOHHSKROGLQJWKH DV\QFKURQL]HGPHWKRG ORXQJHXQWLOWKHEDUNH\LV
IRRNH\ RIREMHFWIRREXWFDQ¶W DYDLODEOH LWQHYHUZLOOEH
JHWWKDWNH\ EHFDXVH
$ $KDVLW %JRHV
7KUHDG$FDQ¶WUXQXQWLO
LWFDQJHWWKHEDUNH\
% WRWKHZDLWLQJORXQJH $ EXW%LVKROGLQJWKHEDU
IRR
XQWLOWKHIRRNH\LV
NH\DQG%FDQ¶WUXQXQWLOLW
DYDLODEOH%NHHSVWKH IRR
EDU JHWVWKHIRRNH\WKDW$LV
EDUNH\
KROGLQJDQG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

:MDD=LHGAFLK
ƒ 7KHVWDWLF7KUHDGVOHHS PHWKRGIRUFHVDWKUHDGWROHDYHWKH
UXQQLQJVWDWHIRUDWOHDVWWKHGXUDWLRQSDVVHGWRWKHVOHHSPHWKRG
7KUHDGVOHHS  SXWVDWKUHDGWRVOHHSIRUPLOOLVHFRQGV
ƒ 7KHVOHHS PHWKRGWKURZVDFKHFNHGH[FHSWLRQ ,QWHUUXSWHG([FHSWLRQ 
VRDOOFDOOVWRVOHHS PXVWEHZUDSSHGLQDWU\FDWFKRUGHFODUHG
ƒ <RXFDQXVHVOHHS WRKHOSPDNHVXUHDOOWKUHDGVJHWDFKDQFHWRUXQ
DOWKRXJKWKHUH·VQRJXDUDQWHHWKDWZKHQDWKUHDGZDNHVXSLW·OOJRWRWKH
HQGRIWKHUXQQDEOHOLQH,WPLJKWIRUH[DPSOHJRULJKWEDFNWRWKHIURQW
,QPRVWFDVHVDSSURSULDWHO\WLPHGVOHHS FDOOVDUHDOO\RXQHHGWRNHHS
\RXUWKUHDGVVZLWFKLQJQLFHO\
ƒ <RXFDQQDPHDWKUHDGXVLQJWKH \HWDQRWKHUVXUSULVH VHW1DPH 
PHWKRG$OOWKUHDGVJHWDGHIDXOWQDPHEXWJLYLQJWKHPDQH[SOLFLWQDPH
FDQKHOS\RXNHHSWUDFNRIWKUHDGVHVSHFLDOO\LI\RX·UHGHEXJJLQJZLWK
SULQWVWDWHPHQWV
ƒ <RXFDQKDYHVHULRXVSUREOHPVZLWKWKUHDGVLIWZRRUPRUHWKUHDGVKDYH
DFFHVVWRWKHVDPHREMHFWRQWKHKHDS
ƒ 7ZRRUPRUHWKUHDGVDFFHVVLQJWKHVDPHREMHFWFDQOHDGWRGDWD
FRUUXSWLRQLIRQHWKUHDGIRUH[DPSOHOHDYHVWKHUXQQLQJVWDWHZKLOHVWLOO
LQWKHPLGGOHRIPDQLSXODWLQJDQREMHFW·VFULWLFDOVWDWH
ƒ 7RPDNH\RXUREMHFWVWKUHDGVDIHGHFLGHZKLFKVWDWHPHQWVVKRXOGEH
WUHDWHGDVRQHDWRPLFSURFHVV,QRWKHUZRUGVGHFLGHZKLFKPHWKRGV
PXVWUXQWRFRPSOHWLRQEHIRUHDQRWKHUWKUHDGHQWHUVWKHVDPHPHWKRG
RQWKHVDPHREMHFW
ƒ 8VHWKHNH\ZRUGV\QFKURQL]HGWRPRGLI\DPHWKRGGHFODUDWLRQ
ZKHQ\RXZDQWWRSUHYHQWWZRWKUHDGVIURPHQWHULQJWKDWPHWKRG
ƒ (YHU\REMHFWKDVDVLQJOHORFNZLWKDVLQJOHNH\IRUWKDWORFN0RVWRIWKH
WLPHZHGRQ·WFDUHDERXWWKDWORFNORFNVFRPHLQWRSOD\RQO\ZKHQDQ
REMHFWKDVV\QFKURQL]HGPHWKRGV
ƒ :KHQDWKUHDGDWWHPSWVWRHQWHUDV\QFKURQL]HGPHWKRGWKHWKUHDG
PXVWJHWWKHNH\IRUWKHREMHFW WKHREMHFWZKRVHPHWKRGWKHWKUHDG
LVWU\LQJWRUXQ ,IWKHNH\LVQRWDYDLODEOH EHFDXVHDQRWKHUWKUHDG
DOUHDG\KDVLW WKHWKUHDGJRHVLQWRDNLQGRIZDLWLQJORXQJHXQWLOWKHNH\
EHFRPHVDYDLODEOH
ƒ (YHQLIDQREMHFWKDVPRUHWKDQRQHV\QFKURQL]HGPHWKRGWKHUHLVVWLOO
RQO\RQHNH\2QFHDQ\WKUHDGKDVHQWHUHGDV\QFKURQL]HGPHWKRGRQ
WKDWREMHFWQRWKUHDGFDQHQWHUDQ\RWKHUV\QFKURQL]HGPHWKRGRQWKH
VDPHREMHFW7KLVUHVWULFWLRQOHWV\RXSURWHFW\RXUGDWDE\V\QFKURQL]LQJ
DQ\PHWKRGWKDWPDQLSXODWHVWKHGDWD

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDOFKDWFOLHQW

6M_IVLQUXZW^ML;QUXTM+PI\+TQMV\
7AYBACKNEARTHEBEGINNINGOFTHISCHAPTER WEBUILTTHE3IMPLE#HAT#LIENTTHATCOULDSEND
OUTGOINGMESSAGESTOTHESERVERBUTCOULDNTRECEIVEANYTHING2EMEMBER4HATSHOWWE
GOTONTOTHISWHOLETHREADTOPICINTHElRSTPLACE BECAUSEWENEEDEDAWAYTODOTWOTHINGS
ATONCESENDMESSAGESTOTHESERVERINTERACTINGWITHTHE'5) WHILESIMULTANEOUSLYREADING
INCOMINGMESSAGESFROMTHESERVER DISPLAYINGTHEMINTHESCROLLINGTEXTAREA
LPSRUWMDYDLR 
<HVWKHUHUHDOO\,6DQ
HQGWRWKLVFKDSW
LPSRUWMDYDQHW 
LPSRUWMDYDXWLO  %XWQRW\HW HU
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV6LPSOH&KDW&OLHQW^

-7H[W$UHDLQFRPLQJ
-7H[W)LHOGRXWJRLQJ
%XIIHUHG5HDGHUUHDGHU
3ULQW:ULWHUZULWHU
6RFNHWVRFN

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
HHQ
6LPSOH&KDW&OLHQWFOLHQW QHZ6LPSOH&KDW&OLHQW 
FOLHQWJR  KL V LV P RV WO\ * 8,FRGH\RX·HSYHWVWKH
7 VSHFLDOH[F
` EHIRUH1RWSKLDUQJWZKHUHZHVWDUWWKH
KLJKOLJKWHG ·WKUHDG
SXEOLFYRLGJR ^
QHZ¶UHDGHU
-)UDPHIUDPH QHZ-)UDPH ³/XGLFURXVO\6LPSOH&KDW&OLHQW´ 
-3DQHOPDLQ3DQHO QHZ-3DQHO 
LQFRPLQJ QHZ-7H[W$UHD  
LQFRPLQJVHW/LQH:UDS WUXH 
LQFRPLQJVHW:UDS6W\OH:RUG WUXH 
LQFRPLQJVHW(GLWDEOH IDOVH 
-6FUROO3DQHT6FUROOHU QHZ-6FUROO3DQH LQFRPLQJ 
T6FUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
T6FUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5  
RXWJRLQJ QHZ-7H[W)LHOG  
-%XWWRQVHQG%XWWRQ QHZ-%XWWRQ ³6HQG´ 
VHQG%XWWRQDGG$FWLRQ/LVWHQHU QHZ6HQG%XWWRQ/LVWHQHU 
PDLQ3DQHODGG T6FUROOHU  :H·UHVWDUWLQJDQHZWK
PDLQ3DQHODGG RXWJRLQJ  XVLQJDQHZLQQHU UHDG
PDLQ3DQHODGG VHQG%XWWRQ  WKH5XQQDEOH MRE FOD VVDV
IRUWKH
VHW8S1HWZRUNLQJ  WKUH DG7KHWKU G·VMRELV
WRUHDGIURPWKHHDVH
7KUHDGUHDGHU7KUHDG QHZ7KUHDG QHZ,QFRPLQJ5HDGHU 
VRFNHWVWUHDPGLVSOD\UYLQJ
HU·V
UHDGHU7KUHDGVWDUW 
 DQ\LQFRPLQJPHVVDJHVLQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO  VFUROOLQJWH[WDUHD WKH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

`FORVHJR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

SULYDWHYRLGVHW8S1HWZRUNLQJ ^

WU\^
VRFN QHZ6RFNHW ³´ 
,QSXW6WUHDP5HDGHUVWUHDP5HDGHU QHZ,QSXW6WUHDP5HDGHU VRFNJHW,QSXW6WUHDP 
UHDGHU QHZ%XIIHUHG5HDGHU VWUHDP5HDGHU 
ZULWHU QHZ3ULQW:ULWHU VRFNJHW2XWSXW6WUHDP 
KHLQSXW
6\VWHPRXWSULQWOQ ³QHWZRUNLQJHVWDEOLVKHG´ 
H· UH X VL QJ W KHVRFNHWWRJHUHWHWDOUHDG\XVLQJ
`FDWFK ,2([FHSWLRQH[ ^ : DPV:HZ 
H[SULQW6WDFN7UDFH  DQGRXWSXWVVWWUUHHDPWRVHQGWRWKHVHUYVHU R
H RX WS XW V WUHD P
WK VLQJWKHLQSXW
`
`FORVHVHW8S1HWZRUNLQJ EXWQRZZH·UHX UHDGFDQJHW
HZ¶UHDGHU·YHWK
WKDWWKHQUR KHV HU U
PHVVDJHVI PW
SXEOLFFODVV6HQG%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WU\^
ZULWHUSULQWOQ RXWJRLQJJHW7H[W 
ZULWHUÀXVK  1RWKLQJQHZKHUH:KHQWKHXVHU

WKHVHQGEXWWRQWKLVPHW FOLFNV
`FDWFK ([FHSWLRQH[ ^ KRGVH QGV
FRQWHQWVRIWKHWH[WILHOGWR WKH
H[SULQW6WDFN7UDFH  WKHVHUYHU
`
RXWJRLQJVHW7H[W ³´ 
RXWJRLQJUHTXHVW)RFXV 
`
`FORVHLQQHUFODVV

SXEOLFFODVV,QFRPLQJ5HDGHULPSOHPHQWV5XQQDEOH^
WKUHDGGRHV
SXEOLFYRLGUXQ ^
7KLVLVZKDWWKH
6WULQJPHVVDJH
GLWVWD\VLQD
WU\^ ,QWKHUXQ PDVHWZKRKDWLWJHWVIURP
ORRS DVORQJVQRWQXOO UHDGLQJD
WKHVHUYHUL HDQGDGGLQJHDFKOLQH
ZKLOH PHVVDJH UHDGHUUHDG/LQH  QXOO ^
6\VWHPRXWSULQWOQ ³UHDG³PHVVDJH 
OLQHDWDWLPOLQJWH[WDUHD DORQJ
LQFRPLQJDSSHQG PHVVDJH³?Q´ 
 WRWKHVFURO LQHFKDUDFWHU 
`FORVHZKLOH ZLWKDQHZO
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHUXQ
`FORVHLQQHUFODVV

`FORVHRXWHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FKDWVHUYHUFRGH

4GCF[DCMG
%QFG
<PMZMITTaZMITTa[QUXTM+PI\;MZ^MZ
9OUCANUSETHISSERVERCODEFORBOTHVERSIONSOFTHE#HAT#LIENT%VERYPOSSIBLE
DISCLAIMEREVERDISCLAIMEDISINEFFECTHERE4OKEEPTHECODESTRIPPEDDOWNTOTHE
BAREESSENTIALS WETOOKOUTALOTOFPARTSTHATYOUDNEEDTOMAKETHISAREALSERVER
)NOTHERWORDS ITWORKS BUTTHEREAREATLEASTAHUNDREDWAYSTOBREAKIT)FYOU
WANTA2EALLY'OOD3HARPEN9OUR0ENCILFORAFTERYOUVElNISHEDTHISBOOK COME
BACKANDMAKETHISSERVERCODEMOREROBUST
!NOTHERPOSSIBLE3HARPEN9OUR0ENCIL THATYOUCOULDDORIGHTNOW ISTOANNOTATE
THISCODEYOURSELF9OULLUNDERSTANDITMUCHBETTERIFYOUWORKOUTWHATS
HAPPENINGTHANIFWEEXPLAINEDITTOYOU4HENAGAIN THISIS2EADY BAKECODE
SOYOUREALLYDONTHAVETOUNDERSTANDITATALL)TSHEREJUSTTOSUPPORTTHETWO
VERSIONSOFTHE#HAT#LIENT
7RUXQWKHFKDWFOLHQW\RXQHHGWZR
WHUPLQDOV)LUVWODXQFKWKLVVHUYHU
LPSRUWMDYDLR  IURPRQHWHUPLQDOWKHQODXQFKWKH
LPSRUWMDYDQHW  FOLHQWIURPDQRWKHUWHUPLQDO
LPSRUWMDYDXWLO 

SXEOLFFODVV9HU\6LPSOH&KDW6HUYHU^

$UUD\/LVWFOLHQW2XWSXW6WUHDPV

SXEOLFFODVV&OLHQW+DQGOHULPSOHPHQWV5XQQDEOH^
%XIIHUHG5HDGHUUHDGHU
6RFNHWVRFN

 SXEOLF&OLHQW+DQGOHU 6RFNHWFOLHQW6RFNHW ^
WU\^
VRFN FOLHQW6RFNHW
,QSXW6WUHDP5HDGHULV5HDGHU QHZ,QSXW6WUHDP5HDGHU VRFNJHW,QSXW6WUHDP 
UHDGHU QHZ%XIIHUHG5HDGHU LV5HDGHU 

`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHFRQVWUXFWRU

SXEOLFYRLGUXQ ^
6WULQJPHVVDJH
WU\^
ZKLOH PHVVDJH UHDGHUUHDG/LQH  QXOO ^
6\VWHPRXWSULQWOQ ³UHDG³PHVVDJH 
WHOO(YHU\RQH PHVVDJH 

`FORVHZKLOH
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHUXQ
`FORVHLQQHUFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV



SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ9HU\6LPSOH&KDW6HUYHU JR 
`

SXEOLFYRLGJR ^
FOLHQW2XWSXW6WUHDPV QHZ$UUD\/LVW 
WU\^
6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  

ZKLOH WUXH ^
6RFNHWFOLHQW6RFNHW VHUYHU6RFNDFFHSW 
3ULQW:ULWHUZULWHU QHZ3ULQW:ULWHU FOLHQW6RFNHWJHW2XWSXW6WUHDP 
FOLHQW2XWSXW6WUHDPVDGG ZULWHU 

7KUHDGW QHZ7KUHDG QHZ&OLHQW+DQGOHU FOLHQW6RFNHW 


WVWDUW 
6\VWHPRXWSULQWOQ ³JRWDFRQQHFWLRQ´ 
`

`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`FORVHJR

SXEOLFYRLGWHOO(YHU\RQH 6WULQJPHVVDJH ^

,WHUDWRULW FOLHQW2XWSXW6WUHDPVLWHUDWRU 
ZKLOH LWKDV1H[W ^
WU\^
3ULQW:ULWHUZULWHU  3ULQW:ULWHU LWQH[W 
ZULWHUSULQWOQ PHVVDJH 
ZULWHUÀXVK 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`

`HQGZKLOH

`FORVHWHOO(YHU\RQH
`FORVHFODVV


\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
V\QFKURQL]DWLRQTXHVWLRQV

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HATABOUTPROTECTINGSTATIC Q: 7HYDONTYOUJUSTSYNCHRONIZE
VARIABLESTATE)FYOUHAVESTATIC ALLTHEGETTERSANDSETTERSFROMTHE
METHODSTHATCHANGETHESTATICVARIABLE CLASSWITHTHEDATAYOURETRYINGTO
STATE CANYOUSTILLUSESYNCHRONIZATION PROTECT,IKE WHYCOULDNTWEHAVE
SYNCHRONIZEDJUSTTHECHECK"ALANCE

A: 9ES2EMEMBERTHATSTATIC
ANDWITHDRAW METHODSFROMCLASS
"ANK!CCOUNT INSTEADOFSYNCHRONIZING
METHODSRUNAGAINSTTHECLASSANDNOT THEMAKE7ITHDRAWAL METHODFROM
AGAINSTANINDIVIDUALINSTANCEOFTHECLASS THE2UNNABLESCLASS
3OYOUMIGHTWONDERWHOSEOBJECTSLOCK
WOULDBEUSEDONASTATICMETHOD!FTER
ALL THEREMIGHTNOTEVENBEANYINSTANCES
OFTHATCLASS&ORTUNATELY JUSTASEACH
A: !CTUALLY WESHOULDHAVE
SYNCHRONIZEDTHOSEMETHODS TOPREVENT
OBJECTHASITSOWNLOCK EACHLOADEDCLASS OTHERTHREADSFROMACCESSINGTHOSE
HASALOCK4HATMEANSTHATIFYOUHAVE METHODSINOTHERWAYS7EDIDNTBOTHER
THREE$OGOBJECTSONYOURHEAP YOUHAVE BECAUSEOUREXAMPLEDIDNTHAVEANY
ATOTALOFFOUR$OG RELATEDLOCKS4HREE OTHERCODEACCESSINGTHEACCOUNT
BELONGINGTOTHETHREE$OGINSTANCES
"UTSYNCHRONIZINGTHEGETTERS
ANDONEBELONGINGTOTHE$OGCLASSITSELF
ANDSETTERSORINTHISCASETHE
7HENYOUSYNCHRONIZEASTATICMETHOD
CHECK"ALANCE ANDWITHDRAW ISNT
*AVAUSESTHELOCKOFTHECLASSITSELF3OIF
ENOUGH2EMEMBER THEPOINTOF
YOUSYNCHRONIZETWOSTATICMETHODSINA
SYNCHRONIZATIONISTOMAKEASPECIFIC
SINGLECLASS ATHREADWILLNEEDTHECLASS
SECTIONOFCODEWORK!4/-)#!,,9)N
LOCKTOENTEREITHEROFTHEMETHODS
OTHERWORDS ITSNOTJUSTTHEINDIVIDUAL
METHODSWECAREABOUT ITSMETHODS
Q: 7HATARETHREADPRIORITIES)VE THATREQUIREMORETHANONESTEPTO
COMPLETE4HINKABOUTIT)FWEHADNOT
HEARDTHATSAWAYYOUCANCONTROL
SCHEDULING SYNCHRONIZEDTHEMAKE7ITHDRAWAL
METHOD 2YANWOULDHAVECHECKEDTHE
BALANCEBYCALLINGTHESYNCHRONIZED
A: 4HREADPRIORITIESMIGHTHELP
CHECK"ALANCE ANDTHENIMMEDIATELY
EXITEDTHEMETHODANDRETURNEDTHEKEY
YOUINFLUENCETHESCHEDULER BUTTHEY
STILLDONTOFFERANYGUARANTEE4HREAD /FCOURSEHEWOULDGRABTHEKEYAGAIN
PRIORITIESARENUMERICALVALUESTHATTELL AFTERHEWAKESUP SOTHATHECANCALL
THESCHEDULERIFITCARES HOWIMPORTANTA THESYNCHRONIZEDWITHDRAW METHOD
THREADISTOYOU)NGENERAL THESCHEDULER BUTTHISSTILLLEAVESUSWITHTHESAME
WILLKICKALOWERPRIORITYTHREADOUTOFTHE PROBLEMWEHADBEFORESYNCHRONIZATION
RUNNINGSTATEIFAHIGHERPRIORITYTHREAD 2YANCANCHECKTHEBALANCE GOTOSLEEP
SUDDENLYBECOMESRUNNABLE"UTONE AND-ONICACANCOMEINANDALSOCHECK
MORETIME SAYITWITHMENOW hTHERE THEBALANCEBEFORE2YANHASACHANCETO
ISNOGUARANTEEv7ERECOMMENDTHAT WAKESUPANDCOMPLETESHISWITHDRAWAL
YOUUSEPRIORITIESONLYIFYOUWANTTO 3OSYNCHRONIZINGALLTHEACCESSMETHODS
INFLUENCEPERFORMANCE BUTNEVER EVER ISPROBABLYAGOODIDEA TOPREVENT
RELYONTHEMFORPROGRAMCORRECTNESS OTHERTHREADSFROMGETTINGIN BUTYOU
STILLNEEDTOSYNCHRONIZETHEMETHODS
THATHAVESTATEMENTSTHATMUSTEXECUTE
ASONEATOMICUNIT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

Code Kitchen

Licensed by
Eduard Simons \RX U P H VV D J H  JHWVVHQWW
OD\HUVDORQJ

R

GDQFHEHDW WKHRWKHUS XUUHQWEHDW

104038
ZLWK\RXUF HQ\RXKLW
SDWWHUQZK
´VHQG,Wµ
$QG\JURRYH

&KULVJURRYHUHYLVHG
LQFRPLQJPH
SOD\HUV&OLFVVDJHVIURP
1LJHOGDQFHEHDW

WKHSDWWHUQ NRQHWRORDG
ZLWKLWDQG WKDWJRHV
¶6WDUW·WRS WKHQFOLFN
OD\LW
This is the last version of the BeatBox!
It connects to a simple MusicServer so that you can
send and receive beat patterns with other clients.
The code is really long, so the complete listing is
actually in Appendix A.

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH&RGH0DJQHWV

Code Magnets
!WORKING*AVAPROGRAMISSCRAMBLEDUPONTHEFRIDGE#AN
YOUADDTHECODESNIPPETSONTHENEXTPAGETOTHEEMPTY
1dQ^OU_Q CLASSESBELOW TOMAKEAWORKING*AVAPROGRAMTHATPRO
DUCESTHEOUTPUTLISTED3OMEOFTHECURLYBRACESFELLONTHE
FLOORANDTHEYWERETOOSMALLTOPICKUP SOFEELFREETOADDAS
MANYOFTHOSEASYOUNEED

SXEOLFFODVV7HVW7KUHDGV^ FODVV7KUHDG2QH

FODVV$FFXP^
FODVV7KUHDG7ZR

)LOH(GLW:LQGRZ+HOS6HZLQJ

MDYD7HVW7KUHDGV
RQH
WZR
"ONUS1UESTION7HYDOYOUTHINKWEUSEDTHE
MODIFIERSWEDIDINTHE!CCUMCLASS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

Code Magnets, continued..


$FFXPD $FFXPJHW$FFXP 


´WZR´DJHW&RXQW
7KUHDGRQH QHZ7
KUHDG W  6\VWHPRXWSULQWOQ

Z7KUHDG7ZR 
 WU\^
G([FHSWLRQH[ ^` 7KUHDG7ZRW QH
`FDWFK ,QWHUUXSWH

FRXQWHU DGG
UHWXUQFRXQWHU

7KUHDGW
Z R QHZ
7KU HDG W  LPSOHPHQWV5XQQDEOH^ RQHVWDUW 

7KUHDGVOHHS  
$FFXPD $FFXPJHW$FFXP 

G([FHSWLRQH[ ^`
`FDWFK ,QWHUUXSWH
SXEOLFVWDWLF$FFXPJHW$FFXP ^


XPD QHZ$FFXP
SULYDWHVWDWLF$FF
SULYDWHLQWFRXQ
WHU 
Q  ^
SXEOLFYRLGUX
DXSGDWH&RXQWHU 7KUHDGV
  OHHS 


IRU LQW[ [


[  ^ LPSOHPHQWV5XQQDEOH^


DXSGDWH&RXQWHU 
SXEOLFL UHWXUQD
QWJHW&R
XQW ^
6\VWHPRXWSULQW
OQ ´RQH´DJHW&
RXQW 
SXEOLFYRLGXSGD
WH&RXQ WHU LQWDGG ^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
IRU LQW[ [
[  WZRVWDUW 
^

WU\^
Q ^
SXEOLFYRLGUX SULYDWH$FFXP ^` Z7KUHDG2QH 
7KUHDG2QHW QH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

SXEOLFFODVV7HVW7KUHDGV^ %XERCISE3OLUTIONS
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7KUHDG2QHW QHZ7KUHDG2QH 
7KUHDG7ZRW QHZ7KUHDG7ZR 
7KUHDGRQH QHZ7KUHDG W 
7KUHDGWZR QHZ7KUHDG W 
RQHVWDUW 
WZRVWDUW 
7KUHDGVIURPWZRGLIIHUHQWFODVVHVDUHXSGDWLQJ
QFH
DWLFLQVWD
` WKHVDPHREMHFWLQDWKLUGFODVVEHFDXVHERWK
` FUHDWHDVWFFXP WKUHDGVDUHDFFHVVLQJDVLQJOHLQVWDQFHRI$FFXP
RIFODVV$ 7KHOLQHRIFRGH

FODVV$FFXP^ PRIVATESTATIC!CCUMANEW!CCUM FUHDWHVD


SULYDWHVWDWLF$FFXPD QHZ$FFXP  VWDWLFLQVWDQFHRI$FFXP UHPHPEHUVWDWLFPHDQV
SULYDWHLQWFRXQWHU  RQHSHUFODVV DQGWKHSULYDWHFRQVWUXFWRULQ
$FFXPPHDQVWKDWQRRQHHOVHFDQPDNHDQ$FFXP
QVWUXFW RU
SULYDWH$FFXP ^` $SULYDWHFR REMHFW7KHVHWZRWHFKQLTXHV SULYDWHFRQVWUXFWRU
DQGVWDWLFJHWWHUPHWKRG XVHGWRJHWKHUFUHDWH
SXEOLFVWDWLF$FFXPJHW$FFXP ^ ZKDW·VNQRZQDVD¶6LQJOHWRQ·DQ22SDWWHUQWR
UHWXUQD UHVWULFWWKHQXPEHURILQVWDQFHVRIDQREMHFW
` WKDWFDQH[LVWLQDQDSSOLFDWLRQ 8VXDOO\WKHUH·V
MXVWDVLQJOHLQVWDQFHRID6LQJOHWRQ³KHQFHWKH
SXEOLFYRLGXSGDWH&RXQWHU LQWDGG ^ QDPH EXW\RXFDQXVHWKHSDWWHUQWRUHVWULFWWKH
FRXQWHU DGG LQVWDQFHFUHDWLRQLQZKDWHYHUZD\\RXFKRRVH
`

SXEOLFLQWJHW&RXQW ^
UHWXUQFRXQWHU
` FODVV7KUHDG7ZRLPSOHPHQWV5XQQDEOH^
` $FFXPD $FFXPJHW$FFXP 
SXEOLFYRLGUXQ ^
FODVV7KUHDG2QHLPSOHPHQWV5XQQDEOH^
IRU LQW[ [[ ^
$FFXPD $FFXPJHW$FFXP 
DXSGDWH&RXQWHU  
SXEOLFYRLGUXQ ^ WU\^
IRU LQW[ [[ ^ 7KUHDGVOHHS  
DXSGDWH&RXQWHU   `FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^`
WU\^ `
7KUHDGVOHHS   6\VWHPRXWSULQWOQ ´WZR´DJHW&RXQW 

`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^` `


`
`
6\VWHPRXWSULQWOQ ´RQH´DJHW&RXQW 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
QHWZRUNLQJDQGWKUHDGV

1HDUPLVVDWWKH$LUORFN
$V6DUDKMRLQHGWKHRQERDUGGHYHORSPHQWWHDP¶VGHVLJQUHYLHZPHHWLQJVKHJD]HGRXW
WKHSRUWDODWVXQULVHRYHUWKH,QGLDQ2FHDQ(YHQWKRXJKWKHVKLS¶VFRQIHUHQFHURRPZDV
LQFUHGLEO\FODXVWURSKRELFWKHVLJKWRIWKHJURZLQJEOXHDQGZKLWHFUHVFHQWRYHUWDNLQJQLJKWRQ
WKHSODQHWEHORZ¿OOHG6DUDKZLWKDZHDQGDSSUHFLDWLRQ
)LYH0LQXWH  7KLVPRUQLQJ¶VPHHWLQJZDVIRFXVHGRQWKHFRQWUROV\VWHPVIRUWKHRUELWHU¶VDLUORFNV
0\VWHU\ $VWKH¿QDOFRQVWUXFWLRQSKDVHVZHUHQHDULQJWKHLUHQGWKHQXPEHURIVSDFHZDONVZDV
VFKHGXOHGWRLQFUHDVHGUDPDWLFDOO\DQGWUDI¿FZDVKLJKERWKLQDQGRXWRIWKHVKLS¶V
DLUORFNV³*RRGPRUQLQJ6DUDK´VDLG7RP³<RXUWLPLQJLVSHUIHFWZH¶UHMXVWVWDUWLQJ
WKHGHWDLOHGGHVLJQUHYLHZ´

 ³$V\RXDOONQRZ´VDLG7RP³(DFKDLUORFNLVRXW¿WWHGZLWKVSDFHKDUGHQHG*8,
WHUPLQDOVERWKLQVLGHDQGRXW:KHQHYHUVSDFHZDONHUVDUHHQWHULQJRUH[LWLQJWKHRUELWHU
WKH\ZLOOXVHWKHVHWHUPLQDOVWRLQLWLDWHWKHDLUORFNVHTXHQFHV´6DUDKQRGGHG³7RPFDQ
\RXWHOOXVZKDWWKHPHWKRGVHTXHQFHVDUHIRUHQWU\DQGH[LW"´7RPURVHDQGÀRDWHGWRWKH
ZKLWHERDUG³)LUVWKHUH¶VWKHH[LWVHTXHQFHPHWKRG¶VSVHXGRFRGH´7RPTXLFNO\ZURWHRQWKH
ERDUG
RUELWHU$LUORFN([LW6HTXHQFH 
 YHULI\3RUWDO6WDWXV 
 SUHVVXUL]H$LUORFN 
 RSHQ,QQHU+DWFK 
 FRQ¿UP$LUORFN2FFXSLHG 
 FORVH,QQHU+DWFK 
 GHFRPSUHVV$LUORFN 
 RSHQ2XWHU+DWFK 
 FRQ¿UP$LUORFN9DFDWHG 

 FORVH2XWHU+DWFK 

 ³7RHQVXUHWKDWWKHVHTXHQFHLVQRWLQWHUUXSWHGZHKDYHV\QFKURQL]HGDOORIWKH
PHWKRGVFDOOHGE\WKHRUELWHU$LUORFN([LW6HTXHQFH PHWKRG´7RPH[SODLQHG³:H¶GKDWHWR
VHHDUHWXUQLQJVSDFHZDONHULQDGYHUWHQWO\FDWFKDEXGG\ZLWKKLVVSDFHSDQWVGRZQ´

(YHU\RQHFKXFNOHGDV7RPHUDVHGWKHZKLWHERDUGEXWVRPHWKLQJGLGQ¶WIHHOULJKW
WR6DUDKDQGLW¿QDOO\FOLFNHGDV7RPEHJDQWRZULWHWKHHQWU\VHTXHQFHSVHXGRFRGHRQWKH
ZKLWHERDUG³:DLWDPLQXWH7RP´FULHG6DUDK³,WKLQNZH¶YHJRWDELJÀDZLQWKHH[LW
VHTXHQFHGHVLJQOHW¶VJREDFNDQGUHYLVLWLWLWFRXOGEHFULWLFDO´

 :K\GLG6DUDKVWRSWKHPHHWLQJ":KDWGLGVKHVXVSHFW"
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV

?PI\LQL;IZIPSVW_'

3ARAHREALIZEDTHATINORDERTOENSURETHATTHEENTIREEXIT
SEQUENCEWOULDRUNWITHOUTINTERRUPTIONTHE
RUELWHU$LUORFN([LW6HTXHQFH METHODNEEDEDTO
BESYNCHRONIZED!STHEDESIGNSTOOD ITWOULDBEPOSSIBLE
FORARETURNINGSPACEWALKERTOINTERRUPTTHE%XIT3EQUENCE
4HE%XIT3EQUENCETHREADCOULDNTBEINTERRUPTEDINTHE
MIDDLEOFANYOFTHELOWERLEVELMETHODCALLS BUTITCOULDBE
INTERRUPTEDINBETWEENTHOSECALLS3ARAHKNEWTHATTHEENTIRE
SEQUENCESHOULDBERUNASONEATOMICUNIT ANDIFTHERUELW
HU$LUORFN([LW6HTXHQFH  METHODWASSYNCHRONIZED IT
COULDNOTBEINTERRUPTEDATANYPOINT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVDQGJHQHULFV

'DWD 6KHHVKDQGDOO

VWUXFWXUHV WKLVWLPH,FRXOGKDYHMXVWOHW
-DYDSXWWKLQJVLQDOSKDEHWLFDO
RUGHU"7KLUGJUDGHUHDOO\
VXFNV:HQHYHUOHDUQ
DQ\WKLQJXVHIXO

6RUWLQJLVDVQDSLQ-DYD9OUHAVEALLTHETOOLSFORCOLLECTINGANDMANIPULATING
YOURDATAWITHOUTHAVINGTOWRITEYOUROWNSORTALGORITHMSUNLESSYOUREREADINGTHISRIGHT
NOWSITTINGINYOUR#OMPUTER3CIENCECLASS INWHICHCASE TRUSTUSˆYOUARE3/GOINGTOBE
WRITINGSORTCODEWHILETHERESTOFUSJUSTCALLAMETHODINTHE*AVA!0) 4HE*AVA#OLLECTIONS
&RAMEWORKHASADATASTRUCTURETHATSHOULDWORKFORVIRTUALLYANYTHINGYOULLEVERNEEDTODO
7ANTTOKEEPALISTTHATYOUCANEASILYKEEPADDINGTO7ANTTOFINDSOMETHINGBYNAME7ANT
TOCREATEALISTTHATAUTOMATICALLYTAKESOUTALLTHEDUPLICATES3ORTYOURCO WORKERSBYTHE
NUMBEROFTIMESTHEYVESTABBEDYOUINTHEBACK3ORTYOURPETSBYNUMBEROFTRICKSLEARNED
)TSALLHERE

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRUWLQJDOLVW

<ZIKSQVO[WVOXWX]TIZQ\aWVaW]ZR]SMJW`
#ONGRATULATIONSONYOURNEWJOBˆMANAGINGTHEAUTOMATED
JUKEBOXSYSTEMAT,OUS$INER4HERESNO*AVAINSIDETHE
JUKEBOXITSELF BUTEACHTIMESOMEONEPLAYSASONG THE
SONGDATAISAPPENDEDTOASIMPLETEXTlLE
9OURJOBISTOMANAGETHEDATATOTRACKSONGPOPULARITY
GENERATEREPORTS ANDMANIPULATETHEPLAYLISTS9OURENOT
WRITINGTHEENTIREAPPˆSOMEOFTHEOTHERSOFTWAREDEVELOPER
WAITERSAREINVOLVEDASWELL BUTYOURERESPONSIBLEFORMANAGING
ANDSORTINGTHEDATAINSIDETHE*AVAAPP!NDSINCE,OUHASATHING
AGAINSTDATABASES THISISSTRICTLYANIN MEMORYDATACOLLECTION!LL
YOUGETISTHElLETHEJUKEBOXKEEPSADDINGTO9OURJOBISTOTAKEIT
FROMTHERE
9OUVEALREADYlGUREDOUTHOWTOREADANDPARSETHElLE ANDSOFAR
YOUVEBEENSTORINGTHEDATAINAN!RRAY,IST

6RQJ/LVWW[W
&KDOOHQJH
3LQN0RRQ1LFN'UDNH 6RUWWKHVRQJVLQDOSKDEHWLFDORUGHU
6RPHUVDXOW=HUR
9OUHAVEALISTOFSONGSINAlLE WHEREEACHLINE
6KLYD0RRQ3UHP-RVKXD
REPRESENTSONESONG ANDTHETITLEANDARTISTARE
&LUFOHV%7
SEPARATEDWITHAFORWARDSLASH3OITSHOULDBESIMPLE
'HHS&KDQQHO$IUR&HOWV
TOPARSETHELINE ANDPUTALLTHESONGSINAN!RRAY,IST
3DVVHQJHU+HDGPL[
/LVWHQ7DKLWL 9OURBOSSCARESONLYABOUTTHESONGTITLES SOFORNOW
YOUCANSIMPLYMAKEALISTTHATJUSTHASTHESONGTITLES
"UTYOUCANSEETHATTHELISTISNOTINALPHABETICAL
ORDERWHATCANYOUDO
9OUKNOWTHATWITHAN!RRAY,IST THEELEMENTSARE
KEPTINTHEORDERINWHICHTHEYWEREINSERTEDINTOTHE
LIST SOPUTTINGTHEMINAN!RRAY,ISTWONTTAKECAREOF
ALPHABETIZINGTHEM UNLESSMAYBETHERESASORT
METHODINTHE!RRAY,ISTCLASS
H
KHMXNHER[GHYLF
7KLVLVWKHIULOHFRWGHPXVWUHDGWKHILOH
ZULWHV<RX DWHWKHVRQJGDWD
WKHQPDQLSXO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

0MZM¼[_PI\aW]PI^M[WNIZ_Q\PW]\\PM[WZ\"
LPSRUWMDYDXWLO 
LPSRUWMDYDLR  QJWLWOHVLQ
:H·OOVWRUHWKWHRIVR6WULQJV
SXEOLFFODVV-XNHER[^ DQ$UUD\/LV

 $UUD\/LVW6WULQJ!VRQJ/LVW QHZ$UUD\/LVW6WULQJ! 

 SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
  QHZ-XNHER[ JR 
 ` JWKH
VWDUWVORDGLQQW
7 KH P HW KR GWK DW WH VRI
QSULQWVWKHFRQ

 SXEOLFYRLGJR ^  ILOHDQGWKHW D\/LV W
  JHW6RQJV  WKHVRQJ/LV $UU
  6\VWHPRXWSULQWOQ VRQJ/LVW 
 `
QG
 UHDGWKHILOHD
FLDOKHUHMXKRVWGIRUHDFKOLQH
1RWKLQJVSHG6 PHW
 YRLGJHW6RQJV ^ FDOOWKHDG RQJ
  WU\^
   )LOH¿OH QHZ)LOH ³6RQJ/LVWW[W´ 
   %XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
   6WULQJOLQH QXOO
   ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
    DGG6RQJ OLQH 
   `

  `FDWFK ([FHSWLRQH[ ^
   H[SULQW6WDFN7UDFH 
7KHDGG
  `
&DUGLQW6KRHQJPHWKRGZRUNVMXVW
 `
WKDWKD ,2FKDSWHU RXEOLNHWKH4XL]

SLHFHV WRVNEHRWKWKHWLWOHDQG\D UHDNW OLQH
UWLVW LQWKRHW 
 YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^ QV XVLQJWKH
  6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW ³´  VSOLW PHWK ZR
RG
  VRQJ/LVWDGG WRNHQV>@  
 ` :HRQO\ZDQWWK
  DGGR HVRQJWLWOHVR
QO\WKHILUVWWRN 
` 6RQJ/LVW WKH HQWRWKH
$UUD\/LVW 

WVRXWZLWKWKH
)LOH(GLW:LQGRZ+HOS'DQFH

MDYD-XNHER[ 7KHVRQJ/LVWSULQ WKH\


>3LQN0RRQ6RPHUVDXOW VRQJVLQWKHRUGHWKUHLQ$UZKUDLFK
\/ LVW ZKLFK
6KLYD0RRQ&LUFOHV ZHUHDGGHGWR HUWKHVRQJVDUHLQ
'HHS&KDQQHO3DVVHQJHU LVWKHVDPHRUG QDOWH[WILOH 
ZLWKLQWKHRULJL
/LVWHQ@
OSKDEHWLFDO
7KLVLVGHILQLWHO\127D

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.

$UUD\/LVW$3,

*]\\PM)ZZIa4Q[\KTI[[LWM[67<PI^MI[WZ\UM\PWL
7HENYOULOOKIN!RRAY,IST THEREDOESNTSEEMTOBEANYMETHODRELATEDTOSORTING
7ALKINGUPTHEINHERITANCEHIERARCHYDIDNTHELPEITHERˆITSCLEARTHATYOUCANTCALLASORT
METHODONTHE!RRAY,IST

$UUD\/LVWKDVDORW
RIPHWKRGV
EXWWKHUH·VQRWKLQJ
KHUHWKDW
ORRNVOLNHLWZRXOGVRU
W

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

,GRVHHDFROOHFWLRQFODVV
FDOOHG7UHH6HWDQGWKHGRFV
VD\WKDWLWNHHSV\RXUGDWD
VRUWHG,ZRQGHULI,VKRXOGEH
XVLQJD7UHH6HWLQVWHDGRIDQ
$UUD\/LVW

)ZZIa4Q[\Q[VW\\PMWVTaKWTTMK\QWV
!LTHOUGH!RRAY,ISTISTHEONEYOULLUSEMOSTOFTEN

Licensed by
THEREAREOTHERSFORSPECIALOCCASIONS3OMEOFTHEKEY
U\LQJ
COLLECTIONCLASSESINCLUDE ·WZRUU\DERXWW
'RQ WKHURQHV
WROHDUQWKH:VHH·ROOJRLQWR
ULJKWQRZ DOLWWOHODWHU
  7UHH6HW
PRUHGHWDLOV

Eduard Simons
.HHSVWKHHOHPHQWVVRUWHGDQGSUHYHQWVGXSOLFDWHV

  +DVK0DS

104038
/HW·V\RXVWRUHDQGDFFHVVHOHPHQWVDVQDPHYDOXHSDLUV

  /LQNHG/LVW
'HVLJQHGWRJLYHEHWWHUSHUIRUPDQFHZKHQ\RXLQVHUWRUGHOHWH
HOHPHQWVIURPWKHPLGGOHRIWKHFROOHFWLRQ ,QSUDFWLFHDQ
$UUD\/LVWLVVWLOOXVXDOO\ZKDW\RXZDQW

 +DVK6HW
3UHYHQWVGXSOLFDWHVLQWKHFROOHFWLRQDQGJLYHQDQHOHPHQWFDQ
ILQGWKDWHOHPHQWLQWKHFROOHFWLRQTXLFNO\

 /LQNHG+DVK0DS
/LNHDUHJXODU+DVK0DSH[FHSWLWFDQUHPHPEHUWKHRUGHULQ
ZKLFKHOHPHQWV QDPHYDOXHSDLUV ZHUHLQVHUWHGRULWFDQEH
FRQILJXUHGWRUHPHPEHUWKHRUGHULQZKLFKHOHPHQWVZHUHODVW
DFFHVVHG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&ROOHFWLRQVVRUW

AW]KW]TL][MI<ZMM;M\
7ZaW]KW]TL][M\PM+ WTTMK\QWV[[WZ\UM\PWL
)FYOUPUTALLTHE3TRINGSTHESONGTITLES INTOA4REE3ETINSTEADOF
AN!RRAY,IST THE3TRINGSWOULDAUTOMATICALLYLANDINTHERIGHTPLACE
ALPHABETICALLYSORTED7HENEVERYOUPRINTEDTHELIST THEELEMENTSWOULD
ALWAYSCOMEOUTINALPHABETICALORDER
!NDTHATSGREATWHENYOUNEEDASETWELL MDYDXWLO&ROOHFWLRQV
TALKABOUTSETSINAFEWMINUTES ORWHEN VWLQDWLRQ/LVWVRXUFH
YOUKNOWTHATTHELISTMUSTALWAYSSTAY SXEOLFVWDWLFYRLGFRS\ /LVWGH
SXEOLFVWDWLF/LVWHPSW\/LVW
SORTEDALPHABETICALLY
LOO2EMHFWREM7R)LOO,W:LWK
/NTHEOTHERHAND IFYOUDONTNEEDTHE SXEOLFVWDWLFYRLGILOO /LVWOLVW7R)
LISTTOSTAYSORTED 4REE3ETMIGHTBEMORE OOHFWLRQF2EMHFWR
EXPENSIVETHANYOUNEEDˆEVERYTIMEYOU SXEOLFVWDWLFLQWIUHTXHQF\ &R
WOLVW
INSERTINTOA4REE3ET THE4REE3ETHASTOTAKE SXEOLFVWDWLFYRLGUHYHUVH /LV
THETIMETOlGUREOUTWHEREINTHETREETHENEW WLQWGLVWDQFH
SXEOLFVWDWLFYRLGURWDWH /LVWOLV
ELEMENTMUSTGO7ITH!RRAY,IST INSERTSCAN
/LVWOLVW
BEBLINDINGLYFASTBECAUSETHENEWELEMENT SXEOLFVWDWLFYRLGVKXIIOH
W
JUSTGOESINATTHEEND SXEOLFVWDWLFYRLGVRUW /LVWOLV
MHFWQHZ9DO
SXEOLFVWDWLFERROHDQUHSODF
H$OO /LVWOLVW2EMHFWROG9DO2E

Q: "UTYOU#!.ADDSOMETHINGTOAN PDQ\PRUHPHWKRGV +PPPWKHUH,6DVR


UW PHWKRG
!RRAY,ISTATASPECIlCINDEXINSTEADOFJUSTAT LQWKH&ROOHFWLRQVFOD
THEENDˆTHERESANOVERLOADEDADD METHOD VV,WWDNHV
THATTAKESANINTALONGWITHTHEELEMENTTOADD D/LVWDQGVLQFH$UU
3OWOULDNTITBESLOWERTHANINSERTINGATTHEEND D\/LVW
LPSOHPHQWVWKH/LVWLQ
WHUIDFH
$UUD\/LVW,6$/LVW
A: 9ES ITSSLOWERTOINSERTSOMETHINGINAN!RRAY,IST
WRSRO\PRUSKLVP\RX
7KDQNV
SOMEWHEREOTHERTHANATTHEEND3OUSINGTHEOVERLOADED FDQSDVVDQ
ADDINDEX ELEMENT METHODDOESNTWORKASQUICKLYASCALLING $UUD\/LVWWRDPHWK
THEADDELEMENT ˆWHICHPUTSTHEADDEDELEMENTATTHEEND RGGHFODUHG
"UTMOSTOFTHETIMEYOUUSE!RRAY,ISTS YOUWONTNEEDTOPUT
WRWDNH/LVW
SOMETHINGATASPECIFICINDEX

Q: )SEETHERESA,INKED,ISTCLASS SOWOULDNTTHATBEBETTERFOR
DOINGINSERTSSOMEWHEREINTHEMIDDLE!TLEASTIF)REMEMBERMY$ATA
3TRUCTURESCLASSFROMCOLLEGE

A: 9ES GOODSPOT4HE,INKED,ISTCANBEQUICKERWHENYOUINSERTOR
KHUHDO&ROOHFWLRQV
1RWHWKLVLV127W LHGLWKHUHE\OHDYLQJ
REMOVESOMETHINGFROMTHEMIDDLE BUTFORMOSTAPPLICATIONS THEDIFFERENCE
FODVV$3,ZHVLPSOLI LQIRUPDWLRQ ZKLFK
BETWEENMIDDLEINSERTSINTOA,INKED,ISTAND!RRAY,ISTISUSUALLYNOTENOUGH
RXWWKHJHQHULFW\SH JHV 
TOCAREABOUTUNLESSYOUREDEALINGWITHAHUGENUMBEROFELEMENTS7ELL
\RX·OOVHHLQDIHZSD
LOOKMOREAT,INKED,ISTINAFEWMINUTES

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

)LLQVO+WTTMK\QWV[[WZ\\W\PM2]SMJW`KWLM
LPSRUWMDYDXWLO 
LPSRUWMDYDLR 

SXEOLFFODVV-XNHER[^ 7KH&ROOHFWLRQVVRUW 

 $UUD\/LVW6WULQJ!VRQJ/LVW QHZ$UUD\/LVW6WULQJ! 
PHWKRGVRUWVDOLVWRI
 6WULQJVDOSKDEHWLFDOO\
 SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
  QHZ-XNHER[ JR 
 `

 SXEOLFYRLGJR ^ 
  JHW6RQJV 
&DOOWKHVWDW LF&ROOHFWLRQVW WKH
  6\VWHPRXWSULQWOQ VRQJ/LVW  KRGWKHQSULQ VRUW PHW KHVHFRQGSULQWRXW
  &ROOHFWLRQVVRUW VRQJ/LVW 
  6\VWHPRXWSULQWOQ VRQJ/LVW   OLVWDJDLQ7HWLFDORUGHU
 ` LVLQDOSKDE

 YRLGJHW6RQJV ^
  WU\^
   )LOH¿OH QHZ)LOH ³6RQJ/LVWW[W´ 
   %XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
   6WULQJOLQH QXOO
   ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
    DGG6RQJ OLQH 
   `

  `FDWFK ([FHSWLRQH[ ^
   H[SULQW6WDFN7UDFH 
  `
 `

 YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
  6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW ³´ 
  VRQJ/LVWDGG WRNHQV>@  
 ` 
`
)LOH(GLW:LQGRZ+HOS&KLOO

MDYD-XNHER[

W 
>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS %HIRUHFDOOLQJVRU
&KDQQHO3DVVHQJHU/LVWHQ@

>&LUFOHV'HHS&KDQQHO/LVWHQ3DVVHQJHU3LQN $IWHUFDOOLQJVRUW
0RRQ6KLYD0RRQ6RPHUVDXOW@

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRUWLQJ\RXURZQREMHFWV

*]\VW_aW]VMML;WVOWJRMK\[
VW\R][\[QUXTM;\ZQVO[
.OWYOURBOSSWANTSACTUAL3ONGCLASSINSTANCESINTHELIST NOTJUST 6RQJ/LVW0RUHW[W
3TRINGS SOTHATEACH3ONGCANHAVEMOREDATA4HENEWJUKEBOX
DEVICEOUTPUTSMOREINFORMATION SOTHISTIMETHElLEWILLHAVEFOUR
PIECESTOKENS INSTEADOFJUSTTWO 3LQN0RRQ1LFN'UDNH
6RPHUVDXOW=HUR
4HE3ONGCLASSISREALLYSIMPLE WITHONLYONEINTERESTINGFEATUREˆ 6KLYD0RRQ3UHP-RVKXD
THEOVERRIDDENTO3TRING METHOD2EMEMBER THETO3TRING &LUFOHV%7
METHODISDElNEDINCLASS/BJECT SOEVERYCLASSIN*AVAINHERITSTHE 'HHS&KDQQHO$IUR&HOWV
METHOD!NDSINCETHETO3TRING METHODISCALLEDONANOBJECT 3DVVHQJHU+HDGPL[
WHENITSPRINTED3YSTEMOUTPRINTLNAN/BJECT YOUSHOULD /LVWHQ7DKLWL
OVERRIDEITTOPRINTSOMETHINGMOREREADABLETHANTHEDEFAULT
UNIQUEIDENTIlERCODE7HENYOUPRINTALIST THETO3TRING
7KHQHZVRQJILOHKROGVIRXU
METHODWILLBECALLEDONEACHOBJECT DWWULEXWHVLQVWHDGRIMXVWWZ
$QGZHZDQW$//RIWKHPLQR RXU
FODVV6RQJ^ OLVWVRZHQHHGWRPDNHD6RQJ
LDEOHVIRUWKH
)RXULQVWDQFHWUYLEDUXWHVLQWKHILOH FODVVZLWKLQVWDQFHYDULDEOHVIRUDOO
 6WULQJWLWOH
 6WULQJDUWLVW
IRXUVRQJDW IRXUVRQJDWWULEXWHV
 6WULQJUDWLQJ
 6WULQJESP

 6RQJ 6WULQJW6WULQJD6WULQJU6WULQJE ^
  WLWOH W
  DUWLVW D 7KHYDULDEOHVDUHDOOVHWLQ
  UDWLQJ U WKHFRQVWUXFWRUZKHQWKH
  ESP E QHZ6RQJLVFUHDWHG
 `

 SXEOLF6WULQJJHW7LWOH ^
  UHWXUQWLWOH
 `

 SXEOLF6WULQJJHW$UWLVW ^
  UHWXUQDUWLVW
 ` 7KHJHWWHUPHWKRGVIRU
 WKHIRXUDWWULEXWHV
 SXEOLF6WULQJJHW5DWLQJ ^
  UHWXUQUDWLQJ
 `

 SXEOLF6WULQJJHW%SP ^
  UHWXUQESP
 `
  :HRYHUULGHWR6WULQJ EHFD
 SXEOLF6WULQJWR6WULQJ ^ RXWSULQWOQ D6RQJ2EMHF XVHZKHQ\RXGRD6\VWHP
  UHWXUQWLWOH
W  Z HZ
:KHQ\RXGRD6\VWHPRXWSU DQWWRVHHWKHWLWOH
LQWOQ D/LVW2I QJV LWFDO

`
` WKHWR6WULQJ PHWKRG RI($&+HOHPHQWLQ6RWK OV
HOLVW
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

+PIVOQVO\PM2]SMJW`KWLM\W][M;WVO[
QV[\MILWN;\ZQVO[
9OURCODECHANGESONLYALITTLEˆTHElLE)/CODEISTHESAME
ANDTHEPARSINGISTHESAME3TRINGSPLIT EXCEPTTHISTIME
THEREWILLBEFOURTOKENSFOREACHSONGLINE ANDALLFOURWILLBE
USEDTOCREATEANEW3ONGOBJECT!NDOFCOURSETHE!RRAY,IST
WILLBEOFTYPE3ONGINSTEADOF3TRING

RQJ
Q$UUD\/LVWJRI6
LPSRUWMDYDXWLO 
LPSRUWMDYDLR  &KDQJHWRDHD RI 6 WU LQ
REMHFWVLQVW G
SXEOLFFODVV-XNHER[^

 $UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
 SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
  QHZ-XNHER[ JR 
 `
 SXEOLFYRLGJR ^ 
  JHW6RQJV 
  6\VWHPRXWSULQWOQ VRQJ/LVW 
  &ROOHFWLRQVVRUW VRQJ/LVW 
  6\VWHPRXWSULQWOQ VRQJ/LVW  
 `
 YRLGJHW6RQJV ^
  WU\^
   )LOH¿OH QHZ)LOH ³6RQJ/LVWW[W´ 
   %XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
   6WULQJOLQH QXOO
   ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
    DGG6RQJ OLQH 
   `
  `FDWFK ([FHSWLRQH[ ^
   H[SULQW6WDFN7UDFH 
  `
 `

 YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
  6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW ³´ 

  6RQJQH[W6RQJ QHZ6RQJ WRNHQV>@WRNHQV>@WRNHQV>@WRNHQV>@ 


  VRQJ/LVWDGG QH[W6RQJ  
 `  &UHDWHDQHZ6RQ
` ZKLFKPHDQVWKHIJREMHFWXVLQJWKHIRXUWRNHQV
IRUWKLVOLQH WKHQRXUSLHFHVRILQIRLQWKHVRQJILOH
DGGWKH6RQJWRWK
HOLVW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
&ROOHFWLRQVVRUW

1\_WV¼\KWUXQTM
3OMETHINGSWRONGTHE#OLLECTIONSCLASSCLEARLYSHOWSTHERESA
SORT METHOD THATTAKESA,IST
!RRAY,ISTIS A,IST BECAUSE!RRAY,ISTIMPLEMENTSTHE,ISTINTERFACE
SOITSHOULDWORK
"UTITDOESNT
4HECOMPILERSAYSITCANTlNDASORTMETHODTHATTAKESAN
!RRAY,IST3ONG SOMAYBEITDOESNTLIKEAN!RRAY,ISTOF3ONG
OBJECTS)TDIDNTMINDAN!RRAY,IST3TRING SOWHATSTHE
IMPORTANTDIFFERENCEBETWEEN3ONGAND3TRING7HATSTHE
DIFFERENCETHATSMAKINGTHECOMPILERFAIL

)LOH(GLW:LQGRZ+HOS%XPPHU

MDYDF-XNHER[MDYD
-XNHER[MDYDFDQQRW¿QGV\PERO
V\PEROPHWKRGVRUW MDYDXWLO$UUD\/LVW6RQJ!
ORFDWLRQFODVVMDYDXWLO&ROOHFWLRQV
&ROOHFWLRQVVRUW VRQJ/LVW 
A
HUURU

!NDOFCOURSEYOUPROBABLYALREADYASKEDYOURSELF h7HATWOULDIT
BESORTINGONv(OWWOULDTHESORTMETHODEVENKNOWWHATMADE
ONE3ONGGREATERORLESSTHANANOTHER3ONG/BVIOUSLYIFYOUWANT
THESONGSTITLETOBETHEVALUETHATDETERMINESHOWTHESONGSARE
SORTED YOULLNEEDSOMEWAYTOTELLTHESORTMETHODTHATITNEEDS
TOUSETHETITLEANDNOT SAY THEBEATSPERMINUTE
7ELLGETINTOALLTHATAFEWPAGESFROMNOW BUTlRST LETSlNDOUT
WHYTHECOMPILERWONTEVENLETUSPASSA3ONG!RRAY,ISTTOTHE
SORT METHOD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

:7)",KDYHQRLGHDKRZWR
UHDGWKHPHWKRGGHFODUDWLRQ
RQWKLV,WVD\VWKDWVRUW 
WDNHVD/LVW7!EXWZKDWLV
7"$QGZKDWLVWKDWELJWKLQJ
EHIRUHWKHUHWXUQW\SH"

<PM[WZ\UM\PWLLMKTIZI\QWV

&ROMTHE!0)DOCSLOOKINGUPTHEJAVAUTIL#OLLECTIONSCLASS ANDSCROLLINGTOTHESORT
METHOD ITLOOKSLIKETHESORT METHODISDECLAREDSTRANGELY/RATLEASTDIFFERENTFROM
ANYTHINGWEVESEENSOFAR
4HATSBECAUSETHESORT METHODALONGWITHOTHERTHINGSINTHEWHOLECOLLECTIONFRAMEWORKIN
*AVA MAKESHEAVYUSEOFGENERICS!NYTIMEYOUSEESOMETHINGWITHANGLEBRACKETSIN*AVASOURCE
CODEORDOCUMENTATION ITMEANSGENERICSˆAFEATUREADDEDTO*AVA3OITLOOKSLIKEWELL
HAVETOLEARNHOWTOINTERPRETTHEDOCUMENTATIONBEFOREWECANlGUREOUTWHYWEWEREABLETO
SORT3TRINGOBJECTSINAN!RRAY,IST BUTNOTAN!RRAY,ISTOF3ONGOBJECTS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHQHULFW\SHV

/ MVMZQK[UMIV[UWZM\ aXM[INM\a
7ELLJUSTSAYITRIGHTHEREˆVIRTUALLYALLOFTHECODEYOUWRITETHATDEALS
WITHGENERICSWILLBECOLLECTION RELATEDCODE!LTHOUGHGENERICSCANBEUSED
INOTHERWAYS THEMAINPOINTOFGENERICSISTOLETYOUWRITETYPE SAFE
COLLECTIONS)NOTHERWORDS CODETHATMAKESTHECOMPILERSTOPYOU
FROMPUTTINGA$OGINTOALISTOF$UCKS
"EFOREGENERICSWHICHMEANSBEFORE*AVA THECOMPILERCOULD
NOTCARELESSWHATYOUPUTINTOACOLLECTION BECAUSEALLCOLLECTION
IMPLEMENTATIONSWEREDECLAREDTOHOLDTYPE/BJECT9OUCOULDPUT
ANYTHINGINANY!RRAY,ISTITWASLIKEALL!RRAY,ISTSWEREDECLAREDAS
!RRAY,IST/BJECT R
ULFVWKHUHZR DVQ
%HIRUHJHQHDU HW\ SH IDQ :LWKJHQHULFV\RXFDQ
:,7+287JHQHULFV ZD\WRGHFO RHLWWKVDGG PHWKRG
D\/LVWV FUHDWHW\SHVDIHFROOHFWLRQV
2EMHFWVJR,1DVDUHIHUHQFHWR $UURNW\SH2EMHFW
WR ZKHUHPRUHSUREOHPVDUH
6RFFHU%DOO)LVK*XLWDUDQG
&DUREMHFWV
FDXJKWDWFRPSLOHWLPH
LQVWHDGRIUXQWLPH
:LWKRXWJHQHULFVWKH
$UUD\/LVW
FRPSLOHUZRXOGKDSSLO\OHW
\RXSXWD3XPSNLQLQWRDQ
2EMHFW 2EMHFW 2EMHFW 2EMHFW
$UUD\/LVWWKDWZDVVXSSRVHG
$QGFRPH287DVDUHIHUHQFHRIW\SH2EMHFW WRKROGRQO\&DWREMHFWV

:,7+JHQHULFV
2EMHFWVJR,1DVDUHIHUHQFHWR
RQO\)LVKREMHFWV

1RZZLW JH
REMHFWVLQKW QHULFV\RXF
DQS
$UUD\/LVW)LVK! REMHFWVFRP H$UUD\/LVW)LVXKW!RQO\)LVK
K
H
<RXGRQ·WK WDV)LVKUHIHU VRWKH
R X
VWLFNLQJD DYHWRZRUU\DE HQFHV
ZKDW\RXJ9H RONVZDJHQLQWKHURHXWVRPHRQH
DEOHWRD)LVWRXWZRQ·WUHDOO\ERUWKDW
KUHIHUHQFH HFDVW

$QGFRPHRXWDVDUHIHUHQFHRIW\SH)LVK

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

4MIZVQVOOMVMZQK[
/FTHEDOZENSOFTHINGSYOUCOULDLEARNABOUTGENERICS THEREARE
REALLYONLYTHREETHATMATTERTOMOSTPROGRAMMERS

 &UHDWLQJLQVWDQFHVRIJHQHULILHGFODVVHV OLNH$UUD\/LVW
QHZ$UUD\/LVW6RQJ!
7HENYOUMAKEAN!RRAY,IST YOUHAVETOTELLITTHETYPE
OFOBJECTSYOULLALLOWINTHELIST JUSTASYOUDOWITHPLAIN
OLDARRAYS

 'HFODULQJDQGDVVLJQLQJYDULDEOHVRIJHQHULFW\SHV
/LVW6RQJ!VRQJ/LVW 
(OWDOESPOLYMORPHISMREALLYWORKWITHGENERIC QHZ$UUD\/LVW6RQJ!
TYPES)FYOUHAVEAN!RRAY,IST!NIMALREFERENCE
VARIABLE CANYOUASSIGNAN!RRAY,IST$OGTOIT7HAT
ABOUTA,IST!NIMALREFERENCE#ANYOUASSIGNAN
!RRAY,IST!NIMALTOIT9OULLSEE

 'HFODULQJ DQGLQYRNLQJ PHWKRGVWKDWWDNHJHQHULFW\SHV


)FYOUHAVEAMETHODTHATTAKESASAPARAMETER SAY AN YRLGIRR /LVW6RQJ!OLVW
!RRAY,ISTOF!NIMALOBJECTS WHATDOESTHATREALLYMEAN
#ANYOUALSOPASSITAN!RRAY,ISTOF$OGOBJECTS7ELL [IRR VRQJ/LVW
LOOKATSOMESUBTLEANDTRICKYPOLYMORPHISMISSUESTHAT
AREVERYDIFFERENTFROMTHEWAYYOUWRITEMETHODSTHAT
TAKEPLAINOLDARRAYS
4HISISACTUALLYTHESAMEPOINTAS BUTTHATSHOWSYOU
HOWIMPORTANTWETHINKITIS

Q: "UTDONT)ALSONEEDTOLEARNHOWTOCREATEMY/7.GENERIC
CLASSES7HATIF)WANTTOMAKEACLASSTYPETHATLETSPEOPLE
INSTANTIATINGTHECLASSDECIDETHETYPEOFTHINGSTHATCLASSWILLUSE

A: 9OUPROBABLYWONTDOMUCHOFTHAT4HINKABOUTITˆTHE!0)
DESIGNERSMADEANENTIRELIBRARYOFCOLLECTIONSCLASSESCOVERINGMOSTOF
THEDATASTRUCTURESYOUDNEED ANDVIRTUALLYTHEONLYTYPEOFCLASSESTHAT
REALLYNEEDTOBEGENERICARECOLLECTIONCLASSES)NOTHERWORDS CLASSES
DESIGNEDTOHOLDOTHERELEMENTS ANDYOUWANTPROGRAMMERSUSINGITTO
SPECIFYWHATTYPETHOSEELEMENTSAREWHENTHEYDECLAREANDINSTANTIATE
THECOLLECTIONCLASS
9ES ITISPOSSIBLETHATYOUMIGHTWANTTOCREATEGENERICCLASSES BUTTHATS
THEEXCEPTION SOWEWONTCOVERITHERE"UTYOULLFIGUREITOUTFROMTHE
THINGSWEDOCOVER ANYWAY

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHQHULFFODVVHV

=[QVOOMVMZQK+4);;-;
3INCE!RRAY,ISTISOURMOST USEDGENERIlEDTYPE WELL
STARTBYLOOKINGATITSDOCUMENTATION4HEYTWOKEYAREAS 7KLQNRI´(µDVDVWDQGLQIRU
TOLOOKATINAGENERIlEDCLASSARE
 4HECLASSDECLARATION
´WKHW\SHRIHOHPHQW\RXZDQW
 4HEMETHODDECLARATIONSTHATLETYOUADDELEMENTS WKLVFROOHFWLRQWRKROGDQG
UHWXUQµ (LVIRU(OHPHQW
8QGHUVWDQGLQJ$UUD\/LVWGRFXPHQWDWLRQ
2UZKDW·VWKHWUXHPHDQLQJRI´(µ"

FHKROGHUI RUWKH $UUD\/LVW V


( µ LVD S OD
7KH´ \SH\RXXVHZKH R\X/LVWQ \ VRZKDWHYHULWDVXEFODVVRI$
EVW
5($/W QGFUHDWHDQ$UUD $UUD\/LVWLV \SH\RXVSHFLI\IRUUDWFW/LVW
W\SHRIWKH$ DX W RPDWLFDO KH
GHFODUHD EVWUDFW/LVWO\XVHGIRUWKH

SXEOLFFODVV$UUD\/LVW(!H[WHQGV$EVWUDFW/LVW(!LPSOHPHQWV/LVW(!^


SXEOLFERROHDQDGG (R
7KHW\SH WKHYDOXHRI(! 
+HUH·VWKHLPSRUWDQWSDUW:KDWHYHUHDOOR ´(µLV EHFRPHVWKHW\SHRIWKH/LVW
GHWH UPLQ HVZK DWN LQGR IWK LQJV \RX·U ZHG LQWHUIDFHDVZHOO
WRDGGWRWKH$UUD\/ LVW
PRUHFRGH
`


4HEh%vREPRESENTSTHETYPEUSEDTOCREATEANINSTANCE
OF!RRAY,IST7HENYOUSEEANh%vINTHE!RRAY,IST
DOCUMENTATION YOUCANDOAMENTALlNDREPLACETO
EXCHANGEITFORWHATEVERTYPEYOUUSETOINSTANTIATE
!RRAY,IST
3O NEW!RRAY,IST3ONGMEANSTHATh%vBECOMESh3ONGv
INANYMETHODORVARIABLEDECLARATIONTHATUSESh%v

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

=[QVO\aXMXIZIUM\MZ[_Q\P)ZZIa4Q[\

7+,6FRGH
$UUD\/LVW6WULQJ!WKLV/LVW QHZ$UUD\/LVW6WULQJ!

0HDQV$UUD\/LVW
SXEOLFFODVV$UUD\/LVW(!H[WHQGV$EVWUDFW/LVW
H[WH (!^

SXEOLFERROHDQDGG (R

Licensed by
PRUHFRGH
`


,VWUHDWHGE\WKHFRPSLOHUDV


Eduard Simons
SXEOLFFODVV$UUD\/LVW6WULQJ!H[WHQGV$EVWUDFW/LVW6WULQJ!^

SXEOLFERROHDQDGG 6WULQJR
PRUHFRGH

104038
`


)NOTHERWORDS THEh%vISREPLACEDBYTHEREALTYPEALSOCALLEDTHETYPEPARAMETER
THATYOUUSEWHENYOUCREATETHE!RRAY,IST!NDTHATSWHYTHEADD METHOD
FOR!RRAY,ISTWONTLETYOUADDANYTHINGEXCEPTOBJECTSOFAREFERENCETYPETHATS
COMPATIBLEWITHTHETYPEOFh%v3OIFYOUMAKEAN!RRAY,IST3TRING THEADD
METHODSUDDENLYBECOMESADD3TRINGO )FYOUMAKETHE!RRAY,ISTOFTYPE$OG
SUDDENLYTHEADD METHODBECOMESADD$OGO 

Q: )Sh%vTHEONLYTHINGYOUCANPUTTHERE"ECAUSETHEDOCSFORSORTUSEDh4v

A: 9OUCANUSEANYTHINGTHATSALEGAL*AVAIDENTIFIER4HATMEANSANYTHINGTHATYOU
COULDUSEFORAMETHODORVARIABLENAMEWILLWORKASATYPEPARAMETER"UTTHECONVEN
TIONISTOUSEASINGLELETTERSOTHATSWHATYOUSHOULDUSE ANDAFURTHERCONVENTIONISTO
USEh4vUNLESSYOURESPECIFICALLYWRITINGACOLLECTIONCLASS WHEREYOUDUSEh%vTOREPRE
SENTTHEhTYPEOFTHE%LEMENTTHECOLLECTIONWILLHOLDv

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHQHULFPHWKRGV

=[QVOOMVMZQK5-<07,;
!GENERICCLASSMEANSTHATTHECLASSDECLARATIONINCLUDESATYPE
PARAMETER!GENERICMETHODMEANSTHATTHEMETHODDECLARATION
USESATYPEPARAMETERINITSSIGNATURE
9OUCANUSETYPEPARAMETERSINAMETHODINSEVERALDIFFERENTWAYS

 8VLQJDW\SHSDUDPHWHUGHILQHGLQWKHFODVVGHFODUDWLRQ
SXEOLFFODVV$UUD\/LVW(!H[WHQGV$EVWUDFW/LVW(!^
SXEOLFERROHDQDGG (R <RXFDQX
DOUHDG\EHHVHQWKH´(µKHUH21/<EHF
GHILQHGDVSD
UWRIWKHDXFOVH LW·V
DVV
7HENYOUDECLAREATYPEPARAMETERFORTHECLASS YOU
CANSIMPLYUSETHATTYPEANYPLACETHATYOUDUSEA
REALCLASSORINTERFACETYPE4HETYPEDECLAREDINTHE
METHODARGUMENTISESSENTIALLYREPLACEDWITHTHETYPE
YOUUSEWHENYOUINSTANTIATETHECLASS

 8VLQJDW\SHSDUDPHWHUWKDWZDV127GHILQHGLQWKHFODVVGHFODUDWLRQ

SXEOLF7H[WHQGV$QLPDO!YRLGWDNH7KLQJ $UUD\/LVW7!OLVW 

)FTHECLASSITSELFDOESNTUSEATYPEPARAMETER YOUCANSTILL +HUHZH QXV


SPECIFYONEFORAMETHOD BYDECLARINGITINAREALLYUNUSUAL ´7µHDUOLHFD H7
ULQWKHPHW!EK HFDXVHZHGHFODUHG
BUTAVAILABLE SPACEˆBEFORETHERETURNTYPE4HISMETHODSAYS RGGHFODUDWLR
Q
THAT4CANBEhANYTYPEOF!NIMALv

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

:DLWWKDWFDQ·WEHULJKW,I\RXFDQ
WDNHDOLVWRI$QLPDOZK\GRQ·W\RX
MXVW6$<WKDW":KDW·VZURQJZLWKMXVW
WDNH7KLQJ $UUD\/LVW$QLPDO!OLVW "

0MZM¼[_PMZMQ\OM\[_MQZL
4HIS
SXEOLF7H[WHQGV$QLPDO!YRLGWDNH7KLQJ $UUD\/LVW7!OLVW 

)S./4THESAMEASTHIS
SXEOLFYRLGWDNH7KLQJ $UUD\/LVW$QLPDO!OLVW 

"OTHARELEGAL BUTTHEYREDIFFERENT
4HElRSTONE WHERE4EXTENDS!NIMALISPARTOFTHEMETHOD
DECLARATION MEANSTHATANY!RRAY,ISTDECLAREDOFATYPETHATIS
!NIMAL ORONEOF!NIMALSSUBTYPESLIKE$OGOR#AT ISLEGAL
3OYOUCOULDINVOKETHETOPMETHODUSINGAN!RRAY,IST$OG
!RRAY,IST#AT OR!RRAY,IST!NIMAL
"UTTHEONEONTHEBOTTOM WHERETHEMETHODARGUMENTIS
!RRAY,IST!NIMALLIST MEANSTHATONLYAN!RRAY,IST!NIMAL
ISLEGAL)NOTHERWORDS WHILETHElRSTVERSIONTAKESAN!RRAY,IST
OFANYTYPETHATISATYPEOF!NIMAL!NIMAL $OG #AT ETC
THESECONDVERSIONTAKESONLYAN!RRAY,ISTOFTYPE!NIMAL.OT
!RRAY,IST$OG OR!RRAY,IST#ATBUTONLY!RRAY,IST!NIMAL
!NDYES ITDOESAPPEARTOVIOLATETHEPOINTOFPOLYMORPHISM
BUTITWILLBECOMECLEARWHENWEREVISITTHISINDETAILATTHEEND
OFTHECHAPTER&ORNOW REMEMBERTHATWEREONLYLOOKINGAT
THISBECAUSEWERESTILLTRYINGTOlGUREOUTHOWTOSORT THAT
3ONG,IST ANDTHATLEDUSINTOLOOKINGATTHE!0)FORTHESORT
METHOD WHICHHADTHISSTRANGEGENERICTYPEDECLARATION
&ORNOW ALLYOUNEEDTOKNOWISTHATTHESYNTAXOFTHETOPVERSION
ISLEGAL ANDTHATITMEANSYOUCANPASSINA!RRAY,ISTOBJECT
INSTANTIATEDAS!NIMALORANY!NIMALSUBTYPE

!NDNOWBACKTOOURSORT METHOD

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VRUWLQJD6RQJ

7KLVVWLOOGRHVQ·W
H[SODLQZK\WKHVRUWPHWKRG
IDLOHGRQDQ$UUD\/LVWRI6RQJV
EXWZRUNHGIRUDQ$UUD\/LVWRI
6WULQJV

5HPHPEHUZKHUHZHZHUH
)LOH(GLW:LQGRZ+HOS%XPPHU

MDYDF-XNHER[MDYD
-XNHER[MDYDFDQQRW¿QGV\PERO
V\PEROPHWKRGVRUW MDYDXWLO$UUD\/LVW6RQJ!
ORFDWLRQFODVVMDYDXWLO&ROOHFWLRQV
&ROOHFWLRQVVRUW VRQJ/LVW 
A
HUURU

LPSRUWMDYDXWLO 
LPSRUWMDYDLR 

SXEOLFFODVV-XNHER[^
 $UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
 SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
  QHZ-XNHER[ JR 
 `
 SXEOLFYRLGJR ^ 
  JHW6RQJV 
HDNV,WZRUNHGILQ HZKHQ
  6\VWHPRXWSULQWOQ VRQJ/LVW 
7KLVLVZKHUHLWEU /LVW 6 WU LQJ !EX W DV VRRQDVZH
  &ROOHFWLRQVVRUW VRQJ/LVW  SDVVHGLQDQ$UUD\ VW6 RQ J! LW IDLO HG
  6\VWHPRXWSULQWOQ VRQJ/LVW  WULHGWRVRUWDQ$UUD\/L

 `
 YRLGJHW6RQJV ^
  WU\^
   )LOH¿OH QHZ)LOH ³6RQJ/LVWW[W´ 
   %XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
   6WULQJOLQH QXOO
   ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
    DGG6RQJ OLQH 
   `
  `FDWFK ([FHSWLRQH[ ^
   H[SULQW6WDFN7UDFH 
  `
 `
 YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
  6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW ³´ 
  6RQJQH[W6RQJ QHZ6RQJ WRNHQV>@WRNHQV>@WRNHQV>@WRNHQV>@ 
  VRQJ/LVWDGG QH[W6RQJ  
 ` 
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

:M^Q[Q\QVO\PM[WZ\ UM\PWL
3OHEREWEARE TRYINGTOREADTHESORT METHODDOCSTOlND
OUTWHYITWAS/+TOSORTALISTOF3TRINGS BUTNOTA
LISTOF3ONGOBJECTS!NDITLOOKSLIKETHEANSWERIS

7KHVRUW PHWKRGFDQWDNHRQO\OLVWV
RI&
 RPSDUDEOHREMHFWV

6RQJLV127DVXEW\SHRI
&RPSDUDEOHVR\RXFDQQRWVRUW 
WKHOLVWRI6RQJV

$WOHDVWQRW\HW

SXEOLFVWDWLF7H[WHQGV&RPSDUDEOH"VXSHU7!!YRLGVRUW /LVW7!OLVW

,JQRUHWKLVSDUWIRUQRZ%XW <RXFDQSDVVLQRQO\D/LVW RU


7KLVVD\V´:KDWHYHU¶7·LVPXVW LI\RXFDQ·WLWMXVWPHDQV VXEW\SHRIOLVWOLNH$UUD\/LVW 
EHRIW\SH&RPSDUDEOHµ WKDWWKHW\SHSDUDPHWHUIRU WKDWXVHVDSDUDPHWHUL]HGW\SH
&RPSDUDEOHPXVWEHRIW\SH7 WKDW´H[WHQGV&RPSDUDEOHµ
RURQHRI7·VVXSHUW\SHV

8P,MXVWFKHFNHGWKHGRFVIRU
6WULQJDQG6WULQJGRHVQ·W(;7(1'
&RPSDUDEOHLW,03/(0(176LW
&RPSDUDEOHLVDQLQWHUIDFH6RLW·VQRQVHQVH
WRVD\7H[WHQGV&RPSDUDEOH!

SXEOLF¿QDOFODVV6WULQJH[WHQGV2EMHFWLPSOHPHQWV6HULDOL]DEOH
&RPSDUDEOH6WULQJ!&KDU6HTXHQFH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHVRUW PHWKRG

1VOMVMZQK[¹M`\MVL[ºUMIV[
¹M`\MVL[WZQUXTMUMV\[º
4HE*AVAENGINEERSHADTOGIVEYOUAWAYTOPUTACONSTRAINT
ONAPARAMETERIZEDTYPE SOTHATYOUCANRESTRICTITTO SAY ONLY
SUBCLASSESOF!NIMAL"UTYOUALSONEEDTOCONSTRAINATYPETO ,QJHQHULFVWKHNH\ZRUG
ALLOWONLYCLASSESTHATIMPLEMENTAPARTICULARINTERFACE3O
HERESASITUATIONWHEREWENEEDONEKINDOFSYNTAXTOWORK
´H[WHQGVµUHDOO\PHDQV´LVDµ
FORBOTHSITUATIONSˆINHERITANCEANDIMPLEMENTATION)NOTHER DQGZRUNVIRU%27+FODVVHV
WORDS THATWORKSFORBOTHEXTENDSANDIMPLEMENTS
!NDTHEWINNINGWORDWASEXTENDS"UTITREALLYMEANShIS Av
DQGLQWHUIDFHV
ANDWORKSREGARDLESSOFWHETHERTHETYPEONTHERIGHTISAN
INTERFACEORACLASS

&RPSDUDEOHLVDQLQWHUIDFHVRWKLV WKDW
5($//<UHDGV´7PXVWEHDW\SH µ
LPSOHPHQWVWKH&RPSDUDEOHLQWHUIDFH

SXEOLFVWDWLF7H[WHQGV&RPSDUDEOH"VXSHU7!!YRLGVRUW /LVW7!OLVW

,WGRHVQ·WPDWWHUZKHWKHUWKHWKLQJRQWKHULJKWLV
DFODVVRULQWHUIDFH\RXVWLOOVD\´H[WHQGVµ

Q: 7HYDIDNTTHEYJUSTMAKEANEWKEYWORD hISv

A: !DDINGANEWKEYWORDTOTHELANGUAGEISA2%!,,9BIGDEALBECAUSE
ITRISKSBREAKING*AVACODEYOUWROTEINANEARLIERVERSION4HINKABOUT
ITˆYOUMIGHTBEUSINGAVARIABLEhISvWHICHWEDOUSEINTHISBOOKTOREPRE
SENTINPUTSTREAMS !NDSINCEYOURENOTALLOWEDTOUSEKEYWORDSASIDENTI
FIERSINYOURCODE THATMEANSANYEARLIERCODETHATUSEDTHEKEYWORDBEFORE
ITWASARESERVEDWORD WOULDBREAK3OWHENEVERTHERESACHANCEFORTHE
3UNENGINEERSTOREUSEANEXISTINGKEYWORD ASTHEYDIDHEREWITHhEXTENDSv
THEYLLUSUALLYCHOOSETHAT"UTSOMETIMESTHEYDONTHAVEACHOICE
!FEWVERYFEW NEWKEYWORDSHAVEBEENADDEDTOTHELANGUAGE SUCH
ASASSERTIN*AVAANDENUMIN*AVAWELOOKATENUMINTHEAPPEN
DIX !NDTHISDOESBREAKPEOPLESCODE HOWEVERYOUSOMETIMESHAVETHE
OPTIONOFCOMPILINGANDRUNNINGANEWERVERSIONOF*AVASOTHATITBEHAVES
ASTHOUGHITWEREANOLDERONE9OUDOTHISBYPASSINGASPECIALFLAGTOTHE
COMPILEROR*6-ATTHECOMMAND LINE THATSAYS h9EAH YEAH )+./7THISIS
*AVA BUTPLEASEPRETENDITSREALLY BECAUSE)MUSINGAVARIABLEINMY
CODENAMEDASSERTTHAT)WROTEBACKWHENYOUGUYSSAIDITWOULD/+v
4OSEEIFYOUHAVEAFLAGAVAILABLE TYPEJAVACFORTHECOMPILER ORJAVAFOR
THE*6- ATTHECOMMAND LINE WITHOUTANYTHINGELSEAFTERIT ANDYOUSHOULD
SEEALISTOFAVAILABLEOPTIONS9OULLLEARNMOREABOUTTHESEFLAGSINTHECHAP
TERONDEPLOYMENT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

.QVITTa_MSVW__PI\¼[_ZWVO
<PM;WVOKTI[[VMML[\WQUXTMUMV\+WUXIZIJTM
7ECANPASSTHE!RRAY,IST3ONGTOTHESORT METHODONLYIFTHE 7KHELJTXHVWLRQLVZKDW
3ONGCLASSIMPLEMENTS#OMPARABLE SINCETHATSTHEWAYTHESORT PDNHVRQHVRQJOHVVWKDQ
METHODWASDECLARED!QUICKCHECKOFTHE!0)DOCSSHOWSTHE HTXDOWRRUJUHDWHUWKDQ
#OMPARABLEINTERFACEISREALLYSIMPLE WITHONLYONEMETHODTO DQRWKHUVRQJ"
IMPLEMENT
<RXFDQ·WLPSOHPHQWWKH
MDYDODQJ&RPSDUDEOH &RPSDUDEOHLQWHUIDFHXQWLO\RX
PDNHWKDWGHFLVLRQ
SXEOLFLQWHUIDFH&RPSDUDEOH7!^
LQW
FRPSDUH7R 7R 

`

6KDUSHQ \RXU SHQFLO


!NDTHEMETHODDOCUMENTATIONFORCOMPARE4O SAYS
7RITEINYOURIDEAANDPSEUDOCODEOR
BETTER 2%!,CODE FORIMPLEMENTINGTHE
COMPARE4O METHODINAWAYTHATWILL
5HWXUQV SORT THE3ONGOBJECTSBYTITLE
DQHJDWLYHLQWHJHU]HURRUD
SRVLWLYHLQWHJHUDVWKLVREMHFW (INTIFYOUREONTHERIGHTTRACK ITSHOULD
LVOHVVWKDQHTXDOWRRUJUHDWHU TAKELESSTHANLINESOFCODE
WKDQWKHVSHFL¿HGREMHFW

)TLOOKSLIKETHECOMPARE4O METHODWILLBECALLEDONONE
3ONGOBJECT PASSINGTHAT3ONGAREFERENCETOADIFFERENT
3ONG4HE3ONGRUNNINGTHECOMPARE4O METHODHASTO
lGUREOUTIFTHE3ONGITWASPASSEDSHOULDBESORTEDHIGHER
LOWER ORTHESAMEINTHELIST
9OURBIGJOBNOWISTODECIDEWHATMAKESONESONGGREATER
THANANOTHER ANDTHENIMPLEMENTTHECOMPARE4O METHOD
TOREmECTTHAT!NEGATIVENUMBERANYNEGATIVENUMBER
MEANSTHE3ONGYOUWEREPASSEDISGREATERTHANTHE3ONG
RUNNINGTHEMETHOD2ETURNINGAPOSITIVENUMBERSAYS
THATTHE3ONGRUNNINGTHEMETHODISGREATERTHANTHE3ONG
PASSEDTOTHECOMPARE4O METHOD2ETURNINGZEROMEANS
THE3ONGSAREEQUALATLEASTFORTHEPURPOSEOFSORTINGIT
DOESNTNECESSARILYMEANTHEYRETHESAMEOBJECT 9OUMIGHT
FOREXAMPLE HAVETWO3ONGSWITHTHESAMETITLE
7HICHBRINGSUPAWHOLEDIFFERENTCANOFWORMSWELLLOOK
ATLATER

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH&RPSDUDEOHLQWHUIDFH

<PMVM_QUXZW^MLKWUXIZIJTM;WVOKTI[[
7EDECIDEDWEWANTTOSORTBYTITLE SOWEIMPLEMENTTHECOMPARE4O
METHODTOCOMPARETHETITLEOFTHE3ONGPASSEDTOTHEMETHODAGAINST
THETITLEOFTHESONGONWHICHTHECOMPARE4O METHODWASINVOKED
)NOTHERWORDS THESONGRUNNINGTHEMETHODHASTODECIDEHOWITS
TITLECOMPARESTOTHETITLEOFTHEMETHODPARAMETER
(MMMWEKNOWTHATTHE3TRINGCLASSMUSTKNOWABOUTALPHABETICAL
ORDER BECAUSETHESORT METHODWORKEDONALISTOF3TRINGS7EKNOW
3TRINGHASACOMPARE4O METHOD SOWHYNOTJUSTCALLIT4HATWAY WE
CANSIMPLYLETONETITLE3TRINGCOMPAREITSELFTOANOTHER ANDWEDONT
HAVETOWRITETHECOMPARINGALPHABETIZINGALGORITHM
8VXDOO\WKHVHPDWFKZH·UHVSHFLI\LQJGDJWKHW\SHWKDW
WKHLPSOHPHQW LQJF ODVVF DQEH FRP SDUH DLQVW
FODVV6RQJLPSOHPHQWV&RPSDUDEOH6RQJ!^ 7KLVPHDQVWKDW6RQJREMHFWVFDQEHFIVRU RPSDUHGWR
6WULQJWLWOH RWKHU6RQJREMHFWVIRUWKH SXUS RVHR WLQJ
6WULQJDUWLVW
6WULQJUDWLQJ
7KHVRUW PHWKRGVHQGVD6RQJWRFRP6RQ SDUH7R 
6WULQJESP
WRVHHKRZWKDW6RQJFR PSDU HVWR WKH JRQ

ZKLFK WKH PHW KRG ZDVLQYRN HG
SXEOLFLQWFRPSDUH7R 6RQJV ^
UHWXUQWLWOHFRPSDUH7R VJHW7LWOH  6LPSOH:HMXVWSDVVWKHZRUN
` RQWRWKHWLWOH6WULQJREMHFWV
VLQFHZHNQRZ6WULQJVKDYHD
6RQJ 6WULQJW6WULQJD6WULQJU6WULQJE ^ FRPSDUH7R PHWKRG
WLWOH W
DUWLVW D
UDWLQJ U
ESP E
`

SXEOLF6WULQJJHW7LWOH ^
UHWXUQWLWOH
` 7KLVWLPHLWZRUNHG,WSULQWVWKHOLVWUGHUWKHQFDOOVVRUW
ZKLFKSXWV WKH6RQJVLQ DOSK DEHW LFDOR E\WLWOH
SXEOLF6WULQJJHW$UWLVW ^
)LOH(GLW:LQGRZ+HOS$PELHQW
UHWXUQDUWLVW
` MDYD-XNHER[
SXEOLF6WULQJJHW5DWLQJ ^
UHWXUQUDWLQJ >3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS
` &KDQQHO3DVVHQJHU/LVWHQ@
SXEOLF6WULQJJHW%SP ^
UHWXUQESP >&LUFOHV'HHS&KDQQHO/LVWHQ3DVVHQJHU3LQN
` 0RRQ6KLYD0RRQ6RPHUVDXOW@

SXEOLF6WULQJWR6WULQJ ^
UHWXUQWLWOH
`
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

?MKIV[WZ\\PMTQ[\J]\
7KDW·VQRWJRRGHQRXJK
4HERESANEWPROBLEMˆ,OUWANTSTWODIFFERENTVIEWSOFTHESONGLIST 6RPHWLPHV,ZDQWLWWRVRUW
ONEBYSONGTITLEANDONEBYARTIST E\DUWLVWLQVWHDGRIWLWOH

"UTWHENYOUMAKEACOLLECTIONELEMENTCOMPARABLEBYHAVINGIT
IMPLEMENT#OMPARABLE YOUGETONLYONECHANCETOIMPLEMENTTHE
COMPARE4O METHOD3OWHATCANYOUDO
4HEHORRIBLEWAYWOULDBETOUSEAmAGVARIABLEINTHE3ONGCLASS
ANDTHENDOANIFTESTINCOMPARE4O ANDGIVEADIFFERENTRESULT
DEPENDINGONWHETHERTHEmAGISSETTOUSETITLEORARTISTFORTHE
COMPARISON
"UTTHATSANAWFULANDBRITTLESOLUTION ANDTHERESSOMETHINGMUCH
BETTER3OMETHINGBUILTINTOTHE!0)FORJUSTTHISPURPOSEˆWHENYOU
WANTTOSORTTHESAMETHINGINMORETHANONEWAY

/RRNDWWKH&ROOHFWLRQVFODVV$3,DJDLQ7KHUH·VD
VHFRQGVRUW PHWKRG³DQGLWWDNHVD&RPSDUDWRU

R
U W P HW KR G LVRYHUORDGHGW
7KHVR DWRU
VRP HW KLQJ FD OOHGD&RPSDU
WDNH
WR
RWH W RVHO IILJXUHRXWKRZ Q
1 WFD
RPSDUDWRUWKD
JHW PDNHD& E\
UGHUWKHVRQJV
FRPSDUHDQGR
RIWLWOH
DUWLVWLQVWHDG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKH&RPSDUDWRULQWHUIDFH

=[QVOIK][\WU+WUXIZI\WZ
MDYDXWLO&RPSDUDWRU
!NELEMENTINALISTCANCOMPAREITSELFTOANOTHEROF
ITSOWNTYPEINONLYONEWAY USINGITSCOMPARE4O SXEOLFLQWHUIDFH&RPSDUDWRU7!^
METHOD"UTA#OMPARATORISEXTERNALTOTHEELEMENT LQWFRPSDUH 7R7R 
TYPEYOURECOMPARINGˆITSASEPARATECLASS3OYOUCAN `
MAKEASMANYOFTHESEASYOULIKE7ANTTOCOMPARE
SONGSBYARTIST-AKEAN!RTIST#OMPARATOR3ORTBYBEATS
PERMINUTE-AKEA"0-#OMPARATOR
4HENALLYOUNEEDTODOISCALLTHEOVERLOADEDSORT
METHODTHATTAKESTHE,ISTANDTHE#OMPARATORTHATWILL
HELPTHESORT METHODPUTTHINGSINORDER
4HESORT METHODTHATTAKESA#OMPARATORWILLUSETHE ,I\RXSDVVD&RPSDUDWRUWRWKH
#OMPARATORINSTEADOFTHEELEMENTSOWNCOMPARE4O
METHOD WHENITPUTSTHEELEMENTSINORDER)NOTHER
VRUW PHWKRGWKHVRUWRUGHULV
WORDS IFYOURSORT METHODGETSA#OMPARATOR ITWONT GHWHUPLQHGE\WKH&RPSDUDWRU
EVENCALLTHECOMPARE4O METHODOFTHEELEMENTS
INTHELIST4HESORT METHODWILLINSTEADINVOKETHE UDWKHUWKDQWKHHOHPHQW·VRZQ
COMPARE METHODONTHE#OMPARATOR
FRPSDUH7R PHWKRG
3O THERULESARE

 ,QYRNLQJWKHRQHDUJXPHQWVRUW /LVWR PHWKRG


PHDQVWKHOLVWHOHPHQW·VFRPSDUH7R PHWKRG
GHWHUPLQHVWKHRUGHU6RWKHHOHPHQWVLQWKHOLVW
0867LPSOHPHQWWKH&RPSDUDEOHLQWHUIDFH

 ,QYRNLQJVRUW /LVWR&RPSDUDWRUF PHDQVWKH


OLVWHOHPHQW·VFRPSDUH7R PHWKRGZLOO127EH
FDOOHGDQGWKH&RPSDUDWRU·VFRPSDUH PHWKRG
ZLOOEHXVHGLQVWHDG7KDWPHDQVWKHHOHPHQWV
LQWKHOLVWGR127QHHGWRLPSOHPHQWWKH
&RPSDUDEOHLQWHUIDFH

Q: 3ODOESTHISMEANTHATIFYOUHAVEACLASSTHAT Q: "UTWHYDOESNTEVERYCLASSIMPLEMENT#OMPARABLE
DOESNTIMPLEMENT#OMPARABLE ANDYOUDONTHAVETHE
SOURCECODE YOUCOULDSTILLPUTTHETHINGSINORDERBY
CREATINGA#OMPARATOR A:$OYOUREALLYBELIEVETHATEVERYTHINGCANBEORDERED
)FYOUHAVEELEMENTTYPESTHATJUSTDONTLENDTHEMSELVESTO

A: ANYKINDOFNATURALORDERING THENYOUDBEMISLEADINGOTHER
4HATSRIGHT4HEOTHEROPTIONIFITSPOSSIBLE WOULDBE PROGRAMMERSIFYOUIMPLEMENT#OMPARABLE!NDYOUARENT
TOSUBCLASSTHEELEMENTANDMAKETHESUBCLASSIMPLEMENT TAKINGAHUGERISKBYNOTIMPLEMENTING#OMPARABLE SINCE
#OMPARABLE APROGRAMMERCANCOMPAREANYTHINGINANYWAYTHATHE
CHOOSESUSINGHISOWNCUSTOM#OMPARATOR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

=XLI\QVO\PM2]SMJW`\W][MI+WUXIZI\WZ
7EDIDTHREENEWTHINGSINTHISCODE
 #REATEDANINNERCLASSTHATIMPLEMENTS#OMPARATORANDTHUSTHECOMPARE
METHODTHATDOESTHEWORKPREVIOUSLYDONEBYCOMPARE4O 
 -ADEANINSTANCEOFTHE#OMPARATORINNERCLASS
 #ALLEDTHEOVERLOADEDSORT METHOD GIVINGITBOTHTHESONGLISTANDTHE
INSTANCEOFTHE#OMPARATORINNERCLASS
.OTEWEALSOUPDATEDTHE3ONGCLASSTO3TRING METHODTOPRINTBOTHTHESONG
TITLEANDTHEARTIST)TPRINTSTITLEARTISTREGARDLESSOFHOWTHELISTISSORTED

Licensed by
LPSRUWMDYDXWLO 
LPSRUWMDYDLR 

SXEOLFFODVV-XNHER[^
$UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
&UHDWHDQHZLQQHUFODVVWKDWLPSOHPHQWV

Eduard Simons
&RPSDUDWRU QRWHWKDWLWVW\SH RLQJ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
SDUDPHWHUPDWFKHVWKHW\SHZH·UHJ
QHZ-XNHER[ JR 
WRFRPSDUH³LQWKLVFDVH6RQJREMHFWV
`

FODVV$UWLVW&RPSDUHLPSOHPHQWV&RPSDUDWRU6RQJ!^

104038
SXEOLFLQWFRPSDUH 6RQJRQH6RQJWZR ^
UHWXUQRQHJHW$UWLVW FRPSDUH7R WZRJHW$UWLVW 
`
` 7KLVEHFRPHVD6WULQJ WKHDUWLVW :H·UHOHWWLQJWKH6WULQJ
 GRWKHDFWXDOFRPSDULVRQYDULDEOHV IRUDUWLVW 
SXEOLFYRLGJR ^  NQRZKRZWRDOSKDEHWL]HWVLQFH6WULQJVDOUHDG\
JHW6RQJV 
KHPVHOYHV
6\VWHPRXWSULQWOQ VRQJ/LVW 
&ROOHFWLRQVVRUW VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ/LVW 
0DNHDQLQVWDQFHRIWKH
$UWLVW&RPSDUHDUWLVW&RPSDUH QHZ$UWLVW&RPSDUH &RPSDUDWRULQQHUFODVV
&ROOHFWLRQVVRUW VRQJ/LVWDUWLVW&RPSDUH 
,QYRNHVRUW S VLQJLW
6\VWHPRXWSULQWOQ VRQJ/LVW   DQGDUHIHUHQFHDVWR WKHOLVW
` FXVWRP&RPSDUDWRUWREKHQHZ

MHFW
YRLGJHW6RQJV ^
,2FRGHKHUH
.OTEWEVEMADESORT BY TITLETHEDEFAULTSORT BY
`
KEEPINGTHECOMPARE4O METHODIN3ONGUSETHE

TITLES"UTANOTHERWAYTODESIGNTHISWOULDBETO
YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
IMPLEMENTBOTHTHETITLESORTINGANDARTISTSORTINGAS
SDUVHOLQHDQGDGGWRVRQJOLVW
INNER#OMPARATORCLASSES ANDNOTHAVE3ONGIMPLEMENT
` 
#OMPARABLEATALL4HATMEANSWEDALWAYSUSETHETWO
`
ARGVERSIONOF#OLLECTIONSSORT 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVH[HUFLVH

LPSRUWBBBBBBBBBBBBBBBBBB 6KDUSHQ \RXU SHQFLO


SXEOLFFODVV6RUW0RXQWDLQV^

/LQNHG/LVWBBBBBBBBBBBBBBPWQ QHZ/LQNHG/LVWBBBBBBBBBBBB 

FODVV1DPH&RPSDUHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
2EVERSE%NGINEER
UHWXUQBBBBBBBBBBBBBBBBBBBBBBBBBBB $VVXPHWKLVFRGHH[LVWVLQ
`
DVLQJOHILOH<RXUMRELV
`
FODVV+HLJKW&RPSDUHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB^
WRILOOLQWKHEODQNVVRWKH
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^ WKHSURJUDPZLOOFUHDWHWKH
UHWXUQ BBBBBBBBBBBBBBBBBBBBBBBBBB 
RXWSXWVKRZQ
`
` .OTEANSWERSAREATTHEENDOF
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ THECHAPTER
QHZ6RUW0RXQWDLQ JR 
`
SXEOLFYRLGJR ^
PWQDGG QHZ0RXQWDLQ ´/RQJVµ 
PWQDGG QHZ0RXQWDLQ ´(OEHUWµ 
PWQDGG QHZ0RXQWDLQ ´0DURRQµ 
PWQDGG QHZ0RXQWDLQ ´&DVWOHµ 
6\VWHPRXWSULQWOQ ´DVHQWHUHG?QµPWQ 
1DPH&RPSDUHQF QHZ1DPH&RPSDUH 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQWOQ ´E\QDPH?QµPWQ 
+HLJKW&RPSDUHKF QHZ+HLJKW&RPSDUH 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQWOQ ´E\KHLJKW?QµPWQ 
`
`

FODVV0RXQWDLQ^
BBBBBBBBBBBBBBBBBB /UTPUT
BBBBBBBBBBBBBBBBB
)LOH(GLW:LQGRZ+HOS7KLV2QH¶V)RU%RE
MDYD6RUW0RXQWDLQV
BBBBBBBBBBBBBBBBBBBBBB^
DVHQWHUHG
BBBBBBBBBBBBBBBBB
>/RQJV(OEHUW0DURRQ&DVWOH@
BBBBBBBBBBBBBBBBB
E\QDPH
`
BBBBBBBBBBBBBBBBBBBBBBBBB^ >&DVWOH(OEHUW/RQJV0DURRQ@

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB E\KHLJKW
` >(OEHUW&DVWOH/RQJV0DURRQ@
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

6KDUSHQ \RXU SHQFLO &ILL IN THE BLANKS


&OREACHOFTHEQUESTIONSBELOW FILLINTHEBLANK
WITHONEOFTHEWORDSFROMTHEhPOSSIBLEANSWERSv
LIST TOCORRECTLYANSWERTHEQUESTION!NSWERSARE
ATTHEENDOFTHECHAPTER

3RVVLEOH$QVZHUV
&RPSDUDWRU
&RPSDUDEOH
FRPSDUH7R  
FRPSDUH  
\HV
QR
'IVENTHEFOLLOWINGCOMPILABLESTATEMENT

 &ROOHFWLRQVVRUW P\$UUD\/LVW 

7HATMUSTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT????????????????

7HATMETHODMUSTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT????????????????
#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENTBOTH
&RPSDUDWRU!.$&RPSDUDEOH????????????????

'IVENTHEFOLLOWINGCOMPILABLESTATEMENT

 &ROOHFWLRQVVRUW P\$UUD\/LVWP\&RPSDUH 

#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDEOH????????????????

#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDWRU????????????????

-USTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDEOH????????????????

-USTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDWRU????????????????

7HATMUSTTHECLASSOFTHEP\&RPSDUHOBJECTIMPLEMENT????????????????
7HATMETHODMUSTTHECLASSOFTHEP\&RPSDUHOBJECTIMPLEMENT??????????????????

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHDOLQJZLWKGXSOLFDWHV

=PWP<PM[WZ\QVOITT_WZS[J]\VW__MPI^ML]XTQKI\M[
4HESORTINGWORKSGREAT NOWWEKNOWHOWTOSORTONBOTHTITLEUSINGTHE3ONGOBJECTS
COMPARE4O METHOD ANDARTISTUSINGTHE#OMPARATORSCOMPARE METHOD "UTTHERES
ANEWPROBLEMWEDIDNTNOTICEWITHATESTSAMPLEOFTHEJUKEBOXTEXTlLEˆTHESORTEDLIST
CONTAINSDUPLICATES
)TAPPEARSTHATTHEDINERJUKEBOXJUSTKEEPSWRITINGTOTHElLEREGARDLESSOFWHETHERTHE
SAMESONGHASALREADYBEENPLAYEDANDTHUSWRITTEN TOTHETEXTlLE4HE3ONG,IST-ORETXT
JUKEBOXTEXTlLEISACOMPLETERECORDOFEVERYSONGTHATWASPLAYED ANDMIGHTCONTAINTHE
SAMESONGMULTIPLETIMES

)LOH(GLW:LQGRZ+HOS7RR0DQ\1RWHV

MDYD-XNHER[

>3LQN0RRQ1LFN'UDNH6RPHUVDXOW=HUR6KLYD0RRQ3UHP
%HIRUHVRUWLQJ
-RVKXD&LUFOHV%7'HHS&KDQQHO$IUR&HOWV3DVVHQJHU
+HDGPL[/LVWHQ7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL
&LUFOHV%7@

>&LUFOHV%7&LUFOHV%7'HHS&KDQQHO$IUR&HOWV/LVWHQ $IWHUVRUWLQJXVLQJ
7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL3DVVHQJHU WKH6RQJ·VRZQ KRG
+HDGPL[3LQN0RRQ1LFN'UDNH6KLYD0RRQ3UHP-RVKXD FRPSDUH7R PHW
6RPHUVDXOW=HUR@ VRUWE\WLWOH 

>'HHS&KDQQHO$IUR&HOWV&LUFOHV%7&LUFOHV%73DVVHQJHU
JXVLQJ
+HDGPL[3LQN0RRQ1LFN'UDNH6KLYD0RRQ3UHP-RVKXD/LVWHQ $IWHUVRUWLQ PSDUH
WKH$ UW LVW&R
&RPSDUDWRU VRUWE\
7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL6RPHUVDXOW
=HUR@ DUWLVWQDPH 

6RQJ/LVW0RUHW[W

3LQN0RRQ1LFN'UDNH 7KH6RQJ/LVW0RU
6RPHUVDXOW=HUR LWEHFDXVHWKHMX HWH[WILOHQRZKDVGXSOLFDW
NHER[PDFKLQHLV HV Q
SOD\HGLQR ZULWL YHU\VLRQ
WKUHHWLPHVLUGQHUD6RPHERG\GHFLGHGWRSQJODH
6KLYD0RRQ3UHP-RVKXD
&LUFOHV%7 J
'HHS&KDQQHO$IUR&HOWV WKDWKDGEHHQSO URZIROORZHGE\´&LUFOHVµ\D´/LVWHQµ
3DVVHQJHU+HDGPL[
D\HGHDUOLHU VRQJ
:HFDQ·WFKDQJHW
/LVWHQ7DKLWL
EHFDXVHVRPHWLPHV KHZD\WKHWH[WILOHLVZUL
/LVWHQ7DKLWL
LQIRUPDWLRQ:H ZH·UHJRLQJWRQHHGDOOWK WWHQ
KDYHWRFKDQJHW DW
KHMDYDFRGH 
/LVWHQ7DKLWL
&LUFOHV%7

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

?MVMMLI;M\QV[\MILWNI4Q[\
&ROMTHE#OLLECTION!0) WElNDTHREEMAININTERFACES ,IST 3ET AND
-AP!RRAY,ISTISA,IST BUTITLOOKSLIKE3ETISEXACTLYWHATWENEED

'XSOLFDWHV2.

 /,67ZKHQVHTXHQFHPDWWHUV
&ROOHFWLRQVWKDWNQRZDERXWLQGH[SRVLWLRQ
/LVWVNQRZZKHUHVRPHWKLQJLVLQWKHOLVW<RX   
FDQKDYHPRUHWKDQRQHHOHPHQWUHIHUHQFLQJ /LVW
WKHVDPHREMHFW

 6(7ZKHQXQLTXHQHVVPDWWHUV 12GXSOLFDWHV
&ROOHFWLRQVWKDWGRQRWDOORZGXSOLFDWHV
6HWVNQRZZKHWKHUVRPHWKLQJLVDOUHDG\LQWKHFROOHFWLRQ
<RXFDQQHYHUKDYHPRUHWKDQRQHHOHPHQWUHIHUHQFLQJ
WKHVDPHREMHFW RUPRUHWKDQRQHHOHPHQWUHIHUHQFLQJ
WZRREMHFWVWKDWDUHFRQVLGHUHGHTXDO³ZH·OOORRNDWZKDW
REMHFWHTXDOLW\PHDQVLQDPRPHQW 
6HW

XSOLFDWHNH\V
'XSOLFDWHYDOXHV2.EXW12G
 0$3ZKHQILQGLQJVRPHWKLQJE\NH\PDWWHUV
&ROOHFWLRQVWKDWXVHNH\YDOXHSDLUV
0DSVNQRZWKHYDOXHDVVRFLDWHGZLWKDJLYHQNH\<RX
FDQKDYHWZRNH\VWKDWUHIHUHQFHWKHVDPHYDOXHEXW\RX
FDQQRWKDYHGXSOLFDWHNH\V$OWKRXJKNH\VDUHW\SLFDOO\ ´%DOOµ ´)LVKµ´&DUµ
´%DOOµ´%DOOµ´)LVKµ´&DUµ
6WULQJQDPHV VRWKDW\RXFDQPDNHQDPHYDOXHSURSHUW\
OLVWVIRUH[DPSOH DNH\FDQEHDQ\REMHFW 0DS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHFROOHFWLRQV$3,

<PM+WTTMK\QWV)81XIZ\WNQ\
.OTICETHATTHE-APINTERFACEDOESNT
ACTUALLYEXTENDTHE#OLLECTIONINTERFACE
BUT-APISSTILLCONSIDEREDPARTOFTHE
h#OLLECTION&RAMEWORKvALSOKNOWN
ASTHEh#OLLECTION!0)v 3O-APSARE
&ROOHFWLRQ
STILLCOLLECTIONS EVENTHOUGHTHEYDONT
LQWHUIDFH
INCLUDEJAVAUTIL#OLLECTIONINTHEIR
INHERITANCETREE
.OTETHISISNOTTHECOMPLETE
COLLECTION!0)THEREAREOTHER 6HW /LVW
CLASSESANDINTERFACES BUT LQWHUIDFH LQWHUIDFH
THESEARETHEONESWECARE
MOSTABOUT

6RUWHG6HW
LQWHUIDFH

7UHH6HW /LQNHG+DVK6HW +DVK6HW $UUD\/LVW /LQNHG/LVW 9HFWRU

.(<
EXTENDS
0DSVGRQ·WH[WHQGIURP
IMPLEMENTS MDYDXWLO&ROOHFWLRQEXW
WKH\·UHVWLOOFRQVLGHUHG
+DVK6HW IMPLEMENTATIONCLASS 0DS WREHSDUWRIWKH
LQWHUIDFH ´FROOHFWLRQVIUDPHZRUNµ
6HW INTERFACE LQ-DYD6RD0DSLV
VWLOOUHIHUUHGWRDVD
FROOHFWLRQ
6RUWHG0DS
LQWHUIDFH

7UHH0DS +DVK0DS /LQNHG+DVK0DS +DVKWDEOH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

=[QVOI0I[P;M\QV[\MILWN)ZZIa4Q[\
7EADDEDONTOTHE*UKEBOXTOPUTTHESONGSINA(ASH3ET.OTEWELEFTOUTSOME
OFTHE*UKEBOXCODE BUTYOUCANCOPYITFROMEARLIERVERSIONS!NDTOMAKEITEASIER
TOREADTHEOUTPUT WEWENTBACKTOTHEEARLIERVERSIONOFTHE3ONGSTO3TRING
METHOD SOTHATITPRINTSONLYTHETITLEINSTEADOFTITLEANDARTIST

LPSRUWMDYDXWLO 
LPSRUWMDYDLR 

SXEOLFFODVV-XNHER[^
$UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
PDLQPHWKRGHWF

SXEOLFYRLGJR ^  UD\/LVW
JHW6RQJV 
:HGLGQ·WFKDQJHJHW6RQJV VRLWVWLOOSXWVWKHVRQJVLQDQ$U
6\VWHPRXWSULQWOQ VRQJ/LVW 
&ROOHFWLRQVVRUW VRQJ/LVW  +HUHZHFUHDWHDQHZ+DVK6HW
SDUDPHWHUL]HGWRKROG6RQJV
6\VWHPRXWSULQWOQ VRQJ/LVW 
+DVK6HW6RQJ!VRQJ6HW QHZ+DVK6HW6RQJ! 
VRQJ6HWDGG$OO VRQJ/LVW  +DVK6HWKDVDVLPSOHDGG$OO PH
6\VWHPRXWSULQWOQ VRQJ6HW  WDNHDQRWKHUFROOHF WKRGWKDWFDQ
WLRQDQGXVHLWWRSRSXODWH 
` WKH+DVK6HW,W·VWKHVDP HDVLIZHDGGHGHDFK
VRQJRQHDWDWLPH H[FHSW PXFKVLPSOHU 
JHW6RQJV DQGDGG6RQJ PHWKRGV
`
)LOH(GLW:LQGRZ+HOS*HW%HWWHU0XVLF

MDYD-XNHER[
%HIRUHVRUWLQJ
WKH$UUD\/LVW
>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS&KDQQHO
3DVVHQJHU/LVWHQ/LVWHQ/LVWHQ&LUFOHV@
$IWHUVRUWLQJ
>&LUFOHV&LUFOHV'HHS&KDQQHO/LVWHQ/LVWHQ/LVWHQ WKH$UUD\/LVW
3DVVHQJHU3LQN0RRQ6KLYD0RRQ6RPHUVDXOW@ E\WLWOH 
>3LQN0RRQ/LVWHQ6KLYD0RRQ&LUFOHV/LVWHQ'HHS&KDQQHO
3DVVHQJHU&LUFOHV/LVWHQ6RPHUVDXOW@ $IWHUSXWWLQJLW
LQWRD+DVK6HW
DQGSULQWLQJWKH
7KH6HWGLGQ·WKHOS +DVK6HW ZHGLGQ·W
$QGLWORVWLWVVRUWRUGHU FDOOVRUW DJDLQ 
:HVWLOOKDYHDOOWKHGXSOLFDWHV  ZKHQZHSXWWKHOLVWLQWRDERXW
+DVK6HWEXWZH·OOZRUU\D
WKDWRQHODWHU
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
REMHFWHTXDOLW\

?PI\UISM[\ _WWJRMK\[MY]IT ' ,IWZRREMHFWVIRRDQGEDUDUH


HTXDOIRRHTXDOV EDU PXVWEH
&IRST WEHAVETOASKˆWHATMAKESTWO3ONGREFERENCES WUXHDQGERWKIRRDQGEDUPXVW
DUPLICATES4HEYMUSTBECONSIDEREDEQUAL)SITSIMPLYTWO UHWXUQWKHVDPHYDOXHIURP
REFERENCESTOTHEVERYSAMEOBJECT ORISITTWOSEPARATEOBJECTS KDVK&RGH )RUD6HWWRWUHDW
WZRREMHFWVDVGXSOLFDWHV\RX
THATBOTHHAVETHESAMETITLE
PXVWRYHUULGHWKHKDVK&RGH 
4HISBRINGSUPAKEYISSUEREFERENCEEQUALITYVSOBJECTEQUALITY DQGHTXDOV PHWKRGVLQKHULWHG
IURPFODVV2EMHFWVRWKDW\RX
FDQPDNHWZRGLIIHUHQWREMHFWV
 7ZRUHIHUHQFHVRQHREMHFWRQWKHKHDS
5HIHUHQFHHTXDOLW\ EHYLHZHGDVHTXDO

7ZRUHIHUHQFHVWKDWUHIHUWRWKHVDPHREMHFWRQ
WKHKHDSDUHHTXDO3HULRG,I\RXFDOOWKHKDVK&RGH PHWKRGRQ
ERWKUHIHUHQFHV\RX·OOJHWWKHVDPHUHVXOW,I\RXGRQ·WRYHUULGHWKH WLWOH&LUFOHV
KDVK&RGH PHWKRGWKHGHIDXOWEHKDYLRU UHPHPEHU\RXLQKHULWHG KDVK&RGH
WKLVIURPFODVV2EMHFW LVWKDWHDFKREMHFWZLOOJHWDXQLTXHQXPEHU ^gg
PRVWYHUVLRQVRI-DYDDVVLJQDKDVKFRGHEDVHGRQWKHREMHFW·V
PHPRU\DGGUHVVRQWKHKHDSVRQRWZRREMHFWVZLOOKDYHWKHVDPH 6RQJ
KDVKFRGH  ZYj
,I\RXZDQWWRNQRZLIWZRUHIHUHQFHVDUHUHDOO\UHIHUULQJWRWKHVDPH
REMHFWXVHWKH RSHUDWRUZKLFK UHPHPEHU FRPSDUHVWKHELWVLQ 6RQJ
WKHYDULDEOHV,IERWKUHIHUHQFHVSRLQWWRWKHVDPHREMHFWWKHELWVZLOO LI IRR EDU ^
EHLGHQWLFDO ERWKUHIHUHQFHVDUHUHIHUULQJ
WRWKHVDPHREMHFWRQWKHKHDS
`

 7ZRUHIHUHQFHVWZRREMHFWVRQWKHKHDSEXW
2EMHFWHTXDOLW\
WLWOH&LUFOHV
KDVK&RGH
WKHREMHFWVDUHFRQVLGHUHGPHDQLQJIXOO\HTXLYDOHQW
,I\RXZDQWWRWUHDWWZRGLIIHUHQW6RQJREMHFWVDVHTXDO IRU WLWOH&LUFOHV
H[DPSOHLI\RXGHFLGHGWKDWWZR6RQJVDUHWKHVDPHLIWKH\KDYH KDVK&RGH
PDWFKLQJWLWOHYDULDEOHV \RXPXVWRYHUULGHERWKWKHKDVK&RGH  ^gg
DQGHTXDOV PHWKRGVLQKHULWHGIURPFODVV2EMHFW
$VZHVDLGDERYHLI\RXGRQ·WRYHUULGHKDVK&RGH WKHGHIDXOW 6RQJ
EHKDYLRU IURP2EMHFW LVWRJLYHHDFKREMHFWDXQLTXHKDVKFRGH ZYj
YDOXH6R\RXPXVWRYHUULGHKDVK&RGH WREHVXUHWKDWWZR
HTXLYDOHQWREMHFWVUHWXUQWKHVDPHKDVKFRGH%XW\RXPXVWDOVR 6RQJ
RYHUULGHHTXDOV VRWKDWLI\RXFDOOLWRQHLWKHUREMHFWSDVVLQJLQ
WKHRWKHUREMHFWDOZD\VUHWXUQVWUXH
LI IRRHTXDOV EDU  IRRKDVK&RGH  EDUKDVK&RGH ^
ERWKUHIHUHQFHVDUHUHIHUULQJWRHLWKHUD
DVLQJOHREMHFWRUWRWZRREMHFWVWKDWDUHHTXDO
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

0W_I0I[P;M\KPMKS[NWZL]XTQKI\M["PI[P+WLMIVLMY]IT[
7HENYOUPUTANOBJECTINTOA(ASHSET ITUSESTHE (ASH3ETlNDSAMATCHINGHASHCODEFORTWOOBJECTSˆ
OBJECTSHASHCODEVALUETODETERMINEWHERETOPUT ONEYOUREINSERTINGANDONEALREADYINTHESETˆTHE
THEOBJECTINTHE3ET"UTITALSOCOMPARESTHEOBJECTS (ASH3ETWILLTHENCALLONEOFTHEOBJECTSEQUALS
HASHCODETOTHEHASHCODEOFALLTHEOTHEROBJECTSIN METHODSTOSEEIFTHESEHASHCODE MATCHEDOBJECTS
THE(ASH3ET ANDIFTHERESNOMATCHINGHASHCODE REALLYAREEQUAL
THE(ASH3ETASSUMESTHATTHISNEWOBJECTISNOTA !NDIFTHEYREEQUAL THE(ASH3ETKNOWSTHATTHE
DUPLICATE OBJECTYOUREATTEMPTINGTOADDISADUPLICATEOF
)NOTHERWORDS IFTHEHASHCODESAREDIFFERENT THE SOMETHINGINTHE3ET SOTHEADDDOESNTHAPPEN
(ASH3ETASSUMESTHERESNOWAYTHEOBJECTSCANBE 9OUDONTGETANEXCEPTION BUTTHE(ASH3ETSADD
EQUAL METHODRETURNSABOOLEANTOTELLYOUIFYOUCARE
3OYOUMUSTOVERRIDEHASH#ODE TOMAKESURETHE WHETHERTHENEWOBJECTWASADDED3OIFTHEADD
OBJECTSHAVETHESAMEVALUE METHODRETURNSFALSE YOUKNOWTHENEWOBJECTWASA
"UTTWOOBJECTSWITHTHESAMEHASH#ODE MIGHTNOT DUPLICATEOFSOMETHINGALREADYINTHESET
BEEQUALMOREONTHISONTHENEXTPAGE SOIFTHE

,QHHGWRNQRZ
KDVK&RGH
2EMHFW\RX·UHWU\LQJWR
LI\RXUKDVKFRGH DGGWRWKH+DVK6HW
YDOXHVDUHWKHVDPH WLWOH&LUFOHV
KDVK&RGH
^gg

6RQJ
+DVK6HW KDVK&R
GH
ZYj 2EMHFWDOUHDG\,1
WLWOH&LUFOHV WKH+DVK6HW
6RQJ  KDVK&RGH

<RXUKDVKFRGHV
DUHWKHVDPHEXWDUH
\RX5($//<HTXDO" HTXDOV ED 2EMHFW\RX·UHWU\LQJ
U WRDGGUXQVLWVHTXDOV 
WLWOH&LUFOHV PHWKRGFRPSDULQJLWVHOI
KDVK&RGH WREDUDQGUHWXUQVWUXH
^gg WUXH
6RQJ
+DVK6HW
ZYj 2EMHFWDOUHDG\,1
WLWOH&LUFOHV WKH+DVK6HW
6RQJ KDVK&RGH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RYHUULGLQJKDVK&RGH DQGHTXDOV

<PM;WVOKTI[[_Q\PW^MZZQLLMV
PI[P+WLMIVLMY]IT[
FODVV6RQJLPSOHPHQWV&RPSDUDEOH6RQJ!^
OOLQJWKLV
6WULQJWLWOH
6WULQJDUWLVW
HW  R U D Q\RQHHOVHRFD
6WULQJUDWLQJ 7KH+ VHQGVLWDQRWKHU6 
D VK 6 QJ
6WULQJESP PHWKRG 

SXEOLFERROHDQHTXDOV 2EMHFWD6RQJ ^ 5( $ 7 Q HZ V LV WK DWWLWOHLVD6V WU LQJ
7KH* TX DO
6RQJV  6RQJ D6RQJ DQG6WULQJVKDOZYHDQRYHUULGGHQLVHDVNRQH
KD YH WR GR
UHWXUQJHW7LWOH HTXDOV VJHW7LWOH  PHWKRG6RDO XDH RWKHRWKHUVRQJ·V
WLWOH
` WLWOHLILW·VHT OW
SXEOLFLQWKDVK&RGH ^ 6DPHGHDOKHUH H6WU
UHWXUQWLWOHKDVK&RGH  KDVK&RGH PHWKRWK G VR \R
LQJFODVVKDVDQRYHUULGGH
Q
` FDOOLQJKDVK&RGH RQWKHWXFDQMXVWUHWXUQWKHUHVXOWRI

LWO
DQGHTXDOV DUHXVLQJWKH H1RWLFHKRZKDVK&RGH 
SXEOLFLQWFRPSDUH7R 6RQJV ^
6$0(LQVWDQFHYDULDEOH
UHWXUQWLWOHFRPSDUH7R VJHW7LWOH 
`

6RQJ 6WULQJW6WULQJD6WULQJU6WULQJE ^
WLWOH W
DUWLVW D 1RZLWZRUNV1RGXSOLFDWHVZKHQZH
UDWLQJ U SULQWRXWWKH+DVK6HW%XWZHGLGQ·W
ESP E FDOOVRUW DJDLQDQGZKHQZHSXW
` WKH$UUD\/LVWLQWRWKH+DVK6HWWKH
+DVK6HWGLGQ·WSUHVHUYHWKHVRUWRUGHU
SXEOLF6WULQJJHW7LWOH ^
UHWXUQWLWOH )LOH(GLW:LQGRZ+HOS5HERRW:LQGRZV
`
MDYD-XNHER[
SXEOLF6WULQJJHW$UWLVW ^
UHWXUQDUWLVW >3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV
`
'HHS&KDQQHO3DVVHQJHU/LVWHQ/LVWHQ
SXEOLF6WULQJJHW5DWLQJ ^ /LVWHQ&LUFOHV@
UHWXUQUDWLQJ
` >&LUFOHV&LUFOHV'HHS&KDQQHO/LVWHQ
/LVWHQ/LVWHQ3DVVHQJHU3LQN0RRQ6KLYD
SXEOLF6WULQJJHW%SP ^
UHWXUQESP 0RRQ6RPHUVDXOW@
`
 >3LQN0RRQ/LVWHQ6KLYD0RRQ&LUFOHV
SXEOLF6WULQJWR6WULQJ ^ 'HHS&KDQQHO3DVVHQJHU6RPHUVDXOW@
UHWXUQWLWOH
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

WKHUH DUH QR
-DYD2EMHFW/DZ)RU+DVK&RGH 
'XPE 4XHVWLRQV
DQGHTXDOV Q: (OWCOMEHASHCODESCANBETHESAME
EVENIFOBJECTSARENTEQUAL
7KH$3,GRFVIRUFODVV2EMHFWVWDWHWKH
UXOHV\RX0867IROORZ
A: (ASH3ETSUSEHASHCODESTOSTORETHEELE

 ,IWZRREMHFWVDUHHTXDOWKH\0867
KDYHPDWFKLQJKDVKFRGHV
MENTSINAWAYTHATMAKESITMUCHFASTERTOACCESS
)FYOUTRYTOFINDANOBJECTINAN!RRAY,ISTBYGIVING
THE!RRAY,ISTACOPYOFTHEOBJECTASOPPOSEDTO
ANINDEXVALUE THE!RRAY,ISTHASTOSTARTSEARCHING

 ,IWZRREMHFWVDUHHTXDOFDOOLQJ
HTXDOV RQHLWKHUREMHFW0867UHWXUQ
FROMTHEBEGINNING LOOKINGATEACHELEMENTIN
THELISTTOSEEIFITMATCHES"UTA(ASH3ETCANFIND
ANOBJECTMUCHMOREQUICKLY BECAUSEITUSESTHE

Licensed by
WUXH,QRWKHUZRUGVLI DHTXDOV E WKHQ HASHCODEASAKINDOFLABELONTHEhBUCKETvWHERE
EHTXDOV D  ITSTOREDTHEELEMENT3OIFYOUSAY h)WANTYOU
TOFINDANOBJECTINTHESETTHATSEXACTLYLIKETHIS
ONEvTHE(ASH3ETGETSTHEHASHCODEVALUEFROM
 ,IWZRREMHFWVKDYHWKHVDPHKDVKFRGH THECOPYOFTHE3ONGYOUGIVEITSAY  AND

Eduard Simons
YDOXHWKH\DUH127UHTXLUHGWREHHTXDO THENTHE(ASH3ETSAYS h/H )KNOWEXACTLYWHERE
%XWLIWKH\·UHHTXDOWKH\0867KDYHWKH THEOBJECTWITHHASHCODEISSTOREDv ANDIT
VDPHKDVKFRGHYDOXH GOESRIGHTTOTHEBUCKET
4HISISNTTHEWHOLESTORYYOUGETINACOMPUTER

 SCIENCECLASS BUTITSENOUGHFORYOUTOUSE(ASH

104038
6RLI\RXRYHUULGHHTXDOV \RX0867 3ETSEFFECTIVELY)NREALITY DEVELOPINGAGOODHASH
RYHUULGHKDVK&RGH  CODEALGORITHMISTHESUBJECTOFMANYA0H$THESIS
ANDMORETHANWEWANTTOCOVERINTHISBOOK

 7KHGHIDXOWEHKDYLRURIKDVK&RGH 
LVWRJHQHUDWHDXQLTXHLQWHJHUIRUHDFK
4HEPOINTISTHATHASHCODESCANBETHESAME
WITHOUTNECESSARILYGUARANTEEINGTHATTHEOBJECTS
AREEQUAL BECAUSETHEhHASHINGALGORITHMvUSEDIN
REMHFWRQWKHKHDS6RLI\RXGRQ·WRYHUULGH
KDVK&RGH LQDFODVVQRWZRREMHFWVRI THEHASH#ODE METHODMIGHTHAPPENTORETURN
WKDWW\SHFDQ(9(5EHFRQVLGHUHGHTXDO THESAMEVALUEFORMULTIPLEOBJECTS!NDYES THAT
MEANSTHATMULTIPLEOBJECTSWOULDALLLANDINTHE
SAMEBUCKETINTHE(ASH3ETBECAUSEEACHBUCKET

 7KHGHIDXOWEHKDYLRURIHTXDOV LVWR
GRDQ FRPSDULVRQ,QRWKHUZRUGVWR
REPRESENTSASINGLEHASHCODEVALUE BUTTHATSNOT
THEENDOFTHEWORLD)TMIGHTMEANTHATTHE(ASH
3ETISJUSTALITTLELESSEFFICIENTORTHATITSFILLED
WHVWZKHWKHUWKHWZRUHIHUHQFHVUHIHUWRD
WITHANEXTREMELYLARGENUMBEROFELEMENTS BUT
VLQJOHREMHFWRQWKHKHDS6RLI\RXGRQ·W
IFTHE(ASH3ETFINDSMORETHANONEOBJECTINTHE
RYHUULGHHTXDOV LQDFODVVQRWZRREMHFWV
SAMEHASHCODEBUCKET THE(ASH3ETWILLSIMPLY
FDQ(9(5EHFRQVLGHUHGHTXDOVLQFH
USETHEEQUALS METHODTOSEEIFTHERESAPERFECT
UHIHUHQFHVWRWZRGLIIHUHQWREMHFWVZLOO
MATCH)NOTHERWORDS HASHCODEVALUESARESOME
DOZD\VFRQWDLQDGLIIHUHQWELWSDWWHUQ
TIMESUSEDTONARROWDOWNTHESEARCH BUTTOFIND
THEONEEXACTMATCH THE(ASH3ETSTILLHASTOTAKE
DHTXDOV E PXVWDOVRPHDQWKDW
ALLTHEOBJECTSINTHATONEBUCKETTHEBUCKETFOR
DKDVK&RGH  EKDVK&RGH
ALLOBJECTSWITHTHESAMEHASHCODE ANDTHENCALL
EQUALS ONTHEMTOSEEIFTHEOBJECTITSLOOKINGFOR
%XWDKDVK&RGH  EKDVK&RGH
ISINTHATBUCKET
GRHV127KDYHWRPHDQDHTXDOV E

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
7UHH6HWVDQGVRUWLQJ

)VLQN_M_IV\\PM[M\\W[\Ia
[WZ\ML_M¼^MOW\<ZMM;M\
4REE3ETISSIMILARTO(ASH3ETINTHATITPREVENTSDUPLICATES"UTITALSOKEEPSTHELISTSORTED)TWORKS
JUSTLIKETHESORT METHODINTHATIFYOUMAKEA4REE3ETUSINGTHESETSNO ARGCONSTRUCTOR THE
4REE3ETUSESEACHOBJECTSCOMPARE4O METHODFORTHESORT"UTYOUHAVETHEOPTIONOFPASSING
A#OMPARATORTOTHE4REE3ETCONSTRUCTOR TOHAVETHE4REE3ETUSETHATINSTEAD4HEDOWNSIDETO
4REE3ETISTHATIFYOUDONTNEEDSORTING YOURESTILLPAYINGFORITWITHASMALLPERFORMANCEHIT"UT
YOULLPROBABLYlNDTHATTHEHITISALMOSTIMPOSSIBLETONOTICEFORMOSTAPPS
LPSRUWMDYDXWLO 
LPSRUWMDYDLR 
SXEOLFFODVV-XNHER[^
$UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
LQWYDO

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ-XNHER[ JR 
`

UH H6HWLQVWHDGRQ RI+DVK6HW
H D 7 RU
SXEOLFYRLGJR ^  ,Q VW DQ WL DW
QR  DU J 7 UH H6HW VWUXMHFW
F
JHW6RQJV  &DOOLQJ HWZLOOXVHWKH6RQJRE ·V
WK H FW
6\VWHPRXWSULQWOQ VRQJ/LVW  PHDQVWKHV PHWKRGIRUWKHVRUW
&ROOHFWLRQVVRUW VRQJ/LVW  FRPSDUH7R
6\VWHPRXWSULQWOQ VRQJ/LVW 
XO G KD YH S DV VH G LQD&RPSDUDWRU
7UHH6HW6RQJ!VRQJ6HW QHZ7UHH6HW6RQJ!  :HFR
VRQJ6HWDGG$OO VRQJ/LVW 
:HFDQDGGDOOWKHVRQJVI WKH+
XVLQJDGG$OO  2UZHFRXOGURP
6\VWHPRXWSULQWOQ VRQJ6HW  DVK6HW
`
VRQ JVL KDYHDGGHGWKH
QGL YLGX DOO\XVLQJVRQ WDGG MXVW
WKHZD\ZHDGGHGVRQJVWJ6H

YRLGJHW6RQJV ^ RWKH$UUD\/LVW
WU\^
)LOH¿OH QHZ)LOH ³6RQJ/LVW0RUHW[W´ 
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU ¿OH 
6WULQJOLQH QXOO
ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
  DGG6RQJ OLQH 
 `

`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`

YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW ³´ 
6RQJQH[W6RQJ QHZ6RQJ WRNHQV>@WRNHQV>@WRNHQV>@WRNHQV>@ 
VRQJ/LVWDGG QH[W6RQJ  
` 
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

?PI\aW]5=;<SVW_IJW]\<ZMM;M\
4REE3ETLOOKSEASY BUTMAKESUREYOUREALLYUNDERSTANDWHATYOUNEEDTO
DOTOUSEIT7ETHOUGHTITWASSOIMPORTANTTHATWEMADEITANEXERCISESO
YOUDHAVETOTHINKABOUTIT$O./4TURNTHEPAGEUNTILYOUVEDONETHIS
7EMEANIT

6KDUSHQ \RXU SHQFLO LPSRUWMDYDXWLO 

SXEOLFFODVV7HVW7UHH^
,OOKATTHISCODE SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
2EADITCAREFULLY THEN QHZ7HVW7UHH JR 
ANSWERTHEQUESTIONS `
BELOW.OTETHERE
ARENOSYNTAXERRORS SXEOLFYRLGJR ^
INTHISCODE %RRNE QHZ%RRN ³+RZ&DWV:RUN´ 
%RRNE QHZ%RRN ³5HPL[\RXU%RG\´ 
%RRNE QHZ%RRN ³)LQGLQJ(PR´ 

7UHH6HW%RRN!WUHH QHZ7UHH6HW%RRN! 
WUHHDGG E 
WUHHDGG E 
WUHHDGG E 
6\VWHPRXWSULQWOQ WUHH 
`
`

FODVV%RRN^
6WULQJWLWOH
SXEOLF%RRN 6WULQJW ^
WLWOH W
`
`

 7HATISTHERESULTWHENYOUCOMPILETHISCODE

 )FITCOMPILES WHATISTHERESULTWHENYOURUNTHE4EST4REECLASS

 )FTHEREISAPROBLEMEITHERCOMPILE TIMEORRUNTIME WITHTHISCODE HOWWOULDYOUFIXIT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZ7UHH6HWVVRUW

<ZMM;M\MTMUMV\[5=;<JMKWUXIZIJTM
4REE3ETCANTREADTHEPROGRAMMERSMINDTOlGUREOUTHOWTHE
OBJECTSSHOULDBESORTED9OUHAVETOTELLTHE4REE3ETHOW

7RXVHD7UHH6HWRQHRIWKHVH
WKLQJVPXVWEHWUXH

 7KHHOHPHQWVLQ
WKHOLVWPXVWEHRIDW\SHWKDW
LPSOHPHQWV&RPSDUDEOH

7KH%RRNFODVVRQWKHSUHYLRXV FODVV%RRNLPSOHPHQWV&RPSDUDEOH^
SDJHGLGQ·WLPSOHPHQW&RPSDUDEOHVRLW 6WULQJWLWOH
ZRXOGQ·WZRUNDWUXQWLPH7KLQNDERXWLWWKH SXEOLF%RRN 6WULQJW ^
SRRU7UHH6HW·VVROHSXUSRVHLQOLIHLVWRNHHS WLWOH W
\RXUHOHPHQWVVRUWHGDQGRQFHDJDLQ³LWKDG `
QRLGHDKRZWRVRUW%RRNREMHFWV,WGRHVQ·WIDLO SXEOLFLQWFRPSDUH7R 2EMHFWE ^
DWFRPSLOHWLPHEHFDXVHWKH7UHH6HWDGG  %RRNERRN  %RRN E
UHWXUQ WLWOHFRPSDUH7R ERRNWLWOH 
PHWKRGGRHVQ·WWDNHD&RPSDUDEOHW\SH7KH
`
7UHH6HWDGG PHWKRGWDNHVZKDWHYHUW\SH `
\RXXVHGZKHQ\RXFUHDWHGWKH7UHH6HW,Q
RWKHUZRUGVLI\RXVD\QHZ7UHH6HW%RRN! 
WKHDGG PHWKRGLVHVVHQWLDOO\DGG %RRN $QG
WKHUH·VQRUHTXLUHPHQWWKDWWKH%RRNFODVV
LPSOHPHQW&RPSDUDEOH%XWLWIDLOVDWUXQWLPH
ZKHQ\RXDGGWKHVHFRQGHOHPHQWWRWKHVHW
7KDW·VWKHILUVWWLPHWKHVHWWULHVWRFDOORQHRI
WKHREMHFW·VFRPSDUH7R PHWKRGVDQGFDQ·W

25 SXEOLFFODVV%RRN&RPSDUHLPSOHPHQWV&RPSDUDWRU%RRN! ^
 <RXXVHWKH7UHH6HW·V
RYHUORDGHGFRQVWUXFWRU
SXEOLFLQWFRPSDUH %RRNRQH%RRNWZR ^
UHWXUQ RQHWLWOHFRPSDUH7R WZRWLWOH 
WKDWWDNHVD&RPSDUDWRU `
`

7UHH6HWZRUNVDORWOLNHWKHVRUW  FODVV7HVW^
PHWKRG³\RXKDYHDFKRLFHRIXVLQJWKH SXEOLFYRLGJR ^
HOHPHQW·VFRPSDUH7R PHWKRGDVVXPLQJ %RRNE QHZ%RRN ³+RZ&DWV:RUN´ 
%RRNE QHZ%RRN ³5HPL[\RXU%RG\´ 
WKHHOHPHQWW\SHLPSOHPHQWHGWKH
%RRNE QHZ%RRN ³)LQGLQJ(PR´ 
&RPSDUDEOHLQWHUIDFH25\RXFDQXVH %RRN&RPSDUHE&RPSDUH QHZ%RRN&RPSDUH 
DFXVWRP&RPSDUDWRUWKDWNQRZVKRZ 7UHH6HW%RRN!WUHH QHZ7UHH6HW%RRN! E&RPSDUH 
WRVRUWWKHHOHPHQWVLQWKHVHW7RXVHD WUHHDGG QHZ%RRN ³+RZ&DWV:RUN´ 
FXVWRP&RPSDUDWRU\RXFDOOWKH7UHH6HW WUHHDGG QHZ%RRN ³)LQGLQJ(PR´ 
FRQVWUXFWRUWKDWWDNHVD&RPSDUDWRU WUHHDGG QHZ%RRN ³5HPL[\RXU%RG\´ 
6\VWHPRXWSULQWOQ WUHH 
`
`
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

?M¼^M[MMV4Q[\[IVL;M\[VW__M¼TT][MI5 IX
,ISTSAND3ETSAREGREAT BUTSOMETIMESA-APISTHEBESTCOLLECTIONNOT#OLLECTION
WITHACAPITALh#vˆREMEMBERTHAT-APSAREPARTOF*AVACOLLECTIONSBUTTHEYDONT
IMPLEMENTTHE#OLLECTIONINTERFACE 
)MAGINEYOUWANTACOLLECTIONTHATACTSLIKEAPROPERTYLIST WHEREYOUGIVEITANAME
ANDITGIVESYOUBACKTHEVALUEASSOCIATEDWITHTHATNAME!LTHOUGHKEYSWILLOFTENBE
3TRINGS THEYCANBEANY*AVAOBJECTOR THROUGHAUTOBOXING APRIMITIVE 

YDOXH (DFKHOHPHQWLQD0DSLVDFWXDOO\
7:2REMHFWV³DNH\DQGDYDOXH
´%DOOµ ´)LVKµ´&DUµ
´%DOOµ´%DOOµ´%DOOµ´%DOOµ <RXFDQKDYHGXSOLFDWHYDOXHVEXW
NH\ 127GXSOLFDWHNH\V
0DS

0DSH[DPSOH
LPSRUWMDYDXWLO 
+DVK0DSQHHGV7:2W\SHSDUDPHWH
RQHIRUWKHNH\DQGRQHIRU UV³
SXEOLFFODVV7HVW0DS^ WKHYDOXH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

+DVK0DS6WULQJ,QWHJHU!VFRUHV QHZ+DVK0DS6WULQJ,QWHJHU! 

VFRUHVSXW ³.DWK\´  8VHSXW LQVWHDGRIDGG QGQRZ


VFRUHVSXW ³%HUW´  LWWDNHVWZRDUJXPHQWV NH D
\YDOXH 
RIFRXUVH
VFRUHVSXW ³6N\OHU´ 

6\VWHPRXWSULQWOQ VFRUHV 
6\VWHPRXWSULQWOQ VFRUHVJHW ³%HUW´ 
7KHJHW PHWKRGWDNHVDNH\DQG
` UHWXUQVWKHYDOXH LQWKLVFDVHDQ,Q
` WHJHU 

)LOH(GLW:LQGRZ+HOS:KHUH$P,

MDYD7HVW0DS :KHQ\RXSULQWD0DSLWJLYHV\RXW
LQEUDFHV^`LQVWHDGRIWKHEUDF KHNH\ YDOXH
^6N\OHU %HUW .DWK\ ` ZKHQ\RXSULQWOLVWVDQGVHWV NHWV>@\RXVHH


\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHQHULFW\SHV

.QVITTaJIKS\WOMVMZQK[
,IDPHWKRGDUJXPHQWLVDQDUUD\
2EMEMBEREARLIERINTHECHAPTERWETALKEDABOUTHOWMETHODS RI$QLPDOVLWZLOODOVRWDNHDQ
THATTAKEARGUMENTSWITHGENERICTYPESCANBEWEIRD!NDWE DUUD\RIDQ\$QLPDOVXEW\SH
MEANWEIRDINTHEPOLYMORPHICSENSE)FTHINGSSTARTTOFEEL
STRANGEHERE JUSTKEEPGOINGˆITTAKESAFEWPAGESTOREALLYTELL ,QRWKHUZRUGVLIDPHWKRGLV
THEWHOLESTORY GHFODUHGDV

7ELLSTARTWITHAREMINDERONHOWARRAYARGUMENTSWORK YRLGIRR $QLPDO>@D ^`


POLYMORPHICALLY ANDTHENLOOKATDOINGTHESAMETHINGWITH
GENERICLISTS4HECODEBELOWCOMPILESANDRUNSWITHOUTERRORS $VVXPLQJ'RJH[WHQGV$QLPDO
\RXDUHIUHHWRFDOOERWK
+HUH·VKRZLWZRUNVZLWKUHJXODUDUUD\V
IRR DQ$QLPDO$UUD\ 
IRR D'RJ$UUD\ 
LPSRUWMDYDXWLO 

SXEOLFFODVV7HVW*HQHULFV^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ7HVW*HQHULFV JR 
` 'HFODUHDQGFUHDWHDQ$QLPD UD\
WKDWKROGVERWKGRJVDQGFDWODU
V

SXEOLFYRLGJR ^
$QLPDO>@DQLPDOV ^QHZ'RJ QHZ&DW QHZ'RJ `
'RJ>@GRJV ^QHZ'RJ QHZ'RJ QHZ'RJ `
WDNH$QLPDOV DQLPDOV  'HFODUHDQGFUHDWHD'RJDUUD\
WDNH$QLPDOV GRJV  &DOOWDNH$QLPDOV XVLQJERWK WKDWKROGVRQO\'RJV WKHFRPSLOHU
` DUUD\W\SHVDVDUJXPHQWV ZRQ·WOHW\RXSXWD&DWLQ 
SXEOLFYRLGWDNH$QLPDOV $QLPDO>@DQLPDOV ^ 7KHFUXFLDOSRLQWLVWKDWWKHWDNH$
IRU $QLPDODDQLPDOV ^ PHWKRGFDQWDNHDQ$QLPDO>@RUD'QLPDOV 
DHDW  'RJ,6$$QLPDO3RO\PRUSKLVPLQ RJ>@VLQFH
` 5HP HPEHUZHFDQFDOO21/<WKHPHW DFWLRQ
` DQLPDOVLQFHWKHDQLPDOVSDUDPH KRG VG HFOD UHGLQW\SH
`
WHULVRIW\SH$QLPDODUUD\
DQGZHGLGQ·WGRDQ\FDVWLQJ :K
7KDWDUUD\PLJKWKROGERWK'RJVDDWZRXOGZHFDVWLWWR"
QG&DWV

DEVWUDFWFODVV$QLPDO^
YRLGHDW ^
6\VWHPRXWSULQWOQ ³DQLPDOHDWLQJ´ 
`
`
FODVV'RJH[WHQGV$QLPDO^
YRLGEDUN ^` 7KHVLPSOLILHG$QLPDO
`
FODVVKLHUDUFK\
FODVV&DWH[WHQGV$QLPDO^
YRLGPHRZ ^`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

=[QVOXWTaUWZXPQKIZO]UMV\[IVLOMVMZQK[
3OWESAWHOWTHEWHOLETHINGWORKEDWITHARRAYS BUTWILLITWORK
THESAMEWAYWHENWESWITCHFROMANARRAYTOAN!RRAY,IST3OUNDS
REASONABLE DOESNTIT
&IRST LETSTRYITWITHONLYTHE!NIMAL!RRAY,IST7EMADEJUSTAFEW
CHANGESTOTHEGO METHOD

3DVVLQJLQMXVW$UUD\/LVW$QLPDO!
$VLPSOHFKDQJHIURP$QLPDO>@WR
$UUD\/LVW$QLPDO! 
SXEOLFYRLGJR ^
$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW$QLPDO! 
DQLPDOVDGG QHZ'RJ 
DQLPDOVDGG QHZ&DW  :HKDYHWRDGGRQHDWDWLPHVLQFH
DQLPDOVDGG QHZ'RJ  VKRUWFXWV\QWD[OLN WKHUH·VQR
HWKHUHLVIRUDUUD\FUHDWLRQ
WDNH$QLPDOV DQLPDOV  7KLVLVWKHVDPHFRGHH[FHSWQRZ
` WKH´DQLPDOVµ
YDULDEOHUHIHUVWRDQ$UUD\/LVWLQVW
HDGRIDUUD\ 

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW  7KHPHWKRGQRZWDNHVDQ$UUD\/LV
` LQVWHDGRIDQDUUD\EXWHYHU\WKLQJW
` WKHVDPH5 HOVHLV
HPHPEHUWKDWIR RSV\QWD[
ZRUNVIRUERWKDUUD\VDQGFROOUOR
HFWLRQV

&RPSLOHVDQGUXQVMXVWÀQH

)LOH(GLW:LQGRZ+HOS&DW)RRG,V%HWWHU

MDYD7HVW*HQHULFV

DQLPDOHDWLQJ
DQLPDOHDWLQJ
DQLPDOHDWLQJ
DQLPDOHDWLQJ
DQLPDOHDWLQJ
DQLPDOHDWLQJ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SRO\PRUSKLVPDQGJHQHULFV

*]\_QTTQ\_WZS_Q\P)ZZIa4Q[\$,WO&'
"ECAUSEOFPOLYMORPHISM THECOMPILERLETUSPASSA$OGARRAY
TOAMETHODWITHAN!NIMALARRAYARGUMENT.OPROBLEM!ND
AN!RRAY,IST!NIMALCANBEPASSEDTOAMETHODWITHAN
!RRAY,IST!NIMALARGUMENT3OTHEBIGQUESTIONIS WILLTHE
!RRAY,IST!NIMALARGUMENTACCEPTAN!RRAY,IST$OG)FITWORKS
WITHARRAYS SHOULDNTITWORKHERETOO

3DVVLQJLQMXVW$UUD\/LVW'RJ!

SXEOLFYRLGJR ^
$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW$QLPDO! 
DQLPDOVDGG QHZ'RJ 
DQLPDOVDGG QHZ&DW 
DQLPDOVDGG QHZ'RJ 
WDNH$QLPDOV DQLPDOV  :HNQRZWKLVOLQ HZRUNHGILQH
$UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW'RJ! 
GRJVDGG QHZ'RJ  0DNHD'RJ$UUD\/LVWDQGSXWDFR
GRJVDGG QHZ'RJ  XSOHGRJVLQ
WDNH$QLPDOV GRJV  :LOOWKLVZRUNQRZWKDWZHFKDQJHG
` IURPDQDUUD\WRDQ$UUD\/LVW"

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW 
`
`

:KHQZHFRPSLOHLW

)LOH(GLW:LQGRZ+HOS&DWV$UH6PDUWHU

MDYD7HVW*HQHULFV

7HVW*HQHULFVMDYDWDNH$QLPDOV MDYDXWLO
$UUD\/LVW$QLPDO! LQ7HVW*HQHULFVFDQQRWEHDSSOLHGWR
,WORRNHGVRULJKW
MDYDXWLO$UUD\/LVW'RJ! EXWZHQWVRZURQJ
WDNH$QLPDOV GRJV 
A
HUURU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

$QG,·PVXSSRVHGWREH2.ZLWKWKLV"7KDW
WRWDOO\VFUHZVP\DQLPDOVLPXODWLRQZKHUHWKH
YHWHULQDU\SURJUDPWDNHVDOLVWRIDQ\W\SHRI
DQLPDOVRWKDWDGRJNHQQHOFDQVHQGDOLVWRIGRJV
DQGDFDWNHQQHOFDQVHQGDOLVWRIFDWVQRZ
\RX·UHVD\LQJ,FDQ·WGRWKDWLI,XVHFROOHFWLRQV
LQVWHDGRIDUUD\V"

?PI\KW]TLPIXXMVQNQ\_MZMITTW_ML
)MAGINETHECOMPILERLETYOUGETAWAYWITHTHAT)TLETYOUPASSAN
!RRAY,IST$OGTOAMETHODDECLAREDAS

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW 
`
`

4HERESNOTHINGINTHATMETHODTHATLOOKSHARMFUL RIGHT!FTERALL
THEWHOLEPOINTOFPOLYMORPHISMISTHATANYTHINGAN!NIMALCAN
DOINTHISCASE THEEAT METHOD A$OGCANDOASWELL3OWHATS
THEPROBLEMWITHHAVINGTHEMETHODCALLEAT ONEACHOFTHE$OG
REFERENCES
.OTHING.OTHINGATALL
4HERESNOTHINGWRONGWITHTHATCODE"UTIMAGINETHISCODEINSTEAD

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW$QLPDO!DQLPDOV ^
DQLPDOVDGG QHZ&DW 
` <LNHV:HMXVWVWXFND&DWLQZKDW
PLJKWEHD'RJVRQO\$UUD\/LVW
3OTHATSTHEPROBLEM4HERESCERTAINLYNOTHINGWRONGWITHADDINGA
#ATTOAN!RRAY,IST!NIMAL ANDTHATSTHEWHOLEPOINTOFHAVINGAN
!RRAY,ISTOFASUPERTYPELIKE!NIMALˆSOTHATYOUCANPUTALLTYPESOF
ANIMALSINASINGLE!NIMAL!RRAY,IST
"UTIFYOUPASSEDA$OG!RRAY,ISTˆONEMEANTTOHOLD/.,9$OGSˆ
TOTHISMETHODTHATTAKESAN!NIMAL!RRAY,IST THENSUDDENLYYOUD
ENDUPWITHA#ATINTHE$OGLIST4HECOMPILERKNOWSTHATIFITLETS
YOUPASSA$OG!RRAY,ISTINTOTHEMETHODLIKETHAT SOMEONECOULD
ATRUNTIME ADDA#ATTOYOUR$OGLIST3OINSTEAD THECOMPILERJUST
WONTLETYOUTAKETHERISK
)FYOUDECLAREAMETHODTOTAKE!RRAY,IST!NIMALITCANTAKE/.,9AN
!RRAY,IST!NIMAL NOT!RRAY,IST$OGOR!RRAY,IST#AT

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DUUD\VYV$UUD\/LVWV

:DLWDPLQXWHLIWKLVLVZK\WKH\ZRQ·WOHW
\RXSDVVD'RJ$UUD\/LVWLQWRDPHWKRGWKDW
WDNHVDQ$QLPDO$UUD\/LVW³WRVWRS\RXIURP
SRVVLEO\SXWWLQJD&DWLQZKDWZDVDFWXDOO\D'RJOLVW
WKHQZK\GRHVLWZRUNZLWKDUUD\V"'RQ·W\RXKDYH
WKHVDPHSUREOHPZLWKDUUD\V"&DQ·W\RXVWLOODGG
D&DWREMHFWWRD'RJ>@"

$UUD\W\SHVDUHFKHFNHGDJDLQDW
UXQWLPHEXWFROOHFWLRQW\SHFKHFNV
KDSSHQRQO\ZKHQ\RXFRPSLOH

,ETSSAYYOUDOADDA#ATTOANARRAYDECLAREDAS$OG;=ANARRAYTHAT
WASPASSEDINTOAMETHODARGUMENTDECLAREDAS!NIMAL;= WHICHISA
PERFECTLYLEGALASSIGNMENTFORARRAYS 

SXEOLFYRLGJR ^
'RJ>@GRJV ^QHZ'RJ QHZ'RJ QHZ'RJ `
WDNH$QLPDOV GRJV 
`

SXEOLFYRLGWDNH$QLPDOV $QLPDO>@DQLPDOV ^
DQLPDOV>@ QHZ&DW 
` :HSXWDQHZ&DWLQWRD'RJDUUD\7KH
FRPSLOHUDOORZHGLWEHFDXVHLWNQRZVWKDW
\RXPLJKWKDYHSDVVHGD&DWDUUD\RU$QLPDO
DUUD\WRWKHPHWKRGVRWRWKHFRPSLOHULW
ZDVSRVVLEOHWKDWWKLVZDV2.
,WFRPSLOHVEXWZKHQZHUXQLW
)LOH(GLW:LQGRZ+HOS&DWV$UH6PDUWHU

MDYD7HVW*HQHULFV
([FHSWLRQLQWKUHDG³PDLQ´MDYDODQJ$UUD\6WRUH([FHSWLRQ
:KHZ $WOHDVWWKH &DW
-90VWRSSHGLW DW7HVW*HQHULFVWDNH$QLPDOV 7HVW*HQHULFVMDYD
DW7HVW*HQHULFVJR 7HVW*HQHULFVMDYD
DW7HVW*HQHULFVPDLQ 7HVW*HQHULFVMDYD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

:RXOGQ·WLWEHGUHDP\LIWKHUHZHUH
DZD\WRVWLOOXVHSRO\PRUSKLFFROOHFWLRQ
W\SHVDVPHWKRGDUJXPHQWVVRWKDWP\
YHWHULQDU\SURJUDPFRXOGWDNH'RJOLVWV
DQG&DWOLVWV"7KDWZD\,FRXOGORRSWKURXJK
WKHOLVWVDQGFDOOWKHLULPPXQL]H PHWKRG
EXWLWZRXOGVWLOOKDYHWREHVDIHVRWKDW\RX

Licensed by
FRXOGQ·WDGGD&DWLQWRWKH'RJOLVW%XW,
JXHVVWKDW·VMXVWDIDQWDV\

Eduard Simons
104038

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHQHULFZLOGFDUGV

?QTLKIZL[\W\PMZM[K]M
)TLOOKSUNUSUAL BUTTHEREISAWAYTOCREATEAMETHODARGUMENTTHAT
CANACCEPTAN!RRAY,ISTOFANY!NIMALSUBTYPE4HESIMPLESTWAYISTO
USEAWILDCARDˆADDEDTOTHE*AVALANGUAGEEXPLICITLYFORTHISREASON

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW"H[WHQGV$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW  5HPHPEHUWKHNH\ZRUG´H[WHQGVµ
`
` KHUHPHDQVHLWKHUH[WHQGV25
LPSOHPHQWVGHSHQGLQJRQWKH
3ONOWYOUREWONDERING h7HATSTHEDIFFERENCE$ONTYOUHAVE W\SH6RLI\RXZDQWWRWDNH
THESAMEPROBLEMASBEFORE4HEMETHODABOVEISNTDOING
ANYTHINGDANGEROUSˆCALLINGAMETHODANY!NIMALSUBTYPEIS
DQ$UUD\/LVWRIW\SHVWKDW
GUARANTEEDTOHAVEˆBUTCANTSOMEONESTILLCHANGETHISTOADDA LPSOHPHQWWKH3HWLQWHUIDFH
#ATTOTHEANIMALSLIST EVENTHOUGHITSREALLYAN!RRAY,IST$OG \RX·GGHFODUHLWDV
!NDSINCEITSNOTCHECKEDAGAINATRUNTIME HOWISTHISANY
DIFFERENTFROMDECLARINGITWITHOUTTHEWILDCARDv $UUD\/LVW"H[WHQGV3HW!
!NDYOUDBERIGHTFORWONDERING4HEANSWERIS./7HENYOU
USETHEWILDCARDINYOURDECLARATION THECOMPILERWONTLET
YOUDOANYTHINGTHATADDSTOTHELIST

:KHQ\RXXVHDZLOGFDUGLQ\RXUPHWKRG
DUJXPHQWWKHFRPSLOHUZLOO6723\RXIURPGRLQJ
DQ\WKLQJWKDWFRXOGKXUWWKHOLVWUHIHUHQFHGE\WKH
PHWKRGSDUDPHWHU

<RXFDQVWLOOLQYRNHPHWKRGVRQWKHHOHPHQWVLQ
WKHOLVWEXW\RXFDQQRWDGGHOHPHQWVWRWKHOLVW

,QRWKHUZRUGV\RXFDQGRWKLQJVZLWKWKHOLVW
HOHPHQWVEXW\RXFDQ·WSXWQHZWKLQJVLQWKHOLVW
6R\RX·UHVDIHDWUXQWLPHEHFDXVHWKHFRPSLOHU
ZRQ·WOHW\RXGRDQ\WKLQJWKDWPLJKWEHKRUULEOHDW
UXQWLPH

6RWKLVLV2.LQVLGHWDNH$QLPDOV 

IRU $QLPDODDQLPDOV ^
DHDW 
`

%XW7+,6ZRXOGQRWFRPSLOH

DQLPDOVDGG QHZ&DW 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

)T\MZVI\M[aV\I`NWZLWQVO\PM[IUM\PQVO
9OUPROBABLYREMEMBERTHATWHENWELOOKEDATTHESORT METHOD
ITUSEDAGENERICTYPE BUTWITHANUNUSUALFORMATWHERETHETYPE
PARAMETERWASDECLAREDBEFORETHERETURNTYPE)TSJUSTADIFFERENTWAY
OFDECLARINGTHETYPEPARAMETER BUTTHERESULTSARETHESAME

7KLV
SXEOLF7H[WHQGV$QLPDO!YRLGWDNH7KLQJ $UUD\/LVW7!OLVW 

'RHVWKHVDPHWKLQJDVWKLV
SXEOLFYRLGWDNH7KLQJ $UUD\/LVW"H[WHQGV$QLPDO!OLVW 

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: )FTHEYBOTHDOTHESAMETHING WHYWOULDYOUUSE
ONEOVERTHEOTHER

A: )TALLDEPENDSONWHETHERYOUWANTTOUSEh4vSOME
WHEREELSE&OREXAMPLE WHATIFYOUWANTTHEMETHODTO
HAVETWOARGUMENTSˆBOTHOFWHICHARELISTSOFATYPETHAT
EXTEND!NIMAL)NTHATCASE ITSMOREEFFICIENTTOJUSTDECLARE
THETYPEPARAMETERONCE

SXEOLF7H[WHQGV$QLPDO!YRLGWDNH7KLQJ $UUD\/LVW7!RQH$UUD\/LVW7!WZR

)NSTEADOFTYPING

SXEOLFYRLGWDNH7KLQJ $UUD\/LVW"H[WHQGV$QLPDO!RQH
$UUD\/LVW"H[WHQGV$QLPDO!WZR 



\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
EHWKHFRPSLOHUH[HUFLVH

1dQ^OU_Q
"%THECOMPILER ADVANCED
9OURJOBISTOPLAYCOMPILERANDDETERMINEWHICHOF
THESESTATEMENTSWOULDCOMPILE"UTSOMEOFTHIS
CODEWASNTCOVEREDINTHECHAPTER SOYOUNEEDTO
WORKOUTTHEANSWERSBASEDONWHATYOU$)$LEARN
APPLYINGTHEhRULESvTOTHESENEWSITUATIONS)N
SOMECASES YOUMIGHTHAVETOGUESS BUTTHE
POINTISTOCOMEUPWITHAREASONABLEANSWER
BASEDONWHATYOUKNOWSOFAR
.OTEASSUMETHATTHISCODEISWITHINALEGALCLASSAND
METHOD

#OMPILES

Q $UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW$QLPDO! 


Q

$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW'RJ! 

Q /LVW$QLPDO!OLVW QHZ$UUD\/LVW$QLPDO! 
Q $UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW'RJ! 
Q $UUD\/LVW$QLPDO!DQLPDOV GRJV
Q /LVW'RJ!GRJ/LVW GRJV
Q $UUD\/LVW2EMHFW!REMHFWV QHZ$UUD\/LVW2EMHFW! 
Q /LVW2EMHFW!REM/LVW REMHFWV
Q

$UUD\/LVW2EMHFW!REMV QHZ$UUD\/LVW'RJ! 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

LPSRUWMDYDXWLO  3OLUTIONTOTHE±2EVERSE
SXEOLFFODVV6RUW0RXQWDLQV^ %NGINEER²SHARPENEXERCISE
/LQNHG/LVW0RXQWDLQ!PWQ QHZ/LQNHG/LVW0RXQWDLQ! 

FODVV1DPH&RPSDUHLPSOHPHQWV&RPSDUDWRU0RXQWDLQ!^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQRQHQDPHFRPSDUH7R WZRQDPH 
`
`
FODVV+HLJKW&RPSDUHLPSOHPHQWV&RPSDUDWRU0RXQWDLQ!^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQ WZRKHLJKWRQHKHLJKW 
`
`
HKHLJKWOLVWLV
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ 'LG\RXQRWLFHWKDVHWTXWKHQFH"
QHZ6RUW0RXQWDLQ JR  LQ'(6&(1',1*
`
SXEOLFYRLGJR ^
PWQDGG QHZ0RXQWDLQ ´/RQJVµ 
PWQDGG QHZ0RXQWDLQ ´(OEHUWµ 
PWQDGG QHZ0RXQWDLQ ´0DURRQµ 
PWQDGG QHZ0RXQWDLQ ´&DVWOHµ 
6\VWHPRXWSULQWOQ ´DVHQWHUHG?QµPWQ 
1DPH&RPSDUHQF QHZ1DPH&RPSDUH 
&ROOHFWLRQVVRUW PWQQF 
6\VWHPRXWSULQWOQ ´E\QDPH?QµPWQ 
+HLJKW&RPSDUHKF QHZ+HLJKW&RPSDUH 
&ROOHFWLRQVVRUW PWQKF 
6\VWHPRXWSULQWOQ ´E\KHLJKW?QµPWQ 
`
`

FODVV0RXQWDLQ^
6WULQJQDPH /UTPUT
LQWKHLJKW
)LOH(GLW:LQGRZ+HOS7KLV2QH¶V)RU%RE
MDYD6RUW0RXQWDLQV
0RXQWDLQ 6WULQJQLQWK ^
DVHQWHUHG
QDPH Q >/RQJV(OEHUW0DURRQ&DVWOH@
KHLJKW K E\QDPH
`
>&DVWOH(OEHUW/RQJV0DURRQ@
SXEOLF6WULQJWR6WULQJ  ^
E\KHLJKW
UHWXUQQDPH´´KHLJKW >(OEHUW&DVWOH/RQJV0DURRQ@
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILOOLQWKHEODQNVROXWLRQ

%XERCISE3OLUTION
3RVVLEOH$QVZHUV
&RPSDUDWRU
&RPSDUDEOH
FRPSDUH7R  
FRPSDUH  
\HV
QR

'IVENTHEFOLLOWINGCOMPILABLESTATEMENT

 &ROOHFWLRQVVRUW P\$UUD\/LVW 

7HATMUSTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDEOH
7HATMETHODMUSTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENTFRPSDUH7R 
#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENTBOTH
&RPSDUDWRU!.$&RPSDUDEOH\HV

'IVENTHEFOLLOWINGCOMPILABLESTATEMENT

 &ROOHFWLRQVVRUW P\$UUD\/LVWP\&RPSDUH 

#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDEOH\HV

#ANTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDWRU\HV

-USTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDEOHQR

-USTTHECLASSOFTHEOBJECTSSTOREDINP\$UUD\/LVWIMPLEMENT&RPSDUDWRUQR

7HATMUSTTHECLASSOFTHEP\&RPSDUHOBJECTIMPLEMENT&RPSDUDWRU
7HATMETHODMUSTTHECLASSOFTHEP\&RPSDUHOBJECTIMPLEMENTFRPSDUH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FROOHFWLRQVZLWKJHQHULFV

"%THECOMPILERSOLUTION

#OMPILES

Q $UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW$QLPDO! 


Q

$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW'RJ! 

Q /LVW$QLPDO!OLVW QHZ$UUD\/LVW$QLPDO! 
Q $UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW'RJ! 
Q $UUD\/LVW$QLPDO!DQLPDOV GRJV
Q /LVW'RJ!GRJ/LVW GRJV
Q $UUD\/LVW2EMHFW!REMHFWV QHZ$UUD\/LVW2EMHFW! 
Q /LVW2EMHFW!REM/LVW REMHFWV
Q

$UUD\/LVW2EMHFW!REMV QHZ$UUD\/LVW'RJ! 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

5HOHDVH<RXU&RGH

,W·VWLPHWROHWJR9OUWROTEYOURCODE9OUTESTEDYOURCODE9OUREFINEDYOURCODE
9OUTOLDEVERYONEYOUKNOWTHATIFYOUNEVERSAWALINEOFCODEAGAIN THATDBEFINE"UTINTHE

END YOUVECREATEDAWORKOFART4HETHINGACTUALLYRUNS"UTNOWWHAT(OWDOYOUGIVEITTO

ENDUSERS7HATEXACTLYDOYOUGIVETOENDUSERS7HATIFYOUDONTEVENKNOWWHOYOUREND

USERSARE)NTHESEFINALTWOCHAPTERS WELLEXPLOREHOWTOORGANIZE PACKAGE ANDDEPLOYYOUR

*AVACODE7ELLLOOKATLOCAL SEMI LOCAL ANDREMOTEDEPLOYMENTOPTIONSINCLUDINGEXECUTABLE

JARS *AVA7EB3TART 2-) AND3ERVLETS)NTHISCHAPTER WELLSPENDMOSTOFOURTIMEONORGANIZING

ANDPACKAGINGYOURCODEˆTHINGSYOULLNEEDTOKNOWREGARDLESSOFYOURULTIMATEDEPLOYMENT

CHOICE)NTHEFINALCHAPTER WELLFINISHWITHONEOFTHECOOLESTTHINGSYOUCANDOIN*AVA2ELAX

2ELEASINGYOURCODEISNOTSAYINGGOODBYE4HERESALWAYSMAINTENANCE

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
-DYDGHSOR\PHQW

,MXTWaQVOaW]ZIXXTQKI\QWV
7HATEXACTLYISA*AVAAPPLICATION)NOTHERWORDS
ONCEYOUREDONEWITHDEVELOPMENT WHATISITTHATYOU
DELIVER#HANCESARE YOUREND USERSDONTHAVEASYSTEM
IDENTICALTOYOURS-OREIMPORTANTLY THEYDONTHAVEYOUR $-DYDSURJUDPLVDEXQFK
APPLICATION3ONOWITSTIMETOGETYOURPROGRAMINSHAPE
FORDEPLOYMENTINTO4HE/UTSIDE7ORLD)NTHISCHAPTER RIFODVVHV7KDW·VWKH
WELLLOOKATLOCALDEPLOYMENTS INCLUDING%XECUTABLE*ARS
ANDTHEPART LOCALPART REMOTETECHNOLOGYCALLED*AVA7EB RXWSXWRI\RXUGHYHORSPHQW
3TART)NTHENEXTCHAPTER WELLLOOKATTHEMOREREMOTE
DEPLOYMENTOPTIONS INCLUDING2-)AND3ERVLETS 7KHUHDOTXHVWLRQLVZKDW
'HSOR\PHQWRSWLRQV WRGRZLWKWKRVHFODVVHV
)LOH(GLW9LHZ
)LOH(GLW9LHZ

+773
)LOH(GLW9LHZ
+773 ZKHQ\RX·UHGRQH
50,
6HUYOHWV
([HFXWDEOH
-DU :HE6WDUW 50,DSS

/RFDO &RPELQDWLRQ5HPRWH

 /RFDO
7KHHQWLUHDSSOLFDWLRQUXQVRQWKH
HQGXVHU·VFRPSXWHUDVDVWDQGDORQH
SUREDEO\*8,SURJUDPGHSOR\HGDV
DQH[HFXWDEOH-$5 ZH·OOORRNDW-$5
LQDIHZSDJHV
DLQ EDUEHOO
EU%UDLQ%DUEHOO
7HATARETHEADVANTAGESAND
 &RPELQDWLRQRIORFDODQGUHPRWH DISADVANTAGESOFDELIVERINGYOUR
7KHDSSOLFDWLRQLVGLVWULEXWHGZLWKD *AVAPROGRAMASALOCAL STAND
FOLHQWSRUWLRQUXQQLQJRQWKHXVHU·V ALONEAPPLICATIONRUNNINGON
ORFDOV\VWHPFRQQHFWHGWRDVHUYHU THEEND USERSCOMPUTER
ZKHUHRWKHUSDUWVRIWKHDSSOLFDWLRQ
DUHUXQQLQJ 7HATARETHEADVANTAGESAND
DISADVANTAGESOFDELIVERINGYOUR
*AVAPROGRAMASWEB BASED
 5HPRWH SYSTEMWHERETHEUSERINTERACTS
7KHHQWLUH-DYDDSSOLFDWLRQUXQVRQD WITHAWEBBROWSER ANDTHE
VHUYHUV\VWHPZLWKWKHFOLHQWDFFHVVLQJ *AVACODERUNSASSERVLETSONTHE
WKHV\VWHPWKURXJKVRPHQRQ-DYD SERVER
PHDQVSUREDEO\DZHEEURZVHU

"UTBEFOREWEREALLYGETINTOTHEWHOLEDEPLOYMENTTHING
LETSTAKEASTEPBACKANDLOOKATWHATHAPPENSWHENYOUVE
lNISHEDPROGRAMMINGYOURAPPANDYOUSIMPLYWANTTOPULL
OUTTHECLASSlLESTOGIVETHEMTOANEND USER7HATSREALLY
INTHATWORKINGDIRECTORY

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

,W·V
ÀQDOO\GRQH
1UIOQVM\PQ[[KMVIZQW
"OBSHAPPILYATWORKONTHElNALPIECESOFHISCOOLNEW
*AVAPROGRAM!FTERWEEKSOFBEINGINTHEh)M JUST
ONE COMPILE AWAYvMODE THISTIMEHESREALLY
DONE4HEPROGRAMISAFAIRLYSOPHISTICATED
'5)APP BUTSINCETHEBULKOFITIS3WING
CODE HESMADEONLYNINECLASSESOFHIS
OWN

Licensed by
!TLAST ITSTIMETODELIVERTHEPROGRAMTOTHE
CLIENT(ElGURESALLHEHASTODOISCOPYTHE
NINECLASSlLES SINCETHECLIENTALREADYHAS
THE*AVA!0)INSTALLED(ESTARTSBYDOINGAN
OVONTHEDIRECTORYWHEREALLHISlLESARE

Eduard Simons
104038
:KDWWKH" 7HOA3OMETHINGSTRANGEHASHAPPENED)NSTEADOF
lLESNINESOURCECODElLESANDNINECOMPILEDCLASS
lLES HESEESlLES MANYOFWHICHHAVEVERYSTRANGE
NAMESLIKE
!CCOUNT&ILE,ISTENERCLASS
#HART3AVE,ISTENERCLASS
ANDONITGOES(EHADCOMPLETELYFORGOTTEN
THATTHECOMPILERHASTOGENERATECLASSlLES
FORALLTHOSEINNERCLASS'5)EVENTLISTENERS
HEMADE ANDTHATSWHATALLTHESTRANGELY
NAMEDCLASSESARE
.OWHEHASTOCAREFULLYEXTRACTALLTHECLASS
lLESHENEEDS)FHELEAVESEVENONEOFTHEMOUT
HISPROGRAMWONTWORK"UTITSTRICKYSINCEHE
DOESNTWANTTOACCIDENTALLYSENDTHECLIENT
ONEOFHISSOURCECODElLES YETEVERYTHINGIS
INTHESAMEDIRECTORYINONEBIGMESS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RUJDQL]LQJ\RXUFODVVHV

;MXIZI\M[W]ZKMKWLMIVLKTI[[NQTM[
!SINGLEDIRECTORYWITHAPILEOFSOURCECODEANDCLASSlLESISA
MESS)TTURNSOUT "OBSHOULDHAVEBEENORGANIZINGHISlLES %XW,WKRXJKW,GLGQ·WKDYH
FROMTHEBEGINNING KEEPINGTHESOURCECODEANDCOMPILED DFKRLFHDERXWSXWWLQJWKHFODVV
ÀOHVLQZLWKWKHVRXUFHÀOHV
CODESEPARATE)NOTHERWORDS MAKINGSUREHISCOMPILEDCLASS
:KHQ\RXFRPSLOHWKH\MXVWJR
lLESDIDNTLANDINTHESAMEDIRECTORYASHISSOURCECODE WKHUHVRZKDWGR,GR"
4HEKEYISACOMBINATIONOFDIRECTORYSTRUCTUREORGANIZATIONANDTHE
GCOMPILEROPTION
4HEREAREDOZENSOFWAYSYOUCANORGANIZEYOURlLES ANDYOUR
COMPANYMIGHTHAVEASPECIlCWAYTHEYWANTYOUTODOIT7E
RECOMMENDANORGANIZATIONALSCHEMETHATSBECOMEALMOST
STANDARD THOUGH
7ITHTHISSCHEME YOUCREATEAPROJECTDIRECTORY ANDINSIDE
THATYOUCREATEADIRECTORYCALLEDSOURCEANDADIRECTORYCALLED
CLASSES9OUSTARTBYSAVINGYOURSOURCECODEJAVAlLES INTO
THESOURCEDIRECTORY4HENTHETRICKISTOCOMPILEYOURCODE
INSUCHAWAYTHATTHEOUTPUTTHECLASSlLES ENDSUPINTHE
CLASSESDIRECTORY
!NDTHERESANICECOMPILERmAG G THATLETSYOUDOTHAT

&RPSLOLQJZLWKWKHG GLUHFWRU\ ÁDJ

FG0\3URMHFWVRXUFH
MDYDFGFODVVHV0\$SSMDYD
0\3URMHFW
WHOOVWKHFRPSLO RSX VWLOO
FRPSLOHGFRGH FHUODVWVI WWKH WKHODVWWKLQJWLKHVMDYD FRPSLOHGFRGH FRPSLOHIURPU\
LOHV  HRI
WKHQDP SLOH
LQWRWKH´FODVVHVGLUHFW
RU\ ODQGVKHUH 7+,6GLUHFWR
WKDW·VRQHGLUHFW ILOHWRFRP
EDFNGRZQDJDLQIRUUR\PXSDQG
FXUUHQWZRUNLQJGLUHFWWKH
RU\
"YUSINGTHEGmAG YOUGETTODECIDEWHICHDIRECTORYTHE FODVVHV VRXUFH
COMPILEDCODELANDSIN RATHERTHANACCEPTINGTHEDEFAULTOF
CLASSlLESLANDINGINTHESAMEDIRECTORYASTHESOURCECODE
4OCOMPILEALLTHEJAVAlLESINTHESOURCEDIRECTORY USE
UXQ\RXUPDLQ 
I URPKHUH  /RUSHU
LXUHHXJXH
MDYDFGFODVVHV MDYD 
 WDWYHUR
FRQVH


MDYDFRPSLOHV$//
 HXJXHUR/RUH
 GRHOLTXLV
GRGHOGLS

VRXUFHILOHVLQWKH

5XQQLQJ\RXUFRGH 

FXUUHQWGLUHFWRU\ 0\$SSFODVV 0\$SSMDYD


FG0\3URMHFWFODVVHV WURXEOHVKRRWLQJQRWHHYHU\WKLQJLQWKLVFKDSWHUDVVXPHVWKDWWKH
MDYD0LQL UXQ\RXUSURJUDPI FXUUHQWZRUNLQJGLUHFWRU\ LHWKH´µ LVLQ\RXUFODVVSDWK,I\RX
WKH¶FODVVHV·GLUHFWRURP KDYHH[SOLFLWO\VHWDFODVVSDWKHQYLURQPHQWYDULDEOHEHFHUWDLQ 
U\ WKDWLWFRQWDLQVWKH´µ
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

8]\aW]Z2I^IQVI2):
!*!2lLEISA*AVA!2CHIVE)TSBASEDONTHEPKZIPlLEFORMAT ANDITLETSYOUBUNDLE
ALLYOURCLASSESSOTHATINSTEADOFPRESENTINGYOURCLIENTWITHCLASSlLES YOUHAND
OVERJUSTASINGLE*!2lLE)FYOUREFAMILIARWITHTHETARCOMMANDON5.)8 YOULL
RECOGNIZETHEJARTOOLCOMMANDS.OTEWHENWESAY*!2INALLCAPS WEREREFERRING
-$5
TOTHEARCHIVElLE7HENWEUSELOWERCASE WEREREFERRINGTOTHEJARTOOLYOUUSETO
CREATE*!2lLES
4HEQUESTIONIS WHATDOESTHECLIENTDOWITHTHE*!2(OWDOYOUGETITTORUN
9OUMAKETHE*!2EXECUTABLE
!NEXECUTABLE*!2MEANSTHEEND USERDOESNTHAVETOPULLTHECLASSlLESOUTBEFORE
RUNNINGTHEPROGRAM4HEUSERCANRUNTHEAPPWHILETHECLASSlLESARES TILLINTHE
*!24HETRICKISTOCREATEAMANIFESTlLE THATGOESINTHE*!2ANDHOLDSINFORMATION
ABOUTTHElLESINTHE*!24OMAKEA*!2EXECUTABLE THEMANIFESTMUSTTELLTHE*6-
WHICHCLASSHASTHEMAIN METHOD

0DNLQJDQH[HFXWDEOH-$5 0\3URMHFW

 0DNHVXUHDOORI\RXUFODVVÀOHVDUHLQ 



WKHFODVVHVGLUHFWRU\ 






:H·UHJRLQJWRUHÀQHWKLVLQDIHZSDJHVEXW 





IRUQRZNHHSDOO\RXUFODVVÀOHVVLWWLQJLQWKH FODVVHV 






GLUHFWRU\QDPHG¶FODVVHV· 



0\$SSFODVV

 &UHDWHDPDQLIHVWW[WÀOHWKDWVWDWHV
ZKLFKFODVVKDVWKHPDLQ PHWKRG
0DNHDWH[WÀOHQDPHGPDQLIHVWW[WWKDWKDVD 0DLQ&ODVV0\L$SS 0\3URMHFW
RQHOLQH
0DLQ&ODVV0\$SS
GRQ·WSXWWKHFODVV 

RQWKHHQG 




3UHVVWKHUHWXUQNH\DIWHUW\SLQJWKH0DLQ FODVVHV 

&ODVVOLQHRU\RXUPDQLIHVWPD\QRWZRUN
FRUUHFWO\3XWWKHPDQLIHVWÀOHLQWRWKH´FODVVHVµ PDQLIHVWW[W 0DLQ&ODVV0LQL$SS

GLUHFWRU\

PDQLIHVWW[W
 5XQWKHMDUWRROWRFUHDWHD-$5ÀOH
WKDWFRQWDLQVHYHU\WKLQJLQWKHFODVVHV FODVVHV
GLUHFWRU\SOXVWKHPDQLIHVW 




FG0LQL3URMHFWFODVVHV 

MDUFYPIPDQLIHVWW[WDSSMDU FODVV QRVRXUFH


25
0DLQ&ODVV0LQL$SS
FRGH MDYD 
MDUFYPIPDQLIHVWW[WDSSMDU0\$SSFODVV LQWKH-$5
DSSMDU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HFXWDEOH-$5

)LOH(GLW9LHZ
)LOH(GLW9LHZ
)LOH(GLW9LHZ
)LOH(GLW9LHZ

+773 +773
50, 0RVWORFDO-DYD
([HFXWDEOH
6HUYOHWV
*8,FOLHQW
-DU :HE6WDUW 50,DSS DSSVDUHGHSOR\HGDV
/RFDO &RPELQDWLRQ5HPRWH H[HFXWDEOH-$5ILOHV

:]VVQVOM`MK]\QVO\PM2):
*AVATHE*6- ISCAPABLEOFLOADINGACLASSFROMA*!2 ANDCALLING
THEMAIN METHODOFTHATCLASS)NFACT THEENTIREAPPLICATIONCAN
STAYINTHE*!2/NCETHEBALLISROLLINGIE THEMAIN METHOD
STARTSRUNNING THE*6-DOESNTCAREWHEREYOURCLASSESCOME
FROM ASLONGASITCANlNDTHEM!NDONEOFTHEPLACESTHE*6-
LOOKSISWITHINANY*!2lLESINTHECLASSPATH)FITCANS EEA*!2 THE
*6-WILLLOOKINTHAT*!2WHENITNEEDSTOlNDANDLOADACLASS 7KH-90KDVWR¶VHH·WK H-$5VR
LWPXVWEHLQ \R XU FOD VVSDWK 7KH
H-
HDVLHVWZD\WRPDNHWKJGLUHFWR $5 YLVLEOH
XU ZRU NLQ U\
LVWRPDNH\R $5 LV
WKHSODFHZKHUHWKH-
FODVVHV
FG0\3URMHFWFODVVHV





MDYDMDUDSSMDU
-$5IDRLQU


LQ VLG H W K LV
ORRNV IRU0
0DLQ&ODVV0LQL$SS

7KHMDU 7KH-90HVWZLWKDQHQWU\R QH\RXJHW


DSSMDU -90\RX·UIHODJLJWHOOVWKH LI
DPDQ LWGRHVQ·WILQ G
-$5LQVWHDGR YLQJLWD &ODVV,I HH[FHSWLRQ
IDFODVV DUXQWLP
$EPENDINGONHOWYOUROPERATINGSYSTEMISCONlGURED YOU
MIGHTEVENBEABLETOSIMPLYDOUBLE CLICKTHE*!2lLETOLAUNCH
IT4HISWORKSONMOSTmAVORSOF7INDOWS AND-AC/389OU
CANUSUALLYMAKETHISHAPPENBYSELECTINGTHE*!2ANDTELLING
THE/3TOh/PENWITHvORWHATEVERTHEEQUIVALENTISONYOUR
OPERATINGSYSTEM 

WKHUH DUH QR
'XPE 4XHVWLRQV
Q: 7HYCANT)JUST*!2UPANENTIREDIRECTORY Q: 7HATDIDYOUJUSTSAY

A: 4HE*6-LOOKSINSIDETHE*!2ANDEXPECTSTOFIND A: 9OUCANTPUTYOURCLASSFILESINTOSOMEARBITRARY
WHATITNEEDSRIGHTTHERE)TWONTGODIGGINGINTOOTHER DIRECTORYAND*!2THEMUPTHATWAY"UTIFYOURCLASSES
DIRECTORIES UNLESSTHECLASSISPARTOFAPACKAGE ANDEVEN BELONGTOPACKAGES YOUCAN*!2UPTHEENTIREPACKAGE
THENTHE*6-LOOKSONLYINTHEDIRECTORIESTHATMATCHTHE DIRECTORYSTRUCTURE)NFACT YOUMUST7ELLEXPLAINALLTHISON
PACKAGESTATEMENT THENEXTPAGE SOYOUCANRELAX

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

8]\aW]ZKTI[[M[QVXIKSIOM[
3OYOUVEWRITTENSOMENICELYREUSABLECLASSlLES ANDYOUVE
POSTEDTHEMINYOURINTERNALDEVELOPMENTLIBRARYFOROTHER
PROGRAMMERSTOUSE7HILEBASKINGINTHEGLOWOFHAVING
JUSTDELIVEREDSOMEOFTHEINYOURHUMBLEOPINION BEST
EXAMPLESOF//EVERCONCEIVED YOUGETAPHONECALL!
FRANTICONE4WOOFYOURCLASSESHAVETHESAMENAMEAS
THECLASSES&REDJUSTDELIVEREDTOTHELIBRARY!NDALLHELLIS
BREAKINGLOOSEOUTTHERE ASNAMINGCOLLISIONSANDAMBIGUITIES
BRINGDEVELOPMENTTOITSKNEES
!NDALLBECAUSEYOUDIDNTUSEPACKAGES7ELL YOUDIDUSE
PACKAGES INTHESENSEOFUSINGCLASSESINTHE*AVA!0)THATARE
OFCOURSE INPACKAGES"UTYOUDIDNTPUTYOUROWNCLASSES
INTOPACKAGES ANDINTHE2EAL7ORLD THATS2EALLY"AD 3DFNDJHVWUXFWXUHRIWKH-DYD$3,IRU
7EREGOINGTOMODIFYTHEORGANIZATIONALSTRUCTUREFROMTHE MDYDWH[W1XPEHU)RUPDW
PREVIOUSPAGES JUSTALITTLE TOPUTCLASSESINTOAPACKAGE AND
TO*!2THEENTIREPACKAGE0AYVERYCLOSEATTENTIONTOTHE MDYDXWLO$UUD\/LVW
SUBTLEANDPICKYDETAILS%VENTHETINIESTDEVIATIONCANS TOP
MDYDDZW)ORZ/D\RXW
YOURCODEFROMCOMPILINGANDORRUNNING
MDYDDZWHYHQW$FWLRQ(YHQW

8IKSIOM[XZM^MV\KTI[[VIUMKWVNTQK\[ MDYDQHW6RFNHW
!LTHOUGHPACKAGESARENTJUSTFORPREVENTINGNAMECOLLISIONS
MDYD
THATSAKEYFEATURE9OUMIGHTWRITEACLASSNAMED#USTOMER
ANDACLASSNAMED!CCOUNTANDACLASSNAMED3HOPPING#ART
!NDWHATDOYOUKNOW HALFOFALLDEVELOPERSWORKINGIN


WH[W QHW



ENTERPRISEE COMMERCEHAVEPROBABLYWRITTENCLASSESWITH 

DZW




THOSENAMES)NAN//WORLD THATSJUSTDANGEROUS)FPARTOF 1XPEHU)RUPDW 

XWLO
THEPOINTOF//ISTOWRITEREUSABLECOMPONENTS DEVELOPERS 6RFNHW
NEEDTOBEABLETOPIECETOGETHERCOMPONENTSFROMA 

HYHQW
 
 

VARIETYOFSOURCES ANDBUILDSOMETHINGNEWOUTOFTHEM
 
 


9OURCOMPONENTSHAVETOBEABLETO@PLAYWELLWITHOTHERS )ORZ/D\RXW
$UUD\/LVW
INCLUDINGTHOSEYOUDIDNTWRITEOREVENKNOWABOUT 





2EMEMBERWAYBACKINCHAPTERWHENWEDISCUSSEDHOW
APACKAGENAMEISLIKETHEFULLNAMEOFACLASS TECHNICALLY $FWLRQ(YHQW
KNOWNASTHEFULLY QUALIlEDNAME#LASS!RRAY,ISTISREALLY
JAVAUTIL!RRAY,IST *"UTTONISREALLYJAVAXSWING*"UTTON AND :KDWGRHVWKLVSLFWXUHORRNOLNHWR
3OCKETISREALLYJAVANET3OCKET.OTICETHATTWOOFTHOSECLASSES \RX"'RHVQ·WLWORRNDZKROHORWOLNH
!RRAY,ISTAND3OCKET BOTHHAVEJAVAASTHEIRhlRSTNAMEv DGLUHFWRU\KLHUDUFK\"
)NOTHERWORDS THElRSTPARTOFTHEIRFULLY QUALIlEDNAMES
IShJAVAv4HINKOFAHIERARCHYWHENYOUTHINKOFPACKAGE
STRUCTURES ANDORGANIZEYOURCLASSESACCORDINGLY

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHQDPLQJ

VR,ÀQDOO\VHWWOHGRQ
IRREDU+HLVHQEHUJIRUP\ :K\WKDW·VWKHVDPHQDPH
TXDQWXPEDNLQJFODVV ,ZDVWKLQNLQJRIIRUP\
VXEDWRPLFLURQLQJFODVV
*XHVV,·OOMXVWKDYHWRFRPH
XSZLWKVRPHWKLQJHOVH

3DFNDJHVFDQSUHYHQWQDPH
FRQIOLFWVEXWRQO\LI\RX
FKRRVHDSDFNDJHQDPH
WKDW·VJXDUDQWHHGWREH
XQLTXH7KHEHVWZD\WR
8ZM^MV\QVOXIKSIOMVIUMKWVNTQK\[ GRWKDWLVWRSUHIDFH\RXU
0UTTINGYOURCLASSINAPACKAGEREDUCESTHECHANCESOFNAMING SDFNDJHVZLWK\RXUUHYHUVH
CONmICTSWITHOTHERCLASSES BUTWHATSTOSTOPTWOPROGRAMMERS
FROMCOMINGUPWITHIDENTICALPACKAGENAMES)NOTHERWORDS GRPDLQQDPH
WHATSTOSTOPTWOPROGRAMMERS EACHWITHACLASSNAMED!CCOUNT
FROMPUTTINGTHECLASSINAPACKAGENAMEDSHOPPINGCUSTOMERS FRPKHDGÀUVWERRNV%RRN
"OTHCLASSES INTHATCASE WOULDSTILLHAVETHESAMENAME SDFNDJHQDPH DPH
SHOPPINGCUSTOMERS!CCOUNT
FODVVQ
3UNSTRONGLYSUGGESTSAPACKAGENAMINGCONVENTIONTHATGREATLY
REDUCESTHATRISKˆPREPENDEVERYCLASSWITHYOURREVERSEDOMAIN
NAME2EMEMBER DOMAINNAMESAREGUARANTEEDTOBEUNIQUE
4WODIFFERENTGUYSCANBENAMED"ARTHOLOMEW3IMPSON BUTTWO
DIFFERENTDOMAINSCANNOTBENAMEDDOHCOM


5HYHUVHGRPDLQSDFNDJHQDPHV
 F O D V V QDPHL]LVHG
WKH \VFDSLWDO
FRPKHDGÀUVWMDYDSURMHFWV&KDUW DOZD

RXUUHYHUVH SURMHFWV&KDUWPLJKWEHDFRPPRQ
VWDUWWKHSDFNDJHZLWK\ GR W   QDPHEXWDGGLQJFRPKHD
GRPDLQVHSDU DWH GE \D PHDQVZHKDYHWRZRUU\DGIL UVWMDYD
RU JDQ L]D WLRQDO ERX
WKH QD GG \R XU
WHU
RZQ
WK DW RXURZQLQKRXVHGHYHORSHUV WRQO\
VWUXFWXUHDI
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

7RSXW\RXUFODVVLQDSDFNDJH
<RXPXVWSXWDFODVV
 &KRRVHDSDFNDJHQDPH LQWRDGLUHFWRU\
:H·UHXVLQJFRPKHDGÀUVWMDYDDVRXU
H[DPSOH7KHFODVVQDPHLV3DFNDJH([HUFLVH VWUXFWXUHWKDWPDWFKHV
VRWKHIXOO\TXDOLÀHGQDPHRIWKHFODVVLVQRZ
FRPKHDGÀUVWMDYD3DFNDJH([HUFLVH WKHSDFNDJHKLHUDUFK\
 3XWDSDFNDJHVWDWHPHQWLQ\RXUFODVV
,WPXVWEHWKHÀUVWVWDWHPHQWLQWKHVRXUFH
FRGHÀOHDERYHDQ\LPSRUWVWDWHPHQWV7KHUH
FDQEHRQO\RQHSDFNDJHVWDWHPHQWSHUVRXUFH
FRGHÀOHVRDOOFODVVHVLQDVRXUFHÀOHPXVW 0\3URMHFW
EHLQWKHVDPHSDFNDJH7KDWLQFOXGHVLQQHU
FODVVHVRIFRXUVH

SDFNDJHFRPKHDG¿UVWMDYD

LPSRUWMDYD[VZLQJ 
FODVVHV VRXUFH
SXEOLFFODVV3DFNDJH([HUFLVH^
OLIHDOWHULQJFRGHKHUH
`

FRP
SDFNDJHVWUXFWXUH

FRP
 6HWXSDPDWFKLQJGLUHFWRU\VWUXFWXUH
,W·VQRWHQRXJKWRVD\\RXUFODVVLVLQDSDFNDJH
E\PHUHO\SXWWLQJDSDFNDJHVWDWHPHQWLQ
WKHFRGH<RXUFODVVLVQ·WWUXO\LQDSDFNDJH
XQWLO\RXSXWWKHFODVVLQDPDWFKLQJGLUHFWRU\
VWUXFWXUH6RLIWKHIXOO\TXDOLÀHGFODVVQDPH KHDGILUVWMDYD KHDGILUVWMDYD
LVFRPKHDGÀUVWMDYD3DFNDJH([HUFLVH\RX
PXVWSXWWKH3DFNDJH([HUFLVHVRXUFHFRGHLQD
GLUHFWRU\QDPHGKHDGÀUVWMDYDZKLFKPXVWEHLQ
DGLUHFWRU\QDPHGFRP
/RUSHU
,WLVSRVVLEOHWRFRPSLOHZLWKRXWGRLQJWKDWEXW 

LXUHHXJXH
WDWYHUR
WUXVWXV³LW·VQRWZRUWKWKHRWKHUSUREOHPV 

FRQVH
HXJXHUR/RUH

\RX·OOKDYH.HHS\RXUVRXUFHFRGHLQDGLUHFWRU\ 
GRHOLTXLV
GRGHOGLS

VWUXFWXUHWKDWPDWFKHVWKHSDFNDJHVWUXFWXUH 

DQG\RX·OODYRLGDWRQRISDLQIXOKHDGDFKHVGRZQ 3DFNDJH([HUFLVHFODVV 3DFNDJH([HUFLVHMDYD


WKHURDG

6HWXSDPDWFKLQJGLUHFWRU\VWUXFWXUHIRU
ERWKWKHVRXUFHDQGFODVVHVWUHHV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FRPSLOHDQGUXQZLWKSDFNDJHV

+WUXQTQVOIVLZ]VVQVO_Q\PXIKSIOM[
7HENYOURCLASSISINAPACKAGE ITSALITTLETRICKIERTOCOMPILEAND
RUN4HEMAINISSUEISTHATBOTHTHECOMPILERAND*6-HAVETOBE
CAPABLEOFlNDINGYOURCLASSANDALLOFTHEOTHERCLASSESITUSES
&ORTHECLASSESINTHECORE!0) THATSNEVERAPROBLEM*AVAALWAYS
KNOWSWHEREITSOWNSTUFFIS"UTFORYOURCLASSES THESOLUTION
OFCOMPILINGFROMTHESAMEDIRECTORYWHERETHESOURCElLESARE
SIMPLYWONTWORKORATLEASTNOTRELIABLY 7EGUARANTEE THOUGH
THATIFYOUFOLLOWTHESTRUCTUREWEDESCRIBEONTHISPAGE YOULLBE
SUCCESSFUL4HEREAREOTHERWAYSTODOIT BUTTHISISTHEONEWEVE
FOUNDTHEMOSTRELIABLEANDTHEEASIESTTOSTICKTO

&RPSLOLQJZLWKWKHG GLUHFWRU\ ÁDJ

VWD\LQWKHVRXUFHGLUHFW RU\ 'R127FGGRZQ


DYDILOHLV
FG0\3URMHFWVRXUFH LQWRWKHGLUHFWRU\ZKHUHWKHM
MDYDFGFODVVHVFRPKHDG¿UVWMDYD3DFNDJH([HUFLVHMDYD

WHOOVWKHFRPSLO RSX VSHFLI\


FRPSLOHGFRGH FHUODVWVI WWKH 1RZ\RXKDYHRWR WWRWKH
LQWRWKHFODVVHVGLUHFW V LOH WKH3$7+WHILJHOH
ZLWKLQWKHULJKWSDF RU\ DFWXDOVRXUF
VWUXFWXUH<HVLWNQND JH

0\3URMHFW
\RX·OOVWLOOFRPSLOH
RZV WLOOUXQ IURPKHUH
\RX·OOVKHUH
4OCOMPILEALLTHEJAVAlLESINTHECOMHEADlRSTJAVA IURP
PACKAGE USE
MDYDFGFODVVHVFRPKHDG¿UVWMDYD MDYD
FODVVHV VRXUFH
FRPSLOHVHYHU VRXU
ILOHLQWKLVGL\ FH MDYD 
UHFWRU\
5XQQLQJ\RXUFRGH FRP FRP
UXQ\RXUSUR I
FG0\3URMHFWFODVVHV WKH¶FODVVHV·GJULUDP URP
HFWRU\
MDYDFRPKHDG¿UVWMDYD3DFNDJH([HUFLVH
KHDGILUVWMDYD KHDGILUVWMDYD
<RX0867J
VHHWKDWDQGLYLPHPWKHIXOO\TXDOLILHGFODVVQDPH7
HGLDWHO\ORRNLQVLG
FODVVHV DQG HLWVFX HQWGLKHUH-90ZLOO /RUSHU

LWH[SHFWVWRH[ILSHQGFWWRILQGDGLUHFWRU\QDPUUHG


FWRU\ 

LXUH
HXJXH

WKHUHLWH[SHFWVW DGLUHFWRU\QDPHGKHDGILUVWFRPZKHUH
 WDWYHUR
 FRQVH

GLUHFWRU\RUHYHQ RILQGWKHFODVV,IWKHFODVV MDYDDQGLQ


HXJXHUR

LQ´FODVVHVµLWZR LVLQWKH´FRPµ 3DFNDJH([HUFLVHFODVV 3DFNDJH([HUFLVHMDYD


Q·WZRUN 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

<PMLNTIOQ[M^MVKWWTMZ\PIV_M[IQL WKHUH DUH QR


'XPE 4XHVWLRQV
#OMPILINGWITHTHEGmAGISWONDERFULBECAUSENOTONLYDOESIT
LETYOUSENDYOURCOMPILEDCLASSlLESINTOADIRECTORYOTHERTHAN Q: )TRIEDTOCDINTOTHE
THEONEWHERETHESOURCElLEIS BUTITALSOKNOWSTOPUTTHECLASS DIRECTORYWHEREMYMAINCLASS
INTOTHECORRECTDIRECTORYSTRUCTUREFORTHEPACKAGETHECLASSISIN WAS BUTNOWTHE*6-SAYSITCANT
lNDMYCLASS"UTITSRIGHT4(%2%
"UTITGETSEVENBETTER INTHECURRENTDIRECTORY
,ETSSAYTHATYOUHAVEANICE
DIRECTORYSTRUCTUREALLSETUPFORYOUR
SOURCECODE"UTYOUHAVENTSET 0\3URMHFW A: /NCEYOURCLASSISINA
PACKAGE YOUCANTCALLITBYITS
UPAMATCHINGDIRECTORYSTRUCTURE
@SHORTNAME9OU-534SPECIFY
FORYOURCLASSESDIRECTORY.OTA ATTHECOMMAND LINE THEFULLY
PROBLEM#OMPILINGWITH QUALIFIEDNAMEOFTHECLASSWHOSE
DTELLSTHECOMPILERTONOT MAIN METHODYOUWANTTORUN
JUST PUT YOUR CLASSES INTO FODVVHV VRXUFH THE "UTSINCETHEFULLY QUALIFIEDNAME
CORRECT DIRECTORY TREE BUT TO BUILD INCLUDESTHEPACKAGESTRUCTURE
THE DIRECTORIES IF THEY DONT EXIST *AVAINSISTSTHATTHECLASSBEINA
MATCHINGDIRECTORYSTRUCTURE3OIF
ATTHECOMMAND LINEYOUSAY
FRP MDYDFRPIRR%RRN
,IWKHSDFNDJHGLUHFWRU\ VWUXFWXUH
GRHVQ·W H[ LVW XQ GHU WK H¶F ODVVHV· THE*6-WILLLOOKINITSCURRENT

GLUHFWRU\WKH FRP SLOH UZ LOO EXLOGWKH DIRECTORYANDTHERESTOFITS


DJ
GLUHFWRULHVLI\RXXVHWKH IO G CLASSPATH FORADIRECTORYNAMED
hCOMv)TWILLNOTLOOKFORACLASS
6R\RXGRQ·WDFWXDOO\KDY HWR KHDGILUVWMDYD NAMED"OOK UNTILITHASFOUND
SK\VLFDOO\FUHDWH WK HG LUH FWRULHVXQGHU ADIRECTORYNAMEDhCOMvWITHA
WKH¶FODVVHV·URRWGLUHFWR U\$QGLQ DIRECTORYINSIDENAMEDhFOOv/NLY
IDFWLI\RXOHW WK HF RP SLOH UGRLW /RUSHU THENWILLTHE*6-ACCEPTTHATITS
WKHUH· VQ RF KDQ FH RI DW \SR  LXUH
HXJXH
WDWYHUR
FOUNDTHECORRECT"OOKCLASS)FIT
FRQVH
HXJXHUR
FINDSA"OOKCLASSANYWHEREELSE
ITASSUMESTHECLASSISNTINTHE
3DFNDJH([HUFLVHMDYD
RIGHTSTRUCTURE EVENIFITIS4HE
*6-WONTFOREXAMPLE LOOKBACK
UPTHEDIRECTORYTREETOSAY h/H )
CANSEETHATABOVEUSISADIRECTORY
7KHGÁDJWHOOVWKHFRPSLOHU NAMEDCOM SOTHISMUSTBETHE
RIGHTPACKAGEv
´3XWWKHFODVVLQWRLWVSDFNDJH
GLUHFWRU\VWUXFWXUHXVLQJWKH
FODVVVSHFLÀHGDIWHUWKHGDV
WKHURRWGLUHFWRU\%XWLIWKH
GLUHFWRULHVDUHQ·WWKHUHFUHDWH
WKHPÀUVWDQGWKHQSXWWKHFODVV
LQWKHULJKWSODFHµ

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
-$5VDQGSDFNDJHV

5ISQVOIVM`MK]\IJTM2):_Q\PXIKSIOM[
7HENYOURCLASSISINAPACKAGE THEPACKAGEDIRECTORYSTRUCTURE
MUSTBEINSIDETHE*!29OUCANTJUSTPOPYOURCLASSESINTHE
*!2THEWAYWEDIDPRE PACKAGES!NDYOUMUSTBESURETHATYOU
-$5 DONTINCLUDEANYOTHERDIRECTORIESABOVEYOURPACKAGE4HE
lRSTDIRECTORYOFYOURPACKAGEUSUALLYCOM MUSTBETHElRST
DIRECTORYWITHINTHE*!2)FYOUWERETOACCIDENTALLYINCLUDETHE
DIRECTORYABOVETHEPACKAGEEGTHEhCLASSESvD
IRECTORY THE*!2
WOULDNTWORKCORRECTLY

0DNLQJDQH[HFXWDEOH-$5 FODVVHV

 0DNHVXUHDOORI\RXUFODVVÀOHVDUH
ZLWKLQWKHFRUUHFWSDFNDJHVWUXFWXUH FRP

XQGHUWKHFODVVHVGLUHFWRU\



KHDGILUVWMDYD 


3DFNDJH([HUFLVHFODVV

 &UHDWHDPDQLIHVWW[WÀOHWKDWVWDWHV
ZKLFKFODVVKDVWKHPDLQ PHWKRG 0DLQ&ODVV0LQL$SS

FODVVHV
DQGEHVXUHWRXVHWKHIXOO\TXDOLÀHG
FODVVQDPH
PDQLIHVWW[W
0DNHDWH[WÀOHQDPHGPDQLIHVWW[WWKDWKDVD
VLQJOHOLQH FRP

0DLQ&ODVVFRPKHDG¿UVWMDYD3DFNDJH([HUFLVH


3XWWKHPDQLIHVWÀOHLQWRWKHFODVVHVGLUHFWRU\ KHDGILUVWMDYD




3DFNDJH([HUFLVHFODVV

 5XQWKHMDUWRROWRFUHDWHD-$5ÀOH
FODVVHV
WKDWFRQWDLQVWKHSDFNDJHGLUHFWRULHV
SOXVWKHPDQLIHVW
FRP
7KHRQO\WKLQJ\RXQHHGWRLQFOXGHLVWKH¶FRP·
GLUHFWRU\DQGWKHHQWLUHSDFNDJH DQGDOOFODVVHV  \LVWKH
ZLOOJRLQWRWKH-$5 $OO\RXVSFHWFRLIU\$QG\RX·OO
FRPGLUH \WKLQJLQLW



JHWHYHU

FG0\3URMHFWFODVVHV KHDGILUVWMDYD
SDFN([MDU 


MDUFYPIPDQLIHVWW[WSDFN([MDUFRP 3DFNDJH([HUFLVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

;W_PMZMLQL\PMUIVQNM[\NQTMOW'
7HYDONTWELOOKINSIDETHE*!2ANDlNDOUT&ROMTHE
LQWRD
H-$5I6LONH\OHU
COMMAND LINE THEJARTOOLCANDOMORETHANJUSTCREATEANDRUNA
*!29OUCANEXTRACTTHECONTENTSOFA*!2JUSTLIKE@UNZIPPINGOR Z H S X W W K
QDPHG
@UNTARRING  GLUHFWRU\
)MAGINEYOUVEPUTTHEPACK%XJARINTOADIRECTORYNAMED3KYLER
6N\OHU

MDUFRPPDQGVIRUOLVWLQJDQGH[WUDFWLQJ

 /LVWWKHFRQWHQWVRID-$5

Licensed by
MDUWISDFN([MDU
SDFN([MDU
WIVWDQG
´VKRZPHDVWIDRU¶7DEOH)LOH·DVLQ
EOHRIWKH-$ \
5ILOHµ U  W R R O DX WRPDWLFDOO
WKHMD 0(7$,1) 

Eduard Simons EXLOGVD U\DQGSXWVWKH


)LOH(GLW:LQGRZ+HOS3LFNOH

FG6N\OHU GLUHFWRVWLQVLGH
MDUWISDFN([MDU PDQLIH
0(7$,1) 0(7$,1) FRP

104038
0(7$,1)0$1,)(670)
FRP
FRPKHDGILUVWMDYD 0DLQ&ODVV0LQL$SS

FRPKHDGILUVWMDYD
3DFNDJH([HUFLVHFODVV KHDGILUVWMDYD

0$1,)(670)






 ([WUDFWWKHFRQWHQWVRID-$5 LHXQMDU
FG6N\OHU 3DFNDJH([HUFLVHFODVV
MDU[ISDFN([MDU
6N\OHU 0(7$,1)VWDQGVIRU¶PHWD
LQIRUPDWLRQ·7KHMDUWRROFUHDWHV
[IVWDQGVIRU¶([WUDQJ FW)LOH·DQGLW WKH0(7$,1)GLUHFWRU\DV
ZRUNVMXVWOLNHX Q]L SSL RUXQWDUULQJ 0(7$,1) ZHOODVWKH0$1,)(670)ÀOH
[MDU\RX·OO
FRP
,I\RXH[WUDFWWKHSDFN(HFW RU\DQGWKH
,WDOVRWDNHVWKHFRQWHQWVRI
VHHWKH0(7$ ,1) GLU \RXUPDQLIHVWÀOHDQGSXWVLW
XUUHQW
FRPGLUHFWRU\GLUHFWRU\LQ\RXUF 0DLQ&ODVV0LQL$SS

LQWRWKH0$1,)(670)ÀOH6R
GLUHFWRU\ KHDGILUVWMDYD
\RXUPDQLIHVWÀOHGRHVQ·WJRLQWR
0$1,)(670) WKH-$5EXWWKHFRQWHQWVRILW


DUHSXWLQWRWKH¶UHDO·PDQLIHVW


 0$1,)(670) 
3DFNDJH([HUFLVHFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
RUJDQL]LQJ\RXUFODVVHV

6KDUSHQ \RXU SHQFLO

'IVENTHEPACKAGEDIRECTORYSTRUCTUREINTHIS
PICTURE lGUREOUTWHATYOUSHOULDTYPEATTHE
0\3URMHFW COMMAND LINETOCOMPILE RUN CREATEA*!2 AND
EXECUTEA*!2!SSUMEWEREUSINGTHESTANDARD
WHERETHEPACKAGEDIRECTORYSTRUCTURESTARTSJUST
0DLQ&ODVV0LQL$SS
BELOWSOURCEANDCLASSES)NOTHERWORDS THESOURCE
FODVVHV VRXUFH ANDCLASSESDIRECTORIESARENOTPARTOFTHEPACKAGE

PDQLIHVWW[W
MDYDUDQFK MDYDUDQFK &RPSLOH
FGVRXUFH
MDYDFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
FRZV FRZV

5XQ
 /RUSHU


LXUH
HXJXH FGBBBBBBBBBBB
 WDWYHUR
 FRQVH
HXJXHUR
MDYDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
)RRIFODVV )RRIMDYD

&UHDWHD-$5
FGBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

([HFXWHD-$5
FGBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

"ONUSQUESTION7HATSWRONGWITHTHEPACKAGENAME

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

WKHUH DUH QR
'XPE 4XHVWLRQV
:MDD=LHGAFLK
Q: 7HATHAPPENSIFYOUTRY ƒ 2UJDQL]H\RXUSURMHFWVRWKDW\RXUVRXUFHFRGHDQGFODVVILOHVDUHQRWLQ
TORUNANEXECUTABLE*!2 AND WKHVDPHGLUHFWRU\
THEEND USERDOESNTHAVEJAVA
INSTALLED ƒ $VWDQGDUGRUJDQL]DWLRQVWUXFWXUHLVWRFUHDWHDSURMHFWGLUHFWRU\DQGWKHQ
SXWDVRXUFHGLUHFWRU\DQGDFODVVHVGLUHFWRU\LQVLGHWKHSURMHFWGLUHFWRU\

A: .OTHINGWILLRUN SINCE
WITHOUTA*6- *AVACODECANT
ƒ 2UJDQL]LQJ\RXUFODVVHVLQWRSDFNDJHVSUHYHQWVQDPLQJFROOLVLRQVZLWK
RWKHUFODVVHVLI\RXSUHSHQG\RXUUHYHUVHGRPDLQQDPHRQWRWKHIURQWRI
RUN4HEEND USERMUSTHAVE*AVA
DFODVVQDPH
INSTALLED ƒ 7RSXWDFODVVLQDSDFNDJHSXWDSDFNDJHVWDWHPHQWDWWKHWRSRIWKH
VRXUFHFRGHILOHEHIRUHDQ\LPSRUWVWDWHPHQWV
Q: (OWCAN)GET*AVA SDFNDJHFRPZLFNHGO\VPDUW
INSTALLEDONTHEEND USERS ƒ 7REHLQDSDFNDJHDFODVVPXVWEHLQDGLUHFWRU\VWUXFWXUHWKDWH[DFWO\
MACHINE PDWFKHVWKHSDFNDJHVWUXFWXUH)RUDFODVVFRPZLFNHGO\VPDUW)RR
)DEALLY YOUCANCREATEACUSTOM WKH)RRFODVVPXVWEHLQDGLUHFWRU\QDPHGZLFNHGO\VPDUWZKLFKLVLQD
INSTALLERANDDISTRIBUTEITALONG GLUHFWRU\QDPHGFRP
WITHYOURAPPLICATION3EVERAL
COMPANIESOFFERINSTALLERPRO ƒ 7RPDNH\RXUFRPSLOHGFODVVODQGLQWKHFRUUHFWSDFNDJHGLUHFWRU\
GRAMSRANGINGFROMSIMPLETO VWUXFWXUHXQGHUWKHFODVVHVGLUHFWRU\XVHWKHGFRPSLOHUIODJ
EXTREMELYPOWERFUL!NINSTALLER FGVRXUFH
PROGRAMCOULD FOREXAMPLE DE MDYDFGFODVVHVFRPZLFNHGO\VPDUW)RRMDYD
TECTWHETHERORNOTTHEEND USER
HASANAPPROPROPRIATEVERSION ƒ 7RUXQ\RXUFRGHFGWRWKHFODVVHVGLUHFWRU\DQGJLYHWKHIXOO\TXDOLILHG
OF*AVAINSTALLED ANDIFNOT QDPHRI\RXUFODVV
INSTALLANDCONFIGURE*AVABEFORE FGFODVVHV
INSTALLINGYOURAPPLICATION MDYDFRPZLFNHGO\VPDUW)RR
)NSTALLSHIELD )NSTALL!NYWHERE
AND$EPLOY$IRECTORALLOFFER*AVA ƒ <RXFDQEXQGOH\RXUFODVVHVLQWR-$5 -DYD$5FKLYH ILOHV-$5LVEDVHG
INSTALLERSOLUTIONS RQWKHSN]LSIRUPDW
!NOTHERCOOLTHINGABOUTSOME ƒ <RXFDQPDNHDQH[HFXWDEOH-$5ILOHE\SXWWLQJDPDQLIHVWLQWRWKH-$5
OFTHEINSTALLERPROGRAMSISTHAT WKDWVWDWHVZKLFKFODVVKDVWKHPDLQ PHWKRG7RFUHDWHDPDQLIHVWILOH
YOUCANEVENMAKEADEPLOY PDNHDWH[WILOHZLWKDQHQWU\OLNHWKHIROORZLQJ IRUH[DPSOH 
MENT#$ 2/-THATINCLUDES 0DLQ&ODVVFRPZLFNHGO\VPDUW)RR
INSTALLERSFORALLMAJOR*AVA
PLATFORMS SOONE#$TORULE ƒ %HVXUH\RXKLWWKHUHWXUQNH\DIWHUW\SLQJWKH0DLQ&ODVVOLQHRU\RXU
THEMALL)FTHEUSERSRUNNINGON PDQLIHVWILOHPD\QRWZRUN
3OLARIS FOREXAMPLE THE3OLARIS
VERSIONOF*AVAISINSTALLED/N ƒ 7RFUHDWHD-$5ILOHW\SH
7INDOWS THE7INDOWS VER MDUFYIPPDQLIHVWW[W0\-DUMDUFRP
SION ETC)FYOUHAVETHEBUDGET
THISISBYFARTHEEASIESTWAYFOR ƒ 7KHHQWLUHSDFNDJHGLUHFWRU\VWUXFWXUH DQGRQO\WKHGLUHFWRULHVPDWFKLQJ
YOUREND USERSTOGETTHERIGHT WKHSDFNDJH PXVWEHLPPHGLDWHO\LQVLGHWKH-$5ILOH
VERSIONOF*AVAINSTALLEDAND
CONFIGURED
ƒ 7RUXQDQH[HFXWDEOH-$5ILOHW\SH
MDYDMDU0\-DUMDU

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZRXOGQ·WLWEHGUHDP\

([HFXWDEOH-$5ÀOHV
DUHQLFHEXWZRXOGQ·WLWEHGUHDP\
LIWKHUHZHUHDZD\WRPDNHDULFKVWDQG
DORQHFOLHQW*8,WKDWFRXOGEHGLVWULEXWHG
RYHUWKH:HE"6RWKDW\RXZRXOGQ·WKDYHWR
SUHVVDQGGLVWULEXWHDOOWKRVH&'520V$QG
ZRXOGQ·WLWEHMXVWZRQGHUIXOLIWKHSURJUDP
FRXOGDXWRPDWLFDOO\XSGDWHLWVHOIUHSODFLQJ
MXVWWKHSLHFHVWKDWFKDQJHG"7KHFOLHQWV
ZRXOGDOZD\VEHXSWRGDWHDQG\RX·GQHYHU
KDYHWRZRUU\DERXWGHOLYHULQJQHZ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

)LOH(GLW9LHZ )LOH(GLW9LHZ
)LOH(GLW9LHZ

+773
+773
)LOH(GLW9LHZ

+773
50,

([HFXWDEOH :HE6WDUW
-DU :HE6WDUW 50,DSS 6HUYOHWV

/RFDO &RPELQDWLRQ5HPRWH
(QGXVHUVODXQFKD-DYD
:HE6WDUWDSSE\FOLFNLQJ
2I^I?MJ;\IZ\
RQDOLQNLQD:HE
7ITH*AVA7EB3TART*73 YOURAPPLICATIONISLAUNCHEDFORTHE
lRSTTIMEFROMA7EBBROWSERGETIT7EB3TART BUTITRUNSASA SDJH%XWRQFHWKHDSS
STAND ALONEAPPLICATIONWELL ALMOST WITHOUTTHECONSTRAINTSOFTHE
BROWSER!NDONCEITSDOWNLOADEDTOTHEEND USERSMACHINEWHICH GRZQORDGVLWUXQVRXWVLGH
HAPPENSTHElRSTTIMETHEUSERACCESSESTHEBROWSERLINKTHATSTARTS
THEDOWNLOAD ITSTAYSTHERE
WKHEURZVHUMXVWOLNHDQ\
*AVA7EB3TARTIS AMONGOTHERTHINGS ASMALL*AVAPROGRAMTHATLIVES RWKHUVWDQGDORQH-DYD
ONTHECLIENTMACHINEANDWORKSMUCHLIKEABROWSERPLUG INTHE
WAY SAY !DOBE!CROBAT2EADEROPENSWHENYOURBROWSERGETSAPDF
DSSOLFDWLRQ,QIDFWD
lLE 4HIS*AVAPROGRAMISCALLEDTHE*AVA7EB3TART@HELPERAPP -DYD:HE6WDUWDSSLVMXVW
ANDITSKEYPURPOSEISTOMANAGETHEDOWNLOADING UPDATING AND
LAUNCHINGEXECUTING OFYOUR*73APPS DQH[HFXWDEOH-$5WKDW·V
7HEN*73DOWNLOADSYOURAPPLICATIONANEXECUTABLE*!2 IT GLVWULEXWHGRYHUWKH:HE
INVOKESTHEMAIN METHODFORYOURAPP!FTERTHAT THEEND USERCAN
LAUNCHYOURAPPLICATIONDIRECTORYFROMTHE*73HELPERAPPWITHOUT
HAVINGTOGOBACKTHROUGHTHE7EBPAGELINK
"UTTHATSNOTTHEBESTPART4HEAMAZINGTHINGABOUT*73ISITS
ABILITYTODETECTWHENEVENASMALLPARTOFAPPLICATIONSAY ASINGLE
CLASSlLE HASCHANGEDONTHESERVER ANDˆWITHOUTANYEND USER
INTERVENTIONˆDOWNLOADANDINTEGRATETHEUPDATEDCODE
4HERESSTILLANISSUE OFCOURSE LIKEHOWDOESTHEEND USERGET*AVA
AND*AVA7EB3TART4HEYNEEDBOTHˆ*AVATORUNTHEAPP AND*AVA
7EB3TARTASMALL*AVAAPPLICATIONITSELF TOHANDLERETRIEVINGAND
LAUNCHINGTHEAPP"UTEVENTHATHASBEENSOLVED9OUCANSETTHINGS
UPSOTHATIFYOUREND USERSDONTHAVE*73 THEYCANDOWNLOAD
ITFROM3UN!NDIFTHEYDOHAVE*73 BUTTHEIRVERSIONOF*AVAIS
OUT OF DATEBECAUSEYOUVESPECIlEDINYOUR*73APPTHATYOU
NEEDASPECIlCVERSIONOF*AVA THE*AVA3TANDARD%DITIONCANBE
DOWNLOADEDTOTHEEND USERMACHINE
"ESTOFALL ITSSIMPLETOUSE9OUCANSERVEUPA*73APPMUCHLIKE
ANYOTHERTYPEOF7EBRESOURCESUCHASAPLAINOLD(4-,PAGEORA
*0%'IMAGE9OUSETUPA7EB(4-, PAGEWITHALINKTOYOUR*73
APPLICATION ANDYOUREINBUSINESS
)NTHEEND YOUR*73APPLICATIONISNTMUCHMORETHANAN
EXECUTABLE*!2THATEND USERSCANDOWNLOADFROMTHE7EB

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
-DYD:HE6WDUW

+RZ-DYD:HE6WDUWZRUNV
:HEEURZVHU
:HE6HUYHU
 7KHFOLHQWFOLFNVRQD:HESDJHOLQN
WR\RXU-:6DSSOLFDWLRQ DMQOSÀOH  ´JLYHPH0\$SSMQOSµ /RUSHU
FOLFN LXUH
HXJXH
WDWYHUR
7KH:HESDJHOLQN FRQVH
HXJXHUR

DKUHI ´0\$SSMQOS´!&OLFND! 0\$SSMQOS 0\$SSMDU




 7KH:HEVHUYHU +773 JHWVWKH


:HE6HUYHU
UHTXHVWDQGVHQGVEDFNDMQOSÀOH /RUSHU
/RUSHU
FOLFN LXUH
WKLVLV127WKH-$5  HXJXH
WDWYHUR
LXUH
HXJXH
FRQVH WDWYHUR
HXJXHUR FRQVH
7KHMQOSÀOHLVDQ;0/GRFXPHQWWKDW HXJXHUR

VWDWHVWKHQDPHRIWKHDSSOLFDWLRQ·V 0\$SSMQOS 0\$SSMQOS 0\$SSMDU


H[HFXWDEOH-$5ÀOH

-DYD:HE6WDUW
 -DYD:HE6WDUW DVPDOO¶KHOSHUDSS·
:HE6HUYHU
RQWKHFOLHQW LVVWDUWHGXSE\WKH ´JLYHPH0\$SSMDUµ
EURZVHU7KH-:6KHOSHUDSSUHDGV -:6 /RUSHU
LXUH
HXJXH
WKHMQOSÀOHDQGDVNVWKHVHUYHUIRU WDWYHUR
FRQVH

WKH0\$SSMDUÀOH HXJXHUR

0\$SSMQOS 0\$SSMDU

 7KH:HEVHUYHU¶VHUYHV·XSWKH
:HE6HUYHU
UHTXHVWHGMDUÀOH
-:6
/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR
0\$SSMDU
0\$SSMQOS 0\$SSMDU

+HOOR:HE6WDUW WKHDSSLQWKH-$5

 -DYD:HE6WDUWJHWVWKH-$5DQG
VWDUWVWKHDSSOLFDWLRQE\FDOOLQJWKH :HE6HUYHU
VSHFLÀHGPDLQ  PHWKRG MXVWOLNHDQ +HOOR
/RUSHU
H[HFXWDEOH-$5  LXUH
HXJXH
WDWYHUR
FRQVH
1H[WWLPHWKHXVHUZDQWVWRUXQWKLVDSSKHFDQ HXJXHUR

RSHQWKH-DYD:HE6WDUWDSSOLFDWLRQDQGIURP 0\$SSMQOS 0\$SSMDU


WKHUHODXQFK\RXUDSSZLWKRXWHYHQEHLQJRQOLQH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

<PMRVTXNQTM
4OMAKEA*AVA7EB3TARTAPP YOUNEEDTOJNLP*AVA.ETWORK
,AUNCH0ROTOCOL lLETHATDESCRIBESYOURAPPLICATION4HISISTHE
lLETHE*73APPREADSANDUSESTOlNDYOUR*!2ANDLAUNCHTHE
APPBYCALLINGTHE*!2SMAIN METHOD !JNLPlLEISASIMPLE
¶URRW·
LI\WKHVHUYHU
8-,DOCUMENTTHATHASSEVERALDIFFERENTTHINGSYOUCANPUTIN
BUTASAMINIMUM ITSHOULDLOOKLIKETHIS R X  V S H F
KHUH\ WKH 
G H E D V H · WDJLVWZDUWVWXIILVWRQVRZH·UHXVLQHEJ
"[POYHUVLRQ ´´HQFRGLQJ ´XWI´"! 7KH¶FRHUH\RXUZHEVRQRXUORFDOKR V Z
µ)RU OG
RIZK WHVWLQJWKLV DGGUHVV´ VHUYHUWKLVZRX
:H·UH FDOORRSEDFN WHUQHWZHE FRPµ
WKHOR DSSVRQRXULQLFNHGO\VPDUW
MQOSVSHF ´´ VWDUW KWWSZZZZ
VD\´
FRGHEDVH ´KWWSaNDWK\´
WKHMQOSILOHUHODWLYHWR WKH
KUHI ´0\$SSMQOS´! 7KLVLVWKHORFDWLRQRIVK RZVWKDW 0\ $S SMQ OS LV
FRGHEDVH7KLVH[DPSOHLUHFWR U\RIWKHZHEVHUYHUQRW
DYDLODE OHL QW KH URRWG
QHVWHGLQVRPHRWKHUGLUHFWRU\
LQIRUPDWLRQ!
IWKHVHWDJVRU\RXUDUH DSSPLJKW
WLWOH!NDWK\$SSWLWOH! %HVXUHWRLQFOXGHDOORKH RUPDWL RQ· WD JV XVHGE\
YHQGRU!:LFNHGO\6PDUWYHQGRU! QRWZRUNFRUUHFWO\7RVW¶LQIO\I RUGLV SOD \LQ JZ KHQ WK HXVHU
WKH-:6KHOSHUDSSP YLRXVO\GRZQORDGHGDSSOLFDWLRQ
KRPHSDJHKUHI ´LQGH[KWPO´! ZDQWVWRUHODXQFKDSUH
GHVFULSWLRQ!+HDG)LUVW:HE6WDUWGHPRGHVFULSWLRQ!
LFRQKUHI ´NDWK\VJLI´!
UXQ\RXUSURJUDPZLWKRXW 
RIÀLQHDOORZHG!
7KLVPHDQVWKHXVHUFDQ WHU QHW ,I WK HXVHU LV RII OLQH
LQIRUPDWLRQ! EHLQJFRQQHFWHGWRWKHLQ LQJIH DWX UH ZRQ ·W ZRU N
LWPHDQVWKHDXWRPDWLFXSGDW

UHVRXUFHV! YHUVLRQ
7KLVVD\VWKDW\RXUDSSQHHGV
MVHYHUVLRQ ´´! RI-DYDRUJUHDWHU 
MDUKUHI ´0\$SSMDU´! 7KHQDPH \
RWKHU-$5RII
RXUH[HFXWDEOH-
$5
UHVRXUFHV!
HYHQVRXQGVDQGVDVZHOOWKDWKROGR<WKRXHUPLJKWKDYH
LOH
LPDJHVXVHGE\ F
\RXUDSS ODVVHVRU
DSSOLFDWLRQGHVFPDLQFODVV ´+HOOR:HE6WDUW´!
MQOS! 7KLVLVOLNHWKHPDLQIHVW0DLQ&ODVVHQWU\LWVD\V
ZKLFKFODVVLQWKH-$5KDVWKHPDLQ PHWKRG

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHSOR\LQJZLWK-:6

6WHSVIRUPDNLQJDQGGHSOR\LQJ
D-DYD:HE6WDUWDSS
 0DNHDQH[HFXWDEOH-$5
IRU\RXUDSSOLFDWLRQ

0\$SSMDU

/RUSHU

 :ULWHDMQOSÀOH LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS

 3ODFH\RXU-$5DQGMQOS :HE6HUYHU
ÀOHVRQ\RXU:HEVHUYHU /RUSHU
LXUH
HXJXH
/RUSHU WDWYHUR
LXUH FRQVH
HXJXH HXJXHUR
WDWYHUR
URRKWPO
FRQVH

0\$SSMQOS 0\$SSMDU

 $GGDQHZPLPHW\SHWR\RXU:HEVHUYHU
:HE6HUYHU
DSSOLFDWLRQ[MDYDMQOS¿OH
FRQÀJXUH
7KLVFDXVHVWKHVHUYHUWRVHQGWKHMQOSÀOHZLWKWKH PLPHW\SH
FRUUHFWKHDGHUVRWKDWZKHQWKHEURZVHUUHFHLYHV
WKHMQOSÀOHLWNQRZVZKDWLWLVDQGNQRZVWRVWDUW
WKH-:6KHOSHUDSS

/RUSHU
LXUH
 &UHDWHD:HESDJHZLWKDOLQN HXJXH
WDWYHUR

WR\RXUMQOSÀOH FRQVH
HXJXHUR

+70/! 0\-:6$SSKWPO
%2'<!
DKUHI ´0\$SSMQOS´!/DXQFK0\$SSOLFDWLRQD!
%2'<!
+70/!

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

7HAT´S 
1dQ^OU_Q
&IRST
,OOKATTHESEQUENCEOFEVENTSBELOW AND 
PLACETHEMINTHEORDERINWHICHTHEY
OCCURINA*73APPLICATION


WKH:HEVHUYHUVHQGV 
D-$5
VWDUWVXS ILOHWRWKH-:6KHOSH
UDSS
WKH:HEEURZVHU
KHOSHUD SS
WKH-:6 UDSSUHTXHVWV
WKH-:6KHOSH 
WKH-$5 ILOH
WKH:HEVHUYHUVHQGVD WKH-:6KHOSHUDSSLQYRNHV
MQOS
ILOHWRWKHEURZVHU WKH-$5·VPDLQ PHWKRG

XVHUFOLFNVD:HESDJHOLQN EURZVHUUHTXHVWVDMQOSILOH
IURPWKH:HEVHUYHU


WKHUH DUH QR
'XPE 4XHVWLRQV
:MDD=LHGAFLK
Q: (OWIS*AVA7EB3TARTDIFFERENTFROMANAPPLET ƒ -DYD:HE6WDUWWHFKQRORJ\OHWV\RXGHSOR\D
VWDQGDORQHFOLHQWDSSOLFDWLRQIURPWKH:HE

A: !PPLETSCANTLIVEOUTSIDEOFA7EBBROWSER!NAPPLETIS ƒ -DYD:HE6WDUWLQFOXGHVD¶KHOSHUDSS·WKDWPXVW
EHLQVWDOOHGRQWKHFOLHQW DORQJZLWK-DYD 
DOWNLOADEDFROMTHE7EBASPARTOFA7EBPAGERATHERTHAN
SIMPLYFROMA7EBPAGE)NOTHERWORDS TOTHEBROWSER THEAPPLET
ISJUSTLIKEA*0%'ORANYOTHERRESOURCE4HEBROWSERUSESEITHERA
ƒ $-DYD:HE6WDUW -:6 DSSKDVWZRSLHFHV
*AVAPLUG INORTHEBROWSERSOWNBUILT IN*AVAFARLESSCOMMON DQH[HFXWDEOH-$5DQGDMQOSILOH
TODAY TORUNTHEAPPLET!PPLETSDONTHAVETHESAMELEVELOF
ƒ $MQOSILOHLVDVLPSOH;0/GRFXPHQWWKDW
FUNCTIONALITYFORTHINGSSUCHASAUTOMATICUPDATING ANDTHEYMUST
GHVFULEHV\RXU-:6DSSOLFDWLRQ,WLQFOXGHV
ALWAYSBELAUNCHEDFROMTHEBROWSER7ITH*73APPLICATIONS ONCE
THEYREDOWNLOADEDFROMTHE7EB THEUSERDOESNTEVENHAVETO WDJVIRUVSHFLI\LQJWKHQDPHDQGORFDWLRQRIWKH
BEUSINGABROWSERTORELAUNCHTHEAPPLICATIONLOCALLY)NSTEAD -$5DQGWKHQDPHRIWKHFODVVZLWKWKHPDLQ 
THEUSERCANSTARTUPTHE*73HELPERAPP ANDUSEITTOLAUNCHTHE PHWKRG
ALREADY DOWNLOADEDAPPLICATIONAGAIN
ƒ :KHQDEURZVHUJHWVDMQOSILOHIURPWKHVHUYHU
EHFDXVHWKHXVHUFOLFNHGRQDOLQNWRWKHMQOS
Q: 7HATARETHESECURITYRESTRICTIONSOF*73 ILOH WKHEURZVHUVWDUWVXSWKH-:6KHOSHUDSS
ƒ 7KH-:6KHOSHUDSSUHDGVWKHMQOSILOHDQG
A: *73APPSHAVESEVERALLIMITATIONSINCLUDINGBEING UHTXHVWVWKHH[HFXWDEOH-$5IURPWKH:HE
VHUYHU
RESTRICTEDFROMREADINGANDWRITINGTOTHEUSERSHARDDRIVE"UT
*73HASITSOWN!0)WITHASPECIALOPENANDSAVEDIALOGBOXSO
THAT WITHTHEUSERSPERMISSION YOURAPPCANSAVEANDREADITS ƒ :KHQWKH-:6JHWVWKH-$5LWLQYRNHVWKH
OWNFILESINASPECIAL RESTRICTEDAREAOFTHEUSERSDRIVE PDLQ PHWKRG VSHFLILHGLQWKHMQOSILOH 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVH7UXHRU)DOVH

7EEXPLOREDPACKAGING DEPLOYMENT AND*73


INTHISCHAPTER9OURJOBISTODECIDEWHETHER
EACHOFTHEFOLLOWINGSTATEMENTSISTRUEORFALSE
1dQ^OU_Q
&=[^N X[ /JU\N'
4HE*AVACOMPILERHASAmAG D THATLETSYOUDECIDEWHEREYOURCLASSlLESSHOULDGO

!*!2ISASTANDARDDIRECTORYWHEREYOURCLASSlLESSHOULDRESIDE

7HENCREATINGA*AVA!RCHIVEYOUMUSTCREATEAlLECALLEDJARMF

4HESUPPORTINGlLEINA*AVA!RCHIVEDECLARESWHICHCLASSHASTHEMAIN METHOD

*!2lLESMUSTBEUNZIPPEDBEFORETHE*6-CANUSETHECLASSESINSIDE

!TTHECOMMANDLINE *AVA!RCHIVESAREINVOKEDUSINGTHE ARCHmAG

0ACKAGESTRUCTURESAREMEANINGFULLYREPRESENTEDUSINGHIERARCHIES

5SINGYOURCOMPANYSDOMAINNAMEISNOTRECOMMENDEDWHENNAMINGPACKAGES

$IFFERENTCLASSESWITHINASOURCElLECANBELONGTODIFFERENTPACKAGES

7HENCOMPILINGCLASSESINAPACKAGE THE PmAGISHIGHLYRECOMMENDED

7HENCOMPILINGCLASSESINAPACKAGE THEFULLNAMEMUSTMIRRORTHEDIRECTORYTREE

*UDICIOUSUSEOFTHE DmAGCANHELPTOASSURETHATTHEREARENOTYPOSINYOURCLASSTREE

%XTRACTINGA*!2WITHPACKAGESWILLCREATEADIRECTORYCALLEDMETA INF

%XTRACTINGA*!2WITHPACKAGESWILLCREATEAlLECALLEDMANIFESTMF

4HE*73HELPERAPPALWAYSRUNSINCONJUNCTIONWITHABROWSER

*73APPLICATIONSREQUIREANLP.ETWORK,AUNCH0ROTOCOL lLETOWORKPROPERLY

!*73SMAINMETHODISSPECIlEDINITS*!2lLE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

1dQ^OU_Q

6XPPDU\&URVV
       

 

    
!NYTHINGINTHEBOOK
ISFAIRGAMEFORTHIS

Licensed by
   ONE

  

Eduard Simons
 

  



   

 


 104038    

 

!CROSS $OWN
7ONTTRAVEL -INEISUNIQUE 0USHYWIDGETS 7HOSALLOWED )/CLEANUP
$ONTSPLITME '5)STARGET ????OFMYDESIRE %FlCIENCYEXPERT -ILLI NAP
2ELEASE ABLE *AVATEAM @!BANDONEDMONIKER %ARLYEXIT 4RIGMETHOD
'OTTHEKEY &ACTORY !CHUNK #OMMONWRAPPER %NCAPSMETHOD
)/GANG &ORAWHILE -ATHNOTTRIG 9ESORNO *.,0FORMAT
&LATTEN !TOMIC
 "EBRAVE *AVAJACKETS 6"SlNAL
%NCAPSULATEDRETURNER 'OODASNEW !RRANGEWELL .OTBEHAVIOR *AVABRANCH
3HIPTHISONE 0AIRSEVENT 3WINGSLANG 3OCKETSSUITE
-AKEITSO 7HEREDO)START )/CANALS
)/SIEVE !LITTLElREWALL /RGANIZEDRELEASE
$ISKLEAF .OTFORANINSTANCE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
H[HUFLVHVROXWLRQV

 XVHUFOLFNVD:HESDJHOLQN

EURZVHUUHTXHVWVDMQOSILOH
 IURPWKH:HEVHUYHU
%XERCISE
 WKH:HEVHUYHUVHQGVDMQOS
3OLUTIONS ILOHWRWKHEURZVHU

 WKH:HEEURZVHUVWDUWVXS
WKH-:6KHOSHUDSS
UDSSUHTXHVWV
 WKH-:6KHOSH
WKH-$5ILOH

WKH:HEVHUYHUVHQGV
 D-$5
ILOHWRWKH-:6KHOSH
UDSS

WKH-:6KHOSHUDSSLQYRNHV
 WKH-$5·VPDLQ PHWKRG

7UXH 4HE*AVACOMPILERHASAmAG D THATLETSYOUDECIDEWHEREYOURCLASSlLESSHOULDGO


)DOVH !*!2ISASTANDARDDIRECTORYWHEREYOURCLASSlLESSHOULDRESIDE
)DOVH 7HENCREATINGA*AVA!RCHIVEYOUMUSTCREATEAlLECALLEDJAR MF
7UXH 4HESUPPORTINGlLEINA*AVA!RCHIVEDECLARESWHICHCLASSHASTHEMAIN METHOD
)DOVH *!2lLESMUSTBEUNZIPPEDBEFORETHE*6-CANUSETHECLASSESINSIDE
)DOVH !TTHECOMMANDLINE *AVA!RCHIVESAREINVOKEDUSINGTHE ARCHmAG
7UXH 0ACKAGESTRUCTURESAREMEANINGFULLYREPRESENTEDUSINGHIERARCHIES
)DOVH 5SINGYOURCOMPANYSDOMAINNAMEISNOTRECOMMENDEDWHENNAMINGPACKAGES
)DOVH $IFFERENTCLASSESWITHINASOURCElLECANBELONGTODIFFERENTPACKAGES
)DOVH 7HENCOMPILINGCLASSESINAPACKAGE THE PmAGISHIGHLYRECOMMENDED
7UXH 7HENCOMPILINGCLASSESINAPACKAGE THEFULLNAMEMUSTMIRRORTHEDIRECTORYTREE
7UXH *UDICIOUSUSEOFTHE DmAGCANHELPTOASSURETHATTHEREARENOTYPOSINYOURTREE
7UXH %XTRACTINGA*!2WITHPACKAGESWILLCREATEADIRECTORYCALLEDMETA INF
7UXH %XTRACTINGA*!2WITHPACKAGESWILLCREATEAlLECALLEDMANIFESTMF
)DOVH 4HE*73HELPERAPPALWAYSRUNSINCONJUNCTIONWITHABROWSER
)DOVH *73APPLICATIONSREQUIREANLP.ETWORK,AUNCH0ROTOCOL lLETOWORKPROPERLY
)DOVH !*73SMAINMETHODISSPECIlEDINITS*!2lLE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SDFNDJHMDUVDQGGHSOR\PHQW

6XPPDU\&URVV
       
'2*7075$16,(17:

,%$720,&52,
 
$-$5.16<1&+521,=('
/(%(77*
    
2&+$,1('566$9(
  
*(7*(;(&87$%/(&7
6(3$$8&6
  
%,03/(0(17),/7(5
 
%512,)6:
  
',5(&725<62&.(786(5

1$(753$
   
3$&.$*(&/$66/2233
5(/7/53
      
%<7(5(6725(((;75(0(

$,(6(0;5
 
0$1,)(67(1&$368/$7(6

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

'LVWULEXWHG (YHU\RQHVD\VORQJ
&RPSXWLQJ GLVWDQFHUHODWLRQVKLSVDUHKDUG
EXWZLWK50,LW·VHDV\1R
PDWWHUKRZIDUDSDUWZHUHDOO\
DUH50,PDNHVLWVHHPOLNH
ZH·UHWRJHWKHU

%HLQJUHPRWHGRHVQ·WKDYHWREHDEDGWKLQJ3URE THINGSAREEASIERWHEN
ALLTHEPARTSOFYOURAPPLICATIONAREINONEPLACE INONEHEAP WITHONE*6-TORULETHEMALL"UT
THATSNOTALWAYSPOSSIBLE/RDESIRABLE7HATIFYOURAPPLICATIONHANDLESPOWERFULCOMPUTATIONS
BUTTHEEND USERSAREONAWIMPYLITTLE*AVA ENABLEDDEVICE7HATIFYOURAPPNEEDSDATA
FROMADATABASE BUTFORSECURITYREASONS ONLYCODEONYOURSERVERCANACCESSTHEDATABASE
)MAGINEABIGE COMMERCEBACK END THATHASTORUNWITHINATRANSACTION MANAGEMENTSYSTEM
3OMETIMES PARTOFYOURAPPMUSTRUNONASERVER WHILEANOTHERPARTUSUALLYACLIENT MUST
RUNONADIFFERENTMACHINE)NTHISCHAPTER WELLLEARNTOUSE*AVASAMAZINGLYSIMPLE2EMOTE
-ETHOD)NVOCATION2-) TECHNOLOGY7ELLALSOTAKEAQUICKPEEKAT3ERVLETS %NTERPRISE*AVA
"EANS%*" AND*INI ANDLOOKATTHEWAYSINWHICH%*"AND*INIDEPENDON2-)7ELLENDTHE
BOOKBYWRITINGONEOFTHECOOLESTTHINGSYOUCANMAKEIN*AVA AUNIVERSALSERVICEBROWSER

WKLVLVDQHZFKDSWHU 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
KRZPDQ\KHDSV"

)LOH(GLW9LHZ
)LOH(GLW9LHZ
)LOH(GLW9LHZ
)LOH(GLW9LHZ

+773 50,
50, +773
([HFXWDEOH
-DU :HE6WDUW 50,DSS
50,DSS 6HUYOHWV

/RFDO &RPELQDWLRQ5HPRWH
RQHKHD
SWZRR
5M\PWLKITT[IZMIT_Ia[JM\ _MMV EMHFWV
\ _WWJRMK\[WV\PM[IUMPMIX
3OFARINTHISBOOK EVERYMETHODWEVEINVOKEDHASBEENON
ANOBJECTRUNNINGINTHESAMEVIRTUALMACHINEASTHECALLER
)NOTHERWORDS THECALLINGOBJECTANDTHECALLEETHEOBJECT I
WEREINVOKINGTHEMETHODON LIVEONTHESAMEHEAP 6WXI
GR

FODVV)RR^ %DU MHFW



RE
YRLGJR ^
%DUE QHZ%DU  )RR MHFW
RE
EGR6WXII 
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)RRI QHZ)RR  ,QPRVWDSSOLFDWLRQVZKHQRQHREMHFW
FDOOVDPHWKRGRQDQRWKHUERWKREMHFWV
IJR 
DUHRQWKHVDPHKHDS,QRWKHUZRUGV
` ERWKDUHUXQQLQJZLWKLQWKHVDPH-90
`
)NTHECODEABOVE WEKNOWTHATTHE&OOINSTANCE
REFERENCEDBYFANDTHE"AROBJECTREFERENCEDBYBARE
BOTHONTHESAMEHEAP RUNBYTHESAME*6-2EMEMBER
THE*6-ISRESPONSIBLEFORSTUFlNGBITSINTOTHEREFERENCE
VARIABLETHATREPRESENTHOWTOGETTOANOBJECTONTHEHEAP
4HE*6-ALWAYSKNOWSWHEREEACHOBJECTIS ANDHOWTO
GETTOIT"UTTHE*6-CANKNOWABOUTREFERENCESONONLY
ITSOWNHEAP9OUCANT FOREXAMPLE HAVEA*6-RUNNING
ONONEMACHINEKNOWINGABOUTTHEHEAPSPACEOFA*6-
RUNNINGONADIFFERENTMACHINE)NFACT A*6-RUNNINGON
ONEMACHINECANTKNOWANYTHINGABOUTADIFFERENT*6-
RUNNINGONTHESAMEMACHINE)TMAKESNODIFFERENCEIF
THE*6-SAREONTHESAMEORDIFFERENTPHYSICALMACHINES
ITMATTERSONLYTHATTHETWO*6-SARE WELL TWODIFFERENT
INVOCATIONSOFTHE*6-

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

?PI\QNaW]_IV\\WQV^WSMIUM\PWLWV
IVWJRMK\Z]VVQVOWVIVW\PMZUIKPQVM'
7EKNOWHOWTOGETINFORMATIONFROMONEMACHINETOANOTHERˆ
WITH3OCKETSAND)/7EOPENA3OCKETCONNECTIONTOANOTHER
MACHINE ANDGETAN/UTPUT3TREAMANDWRITESOMEDATATOIT
"UTWHATIFWEACTUALLYWANTTOCALLAMETHODONSOMETHINGRUNNING
INANOTHERMACHINEANOTHER*6-/FCOURSEWECOULDALWAYSBUILD
OUROWNPROTOCOL ANDWHENYOUSENDDATATOA3ERVER3OCKETTHE
SERVERCOULDPARSEIT lGUREOUTWHATYOUMEANT DOTHEWORK AND
SENDBACKTHERESULTONANOTHERSTREAM7HATAPAIN THOUGH4HINK
HOWMUCHNICERITWOULDBETOJUSTGETAREFERENCETOTHEOBJECTON
DVWORYHV
THEOTHERMACHINE ANDCALLAMETHOD SRZHUIXOI XJKELJ WKUR
WRFUXQFLRKQV
FDOF XOD W
Imagine two computers...
-90

WLQ\ZLPS\
VORZDWFDOFXOSDDWLQIXOO\ -90
LRQV

/LWWOH %LJ

Big has something Little wants.


Compute power.
Little wants to send some data to Big, so that Big can do the
heavy computing.
Little wants simply to call a method...
GRXEOHGR&DOF8VLQJ'DWDEDVH &DOF1XPEHUVQXPEHUV

and get back the result.


But how can Little get a reference to an object on Big?
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.

WZRREMHFWVWZRKHDSV

7JRMK\)Z]VVQVOWV4Q\\TM_IV\[\WKITT
IUM\PWLWV7JRMK\*Z]VVQVOWV*QO
4HEQUESTIONIS HOWDOWEGETANOBJECTONONEMACHINE
WHICHMEANSADIFFERENTHEAP*6- TOCALLAMETHODON
ANOTHERMACHINE

DEDVH
GR&DOF8VLQJ'DW

%
$

UHWXUQYDOXH

*]\aW]KIV¼\LW\PI\
7ELL NOTDIRECTLYANYWAY9OUCANTGETAREFERENCETO
SOMETHINGONANOTHERHEAP)FYOUSAY
$OGD
7HATEVERDISREFERENCINGMUSTBEINTHESAMEHEAPSPACEAS
THECODERUNNINGTHESTATEMENT
"UTIMAGINEYOUWANTTODESIGNSOMETHINGTHATWILLUSE
3OCKETSAND)/TOCOMMUNICATEYOURINTENTIONAMETHOD
INVOCATIONONANOBJECTRUNNINGONANOTHERMACHINE YET
STILLFEELASTHOUGHYOUWEREMAKINGALOCALMETHODCALL
)NOTHERWORDS YOUWANTTOCAUSEAMETHODINVOCATIONONA
REMOTEOBJECTIE ANOBJECTINAHEAPSOMEWHEREELSE BUT
WITHCODETHATLETSYOUPRETENDTHATYOUREINVOKINGAMETHOD
ONALOCALOBJECT4HEEASEOFAPLAINOLDEVERYDAYMETHOD
CALL BUTTHEPOWEROFREMOTEMETHODINVOCATION4HATSOUR
GOAL
4HATSWHAT2-)2EMOTE-ETHOD)NVOCATION GIVESYOU
"UTLETSSTEPBACKANDIMAGINEHOWYOUWOULDDESIGN2-)IF
YOUWEREDOINGITYOURSELF5NDERSTANDINGWHATYOUDHAVETO
BUILDYOURSELFWILLHELPYOULEARNHOW2-)WORKS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

$GHVLJQIRUUHPRWHPHWKRGFDOOV
&UHDWHIRXUWKLQJVVHUYHUFOLHQW
VHUYHUKHOSHUFOLHQWKHOSHU

 &UHDWHFOLHQWDQGVHUYHUDSSV7KHVHUYHUDSSLVWKH
UHPRWHVHUYLFHWKDWKDVDQREMHFWZLWKWKHPHWKRG
WKDWWKHFOLHQWZDQWVWRLQYRNH

&OLHQWKHDS 6HUYHUKHDS

6H

W
UYLFHREMHF
& OL 
HQWREMHFW

 &UHDWHFOLHQWDQGVHUYHU¶KHOSHUV·7KH\·OOKDQGOHDOO
WKHORZOHYHOQHWZRUNLQJDQG,2GHWDLOVVR\RXUFOLHQW
DQGVHUYLFHFDQSUHWHQGOLNHWKH\·UHLQWKHVDPHKHDS

&OLHQWKHDS 6HUYHUKHDS

6H H
U

& OL
HQWKHOSHU UYLFHKHOS 6H
W

UYLFHREMHF
& OL 
HQWREMHFW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
FOLHQWDQGVHUYHUKHOSHUV

<PMZWTMWN\PM»PMTXMZ[¼
4HE@HELPERSARETHEOBJECTSTHATACTUALLYDOTHECOMMUNICATING
4HEYMAKEITPOSSIBLEFORTHECLIENTTOACTASTHOUGHITSCALLINGA
METHODONALOCALOBJECT)NFACT ITIS4HECLIENTCALLSAMETHODON <RXUFOLHQWREMHFWJHWVWR
THECLIENTHELPER ASIFTHECLIENTHELPERWERETHEACTUALSERVICE4HECLIENT
HELPERISAPROXYFORTHE2EAL4HING DFWOLNHLW·VPDNLQJUHPRWH
)NOTHERWORDS THECLIENTOBJECTTHINKSITSCALLINGAMETHODON PHWKRGFDOOV%XWZKDW
THEREMOTESERVICE BECAUSETHECLIENTHELPERISPRETENDINGTOBE
THESERVICEOBJECT0RETENDINGTOBETHETHINGWITHTHEMETHODTHECLIENT LW·VUHDOO\GRLQJLVFDOOLQJ
WANTSTOCALL
"UTTHECLIENTHELPERISNTREALLYTHEREMOTESERVICE!LTHOUGHTHE
PHWKRGVRQDKHDSORFDO
CLIENTHELPERACTSLIKEITBECAUSEITHASTHESAMEMETHODTHATTHE ¶SUR[\·REMHFWWKDWKDQGOHV
SERVICEISADVERTISING THECLIENTHELPERDOESNTHAVEANYOFTHE
ACTUALMETHODLOGICTHECLIENTISEXPECTING)NSTEAD THECLIENT DOOWKHORZOHYHOGHWDLOVRI
HELPERCONTACTSTHESERVER TRANSFERSINFORMATIONABOUTTHEMETHOD
CALLEG NAMEOFTHEMETHOD ARGUMENTS ETC ANDWAITSFORA 6RFNHWVDQGVWUHDPV
RETURNFROMTHESERVER
/NTHESERVERSIDE THESERVICEHELPERRECEIVESTHEREQUESTFROM
THECLIENTHELPERTHROUGHA3OCKETCONNECTION UNPACKSTHE
INFORMATIONABOUTTHECALL ANDTHENINVOKESTHEREALMETHODON
THEREALSERVICEOBJECT3OTOTHESERVICEOBJECT THECALLISLOCAL)TS
COMINGFROMTHESERVICEHELPER NOTAREMOTECLIENT
4HESERVICEHELPERGETSTHERETURNVALUEFROMTHESERVICE PACKSIT
UP ANDSHIPSITBACKOVERA3OCKETSOUTPUTSTREAM TOTHECLIENT
HELPER4HECLIENTHELPERUNPACKSTHEINFORMATIONANDRETURNSTHE
VALUETOTHECLIENTOBJECT

HQGV
&OLHQWKHOSHUUYSULFHW
H E XW
VH
WREHWKH R[\IRUWKH
LW·VMXVWDSU 6HUYHUKHDS
&OLHQWKHDS
5HDO7KLQJ

LQNV
&OLHQWREMHFWRWKWKH 6H H
U

& OL
HQWKHOSHU UYLFHKHOS 6H
W

W UYLFHREMHF
LW·VWDONLQJ H,W & OL 
5HDO6HUYLF OLHQW HQWREMHFW

WKLQNVWKHFHWKLQJ 6 H U Y LF H  REMHFW,6·VWKH
KHOSHULVWK XDOO\ 6HUYLFHKHOSHUJHWVWKH 7KH HDO6HUYLFH,W KRG
WKDWFDQDFWZRUN UHTXHVWIURPWKHFOLHQW WKH5 ZLWKWKHPHW KH
GRWKHUHDO KHOSHUXQSDFNVLWDQG REMHFW FWXDOO\GRHVW
FDOOVWKHPHWKRGRQWKH WKDWD HWKRGZRUN
5HDO6HUYLFH UHDOP
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

+RZWKHPHWKRGFDOOKDSSHQV
 &OLHQWREMHFWFDOOVGR%LJ7KLQJ RQWKHFOLHQWKHOSHUREMHFW

&OLHQWKHDS 6HUYHUKHDS

GR%LJ7KLQJ

6H H

U
& OL
HQWKHOSHU UYLFHKHOS 6H

W
UYLFHREMHF
& OL 
HQWREMHFW


Licensed by
&OLHQWKHOSHUSDFNDJHVXSLQIRUPDWLRQDERXWWKHFDOO

Eduard Simons
DUJXPHQWVPHWKRGQDPHHWF DQGVKLSVLWRYHUWKH
QHWZRUNWRWKHVHUYLFHKHOSHU

&OLHQWKHDS 6HUYHUKHDS
´FOLHQWZDQWVWRFDOODPHWKRGµ

104038
GR%LJ7KLQJ

6H H
U

&OL
HQWKHOSHU UYLFHKHOS 6H W
UYLFHREMHF
& OL 
HQWREMHFW

 6HUYLFHKHOSHUXQSDFNVWKHLQIRUPDWLRQIURPWKHFOLHQWKHOSHU
ÀQGVRXWZKLFKPHWKRGWRFDOO DQGRQZKLFKREMHFW DQG
LQYRNHVWKHUHDOPHWKRGRQWKHUHDOVHUYLFHREMHFW

&OLHQWKHDS 6HUYHUKHDS
´FOLHQWZDQWVWRFDOODPHWKRGµ
GR%LJ7KLQJ
GR%LJ7KLQJ
WKH
5HPHPEHUWKLWKVHLV5($/
REMHFWZLWKF7KHJX\
H PHWKRGORJL HUHDOZRUN
6H
WKDWGRHVWK
U

& OL
HQWKHOSHU UYLFHKHOS 6H
W

UYLFHREMHF
& OL FW

HQWREMH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
50,KHOSHUREMHFWV

2I^I:51OQ^M[aW]\PMKTQMV\IVL
[MZ ^QKMPMTXMZWJRMK\[
)N*AVA 2-)BUILDSTHECLIENTANDSERVICEHELPER 4HEYTHROWEXCEPTIONSALLOVERTHEPLACE
OBJECTSFORYOU ANDITEVENKNOWSHOWTOMAKETHE 3O THECLIENTDOESHAVETOACKNOWLEDGETHERISK4HE
CLIENTHELPERLOOKLIKETHE2EAL3ERVICE)NOTHER CLIENTHASTOACKNOWLEDGETHATWHENITCALLSAREMOTE
WORDS 2-)KNOWSHOWTOGIVETHECLIENTHELPER METHOD EVENTHOUGHTOTHECLIENTITSJUSTALOCALCALL
OBJECTTHESAMEMETHODSYOUWANTTOCALLONTHE TOTHEPROXYHELPEROBJECT THECALLULTIMATELYINVOLVES
REMOTESERVICE 3OCKETSANDSTREAMS4HECLIENTSORIGINALCALLISLOCAL
0LUS 2-)PROVIDESALLTHERUNTIMEINFRASTRUCTURETO BUTTHEPROXYTURNSITINTOAREMOTECALL!REMOTECALL
MAKEITWORK INCLUDINGALOOKUPSERVICESOTHATTHE JUSTMEANSAMETHODTHATSINVOKEDONANOBJECTON
CLIENTCANlNDANDGETTHECLIENTHELPERTHEPROXY ANOTHER*6-(OWTHEINFORMATIONABOUTTHATCALL
FORTHE2EAL3ERVICE  GETSTRANSFERREDFROMONE*6-TOANOTHERDEPENDS
7ITH2-) YOUDONTWRITEANYOFTHENETWORKING ONTHEPROTOCOLUSEDBYTHEHELPEROBJECTS
OR)/CODEYOURSELF4HECLIENTGETSTOCALLREMOTE 7ITH2-) YOUHAVEACHOICEOFPROTOCOLS*2-0OR
METHODSIETHEONESTHE2EAL3ERVICEHAS JUST ))/0*2-0IS2-)S@NATIVEPROTOCOL THEONEMADE
LIKENORMALMETHODCALLSONOBJECTSRUNNINGINTHE JUSTFOR*AVA TO *AVAREMOTECALLS))/0 ONTHEOTHER
CLIENTSOWNLOCAL*6- HAND ISTHEPROTOCOLFOR#/2"!#OMMON/BJECT
!LMOST 2EQUEST"ROKER!RCHITECTURE ANDLETSYOUMAKE
REMOTECALLSONTHINGSWHICHARENTNECESSARILY*AVA
4HEREISONEDIFFERENCEBETWEEN2-)CALLSANDLOCAL OBJECTS#/2"!ISUSUALLYMUCHMOREPAINFULTHAN
NORMAL METHODCALLS2EMEMBERTHATEVENTHOUGH 2-) BECAUSEIFYOUDONTHAVE*AVAONBOTHENDS
TOTHECLIENTITLOOKSLIKETHEMETHODCALLISLOCAL THERESANAWFULLOTOFTRANSLATIONANDCONVERSIONTHAT
THECLIENTHELPERSENDSTHEMETHODCALLACROSSTHE HASTOHAPPEN
NETWORK3OTHEREISNETWORKINGAND)/!NDWHAT
DOWEKNOWABOUTNETWORKINGAND)/METHODS "UTTHANKFULLY ALLWECAREABOUTIS*AVA TO *AVA SO
WERESTICKINGWITHPLAINOLD REMARKABLYEASY2-)
4HEYRERISKY

,Q50,WKHFOLHQWKHOSHULVD¶VWXE·
DQGWKHVHUYHUKHOSHULVD¶VNHOHWRQ·

&OLHQWKHDS 6HUYHUKHDS

50,678% 50,6.(/(721

6H H
U

& OL
HQWKHOSHU UYLFHKHOS 6H
W

UYLFHREMHF
& OL 
HQWREMHFW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

0DNLQJWKH5HPRWH6HUYLFH
4HISISANOVERVIEWOFTHElVESTEPSFORMAKINGTHEREMOTE 6HUYHU
SERVICETHATRUNSONTHESERVER $ONTWORRY EACHSTEPIS
EXPLAINEDINDETAILOVERTHENEXTFEWPAGES

WKH
6WHSRQH
LQ W H U I D FHGHILQDHWV\RX
0DNHD5HPRWH,QWHUIDFH SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
7KLV HPHWKRGVWK
UHPRW OLHQWVWRFDOO
5HPRWH^`

4HEREMOTEINTERFACEDElNESTHEMETHODS
THATACLIENTCANCALLREMOTELY)TSWHAT
ZDQWF
0\5HPRWHMDYD
THECLIENTWILLUSEASTHEPOLYMORPHICCLASS
TYPEFORYOURSERVICE"OTHTHE3TUBA ND
ACTUALSERVICEWILLIMPLEMENTTHIS

6WHSWZR
7KH5HDO6HUYLFHW 7KHFODVV
0DNHD5HPRWH,PSOHPHQWDWLRQ
SXEOLFLQWHUIDFH

ZLWKWKHPHWKR LPKD
GV WGR
PHQWV
0\5HPRWHH[WHQGV
5HPRWH^`

WKHUHDOZ RU N ,W SOH


4HISISTHECLASSTHATDOESTHE2EAL7ORK ID FH 
)THASTHEREALIMPLEMENTATIONOFTHE WKHUHPRWHLQWHU
0\5HPRWH,PSOMDYD
REMOTEMETHODSDElNEDINTHEREMOTE
INTERFACE)TSTHEOBJECTTHATTHECLIENT
WANTSTOCALLMETHODSON
VSLWVRXWWZ QH
WKHDFWXDO FODVVHVIRUWR Z
6WHSWKUHH 5XQQLQJUPLFDJDLQVW ODVV KHOSHUREMHFWVKH
VHUYLFHLPSOHPHQWDWLRQF
*HQHUDWHWKHVWXEVDQGVNHOHWRQVXVLQJUPLF 
)LOH(GLW:LQGRZ+HOS(DW 
4HESEARETHECLIENTANDSERVER@HELPERS 

9OUDONTHAVETOCREATETHESECLASSESOREVER UPLF0\5HPRWH,PSO 




LOOKATTHESOURCECODETHATGENERATESTHEM 0\5HPRWH,PSOB6WXEFODVV
)TSALLHANDLEDAUTOMATICALLYWHENYOU

RUNTHERMICTOOLTHATSHIPSWITHYOUR*AVA 

DEVELOPMENTKIT 


0\5HPRWH,PSOB6NHOFODVV
6WHSIRXU )LOH(GLW:LQGRZ+HOS'ULQN

6WDUWWKH50,UHJLVWU\ UPLUHJLVWU\ UPLUHJLVWU\ D


4HERMIREGISTRYISLIKETHEWHITEPAGESOFA UXQWKLVHLQWHUPLQDO
PHONEBOOK)TSWHERETHEUSERGOESTOGET VHSDUDW
THEPROXYTHECLIENTSTUBHELPEROBJECT 

6WHSÀYH
)LOH(GLW:LQGRZ+HOS%H0HUU\
6WDUWWKHUHPRWHVHUYLFH
9OUHAVETOGETTHESERVICEOBJECTUPANDRUNNING MDYD0\5HPRWH,PSO
9OURSERVICEIMPLEMENTATIONCLASSINSTANTIATESAN
INSTANCEOFTHESERVICEANDREGISTERSITWITHTHE2-)
REGISTRY2EGISTERINGITMAKESTHESERVICEAVAILABLEFOR
CLIENTS
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DUHPRWHLQWHUIDFH

6WHSRQH0DNHD5HPRWH,QWHUIDFH SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
5HPRWH^`

0\5HPRWHMDYD
 ([WHQGMDYDUPL5HPRWH
2EMOTEISA@MARKERINTERFACE WHICHMEANSITHASNOMETHODS)THAS
SPECIALMEANINGFOR2-) THOUGH SOYOUMUSTFOLLOWTHISRULE.OTICE
THATWESAY@EXTENDSHERE/NEINTERFACEISALLOWEDTOEXTENDANOTHER
KDVWR
INTERFACE <RXULQWHUIDFWHLW·VIRU
DQQRXQFHWKDKRGFDOOV$Q
SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^ UHPRWHPHW Q·WLPSOHPHQW
LQWHUIDFHFDWLWFDQH[WHQG
DQ\WKLQJEX DFHV
 'HFODUHWKDWDOOPHWKRGVWKURZD5HPRWH([FHSWLRQ RWKHULQWHUI
4HEREMOTEINTERFACEISTHEONETHECLIENTUSESASTHEPOLYMORPHICTYPE
FORTHESERVICE)NOTHERWORDS THECLIENTINVOKESMETHODSONSOMETHING
THATIMPLEMENTSTHEREMOTEINTERFACE4HATSOMETHINGISTHESTUB OF
COURSE ANDSINCETHESTUBISDOINGNETWORKINGAND)/ ALLKINDSOF"AD
4HINGSCANHAPPEN4HECLIENTHASTOACKNOWLEDGETHERISKSBYHANDLING
ORDECLARINGTHEREMOTEEXCEPTIONS)FTHEMETHODSINANINTERFACE
DECLAREEXCEPTIONS ANYCODECALLINGMETHODSONAREFERENCEOFTHATTYPE
THEINTERFACETYPE MUSTHANDLEORDECLARETHEEXCEPTIONS
LVLQMDYDUPL
LPSRUWMDYDUPL  WKH5HPRWHLQWHUIDFH
(YHU\UHPRWHPHWKRGF LV
FRQVLGHUHG¶ULVN\·'HFODDOO
SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^
SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ 5HPRWH([FHSWLRQRQHYHUULQJ\

` PHWKRGIRUFHVWKHFOLH
WRSD\DWWHQWLRQDQG QW
DFNQRZOHGJHWKDWWKLQJV
PLJKWQRWZRUN
 %HVXUHDUJXPHQWVDQGUHWXUQYDOXHVDUHSULPLWLYHVRU6HULDOL]DEOH
!RGUMENTSANDRETURNVALUESOFAREMOTEMETHODMUSTBEEITHERPRIMITIVE
OR3ERIALIZABLE4HINKABOUTIT!NYARGUMENTTOAREMOTEMETHODHASTO
BEPACKAGEDUPANDSHIPPEDACROSSTHENETWORK ANDTHATSDONETHROUGH
3ERIALIZATION3AMETHINGWITHRETURNVALUES)FYOUUSEPRIMITIVES 3TRINGS
ANDTHEMAJORITYOFTYPESINTHE!0)INCLUDINGARRAYSANDCOLLECTIONS
YOULLBElNE)FYOUAREPASSINGAROUNDYOUROWNTYPES JUSTBESURETHAT
YOUMAKEYOURCLASSESIMPLEMENT3ERIALIZABLE

SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ
7KLVUHWXUQYDOXHLVJRQQDEHVKLSSH
RYHUWKHZLUHIURPWKHVHUYHUEDFNG
WKHFOLHQWVRLWPXVWEH6HULD WR
7KDW·VKRZDUJVDQGUHWXUQYDOL]D EOH
OXHVJHW
SDFNDJHGXSDQGVHQW
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

6WHSWZR0DNHD5HPRWH,PSOHPHQWDWLRQ SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
5HPRWH^`

 ,PSOHPHQWWKH5HPRWHLQWHUIDFH 0\5HPRWH,PSOMDYD
9OURSERVICEHASTOIMPLEMENTTHEREMOTEINTERFACEˆTHEONE
WITHTHEMETHODSYOURCLIENTISGOINGTOCALL
SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^
SXEOLF6WULQJVD\+HOOR ^
UHWXUQ³6HUYHUVD\Vµ+H\¶´ 7KHFRPSLOHUZLOOPDNHVXUHWKDW
` \RX·YHLPSOHPHQWHGDOOWKHPHWKR
PRUHFRGHLQFODVV
IUR PWKHLQWHUIDFH\RXLPSOHPHQWGV
,Q
`
WKLVFDVHWKHUH·VRQO\RQH
 ([WHQG8QLFDVW5HPRWH2EMHFW
)NORDERTOWORKASAREMOTESERVICEOBJECT YOUROBJECTNEEDSSOME
FUNCTIONALITYRELATEDTO@BEINGREMOTE4HESIMPLESTWAYISTOEXTEND
5NICAST2EMOTE/BJECTFROMTHEJAVARMISERVERPACKAGE ANDLETTHAT
CLASSYOURSUPERCLASS DOTHEWORKFORYOU
SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^

 :ULWHDQRDUJFRQVWUXFWRUWKDWGHFODUHVD5HPRWH([FHSWLRQ
9OURNEWSUPERCLASS 5NICAST2EMOTE/BJECT HASONELITTLEPROBLEMˆITS
CONSTRUCTORTHROWSA2EMOTE%XCEPTION4HEONLYWAYTODEALWITHTHISIS
TODECLAREACONSTRUCTORFORYOURREMOTEIMPLEMENTATION JUSTSOTHATYOU
HAVEAPLACETODECLARETHE2EMOTE%XCEPTION2EMEMBER WHENACLASSIS
INSTANTIATED ITSSUPERCLASSCONSTRUCTORISALWAYSCALLED)FYOURSUPERCLASS
CONSTRUCTORTHROWSANEXCEPTION YOUHAVENOCHOICEBUTTODECLARETHAT
XWDQ\WKLQJLQ
YOURCONSTRUCTORALSOTHROWSANEXCEPTION <RXGRQ·WKDYHWRS HHGD XMXVWQ
SXEOLF0\5HPRWH,PSO WKURZV5HPRWH([FHSWLRQ^` WKHFRQVWUXFWRHUWK<R
DW\RXUVXSHUFODVV
ZD\WRGHFODU URZVDQH[FHSWLRQ
FRQVWUXFWRUWK
 5HJLVWHUWKHVHUYLFHZLWKWKH50,UHJLVWU\
.OWTHATYOUVEGOTAREMOTESERVICE YOUHAVETOMAKEITAVAILABLETO
REMOTECLIENTS9OUDOTHISBYINSTANTIATINGITANDPUTTINGITINTOTHE2-)
REGISTRYWHICHMUSTBERUNNINGORTHISLINEOFCODEFAILS 7HENYOU
REGISTERTHEIMPLEMENTATIONOBJECT THE2-)SYSTEMACTUALLYPUTSTHESTUBIN
THEREGISTRY SINCETHATSWHATTHECLIENTREALLYNEEDS2EGISTERYOURSERVICE
USINGTHESTATICREBIND METHODOFTHEJAVARMI.AMINGCLASS
Q DP H WKDWFOLHQWVLVW FDQXVH
*LYH \ RX U VH UY LFHD HULW
WU\^
WRORRNLWXSLQHJ WKHUHJLVWU\ D\RQGXUELHJQGWKH
0\5HPRWHVHUYLFH QHZ0\5HPRWH,PSO  U\:KHQ
1DPLQJUHELQG ³5HPRWH+HOOR´VHUYLFH  ZLWKWKH50,U50LVW,VZDSVWKHVHUYLFHIRUWKH
HF W
VHUYLFHREM WKHVWXELQWKHUHJLVWU\
`FDWFK ([FHSWLRQH[ ^` SXWV
VWXEDQG
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VWXEVDQGVNHOHWRQV

6WHSWKUHHJHQHUDWHVWXEVDQGVNHOHWRQV

 5XQUPLFRQWKHUHPRWHLPSOHPHQWDWLRQFODVV
VSLWVRXWWZ QH
QRWWKHUHPRWHLQWHUIDFH
FODVVHVIRUWR Z
4HERMICTOOL THATCOMESWITHTHE*AVASOFTWARE 1RWLFHWKDW\RXGWRQKH·W VD\ ´FODVVµ KHOSHUREMHFWVKH
DEVELOPMENTKIT TAKESASERVICEIMPLEMENTATIONAND RQWKH HQ G -X VW FO DVVQDPH

CREATESTWONEWCLASSES THESTUBANDTHESKELETON )LOH(GLW:LQGRZ+HOS:KXI¿H



)TUSESANAMINGCONVENTIONTHATISTHENAMEOF 

YOURREMOTEIMPLEMENTATION WITHEITHER?3TUBOR UPLF0\5HPRWH,PSO


0\5HPRWH,PSOB6WXEFODVV
?3KELETONADDEDTOTHEEND4HEREAREOTHEROPTIONS
WITHRMIC INCLUDINGNOTGENERATINGSKELETONS 


SEEINGWHATTHESOURCECODEFORTHESECLASSESLOOKED 

LIKE ANDEVENUSING))/0ASTHEPROTOCOL4HEWAY
WEREDOINGITHEREISTHEWAYYOULLUSUALLYDOIT 0\5HPRWH,PSOB6NHOFODVV
4HECLASSESWILLLANDINTHECURRENTDIRECTORYIE
WHATEVERYOUDIDACDTO 2EMEMBER RMICMUST
BEABLETOSEEYOURIMPLEMENTATIONCLASS SOYOULL
PROBABLYRUNRMICFROMTHEDIRECTORYWHEREYOUR
REMOTEIMPLEMENTATIONIS7EREDELIBERATELYNOT
USINGPACKAGESHERE TOMAKEITSIMPLER)NTHE2EAL
7ORLD YOULLNEEDTOACCOUNTFORPACKAGEDIRECTORY
STRUCTURESANDFULLY QUALIlEDNAMES 

6WHSIRXUUXQUPLUHJLVWU\

 %ULQJXSDWHUPLQDODQGVWDUWWKHUPLUHJLVWU\ )LOH(GLW:LQGRZ+HOS+XK"

"ESUREYOUSTARTITFROMAD
IRECTORYTHATHASACCESS UPLUHJLVWU\
TOYOURCLASSES4HESIMPLESTWAYISTOSTARTITFROM
YOUR@CLASSESDIRECTORY

6WHSÀYHVWDUWWKHVHUYLFH

 %ULQJXSDQRWKHUWHUPLQDODQGVWDUW\RXUVHUYLFH )LOH(GLW:LQGRZ+HOS+XK"

4HISMIGHTBEFROMAMAIN METHODINYOURREMOTE MDYD0\5HPRWH,PSO


IMPLEMENTATIONCLASS ORFROMASEPARATELAUNCHERCLASS
)NTHISSIMPLEEXAMPLE WEPUTTHESTARTERCODEINTHE
IMPLEMENTATIONCLASS INAMAINMETHODTHATINSTANTIATES
THEOBJECTANDREGISTERSITWITH2-)REGISTRY

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

&RPSOHWHFRGHIRUWKHVHUYHUVLGH
6HUYHU

7KH5HPRWHLQWHUIDFH

5HPRWH([FHSWLRQDYD QG5HPRWH
LQWHUIDFHDUHLQ MD UPLSDFNDJH
LPSRUWMDYDUPL 
<RXULQWHUIDFH0867H[WHQG
SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^ MDYDUPL5HPRWH
$OORI\RXUUHPRWHPHWKRGVPXVW
SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ GHFODUHD5HPRWH([FHSWLRQ
`

7KH5HPRWHVHUYLFH WKHLPSOHPHQWDWLRQ 


RW H 2 EMHF WLVLQWKH
P
8QLFDVWL5VHHUYHUSDFNDJH FD VW 5HPRWH2EMHFWLV WKH
LPSRUWMDYDUPL  Y DU P QG LQ J 8 QL MHFW
MD H[WH HDUHPRWHRE
LPSRUWMDYDUPLVHUYHU 
HDVLHVWZD\WRPDN
SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^

<RXKDYHWRLPSOHPHQWDOOWKH \RX0867LPSOHP
SXEOLF6WULQJVD\+HOOR ^
LQWHUIDFHPHWKRGVRIFRXUVH%XW UHPRWHLQWHUI HQW\RXU
UHWXUQ³6HUYHUVD\Vµ+H\¶´
QRWLFHWKDW\RXGR127KDYHWR DFH
`
GHFODUHWKH5HPRWH([FHSWLRQ

SXEOLF0\5HPRWH,PSO WKURZV5HPRWH([FHSWLRQ^` \RXUVXSHUFODVVFRQVWUXFWRU IRUDQH[FHSWLRQVR


8QLFDVW5HPRWH2EMHFW GHFODUHV UEHFDXVHLWPHDQV
<28PXVWZULWHDFRQVWUXFWRQJU LVN\FRGH LWV
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ WKDW\RXUFRQVWUXFWR ULVFDOOL
VXSHUFRQVWU XFWR U
WU\^
0\5HPRWHVHUYLFH QHZ0\5HPRWH,PSO 
1DPLQJUHELQG ³5HPRWH+HOOR´VHUYLFH 
`FDWFK ([FHSWLRQH[ ^ 0DNHWKHUHPRW EMHF
H[SULQW6WDFN7UDFH  UPLUHJLVWU\XVLQJHR
W KHVW
WWKHQ¶ELQG·LWWRWKH

` QDPH\RXUHJLVWHULWXQ DWLF1DPLQJUHELQG 7KH
GH
QHHGWRORRNLWXSLQWKH U LV WKHQDPHF
UPLUHJLVWU\ OLHQWVZLOO
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
JHWWLQJWKHVWXE

0W_LWM[\PMKTQMV\OM\\PM[\]JWJRMK\'
4HECLIENTHASTOGETTHESTUBOBJECT SINCETHATSTHETHINGTHE
CLIENTWILLCALLMETHODSON!NDTHATSWHERETHE2-)REGISTRY
COMESIN4HECLIENTDOESA@LOOKUP LIKEGOINGTOTHEWHITEPAGES
OFAPHONEBOOK ANDESSENTIALLYSAYS h(ERESANAME AND)DLIKE
7KLVPXVWEH
THESTUBTHATGOESWITHTHATNAMEv
WKDWWKHVHUYLWFHKHQDPH
ORRNXS LVDVWDWLFPHWKRGRI UHJLVWHUHGXQGHUZDV
WKH1DPLQJFODVV

0\5HPRWHVHUYLFH  0\5HPRWH 1DPLQJORRNXS ³UPL5HPRWH+HOOR´ 

7KHFOLHQWDOZD\VXVHVWKH <RXKDYHWRFDVWLWWRWKH \RXUKRVWQDPHRU,3


UHPRWHLPSOHPHQWDWLRQDVWKH LQWHUIDFHVLQFHWKHORRNXS DGGUHVVJRHVKHUH
W\SHRIWKHVHUYLFH,QID FW PHWKRGUHWXUQVW\SH2EMHFW
WKHFOLHQWQHYHUQHHGVWRNQ
WKHDFWXDOFODVVQDPHRI\RXRZ
U
UHPRWHVHUYLFH

&OLHQW 6HUYHU


HOOR 
VD\+

6 NH O 6H

W
6 WX E
VWX
EU
HWRQ UYLFHREMHF
& OL FW
 HW
HQWREMH XU
QH
G

 OR 50,UHJLVWU\ RQVHUYHU
RNX
S 
5HPRWH
+HOOR
 &OLHQWGRHVDORRNXSRQWKH50,UHJLVWU\
1DPLQJORRNXS ³UPL5HPRWH+HOOR´ 

6WXE
 50,UHJLVWU\UHWXUQVWKHVWXEREMHFW
ASTHERETURNVALUEOFTHELOOKUPMETHOD AND2-)
DESERIALIZESTHESTUBAUTOMATICALLY9OU-534HAVE
THESTUBCLASSTHATRMICGENERATEDFORYOU ONTHE
CLIENTORTHESTUBWONTBEDESERIALIZED

 &OLHQWLQYRNHVDPHWKRGRQWKHVWXEDV
WKRXJKWKHVWXE,6WKHUHDOVHUYLFH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

0W_LWM[\PMKTQMV\OM\\PM[\]JKTI[['
.OWWEGETTOTHEINTERESTINGQUESTION3OMEHOW SOMEWAY THE
CLIENTMUSTHAVETHESTUBCLASSTHATYOUGENERATEDEARLIERUSING
RMIC ATTHETIMETHECLIENTDOESTHELOOKUP ORELSETHESTUBWONT
BEDESERIALIZEDONTHECLIENTANDTHEWHOLETHINGBLOWSUP)NA
SIMPLESYSTEM YOUCANSIMPLYHAND DELIVERTHESTUBCLASSTOTHE
CLIENT
4HERESAMUCHCOOLERWAY THOUGH ALTHOUGHITSBEYONDTHE
SCOPEOFTHISBOOK"UTJUSTINCASEYOUREINTERESTED THECOOLER
WAYISCALLEDhDYNAMICCLASSDOWNLOADINGv7ITHDYNAMICCLASS
DOWNLOADING ASTUBOBJECTORREALLYANY3ERIALIZEDOBJECT IS
@STAMPEDWITHA52,THATTELLSTHE2-)SYSTEMONTHECLIENT
WHERETOlNDTHECLASSlLEFORTHATOBJECT4HEN INTHEPROCESSOF
DESERIALIZINGANOBJECT IF2-)CANTlNDTHECLASSLOCALLY ITUSES
THAT52,TODOAN(440'ETTORETRIEVETHECLASSlLE3OYOUD
NEEDASIMPLE7EBSERVERTOSERVEUPCLASSlLES ANDYOUDALSO
NEEDTOCHANGESOMESECURITYPARAMETERSONTHECLIENT4HEREARE
AFEWOTHERTRICKYISSUESWITHDYNAMICCLASSDOWNLOADING BUTTHATS
THEOVERVIEW

&RPSOHWHFOLHQWFRGH
7KH1DPLQJFODV
UHPLUHJLVWU\ORRNV IRUGRLQJWKH
LPSRUWMDYDUPL  MDYDUPLSDFNDJH XS LVLQWKH
SXEOLFFODVV0\5HPRWH&OLHQW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ0\5HPRWH&OLHQW JR 
`
\SH
IW K H U H JLVWU\DVVWW
WR FD
SXEOLFYRLGJR ^
,WFRPHVVRRXGRQ·WIRUJHWWKH
2EMH F W 
WU\^
0\5HPRWHVHUYLFH  0\5HPRWH 1DPLQJORRNXS ³UPL5HPRWH+HOOR´ 

6WULQJV VHUYLFHVD\+HOOR  \RXQHHGWKH,3 GWR


RUKRVWQDPH DGGUHVV DQGWKHQDPHWXKHVHVHUYLFH
6\VWHPRXWSULQWOQ V 
,WORRNVMXVWOLNHDUHJX ELQGUHELQG
`FDWFK ([FHSWLRQH[ ^
FDOO ([FHSWLW VWD ODU R OGPHWKRG
5HPRWH([FHSWLRQPX
H[SULQW6WDFN7UDFH 
`
FNQRZOHGJHWKH

`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
50,FODVVILOHV

*M[]ZMMIKPUIKPQVMPI[\PMKTI[[
NQTM[Q\VMML[
4HETOPTHREETHINGSPROGRAMMERSDOWRONGWITH2-)ARE
 &ORGETTOSTARTRMIREGISTRYBEFORESTARTINGREMOTESERVICE
WHENYOUREGISTERTHESERVICEUSING.AMINGREBIND THE
RMIREGISTRYMUSTBERUNNING
 &ORGETTOMAKEARGUMENTSANDRETURNTYPESSERIALIZABLE
YOUWONTKNOWUNTILRUNTIMETHISISNOTSOMETHINGTHE
COMPILERWILLDETECT
 &ORGETTOGIVETHESTUBCLASSTOTHECLIENT

&OLHQW 6HUYHU

6 NH O
HWRQ 6H

W
UYLFHREMHF
 6 WX E
& OL
HQWREMHFW
6 WX E
'RQ·WIRUJHWWKHFOLHQW 



XVHVWKHLQWHUIDFHWRFDOO
 
 
 
 
 
PHWKRGVRQWKHVWXE7KH 




 

FOLHQW-90QHHGVWKHVWXE 0\5HPRWH,PSOFODVV 0\5HPRWH,PSOB6WXEFODVV


FODVVEXWWKHFOLHQWQHYHU &OLHQWFODVV 0\5HPRWH,PSOB6WXEFODVV
UHIHUVWRWKHVWXEFODVV 
 

LQFRGH7KHFOLHQWDOZD\V 






XVHVWKHUHPRWHLQWHUIDFH
 

 

DVWKRXJKWKHUHPRWH 
0\5HPRWH,PSOB6NHOFODVV
LQWHUIDFH:(5(WKH 0\5HPRWHFODVV
0\5HPRWHFODVV
DFWXDOUHPRWHREMHFW
6HUYHUQHHGVERWKWKH6WXEDQG6NHOHWRQ
IDFH
RWHLQWHU FODVVHVDVZHOODVWKHVHUYLFHDQGWKH
7KHUHP UHPRWHLQWHUIDFH,WQHHGVWKHVWXEFODVV
EHFDXVHUHPHPEHUWKHVWXELVVXEVWLWXWHG
IRUWKHUHDOVHUYLFHZKHQWKHUHDOVHUYLFH
LVERXQGWRWKH50,UHJLVWU\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

6KDUSHQ \RXU SHQFLO 7HAT´S 


&IRST
,OOKATTHESEQUENCEOFEVENTSBELOW AND 
PLACETHEMINTHEORDERINWHICHTHEY
OCCURINA*AVA2-)APPLICATION


7KHFOLHQWJHWVWKHV 
WXEIURP
PHWKRG WKH50,UHJLVWU\
VWKH
7KHVWXEVHQG
FDOOWRWKHVHUYHU

Licensed by
NHVDPHWKRG
7KHFOLHQWLQYR 
RQWKHVWXE
7KHFOLHQWGRHVDORRNX 7KHUHPRWHVHUYLFHLVUHJLV
SRQ
WKH50,5HJLVWU\ WHUHGZLWKWKH50,UHJLVWU\

7KH50,UHJLVWU\LVVWDUWHG 7KHUHPRWHVHUYLFH UHPRWH

Eduard Simons
LPSOHPHQWDWLRQ LVLQVWDQWLDWHG


104038
:MDD=LHGAFLK
ƒ $QREMHFWRQRQHKHDSFDQQRWJHWDQRUPDO-DYD ƒ <RXUUHPRWHVHUYLFHVKRXOGH[WHQG8QLFDVW5HPRWH2EMHFW
UHIHUHQFHWRDQREMHFWRQDGLIIHUHQWKHDS ZKLFKPHDQV 7HFKQLFDOO\WKHUHDUHRWKHUZD\VWRFUHDWHDUHPRWHRE
UXQQLQJRQDGLIIHUHQW-90 MHFWEXWH[WHQGLQJ8QLFDVW5HPRWH2EMHFWLVWKHVLPSOHVW 
ƒ -DYD5HPRWH0HWKRG,QYRFDWLRQ 50, PDNHVLWVHHPOLNH ƒ <RXUUHPRWHVHUYLFHFODVVPXVWKDYHDFRQVWUXFWRU
\RX·UHFDOOLQJDPHWKRGRQDUHPRWHREMHFW LHDQREMHFW DQGWKHFRQVWUXFWRUPXVWGHFODUHD5HPRWH([FHSWLRQ
LQDGLIIHUHQW-90 EXW\RXDUHQ·W EHFDXVHWKHVXSHUFODVVFRQVWUXFWRUGHFODUHVRQH 
ƒ :KHQDFOLHQWFDOOVDPHWKRGRQDUHPRWHREMHFWWKH ƒ <RXUUHPRWHVHUYLFHPXVWEHLQVWDQWLDWHGDQGWKHREMHFW
FOLHQWLVUHDOO\FDOOLQJDPHWKRGRQDSUR[\RIWKHUHPRWH UHJLVWHUHGZLWKWKH50,UHJLVWU\
REMHFW7KHSUR[\LVFDOOHGD¶VWXE· ƒ 7RUHJLVWHUDUHPRWHVHUYLFHXVHWKHVWDWLF
ƒ $VWXELVDFOLHQWKHOSHUREMHFWWKDWWDNHVFDUHRIWKHORZ 1DPLQJUHELQG ´6HUYLFH1DPHµVHUYLFH,QVWDQFH 
OHYHOQHWZRUNLQJGHWDLOV VRFNHWVVWUHDPVVHULDOL]DWLRQ ƒ 7KH50,UHJLVWU\PXVWEHUXQQLQJRQWKHVDPHPDFKLQH
HWF E\SDFNDJLQJDQGVHQGLQJPHWKRGFDOOVWRWKH DVWKHUHPRWHVHUYLFHEHIRUH\RXWU\WRUHJLVWHUDUHPRWH
VHUYHU REMHFWZLWKWKH50,UHJLVWU\
ƒ 7REXLOGDUHPRWHVHUYLFH LQRWKHUZRUGVDQREMHFWWKDW ƒ 7KHFOLHQWORRNVXS\RXUUHPRWHVHUYLFHXVLQJWKHVWDWLF
DUHPRWHFOLHQWFDQXOWLPDWHO\FDOOPHWKRGVRQ \RXPXVW 1DPLQJORRNXS ´UPL0\+RVW1DPH6HUYLFH1DPHµ 
VWDUWZLWKDUHPRWHLQWHUIDFH
ƒ $OPRVWHYHU\WKLQJUHODWHGWR50,FDQWKURZD
ƒ $UHPRWHLQWHUIDFHPXVWH[WHQGWKHMDYDUPL5HPRWH 5HPRWH([FHSWLRQ FKHFNHGE\WKHFRPSLOHU 7KLV
LQWHUIDFHDQGDOOPHWKRGVPXVWGHFODUH LQFOXGHVUHJLVWHULQJRUORRNLQJXSDVHUYLFHLQWKHUHLJVWU\
5HPRWH([FHSWLRQ DQGDOOUHPRWHPHWKRGFDOOVIURPWKHFOLHQWWRWKHVWXE
ƒ <RXUUHPRWHVHUYLFHLPSOHPHQWV\RXUUHPRWHLQWHUIDFH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XVHVIRU50,

AMIPJ]\_PWZMITTa][M[:51'

:HXVHLW
IRURXUFRRO ,KHDUG\RXUH[
QHZGHFLVLRQVXSSRUW ZLIHVWLOOXVHV
V\VWHP SODLQVRFNHWV
,XVHLW
IRUVHULRXV%WR%
HFRPPHUFHEDFN
HQGVUXQQLQJRQ-((
WHFKQRORJ\

:H·YH JRWDQ
(-%EDVHGKRWHO
UHVHUYDWLRQV\VWHP
$QG(-%XVHV50,
,MXVWFDQ·WLPDJLQH 0H WRR+RZ
OLIHZLWKRXWRXU-LQL GLGDQ\RQHJHW
HQDEOHGKRPHQHWZRUN E\",MXVWORYH50,
DQGDSSOLFDQFHV IRUJLYLQJXV-LQL
WHFKQRORJ\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
)LOH(GLW9LHZ UHPRWHGHSOR\PHQWZLWK50,
)LOH(GLW9LHZ
)LOH(GLW9LHZ +773
+773 50, +773
([HFXWDEOH 6HUYOHWV
6HUYOHWV
-DU :HE6WDUW 50,DSS 6HUYOHWV

/RFDO &RPELQDWLRQ5HPRWH

?PI\IJW]\;MZ^TM\['
3ERVLETSARE*AVAPROGRAMSTHATRUNONANDWITH AN(440WEBSERVER7HENACLIENTUSESA
WEBBROWSERTOINTERACTWITHAWEBPAGE AREQUESTISSENTBACKTOTHEWEBSERVER)FTHEREQUEST
NEEDSTHEHELPOFA*AVASERVLET THEWEBSERVERRUNSORCALLS IFTHESERVLETISALREADYRUNNING
THESERVLETCODE3ERVLETCODEISSIMPLYCODETHATRUNSONTHESERVER TODOWORKASARESULTOF
WHATEVERTHECLIENTREQUESTSFOREXAMPLE SAVEINFORMATIONTOATEXTlLEORDATABASEONTHE
SERVER )FYOUREFAMILIARWITH#')SCRIPTSWRITTENIN0ERL YOUKNOWEXACTLYWHATWERETALKING
ABOUT7EBDEVELOPERSUSE#')SCRIPTSORSERVLETSTODOEVERYTHINGFROMSENDINGUSER SUBMITTED
INFOTOADATABASE TORUNNINGAWEB SITESDISCUSSIONBOARD
!NDEVENSERVLETSCANUSE2-)
"YFAR THEMOSTCOMMONUSEOF*%%TECHNOLOGYISTOMIXSERVLETSAND%*"STOGETHER WHERE
SERVLETSARETHECLIENTOFTHE%*"!NDINTHATCASE THESERVLETISUSING2-)TOTALKTOTHE%*"S
!LTHOUGHTHEWAYYOUUSE2-)WITH%*"ISALITTLEDIFFERENTFROMTHEPROCESSWEJUSTLOOKEDAT

 &OLHQWÀOOVRXWDUHJLVWUDWLRQIRUPDQGFOLFNV¶VXEPLW·
7KH+773VHUYHU LHZHEVHUYHU JHWVWKHUHTXHVWVHHVWKDW
LW·VIRUDVHUYOHWDQGVHQGVWKHUHTXHVWWRWKHVHUYOHW
:HE6HUYHU
:HE%URZVHU
FOLHQW ´FOLHQWUHTXHVWV5HJLVWHU6HUYOHWµ




;h[l

I^ml
.DWK\
6LHUUD

0\6HUYOHWFODVV

 6HUYOHW -DYDFRGH UXQVDGGVGDWDWRWKHGDWDEDVH


FRPSRVHVDZHESDJH ZLWKFXVWRPLQIR DQGVHQGVLWEDFNWR
WKHFOLHQWZKHUHLWGLVSOD\VLQWKHEURZVHU
:HE6HUYHU
:HE%URZVHU
FOLHQW ´FOLHQWUHTXHVWV5HJLVWHU6HUYOHWµ




MaZgdl 
DZmar
Lb^kkZ
0\6HUYOHWFODVV
+70/!
´KHUH·VDFRQÀUPDWLRQSDJHµ %2'<!
-DYD
UXOHV
%2'<!
+70/!

FRQILUPKWPO
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
YHU\VLPSOHVHUYOHW

6WHSIRUPDNLQJDQGUXQQLQJDVHUYOHW

:HE6HUYHU
 )LQGRXWZKHUH\RXUVHUYOHWVQHHGWREHSODFHG
&ORTHESEEXAMPLES WELLASSUMETHATYOUALREADYHAVEAWEBSERVER
UPANDRUNNING ANDTHATITSALREADYCONlGUREDTOSUPPORTSERVLETS 6HUYOHWV


4HEMOSTIMPORTANTTHINGISTOlNDOUTEXACTLYWHEREYOURSERVLET 


CLASSlLESHAVETOBEPLACEDINORDERFORYOURSERVERTO@SEETHEM)F 

YOUHAVEAWEBSITEHOSTEDBYAN)30 THEHOSTINGSERVICECANTELLYOU 0\6HUYOHW$FODVV


WHERETOPUTYOURSERVLETS JUSTASTHEYLLTELLYOUWHERETOPLACEYOUR
#')SCRIPTS

 *HWWKHVHUYOHWVMDUDQGDGGLWWR\RXUFODVVSDWK
3ERVLETSARENTPARTOFTHESTANDARD*AVALIBRARIESYOUNEED
THESERVLETSCLASSESPACKAGEDINTOTHESERVLETSJARlLE9OUCAN
DOWNLOADTHESERVLETSCLASSESFROMJAVASUNCOM ORYOUCANGET
THEMFROMYOUR*AVA ENABLEDWEBSERVERLIKE!PACHE4OMCAT AT
VHUYOHWVMDU
THEAPACHEORGSITE 7ITHOUTTHESECLASSES YOUWONTBEABLETO
COMPILEYOURSERVLETS

 :ULWHDVHUYOHWFODVVE\H[WHQGLQJ+WWS6HUYOHW 

!SERVLETISJUSTA*AVACLASSTHATEXTENDS(TTP3ERVLETFROMTHE 


JAVAXSERVLETHTTPPACKAGE 4HEREAREOTHERTYPESOFSERVLETSYOU
CANMAKE BUTMOSTOFTHETIMEWECAREONLYABOUT(TTP3ERVLET 0\6HUYOHW$FODVV

SXEOLFFODVV0\6HUYOHW$H[WHQGV+WWS6HUYOHW^`

+70/!

 :ULWHDQ+70/SDJHWKDWLQYRNHV\RXUVHUYOHW %2'<!
-DYD
UXOHV

7HENTHEUSERCLICKSALINKTHATREFERENCESYOURSERVLET THEWEB %2'<!


+70/!

SERVERWILLlNDTHESERVLETANDINVOKETHEAPPROPRIATEMETHOD 0\3DJHKWPO
DEPENDINGONTHE(440COMMAND'%4 0/34 ETC
DKUHI ´VHUYOHWV0\6HUYOHW$´!7KLVLVWKHPRVWDPD]LQJVHUYOHWD!

:HE6HUYHU
 0DNH\RXUVHUYOHWDQG+70/SDJHDYDLODEOHWR\RXUVHUYHU
4HISISCOMPLETELYDEPENDENTONYOURWEBSERVERANDMORESPECIl 6HUYOHWV
CALLY ONWHICHVERSIONOF*AVA3ERVLETSTHATYOUREUSING 9OUR)30 


MAYSIMPLYTELLYOUTODROPITINTOAh3ERVLETSvDIRECTORYONYOUR +70/!
%2'<!


-DYD
WEBSITE"UTIFYOUREUSING SAY THELATESTVERSIONOF4OMCAT YOULL UXOHV
%2'<!
+70/! 0\6HUYOHW$FODVV
HAVEALOTMOREWORKTODOTOGETTHESERVLETANDWEBPAGE INTO
THERIGHTLOCATION7EJUSTHAPPENTOHAVEABOOKONTHISTOO 0\3DJHKWPO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

)^MZa[QUXTM;MZ ^TM\
R HWSDFNDJHVD
RIWKHVHUYORI
UWW Z -DY
LPSRUWMDYDLR  %HVLGHVLRZ HQHHGW FNDJHVDUH127SDUW WVKHHSDUDWHO\
R LP SR
KHVH W Z R SD RD G WKH P
5HPHPEHUW WRGRZQO
HV\RXKDYH
LPSRUWMDYD[VHUYOHW 
LPSRUWMDYD[VHUYOHWKWWS  VWDQGDUGOLEUDUL
0RVW¶QRUPDO·VHUYOHWVZLOOH[WHQG
SXEOLFFODVV0\6HUYOHW$H[WHQGV+WWS6HUYOHW^ +WWS6HUYOHWWKHQRYHUULGHRQHRU
 PRUHPHWKRGV
WIRUVLPSOH PHWKRGKDQGLQJ\ RXWKHFOLHQW·V
2YHUULGHWKHGR*H VH UY HUF DOO VW KLV HVSRQVH·
+773*(7PHVVDJHV
7KHZH E DWDRXWRILW D ¶U
QG D
UHTXHVW \RXFDQX·OJOXHWVHGWRVHQGEDFNDUHVSRQVH DSDJH 
 REMHFWWKDW\R
SXEOLFYRLGGR*HW +WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV6HUYOHW([FHSWLRQ,2([FHSWLRQ^

 
 7KLVWHOOVWKHVHUYHU DQGEURZVHU ZKDWNLQGRI
UHVSRQVHVHW&RQWHQW7\SH ³WH[WKWPO´  ¶WKLQJ·LVFRPLQJEDFNIURPWKHVHUYHUD VDUHXVOWRI
WKLVVHUYOHWUXQQLQJ
R
XVDQRXWSXWVWHUUHDPW

UH VSRQ VH R EMHF W JLYHV
7KH FNRXWWRWKHVHUY
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU 
¶ZULWH·LQIRUPDWLRQED
6WULQJPHVVDJH ³,I\RX¶UHUHDGLQJWKLVLWZRUNHG´

LVDQ+70/SDHU JH7KHSDJH
RXWSULQWOQ ³+70/!%2'<!´  :KDWZH¶ZULWH· URXJK WK HVH UY EDFNWR
 RXWSULQWOQ ³+!´PHVVDJH³+!´  JHWVGHOLYHUHGWK VW OL NH D Q\RWKHU 70/
+ SDJH
 RXWSULQWOQ ³%2'<!+70/!´  HEU RZ VH UMX H[ LVWHG
 RXWFORVH 
WK
HYHQWKRXJKWKLV LVDSDJHWKDWQHQYHRUKWPOILOH
UZRUGVWKHU H·V
`
XQWLOQRZ,QRWKH W KLVVWXIILQLW
`
VRPHZKHU H ZL WK

RNVOLNH
:KDWWKHZHESDJHOR

0<54XIOM_Q\PITQVS\W\PQ[[MZ ^TM\ FOLFNWKHOLQN 7KLVDQDPD]LQJVHUYOHW


WRWULJJHUWKH
VHUYOHW
+70/!
%2'<!
DKUHI ´VHUYOHWV0\6HUYOHW$´!7KLVLVDQDPD]LQJVHUYOHWD!
%2'<!
+70/!

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
VHUYOHWVDQG-63

WKHUH DUH QR
'XPE 4XHVWLRQV
:MDD=LHGAFLK
Q: 7HATSA*30 ANDHOWDOESITRELATETOSERVLETS
ƒ 6HUYOHWVDUH-DYDFODVVHVWKDWUXQHQWLUHO\RQ
DQGRUZLWKLQ DQ+773 ZHE VHUYHU
ƒ 6HUYOHWVDUHXVHIXOIRUUXQQLQJFRGHRQWKH
A: *30STANDSFOR*AVA3ERVER0AGES)NTHEEND THEWEBSERVER
TURNSA*30INTOASERVLET BUTTHEDIFFERENCEBETWEENASERVLETAND
VHUYHUDVDUHVXOWRIFOLHQWLQWHUDFWLRQZLWKD A*30ISWHAT9/5THEDEVELOPER ACTUALLYCREATE7ITHASERVLET
ZHESDJH)RUH[DPSOHLIDFOLHQWVXEPLWV YOUWRITEA*AVACLASSTHATCONTAINS(4-,INTHEOUTPUTSTATEMENTS
LQIRUPDWLRQLQDZHESDJHIRUPWKHVHUYOHWFDQ IFYOURESENDINGBACKAN(4-,PAGETOTHECLIENT "UTWITHA
SURFHVVWKHLQIRUPDWLRQDGGLWWRDGDWDEDVH *30 ITSTHEOPPOSITEˆYOUWRITEAN(4-,PAGETHATCONTAINS*AVA
DQGVHQGEDFNDFXVWRPL]HGFRQILUPDWLRQ CODE
UHVSRQVHSDJH 4HISGIVESYOUTHEABILITYTOHAVEDYNAMICWEBPAGESWHEREYOU
WRITETHEPAGEASANORMAL(4-,PAGE EXCEPTYOUEMBED*AVA
ƒ 7RFRPSLOHDVHUYOHW\RXQHHGWKHVHUYOHW CODEANDOTHERTAGSTHAThTRIGGERv*AVACODEATRUNTIME THAT
SDFNDJHVZKLFKDUHLQWKHVHUYOHWVMDUILOH7KH GETSPROCESSEDATRUNTIME)NOTHERWORDS PARTOFTHEPAGEIS
VHUYOHWFODVVHVDUHQRWSDUWRIWKH-DYDVWDQGDUG CUSTOMIZEDATRUNTIMEWHENTHE*AVACODERUNS
OLEUDULHVVR\RXQHHGWRGRZQORDGWKHVHUYOHWV 4HEMAINBENEFITOF*30OVERREGULARSERVLETSISTHATITSJUSTALOT
MDUIURPMDYDVXQFRPRUJHWWKHPIURPDVHUYOHW EASIERTOWRITETHE(4-,PARTOFASERVLETASA*30PAGETHANTO
FDSDEOHZHEVHUYHU 1RWHWKH6HUYOHWOLEUDU\ WRITE(4-,INTHETORTUROUSPRINTOUTSTATEMENTSINTHESERVLETS
LVLQFOXGHGZLWKWKH-DYD(QWHUSULVH(GLWLRQ RESPONSE)MAGINEAREASONABLYCOMPLEX(4-,PAGE ANDNOW
-(( IMAGINEFORMATTINGITWITHINPRINTLNSTATEMENTS9IKES

ƒ 7RUXQDVHUYOHW\RXPXVWKDYHDZHEVHUYHU "UTFORMANYAPPLICATIONS ITISNTNECESSARYTOUSE*30SBECAUSE


THESERVLETDOESNTNEEDTOSENDADYNAMICRESPONSE ORTHE
FDSDEOHRIUXQQLQJVHUYOHWVVXFKDVWKH7RPFDW
(4-,ISSIMPLEENOUGHNOTTOBESUCHABIGPAIN!ND THEREARE
VHUYHUIURPDSDFKHRUJ STILLMANYWEBSERVERSOUTTHERETHATSUPPORTSERVLETSBUTDONOT
ƒ <RXUVHUYOHWPXVWEHSODFHGLQDORFDWLRQWKDW·V SUPPORT*30S SOYOURESTUCK
VSHFLILFWR\RXUSDUWLFXODUZHEVHUYHUVR\RX·OO !NOTHERBENEFITOF*30SISTHATYOUCANSEPARATETHEWORKBY
QHHGWRILQGWKDWRXWEHIRUH\RXWU\WRUXQ\RXU HAVINGTHE*AVADEVELOPERSWRITETHESERVLETSANDTHEWEBPAGE
VHUYOHWV,I\RXKDYHDZHEVLWHKRVWHGE\DQ,63 DEVELOPERSWRITETHE*30S4HATSTHEPROMISEDBENEFIT ANYWAY
WKDWVXSSRUWVVHUYOHWVWKH,63ZLOOWHOO\RXZKLFK )NREALITY THERESSTILLA*AVALEARNINGCURVEANDATAGLEARNING
CURVE FORANYONEWRITINGA*30 SOTOTHINKTHATAN(4-,WEBPAGE
GLUHFWRU\WRSODFH\RXUVHUYOHWVLQ
DESIGNERCANBANGOUT*30SISNOTREALISTIC7ELL NOTWITHOUTTOOLS
ƒ $W\SLFDOVHUYOHWH[WHQGV+WWS6HUYOHWDQG "UTTHATSTHEGOODNEWSˆAUTHORINGTOOLSARESTARTINGTOAPPEAR
RYHUULGHVRQHRUPRUHVHUYOHWPHWKRGVVXFKDV THATHELPWEBPAGEDESIGNERSCREATE*30SWITHOUTWRITINGTHE
CODEFROMSCRATCH
GR*HW RUGR3RVW 
ƒ 7KHZHEVHUYHUVWDUWVWKHVHUYOHWDQGFDOOVWKH
DSSURSULDWHPHWKRG GR*HW HWF EDVHGRQWKH
Q: )STHISALLYOUREGONNASAYABOUTSERVLETS!FTERSUCHA
HUGETHINGON2-)
FOLHQW·VUHTXHVW
ƒ 7KHVHUYOHWFDQVHQGEDFNDUHVSRQVHE\JHWWLQJ
D3ULQW:ULWHURXWSXWVWUHDPIURPWKHUHVSRQVH
A: 9ES2-)ISPARTOFTHE*AVALANGUAGE ANDALLTHECLASSESFOR
2-)AREINTHESTANDARDLIBRARIES3ERVLETSAND*30SARENOTPARTOF
SDUDPHWHURIWKHGR*HW PHWKRG
THE*AVALANGUAGETHEYRECONSIDEREDSTANDARDEXTENSIONS9OU
ƒ 7KHVHUYOHW¶ZULWHV·RXWDQ+70/SDJHFRPSOHWH CANRUN2-)ONANYMODERN*6- BUT3ERVLETSAND*30SREQUIREA
ZLWKWDJV  PROPERLYCONFIGUREDWEBSERVERWITHASERVLEThCONTAINERv4HISIS
OURWAYOFSAYING hITSBEYONDTHESCOPEOFTHISBOOKv"UTYOUCAN
READMUCHMOREINTHELOVELY(EAD&IRST3ERVLETS*30

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

2][\NWZN]VTM\¼[UISM\PM8PZI[M75I\QK
_WZSI[I[MZ ^TM\ 7U\P\
QHZZHEHQDEOHG
.OWTHATWETOLDYOUTHATWEWONT SKUDVHRPDWLFDQG\RX·OO
SAYANYMOREABOUTSERVLETS WECANT EHDVOLFNWDONHUMXVWOLNH
RESISTSERVLETIZINGYES WECANVERBIFY WKHERVVRUWKRVHJX\VLQ
IT THE0HRASE / -ATICFROMCHAPTER PDUNHWLQJ
!SERVLETISSTILLJUST*AVA!ND*AVACODE
CANCALL*AVACODEFROMOTHERCLASSES
3OASERVLETISFREETOCALLAMETHODON
THE0HRASE / -ATIC!LLYOUHAVETODO
ISDROPTHE0HRASE / -ATICCLASSINTO
THESAMEDIRECTORYASYOURSERVLET AND
YOUREINBUSINESS4HE0HRASE /
-ATICCODEISONTHENEXTPAGE 

LPSRUWMDYDLR 

LPSRUWMDYD[VHUYOHW 
LPSRUWMDYD[VHUYOHWKWWS 

SXEOLFFODVV.DWK\6HUYOHWH[WHQGV+WWS6HUYOHW^
SXEOLFYRLGGR*HW +WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV6HUYOHW([FHSWLRQ,2([FHSWLRQ^
 
 6WULQJWLWOH ³3KUDVH20DWLFKDVJHQHUDWHGWKHIROORZLQJSKUDVH´

UHVSRQVHVHW&RQWHQW7\SH ³WH[WKWPO´ 
3ULQW:ULWHURXW UHVSRQVHJHW:ULWHU 
F DOOPHWKRGVRQ
RXWSULQWOQ ³+70/!+($'!7,7/(!´  6HH"<RXUVHUYOHWWFKLVDQFDVHZH·UHFDOOLQJ
DQRWKH U FOD VV ,Q H
3KUDVH PHWKRG[WRSIDJWKH
 RXWSULQWOQ ³3KUDVH2PDWLF´ 
 RXWSULQWOQ ³7,7/(!+($'!%2'<!´  WKHVWDWLFPDNHFOD R QWK H QH
 RXWSULQWOQ ³+!´WLWOH³+!´  3KUDVH20DWLF VV
 RXWSULQWOQ ³3!´3KUDVH20DWLFPDNH3KUDVH 
RXWSULQWOQ ³3!DKUHI ?´.DWK\6HUYOHW?´!PDNHDQRWKHUSKUDVHD!S!´ 
 RXWSULQWOQ ³%2'<!+70/!´ 

 RXWFORVH 
`
`

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
3KUDVH20DWLFFRGH

8PZI[M75I\QKKWLM[MZ^TM\NZQMVLTa
4HISISASLIGHTLYDIFFERENTVERSIONFROMTHECODEINCHAPTERONE)NTHE
ORIGINAL WERANTHEENTIRETHINGINAMAIN METHOD ANDWEHADTORERUN
THEPROGRAMEACHTIMETOGENERATEANEWPHRASEATTHECOMMAND LINE)NTHIS
VERSION THECODESIMPLYRETURNSA3TRINGWITHTHEPHRASE WHENYOUINVOKE
THESTATICMAKE0HRASE METHOD4HATWAY YOUCANCALLTHEMETHODFROMANY
OTHERCODEANDGETBACKA3TRINGWITHTHERANDOMLY COMPOSEDPHRASE
0LEASENOTETHATTHESELONG3TRING;=ARRAYASSIGNMENTSAREAVICTIMOFWORD
PROCESSINGHEREˆDONTTYPEINTHEHYPHENS*USTKEEPONTYPINGANDLETYOUR
CODEEDITORDOTHEWRAPPING!NDWHATEVERYOUDO DONTHITTHERETURNKEYIN
THEMIDDLEOFA3TRINGIESOMETHINGBETWEENDOUBLEQUOTES 

SXEOLFFODVV3KUDVH20DWLF^
SXEOLFVWDWLF6WULQJPDNH3KUDVH ^

PDNHWKUHHVHWVRIZRUGVWRFKRRVHIURP
6WULQJ>@ZRUG/LVW2QH ^³´´PXOWL7LHU´´IRRW´´%WR%´´ZLQZLQ´´IURQW
HQG´³ZHEEDVHG´´SHUYDVLYH´³VPDUW´³VL[VLJPD´´FULWLFDOSDWK´³G\QDPLF´`

6WULQJ>@ZRUG/LVW7ZR ^³HPSRZHUHG´³VWLFN\´³YDOXHGDGGHG´³RULHQWHG´³FHQWULF´
³GLVWULEXWHG´³FOXVWHUHG´³EUDQGHG´´RXWVLGHWKHER[´³SRVLWLRQHG´³QHWZRUNHG´³IR
FXVHG´³OHYHUDJHG´³DOLJQHG´³WDUJHWHG´³VKDUHG´³FRRSHUDWLYH´³DFFHOHUDWHG´`

6WULQJ>@ZRUG/LVW7KUHH ^³SURFHVV´³WLSSLQJSRLQW´³VROXWLRQ´³DUFKLWHFWXUH´
³FRUHFRPSHWHQF\´³VWUDWHJ\´³PLQGVKDUH´³SRUWDO´³VSDFH´³YLVLRQ´³SDUDGLJP´³PLV
VLRQ´`

¿QGRXWKRZPDQ\ZRUGVDUHLQHDFKOLVW
LQWRQH/HQJWK ZRUG/LVW2QHOHQJWK
LQWWZR/HQJWK ZRUG/LVW7ZROHQJWK
LQWWKUHH/HQJWK ZRUG/LVW7KUHHOHQJWK

JHQHUDWHWKUHHUDQGRPQXPEHUVWRSXOOUDQGRPZRUGVIURPHDFKOLVW
LQWUDQG  LQW  0DWKUDQGRP  RQH/HQJWK 
LQWUDQG  LQW  0DWKUDQGRP  WZR/HQJWK 
LQWUDQG  LQW  0DWKUDQGRP  WKUHH/HQJWK 

QRZEXLOGDSKUDVH
6WULQJSKUDVH ZRUG/LVW2QH>UDQG@³³ZRUG/LVW7ZR>UDQG@³³
ZRUG/LVW7KUHH>UDQG@

QRZUHWXUQLW
UHWXUQ ³:KDWZHQHHGLVD³SKUDVH 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

-V\MZXZQ[M2I^I*MIV[":51WV[\MZWQL[
2-)ISGREATFORWRITINGANDRUNNINGREMOTESERVICES"UT
YOUWOULDNTRUNSOMETHINGLIKEAN!MAZONORE"AYON2-)
$Q(-%VHUYHUDGGVDEXQFK
ALONE&ORALARGE DEADLYSERIOUS ENTERPRISEAPPLICATION YOU RIVHUYLFHVWKDW\RXGRQ·WJHW
NEEDSOMETHINGMORE9OUNEEDSOMETHINGTHATCANHANDLE
TRANSACTIONS HEAVYCONCURRENCYISSUESLIKEAGAZILLION ZLWKVWUDLJKW50,7KLQJV
PEOPLEAREHITTINGYOURSERVERATONCETOBUYTHOSEORGANIC
DOGKIBBLES SECURITYNOTJUSTANYONESHOULDHITYOUR OLNHWUDQVDFWLRQVVHFXULW\
PAYROLLDATABASE ANDDATAMANAGEMENT&ORTHAT YOUNEED
ANENTERPRISEAPPLICATIONSERVER
FRQFXUUHQF\GDWDEDVH
)N*AVA THATMEANSA*AVA%NTERPRISE%DITION*%% SERVER PDQDJHPHQWDQGQHWZRUNLQJ
!*%%SERVERINCLUDESBOTHAWEBSERVERANDAN%NTERPRISE
*AVA"EANS%*" SERVER SOTHATYOUCANDEPLOYANAPPLICATION $Q(-%VHUYHUVWHSVLQWRWKH
THATINCLUDESBOTHSERVLETSAND%*"S,IKESERVLETS %*"IS
WAYBEYONDTHESCOPEOFTHISBOOK ANDTHERESNOWAYTO PLGGOHRIDQ50,FDOODQG
SHOWhJUSTALITTLEv%*"EXAMPLEWITHCODE BUTWEWILLTAKE
AQUICKLOOKATHOWITWORKS&ORAMUCHMOREDETAILED OD\HUVLQDOORIWKHVHUYLFHV
TREATMENTOF%*" WECANRECOMMENDTHELIVELY(EAD&IRST
%*"CERTIlCATIONSTUDYGUIDE

HFWHGIURP
7KHEHDQREMHFWFHLVVVSU2RWQO\WKHVHUYHU
GLUHFWFOLHQWDF WRWKHEHDQ7KLV
FDQDFWXDOO\WDONRWKLQJVOLNHVD\
+HUH·VZKHUHWKH(-%VHUYHU OHWVWKHVHUYHUGWGRHVQ·WKDYH
LQYROYHG7KH(-%REMHFWL JHWV ´:KRD7KLVFOLHQ UDQFHWRFDOOWKLV
WKHFDOOVWRWKHEHDQ WKHE HSWV WKHV
QW HUF HFXULW\FOHD J\RXSD\
W FR XOGE H $1 <7 +, 1* E XW 
WK HU HDQ KR OGV  PH WK RGµ$OPRVWHYHUK\WDSKLQ
SH QV ULJKW
7K LV FOL HQ LVD VH UY OHW HDOEX VLQHVVORJLF DQGOD\HUVLQ IR U LQ DQ (-%VH UY HU
W\SLFDOO\DQ ( -% F OLHQW DOO WKHVHUYLFHVSURYLGHGE\W VW HSVL Q
LQJ LQ W KHVD PH - ( (VHUYHU VHU YHU V HFX KH(-% +(5(ZKHUHWKHVHUYHU
UXQQ ULW\WUDQVDFWLRQVHWF
(-%VHUYHU
&OLHQW
50,6.(/(721
50,678%

6H H
U

UYLFHKHOS

DQ

& OL HQ
HQWKHOSHU (-% W WHUS HEH
& OL  REMHF UL V
HQWREMHFW
'%

7KLVLVRQO\DVPDOOSDUWRIWKH(-%SLFWXUH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DOLWWOH-LQL

.WZW]ZNQVIT\ZQKSITQ\\TM2QVQ
7ELOVE*INI7ETHINK*INIISPRETTYMUCHTHEBESTTHINGIN*AVA)F%*"IS2-)
ONSTEROIDSWITHABUNCHOFMANAGERS *INIIS2-)WITHWINGS0URE*AVABLISS
,IKETHE%*"MATERIAL WECANTGETINTOANYOFTHE*INIDETAILSHERE BUTIFYOU
KNOW2-) YOURETHREE QUARTERSOFTHEWAYTHERE)NTERMSOFTECHNOLOGY
ANYWAY)NTERMSOFMINDSET ITSTIMETOMAKEABIGLEAP.O ITSTIMETOmY
*INIUSES2-)ALTHOUGHOTHERPROTOCOLSCANBEINVOLVED BUTGIVESYOUAFEW
KEYFEATURESINCLUDING
!DAPTIVEDISCOVERY
3ELF HEALINGNETWORKS
7ITH2-) REMEMBER THECLIENTHASTOKNOWTHE
NAMEANDLOCATIONOFTHEREMOTESERVICE4HE
CLIENTCODEFORTHELOOKUPINCLUDESTHE)0ADDRESSOR
HOSTNAMEOFTHEREMOTESERVICEBECAUSETHATSWHERE
THE2-)REGISTRYISRUNNING ANDTHELOGICALNAMETHE
SERVICEWASREGISTEREDUNDER
"UTWITH*INI THECLIENTHASTOKNOWONLYONETHINGTHE
INTERFACEIMPLEMENTEDBYTHESERVICE4HATSIT
3OHOWDOYOUlNDTHINGS4HETRICKREVOLVESAROUND*INILOOKUP
SERVICES*INILOOKUPSERVICESAREFARMOREPOWERFULANDmEXIBLETHAN
THE2-)REGISTRY&ORONETHING *INILOOKUPSERVICESANNOUNCETHEMSELVESTOTHE
NETWORK AUTOMATICALLY7HENALOOKUPSERVICECOMESONLINE ITSENDSAMESSAGEUSING)0
MULTICAST OUTTOTHENETWORKSAYING h)MHERE IFANYONESINTERESTEDv
"UTTHATSNOTALL,ETSSAYYOUACLIENT COMEONLINEAFTERTHELOOKUPSERVICEHASALREADY
ANNOUNCEDITSELF YOUCANSENDAMESSAGETOTHEENTIRENETWORKSAYING h!RETHEREANY
LOOKUPSERVICESOUTTHEREv
%XCEPTTHATYOURENOTREALLYINTERESTEDINTHELOOKUPSERVICEITSELFˆYOUREINTERESTEDIN
THESERVICESTHATAREREGISTEREDWITHTHELOOKUPSERVICE4HINGSLIKE2-)REMOTESERVICES
OTHERSERIALIZABLE*AVAOBJECTS ANDEVENDEVICESSUCHASPRINTERS CAMERAS ANDCOFFEE
MAKERS
!NDHERESWHEREITGETSEVENMOREFUNWHENASERVICECOMESONLINE ITWILLDYNAMICALLY
DISCOVERANDREGISTERITSELFWITH ANY*INILOOKUPSERVICESONTHENETWORK7HENTHE
SERVICEREGISTERSWITHTHELOOKUPSERVICE THESERVICESENDSASERIALIZEDOBJECTTOBEPLACED
INTHELOOKUPSERVICE4HATSERIALIZEDOBJECTCANBEASTUBTOAN2-)REMOTESERVICE A
DRIVERFORANETWORKEDDEVICE OREVENTHEWHOLESERVICEITSELFTHATONCEYOUGETITFROM
THELOOKUPSERVICE RUNSLOCALLYONYOURMACHINE!NDINSTEADOFREGISTERINGBYNAME THE
SERVICEREGISTERSBYTHEINTERFACEITIMPLEMENTS
/NCEYOUTHECLIENT HAVEAREFERENCETOALOOKUPSERVICE YOUCANSAYTOTHATLOOKUP
SERVICE h(EY DOYOUHAVEANYTHINGTHATIMPLEMENTS3CIENTIlC#ALCULATORv!TTHATPOINT
THELOOKUPSERVICEWILLCHECKITSLISTOFREGISTEREDINTERFACES ANDASSUMINGITlNDSA
MATCH SAYSBACKTOYOU h9ES)DOHAVESOMETHINGTHATIMPLEMENTSTHATINTERFACE(ERES
THESERIALIZEDOBJECTTHE3CIENTIlC#ALCULATORSERVICEREGISTEREDWITHMEv
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

)LIX\Q^MLQ[KW^MZaQVIK\QWV
 -LQLORRNXSVHUYLFHLVODXQFKHGVRPHZKHUHRQWKHQHWZRUNDQG
DQQRXQFHVLWVHOIXVLQJ,3PXOWLFDVW

+H\HYHU\ERG\
,·PKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN

Licensed by
-LQL/RRNXS6HUYLFH

Eduard Simons
PDFKLQHRQWKHQHWZRUN
VRPHZKHUH
DQRWKHUPDFKLQHRQWKHQHWZRUN


104038
$QDOUHDG\UXQQLQJ-LQLVHUYLFHRQ
5HJLVWHU
PHDVVRPHWKLQJ
WKDWLPSOHPHQWV
6FLHQWLÀF&DOFXODWRU+HUH·VD
DQRWKHUPDFKLQHDVNVWREHUHJLVWHUHG VHULDOL]HGREMHFWWKDWUHSUHVHQWV
ZLWKWKLVQHZO\DQQRXQFHGORRNXS P\VHUYLFH6HQGLWWR
VHUYLFH,WUHJLVWHUVE\FDSDELOLW\ DQ\ERG\ZKRDVNV
UDWKHUWKDQE\QDPH,QRWKHUZRUGV
LWUHJLVWHUVDVWKHVHUYLFHLQWHUIDFHLW
LPSOHPHQWV,WVHQGVDVHULDOL]HGREMHFW
WREHSODFHGLQWKHORRNXSVHUYLFH -LQL6HUYLFH

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
DQRWKHUPDFKLQHRQWKHQHWZRUN
VRPHZKHUH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DGDSWLYHGLVFRYHU\LQ-LQL

)LIX\Q^MLQ[KW^MZaQVIK\QWVKWV\QV]ML
 $FOLHQWRQWKHQHWZRUNZDQWV
VRPHWKLQJWKDWLPSOHPHQWVWKH
6FLHQWLÀF&DOFXODWRULQWHUIDFH,WKDV
QRLGHDZKHUH RULI WKDWWKLQJH[LVWV
VRLWDVNVWKHORRNXSVHUYLFH
DQRWKHUPDFKLQH
-LQL6HUYLFH
RQWKHQHWZRUN

'R\RX
-LQL/RRNXS6HUYLFH KDYHDQ\WKLQJ
WKDWLPSOHPHQWV
6FLHQWLÀF&DOFXODWRU"
-DYDDSS

PDFKLQHRQWKHQHWZRUN
DQRWKHUPDFKLQHRQWKHQHWZRUN
VRPHZKHUH

 7KHORRNXSVHUYLFHUHVSRQGVVLQFHLWGRHVKDYHVRPHWKLQJ
UHJLVWHUHGDVD6FLHQWLÀF&DOFXODWRULQWHUIDFH

<HV,GR
KDYHVRPHWKLQJ
,·PVHQGLQJ\RXWKH
VHULDOL]HGREMHFW -LQL6HUYLFH
QRZ

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

-DYDDSS

PDFKLQHRQWKHQHWZRUN
DQRWKHUPDFKLQHRQWKHQHWZRUN
VRPHZKHUH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

;MTNPMITQVOVM\ _WZSQVIK\QWV
 $-LQL6HUYLFHKDVDVNHGWRUHJLVWHUZLWKWKHORRNXSVHUYLFH7KHORRNXS
VHUYLFHUHVSRQGVZLWKD´OHDVHµ7KHQHZO\UHJLVWHUHGVHUYLFHPXVWNHHS
UHQHZLQJWKHOHDVHRUWKHORRNXSVHUYLFHDVVXPHVWKHVHUYLFHKDVJRQH
RIÁLQH7KHORRNXSVHUYLFHZDQWVDOZD\VWRSUHVHQWDQDFFXUDWHSLFWXUH
WRWKHUHVWRIWKHQHWZRUNDERXWZKLFKVHUYLFHVDUHDYDLODEOH

,·OO
UHJLVWHU\RX
DQGKHUH·V\RXU DQRWKHUPDFKLQH
OHDVH,I\RXGRQ·W -LQL6HUYLFH
RQWKHQHWZRUN
UHQHZLW,·OOGURS\RX
OHDVH

-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
DQRWKHUPDFKLQHRQWKHQHWZRUN
VRPHZKHUH

 7KHVHUYLFHJRHVRIIOLQH VRPHERG\VKXWVLWGRZQ VRLWIDLOVWR


UHQHZLWVOHDVHZLWKWKHORRNXSVHUYLFH7KHORRNXSVHUYLFHGURSVLW

+PPPP,
GLGQ·WJHWDOHDVH
UHQHZDOIURPWKDWRQHLW
PXVWEHGRZQ,·OOGURSLW,ILW
FRPHVEDFNLWZLOODXWRPDWLFDOO\
UHGLVFRYHUPH

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
DQRWKHUPDFKLQHRQWKHQHWZRUN
VRPHZKHUH

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XQLYHUVDOVHUYLFHSURMHFW

.QVIT8ZWRMK\"\PM=VQ^MZ[IT;MZ^QKMJZW_[MZ
7EREGOINGTOMAKESOMETHINGTHATISNT*INI ENABLED BUTQUITEEASILYCOULDBE
)TWILLGIVEYOUTHEmAVORANDFEELINGOF*INI BUTUSINGSTRAIGHT2-))NFACTTHE
MAINDIFFERENCEBETWEENOURAPPLICATIONANDA*INIAPPLICATIONISHOWTHESERVICEIS
DISCOVERED)NSTEADOFTHE*INILOOKUPSERVICE WHICHAUTOMATICALLYANNOUNCESITSELFAND
LIVESANYWHEREONTHENETWORK WEREUSINGTHE2-)REGISTRYWHICHMUSTBEONTHESAME
MACHINEASTHEREMOTESERVICE ANDWHICHDOESNOTANNOUNCEITSELFAUTOMATICALLY
!NDINSTEADOFOURSERVICEREGISTERINGITSELFAUTOMATICALLYWITHTHELOOKUPSERVICE WE
HAVETOREGISTERITINTHE2-)REGISTRYUSING.AMINGREBIND 
"UTONCETHECLIENTHASFOUNDTHESERVICEINTHE2-)REGISTRY THERESTOFTHEAPPLICATION
ISALMOSTIDENTICALTOTHEWAYWEDDOITIN*INI4HEMAINTHINGMISSINGISTHELEASETHAT
WOULDLETUSHAVEASELF HEALINGNETWORKIFANYOFTHESERVICESGODOWN
4HEUNIVERSALSERVICEBROWSERISLIKEASPECIALIZEDWEBBROWSER EXCEPTINSTEADOF(4-,
PAGES THESERVICEBROWSERDOWNLOADSANDDISPLAYSINTERACTIVE*AVA'5)STHATWERE
CALLINGUNIVERSALSERVICES

&KRRVHDVHUYLFHIURPWKH
OLVW7KH50,UHPRWHVHUYLFH
KDVDJHW6HUYLFH/LVW 
PHWKRGWKDWVHQGVEDFNWKLV
OLVWRIVHUYLFHV
:KHQWKHXVHUVHOHFWVRQH
WKHFOLHQWDVNVIRUWKH
DFWXDOVHUYLFH 'LFH5ROOLQJ
'D\2I7KH:HHNHWF WR
EHVHQWEDFNIURPWKH50,
UHPRWHVHUYLFH

VHUYLFH
:KHQ\VKRXVHOHFWKHDUH 
XS
LWZLOO RZ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

+RZLWZRUNV

&OLHQWVWDUWVXSDQG 6HUYHU
 6HUYLFH%URZVHU
GRHVDORRNXSRQWKH FOLHQW
50,UHJLVWU\IRU

U
WKHVHUYLFHFDOOHG

UYH
´3O
´6HUYLFH6HUYHUµDQG ´6 HDVH

6H
HUY JLY H
JHWVEDFNWKHVWXE LFH HP
6H 6HUYLF
UYH HWKH
Uµ WK
LQJ
QD
PH
G
50,UHJLVWU\ RQVHUYHU
´2 6HUYLFH
. 6HUYHU
KH
UH·
VW
KH
VW
XE
µ
6WXE

 &OLHQWFDOOVJHW6HUYLFH/LVW RQWKHVWXE7KH6HUYLFH6HUYHU
UHWXUQVDQDUUD\RIVHUYLFHV
6HUYHU
6HUYLFH%URZVHU
FOLHQW ´JHW6HUYLFH/LVW µ
U
UYH
6H

H
6HUYLF
´2.KHUH·VDQDUUD\RIVHUYLFHVµ

 &OLHQWGLVSOD\VWKHOLVWRIVHUYLFHVLQD*8,

6HUYHU
6HUYLFH%URZVHU
FOLHQW
U
UYH
6H

H
6HUYLF

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XQLYHUVDOVHUYLFHEURZVHU

+RZLWZRUNVFRQWLQXHG

 8VHUVHOHFWVIURPWKHOLVWVRFOLHQWFDOOVWKHJHW6HUYLFH 
PHWKRGRQWKHUHPRWHVHUYLFH7KHUHPRWHVHUYLFHUHWXUQVD
VHULDOL]HGREMHFWWKDWLVDQDFWXDOVHUYLFHWKDWZLOOUXQLQVLGH
WKHFOLHQWEURZVHU

6HUYHU
6HUYLFH%URZVHU ´JHW6HUYLFH VHOHFWHG6YF µ
FOLHQW

U
UYH
6H
H
6HUYLF
´2.KHUH·VWKHVHUYLFHµ

 &OLHQWFDOOVWKHJHW*XL3DQHO RQWKHVHULDOL]HGVHUYLFHREMHFWLW
MXVWJRWIURPWKHUHPRWHVHUYLFH7KH*8,IRUWKDWVHUYLFHLV
GLVSOD\HGLQVLGHWKHEURZVHUDQGWKHXVHUFDQLQWHUDFWZLWKLW
ORFDOO\$WWKLVSRLQWZHGRQ·WQHHGWKHUHPRWHVHUYLFHXQOHVVXQWLO
WKHXVHUGHFLGHVWRVHOHFWDQRWKHUVHUYLFH

6HUYLFH%URZVHU
FOLHQW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

7KHFODVVHVDQGLQWHUIDFHV

 LQWHUIDFH6HUYLFH6HUYHULPSOHPHQWV5HPRWH 6HUYLFH6HUYHU
$UHJXODUROG50,UHPRWHLQWHUIDFHIRUWKHUHPRWHVHUYLFH WKH JHW6HUYLFHV/LVW
UHPRWHVHUYLFHKDVWKHPHWKRGIRUJHWWLQJWKHVHUYLFHOLVWDQG JHW6HUYLFH
UHWXUQLQJDVHOHFWHGVHUYLFH 

 FODVV6HUYLFH6HUYHU,PSOLPSOHPHQWV6HUYLFH6HUYHU
7KHDFWXDO50,UHPRWHVHUYLFH H[WHQGV8QLFDVW5HPRWH2EMHFW  6HUYLFH6HUYHU,PSO
,WVMRELVWRLQVWDQWLDWHDQGVWRUHDOOWKHVHUYLFHV WKHWKLQJV JHW6HUYLFHV/LVW
WKDWZLOOEHVKLSSHGWRWKHFOLHQW DQGUHJLVWHUWKHVHUYHULWVHOI JHW6HUYLFH
6HUYLFH6HUYHU,PSO ZLWKWKH50,UHJLVWU\

 FODVV6HUYLFH%URZVHU
7KHFOLHQW,WEXLOGVDYHU\VLPSOH*8,GRHVDORRNXSLQWKH50, 6HUYLFH%URZVHU
UHJLVWU\WRJHWWKH6HUYLFH6HUYHUVWXEWKHQFDOOVDUHPRWHPHWKRGRQ PDLQ
LWWRJHWWKHOLVWRIVHUYLFHVWRGLVSOD\LQWKH*8,OLVW

 LQWHUIDFH6HUYLFH
7KLVLVWKHNH\WRHYHU\WKLQJ7KLVYHU\VLPSOHLQWHUIDFHKDVMXVWRQH
PHWKRGJHW*XL3DQHO (YHU\VHUYLFHWKDWJHWVVKLSSHGRYHUWRWKH
FOLHQWPXVWLPSOHPHQWWKLVLQWHUIDFH7KLVLVZKDWPDNHVWKHZKROHWKLQJ
81,9(56$/%\LPSOHPHQWLQJWKLVLQWHUIDFHDVHUYLFHFDQFRPHRYHU
HYHQWKRXJKWKHFOLHQWKDVQRLGHDZKDWWKHDFWXDOFODVV RUFODVVHV  6HUYLFH
DUHWKDWPDNHXSWKDWVHUYLFH$OOWKHFOLHQWNQRZVLVWKDWZKDWHYHU
FRPHVRYHULWLPSOHPHQWVWKH6HUYLFHLQWHUIDFHVRLW0867KDYHD JHW*XL3DQHO
JHW*XL3DQHO PHWKRG
7KHFOLHQWJHWVDVHULDOL]HGREMHFWDVDUHVXOWRIFDOOLQJ
JHW6HUYLFH VHOHFWHG6YF RQWKH6HUYLFH6HUYHUVWXEDQGDOOWKHFOLHQW
VD\VWRWKDWREMHFWLV´,GRQ·WNQRZZKRRUZKDW\RXDUHEXW,'2
NQRZWKDW\RXLPSOHPHQWWKH6HUYLFHLQWHUIDFHVR,NQRZ,FDQFDOO
JHW*XL3DQHO RQ\RX$QGVLQFHJHW*XL3DQHO UHWXUQVD-3DQHO,·OOMXVW
VODSLWLQWRWKHEURZVHU*8,DQGVWDUWLQWHUDFWLQJZLWKLW

'LFH6HUYLFH
 FODVV'LFH6HUYLFHLPSOHPHQWV6HUYLFH
*RWGLFH",IQRWEXW\RXQHHGVRPHXVHWKLVVHUYLFHWRUROODQ\ZKHUH JHW*XL3DQHO
IURPWRYLUWXDOGLFHIRU\RX

 FODVV0LQL0XVLF6HUYLFHLPSOHPHQWV6HUYLFH
5HPHPEHUWKDWIDEXORXVOLWWOH¶PXVLFYLGHR·SURJUDPIURPWKHÀUVW 0LQL0XVLF6HUYLFH
*8,&RGH.LWFKHQ":H·YHWXUQHGLWLQWRDVHUYLFHDQG\RXFDQSOD\LW JHW*XL3DQHO
RYHUDQGRYHUDQGRYHUXQWLO\RXUURRPPDWHVÀQDOO\OHDYH 'D\2I7KH:HHN6HUYLFH
JHW*XL3DQHO
 FODVV'D\2I7KH:HHN6HUYLFHLPSOHPHQWV6HUYLFH
:HUH\RXERUQRQD)ULGD\"7\SHLQ\RXUELUWKGD\DQGÀQGRXW

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
XQLYHUVDOVHUYLFHFRGH

LQWHUIDFH6HUYLFH6HUYHU WKHUHPRWHLQWHUIDFH
IDFH
LPSRUWMDYDUPL 
P D O 5 0, U HPRWHLQWVHWUKH
$QRU WKHWZRPHWKRG
SXEOLFLQWHUIDFH6HUYLFH6HUYHUH[WHQGV5HPRWH^
GHILQHV HUYLFHZLOOKDYH
2EMHFW>@JHW6HUYLFH/LVW WKURZV5HPRWH([FHSWLRQ UHPRWHV
6HUYLFHJHW6HUYLFH 2EMHFWVHUYLFH.H\ WKURZV5HPRWH([FHSWLRQ
`

LQWHUIDFH6HUYLFH ZKDWWKH*8,VHUYLFHVLPSOHPHQW
$SODLQROG LHQRQ
LPSRUWMDYD[VZLQJ  GHILQHVWKHRQ UHPRWH LQWHUIDF
HW
LPSRUWMDYDLR  VHUYLFHPXVWKDYH³ KRGWKDWDQ\XQLYHUVDOKD W
H PHW
JH
LQWHUIDFHH[ V W*XL3DQHO 7KH
SXEOLFLQWHUIDFH6HUYLFHH[WHQGV6HULDOL]DEOH^ FODVVLPSOHPHQWHWLQG 6HULDOL]DEOHVRWK
DWD
SXEOLF-3DQHOJHW*XL3DQHO  DXWRPDWLFDOO\EHQJ6HWKH6HUYLFHLQWHUIDFHZLQ\OO
` ULDOL]DEOH
7KDW·VDPXVWEHF
VKLSSHGRYHUWKHZDXVHWKHVHUYLFHVJHW
UHVXOWRIWKH LUHIURPWKHVHUYH
UDV
WKHUHPRWH6HUYLF FDOOLQJJHW6HUYLFH RQD
FO LHQW
H6HUYHU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

FODVV6HUYLFH6HUYHU,PSO WKHUHPRWHLPSOHPHQWDWLRQ
LPSRUWMDYDUPL 
LPSRUWMDYDXWLO 
LRQ
LPSRUWMDYDUPLVHUYHU 
0, LPSOHPHQWDW
$QRUPDO5
SXEOLFFODVV6HUYLFH6HUYHU,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV6HUYLFH6HUYHU^

+DVK0DSVHUYLFH/LVW 7KHVHUYLFHVZLOOEHVW
REMHFWLQWKHFROOHFWLRRUHGLQD+DVK0DSFROOHFWLRQ,QVWHDG
 YDOXHREMHFW ZKDWHYH Q\RXSXW7:2DNH\REMHFW OL RISXWWLQJ21(
U\RXZDQW  VHHDSSH NH
QGL[%IRUPRUHDRQ6+WULQJ DQGD
 DVK0DS
SXEOLF6HUYLFH6HUYHU,PSO WKURZV5HPRWH([FHSWLRQ^
VHW8S6HUYLFHV 
`  KHDFWXDO
LQLWLDOL]HWHU
OO HG F
WUXFW RU L V FD XVLF YLFHHW
6
SULYDWHYRLGVHW8S6HUYLFHV ^ :KHQWKHVHFRUYQVLFHV 'LFH6HUYLFH0LQL0
VHUYLFH/LVW QHZ+DVK0DS  XQLYHUVDO
VHUYLFH/LVWSXW ³'LFH5ROOLQJ6HUYLFH´QHZ'LFH6HUYLFH 
VHUYLFH/LVWSXW ³'D\RIWKH:HHN6HUYLFH´QHZ'D\2I7KH:HHN6HUYLFH 
VHUYLFH/LVWSXW ³9LVXDO0XVLF6HUYLFH´QHZ0LQL0XVLF6HUYLFH 
OVHUYLFH
` HV WKHDFWXD UYLF
0DNHWKHVH QG S XWWKHPLQW RWKH

 RE MH FW V D
 ZLW K D 6 W ULQJQ H IRU
DP
+DVK0DS 
WKH¶NH\·
SXEOLF2EMHFW>@JHW6HUYLFH/LVW ^ &OLHQWFDOOVWKLVLQ
6\VWHPRXWSULQWOQ ³LQUHPRWH´  GLVSOD\LQWKHEURZVRHUUGHUWRJHWDOLVWRIVHUYLFHVWR
UHWXUQVHUYLFH/LVWNH\6HW WR$UUD\  VHQGDQDUUD\RIW\SH VRWKHXVHUFDQVHOHFWRQH :H

LQVLGH E\PDNLQJDQD 2EMHFW HYHQWKRXJKLWKDV6WULQJV
LQWKH+DVK0DS:HZRUUD\RIMXVWWKH.(<6WKDWDUH
`

XQOHVVWKHFOLHQWDVNVI Q·WVHQGDQDFWXDO6HUYLFHREMHFW
RULWE\FDOOLQJJHW6HU
YLFH 

SXEOLF6HUYLFHJHW6HUYLFH 2EMHFWVHUYLFH.H\ WKURZV5HPRWH([FHSWLRQ^
6HUYLFHWKH6HUYLFH  6HUYLFH VHUYLFH/LVWJHW VHUYLFH.H\ 
UHWXUQWKH6HUYLFH H VDVHUYLFHKH
XVHUVHOHFWRW
RG D I W HU WK J IURPW
` KLVPHWK V WKDWLW
&OLHQWFDOOVGWLVSOD\HGOLVWRIVHUYLFHKHNH\ WKHVDPHNH\
IURPWKHERYH 7KLVFRGHXVHVW JHWWKHFRUUHVSRQGLQJ
PHWKRGD HQWWRWKHFOLHQW WR
RULJLQDOO\VWRIWKH+DVK0DS
 VHUYLFHRX
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WU\^
1DPLQJUHELQG ³6HUYLFH6HUYHU´QHZ6HUYLFH6HUYHU,PSO 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
6\VWHPRXWSULQWOQ ³5HPRWHVHUYLFHLVUXQQLQJ´ 
`
`
\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6HUYLFH%URZVHUFRGH

FODVV6HUYLFH%URZVHU WKHFOLHQW

LPSRUWMDYDDZW 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDUPL 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV6HUYLFH%URZVHU^

-3DQHOPDLQ3DQHO
-&RPER%R[VHUYLFH/LVW
6HUYLFH6HUYHUVHUYHU

SXEOLFYRLGEXLOG*8, ^
-)UDPHIUDPH QHZ-)UDPH ³50,%URZVHU´ 
PDLQ3DQHO QHZ-3DQHO 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
NXS

G G RH V WK H 5 0,UHJLVWU\/ORR
LV W 
2EMHFW>@VHUYLFHV JHW6HUYLFHV/LVW  WKLVPHWKRWXEDQGFDOOVJHW6HUYLFH SDJH 
W KH V Q H[ W
 JHWV KRGLVRQWKH
 7KHDFWXDOPHW
 RWKH
DUUD\RI2EMHFWV[ W
$GGWKHVHUYLFHVOL DVWQ  7K H -& RP ER %R NQRZVKRZWR
VHUYLFH/LVW QHZ-&RPER%R[ VHUYLFHV  [ W KH HDUUD\
-&RP ER %R RXWRIHDFKWKLQJLQWK
PDNHGLVSOD\DEOH6WULQJV
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+VHUYLFH/LVW 

VHUYLFH/LVWDGG$FWLRQ/LVWHQHU QHZ0\/LVW/LVWHQHU 

IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

`

YRLGORDG6HUYLFH 2EMHFWVHUYLFH6HOHFWLRQ ^
WU\^
6HUYLFHVYF VHUYHUJHW6HUYLFH VHUYLFH6HOHFWLRQ 

+HUH·VZKHUHZHDGGWKH
UKDVVHOHFWHGRQH 7DF WXDOVHUYLFHWRWKH*8,D
PDLQ3DQHOUHPRYH$OO 
XVH
PDLQ3DQHODGG VYFJHW*XL3DQHO 
OLVWHQHURQWKH-&RPER% KLV P HWKRGLVFDOOHGE\WKHHYIWHUWKH
HQW
UHPRWHVHUYHU WKHVWXEIR[ :HFDOOJHW6HUYLFH RQWKH
PDLQ3DQHOYDOLGDWH 
PDLQ3DQHOUHSDLQW  RU
6WULQJWKDWZDVGLVS 6HUYLFH6HUYHU DQGSDVV
`FDWFK ([FHSWLRQH[ ^ LWWKH
H[SULQW6WDFN7UDFH  6WULQJZHRULJLQDOO\JROD\WHGLQWKHOLVW ZKLFKLVWKH6$0(
` JHW6HUYLFH/LVW 7KHVHIURPWKHVHUYHUZKHQZHFDOOHG
` VHULDOL]HG UYHUUHWXUQVWKHDFWXDO
VHUYLF
ZKLFKLVDXWRPDWLFDOO\G H
DQGZHVLPSO\FDOOWKHJH HVHULDOL]HG WKDQNVWR50
, 
WKHUHVXOW D-3DQHO WRWW*XL3DQHO RQWKHVHUYLFHDQGDGG
 KHEURZVHU·VPDLQ3DQHO
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

2EMHFW>@JHW6HUYLFHV/LVW ^
2EMHFWREM QXOO
2EMHFW>@VHUYLFHV QXOO
KHV WXE
RNXSDQGJHWW
WU\^ 'RWKH50,OR

REM 1DPLQJORRNXS ³UPL6HUYLFH6HUYHU´ 

Licensed by

`
FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
&DVWWKHVWXE

Eduard Simons
VHUYHU  6HUYLFH6HUYHU REM
 VRWKDWZHFDQWFRDOWKHUHPRWHLQWHUIDFHW\SH
OJHW6HUYLFH/LVW
 RQLW
WU\^

VHUYLFHV VHUYHUJHW6HUYLFH/LVW 

104038

`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH  JHW6HUYLFH/LVW JLYHVXVWKHDUUD\RI2EMHFWV
` WKDWZHGLVSOD\LQWKH-&RPER%R[IRUWKHXVHUWR
UHWXUQVHUYLFHV VHOHFWIURP

`

FODVV0\/LVW/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^

2EMHFWVHOHFWLRQ VHUYLFH/LVWJHW6HOHFWHG,WHP 
ORDG6HUYLFH VHOHFWLRQ  KHXVHUPDG HD
H L W P HD QVW W  6R
` ,IZH·UHKIHUURPWKH-&RPER%R[OLVGORDGWKH
VHOHFWLR Q H\PDGH DQ
YLFHPHWKRG 
`
LRQWK
WDNHWKHVHHOHVHFWUYLFH VHHWKHORDGW6KHU
HVHUYHUIWRULRQ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ DSSURSULDWHYLRXVSDJHWKDWDVNV KW KLVVHOHF
QHZ6HUYLFH%URZVHU EXLOG*8,  RQWKHSU HWKDWFRUUHVSRQGVZLW
` WKHVHUY LF
`





\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
'LFH6HUYLFHFRGH

FODVV'LFH6HUYLFH DXQLYHUVDOVHUYLFHLPSOHPHQWV6HUYLFH

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYDLR 

SXEOLFFODVV'LFH6HUYLFHLPSOHPHQWV6HUYLFH^

-/DEHOODEHO
-&RPER%R[QXP2I'LFH

SXEOLF-3DQHOJHW*XL3DQHO ^
-3DQHOSDQHO QHZ-3DQHO 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³5ROOµHP´ 
6WULQJ>@FKRLFHV ^³´³´³´³´³´`
QXP2I'LFH QHZ-&RPER%R[ FKRLFHV 
ODEHO QHZ-/DEHO ³GLFHYDOXHVKHUH´ 
EXWWRQDGG$FWLRQ/LVWHQHU QHZ5ROO(P/LVWHQHU 
SDQHODGG QXP2I'LFH  +HUH·VWKHRQHLPSRUW PHWK
SDQHODGG EXWWRQ  6HUYLFHLQWHUIDFHWDQW RG7KHPHWKR IWKH
RQHWKHFOLHQW·VJRQQDGR
SDQHODGG ODEHO  WKLVVHUYLFHLVVHOHFWHGKH
DQGORDGHG<RXFDQGRZK FDOOZKHQ
UHWXUQSDQHO ZD
`
QW LQ WKH JH W*XL3DQHO PHWKRGDVORQJD DWHYHU\RX
V\RX
-3DQHOVRLWEXLOGVWKHDFWXDO
GLFHUROOLQJ*8, UHWXUQD
SXEOLFFODVV5ROO(P/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
UROOWKHGLFH
6WULQJGLFH2XWSXW ³´
6WULQJVHOHFWLRQ  6WULQJ QXP2I'LFHJHW6HOHFWHG,WHP 
LQWQXP2I'LFH7R5ROO ,QWHJHUSDUVH,QW VHOHFWLRQ 
IRU LQWL LQXP2I'LFH7R5ROOL ^
LQWU  LQW  0DWKUDQGRP    
GLFH2XWSXW  ³³U 
`
ODEHOVHW7H[W GLFH2XWSXW 

`
`

6KDUSHQ \RXU SHQFLO


4HINKABOUTWAYSTOIMPROVETHE$ICE3ERVICE/NE
SUGGESTIONUSINGWHATYOULEARNEDINTHE'5)CHAPTERS
MAKETHEDICEGRAPHICAL5SEARECTANGLE ANDDRAWTHE
APPROPRIATENUMBEROFCIRCLESONEACHONE CORRESPONDING
TOTHEROLLFORTHATPARTICULARDIE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

FODVV0LQL0XVLF6HUYLFH DXQLYHUVDOVHUYLFHLPSOHPHQWV6HUYLFH

LPSRUWMDYD[VRXQGPLGL 
LPSRUWMDYDLR 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV0LQL0XVLF6HUYLFHLPSOHPHQWV6HUYLFH^
LW

7 K HVHUY LF HPHWKRGW$RQOO DQG
0\'UDZ3DQHOP\3DQHO SOD\DEXW GRHVLVGLVLQJVHUYLFH ZKHUH
SXEOLF-3DQHOJHW*XL3DQHO ^ WKHGUDZ QJOHVZLOOHYHQWXDOO\
-3DQHOPDLQ3DQHO QHZ-3DQHO  WKHUHFWD 
P\3DQHO QHZ0\'UDZ3DQHO  EHSDLQWHG
-%XWWRQSOD\,W%XWWRQ QHZ-%XWWRQ ³3OD\LW´ 
SOD\,W%XWWRQDGG$FWLRQ/LVWHQHU QHZ3OD\,W/LVWHQHU 
PDLQ3DQHODGG P\3DQHO 
PDLQ3DQHODGG SOD\,W%XWWRQ 
UHWXUQPDLQ3DQHO
`

SXEOLFFODVV3OD\,W/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^ 7KLVLVDOOWKHPXVLFVWXIIIURPWKH
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^ &RGH.LWFKHQLQFKDSWHUVRZ
ZRQ·WDQQRWDWHLWDJDLQKHUH H
WU\^

6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 


VHTXHQFHURSHQ 

VHTXHQFHUDGG&RQWUROOHU(YHQW/LVWHQHU P\3DQHOQHZLQW>@^` 
6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 
7UDFNWUDFN VHTFUHDWH7UDFN 

IRU LQWL LL  ^

LQWU1XP  LQW  0DWKUDQGRP    


LI U1XP ^VRQRZRQO\GRLWLIQXP RIWKHWLPH 
WUDFNDGG PDNH(YHQW U1XPL 
WUDFNDGG PDNH(YHQW L 
WUDFNDGG PDNH(YHQW U1XPL 
`
`HQGORRS

VHTXHQFHUVHW6HTXHQFH VHT 
VHTXHQFHUVWDUW 
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `

`FORVHDFWLRQSHUIRUPHG
`FORVHLQQHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
0LQL0XVLF6HUYLFHFRGH

FODVV0LQL0XVLF6HUYLFHFRQWLQXHG
SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 

`FDWFK ([FHSWLRQH ^`
UHWXUQHYHQW
`

FODVV0\'UDZ3DQHOH[WHQGV-3DQHOLPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^

RQO\LIZHJRWDQHYHQWGRZHZDQWWRSDLQW
ERROHDQPVJ IDOVH

SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
PVJ WUXH
LUHSDJH<LWRX ·YH
R QW KLV H QW FK HQ
1RWKLQJQHLZQWKHJUDSKLFV&RGH.
UHSDLQW 
` OO
VHHQLWD QWDQRWKHUH[HUFLVH WKHQ  W U\ 
SXEOLF'LPHQVLRQJHW3UHIHUUHG6L]H ^ ,I\RXZD JWKLVFRGH\RXUVHOI HQLQ
UHWXUQQHZ'LPHQVLRQ   DQQRWDWLQ WZLWKWKH&RGH.LWFKSWHU
` FRPSDUHL \JUDSKLFVWRU\µFKD
WKH´$YHU
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
LI PVJ ^

*UDSKLFV'J  *UDSKLFV' J

LQWU  LQW  0DWKUDQGRP   


LQWJU  LQW  0DWKUDQGRP   
LQWE  LQW  0DWKUDQGRP   

JVHW&RORU QHZ&RORU UJUE 

LQWKW  LQW  0DWKUDQGRP    


LQWZLGWK  LQW  0DWKUDQGRP    

LQW[  LQW  0DWKUDQGRP    


LQW\  LQW  0DWKUDQGRP    

J¿OO5HFW [\KWZLGWK 
PVJ IDOVH

`FORVHLI
`FORVHPHWKRG
`FORVHLQQHUFODVV
`FORVHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
UHPRWHGHSOR\PHQWZLWK50,

FODVV'D\2I7KH:HHN6HUYLFH DXQLYHUVDOVHUYLFHLPSOHPHQWV6HUYLFH

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYDDZW 
LPSRUWMDYDLR 
LPSRUWMDYDXWLO 
LPSRUWMDYDWH[W 

SXEOLFFODVV'D\2I7KH:HHN6HUYLFHLPSOHPHQWV6HUYLFH^

-/DEHORXWSXW/DEHO
-&RPER%R[PRQWK KRG
QWHUIDFHPHW
-7H[W)LHOGGD\
7KH6HUYLFHVLWKH*8,
-7H[W)LHOG\HDU
WKDWEXLOG
SXEOLF-3DQHOJHW*XL3DQHO ^
-3DQHOSDQHO QHZ-3DQHO 
-%XWWRQEXWWRQ QHZ-%XWWRQ ³'RLW´ 
EXWWRQDGG$FWLRQ/LVWHQHU QHZ'R,W/LVWHQHU 
RXWSXW/DEHO QHZ-/DEHO ³GDWHDSSHDUVKHUH´ 
'DWH)RUPDW6\PEROVGDWH6WXII QHZ'DWH)RUPDW6\PEROV 
PRQWK QHZ-&RPER%R[ GDWH6WXIIJHW0RQWKV 
GD\ QHZ-7H[W)LHOG  
\HDU QHZ-7H[W)LHOG  
-3DQHOLQSXW3DQHO QHZ-3DQHO QHZ*ULG/D\RXW  
LQSXW3DQHODGG QHZ-/DEHO ³0RQWK´ 
LQSXW3DQHODGG PRQWK 
LQSXW3DQHODGG QHZ-/DEHO ³'D\´ 
LQSXW3DQHODGG GD\ 
LQSXW3DQHODGG QHZ-/DEHO ³<HDU´ 
LQSXW3DQHODGG \HDU 
SDQHODGG LQSXW3DQHO 
SDQHODGG EXWWRQ 
SDQHODGG RXWSXW/DEHO 
UHWXUQSDQHO
`

GHU
SXEOLFFODVV'R,W/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
HU   L I \ RX QHHGDUHPZLQRUNV
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^ FKDS W IRUPDWWLQJ
LQWPRQWK1XP PRQWKJHW6HOHFWHG,QGH[  5HIHUWRXP E HU DQGGDWHIHU KRZHYHU
LQWGD\1XP ,QWHJHUSDUVH,QW GD\JHW7H[W  RI K RZ Q
RG HLV V OL JK W O\GLI HQUWFODVV$OVRWKH
LQW\HDU1XP ,QWHJHUSDUVH,QW \HDUJHW7H[W  7KLV
F VWKH&DOHQGD SDWWHUQ
&DOHQGDUF &DOHQGDUJHW,QVWDQFH  EHFDXVHLWWXH)VHRUPDWOHWVXVVSHFLI\XWD
FVHW &DOHQGDU0217+PRQWK1XP  6LPSOH'D KHGDWHVKRXOGSULQWR
FVHW &DOHQGDU'$<B2)B0217+GD\1XP  IRUKRZW
FVHW &DOHQGDU<($5\HDU1XP 
'DWHGDWH FJHW7LPH 
6WULQJGD\2I:HHN  QHZ6LPSOH'DWH)RUPDW ³((((´ IRUPDW GDWH 
RXWSXW/DEHOVHW7H[W GD\2I:HHN 
`
`
`
\RXDUHKHUH 




Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
WKHHQGVRUWRI

:RXOGQ·WLWEH
GUHDP\LIWKLVZHUHWKHHQG
RIWKHERRN",IWKHUHZHUHQR
PRUHEXOOHWSRLQWVRUSX]]OHV
RUFRGHOLVWLQJVRUDQ\WKLQJHOVH"
%XWWKDW·VSUREDEO\MXVWD
IDQWDV\

Congratulations!
You made it to the end.
2IFRXUVHWKHUH·VVWLOOWKHWZRDSSHQGLFHV
$QGWKHLQGH[
$QGWKHQWKHUH·VWKHZHEVLWH
7KHUH·VQRHVFDSHUHDOO\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Appendix A:
Final Code Kitchen

WR
R X U  P HVV D J HJHWVVHQW 
< OD\HUVDORQJ
GDQFHEHDW WKHRWKHUS XUUHQWEHDW
ZLWK\RXUF HQ\RXKLW
SDWWHUQZK
´VHQG,Wµ
$QG\JURRYH

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW ,QFRPLQJPH
SOD\HUV&OLF VVDJHVIURP
WKHSDWWHUQ NRQHWRORDG
ZLWKLWDQG WKDWJRHV
¶6WDUW·WRS WKHQFOLFN
OD\LW
Finally, the complete version of the BeatBox!
It connects to a simple MusicServer so that you can
send and receive beat patterns with other clients.

WKLVLVDQHZDSSHQGL[ 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDO%HDW%R[FRGH

)LQDO%HDW%R[FOLHQWSURJUDP
0RVWRIWKLVFRGHLVWKHVDPHDVWKHFRGHIURPWKH&RGH.LWFKHQVLQWKHSUHYLRXV
FKDSWHUVVRZHGRQ¶WDQQRWDWHWKHZKROHWKLQJDJDLQ7KHQHZSDUWVLQFOXGH
*8,WZRQHZFRPSRQHQWVDUHDGGHGIRUWKHWH[WDUHDWKDWGLVSOD\VLQFRPLQJ
PHVVDJHV DFWXDOO\DVFUROOLQJOLVW DQGWKHWH[W¿HOG
1(7:25.,1*MXVWOLNHWKH6LPSOH&KDW&OLHQWLQWKLVFKDSWHUWKH%HDW%R[QRZ
FRQQHFWVWRWKHVHUYHUDQGJHWVDQLQSXWDQGRXWSXWVWUHDP
7+5($'6DJDLQMXVWOLNHWKH6LPSOH&KDW&OLHQWZHVWDUWDµUHDGHU¶FODVVWKDW
NHHSVORRNLQJIRULQFRPLQJPHVVDJHVIURPWKHVHUYHU%XWLQVWHDGRIMXVWWH[WWKH
PHVVDJHVFRPLQJLQLQFOXGH7:2REMHFWVWKH6WULQJPHVVDJHDQGWKHVHULDOL]HG
$UUD\/LVW WKHWKLQJWKDWKROGVWKHVWDWHRIDOOWKHFKHFNER[HV

LPSRUWMDYDDZW 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDLR 
LPSRUWMDYD[VRXQGPLGL 
LPSRUWMDYDXWLO 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYDQHW 
LPSRUWMDYD[VZLQJHYHQW 

SXEOLFFODVV%HDW%R[)LQDO^

-)UDPHWKH)UDPH
-3DQHOPDLQ3DQHO
-/LVWLQFRPLQJ/LVW
-7H[W)LHOGXVHU0HVVDJH
$UUD\/LVW-&KHFN%R[!FKHFNER[/LVW
LQWQH[W1XP
9HFWRU6WULQJ!OLVW9HFWRU QHZ9HFWRU6WULQJ! 
6WULQJXVHU1DPH
2EMHFW2XWSXW6WUHDPRXW
2EMHFW,QSXW6WUHDPLQ
+DVK0DS6WULQJERROHDQ>@!RWKHU6HTV0DS QHZ+DVK0DS6WULQJERROHDQ>@! 

6HTXHQFHUVHTXHQFHU
6HTXHQFHVHTXHQFH
6HTXHQFHP\6HTXHQFH QXOO
7UDFNWUDFN


6WULQJ>@LQVWUXPHQW1DPHV ^³%DVV'UXP´³&ORVHG+L+DW´³2SHQ+L+DW´´$FRXVWLF
6QDUH´³&UDVK&\PEDO´³+DQG&ODS´³+LJK7RP´³+L%RQJR´³0DUDFDV´³:KLVWOH´
³/RZ&RQJD´³&RZEHOO´³9LEUDVODS´³/RZPLG7RP´³+LJK$JRJR´³2SHQ+L&RQJD´`

LQW>@LQVWUXPHQWV ^`



 DSSHQGL[$

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[$)LQDO&RGH.LWFKHQ

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ%HDW%R[)LQDO VWDUW8S DUJV>@ DUJV>@LV\RXUXVHU,'VFUHHQQDPH
` U\RXUVFUHHQQDPH IR
$GGDFRPPDQGOLQHDUJXPHQW
LQDOWKH)ODVK
([DPSOHMDYD%HDW%R[)
SXEOLFYRLGVWDUW8S 6WULQJQDPH ^
XVHU1DPH QDPH
RSHQFRQQHFWLRQWRWKHVHUYHU
WU\^
6RFNHWVRFN QHZ6RFNHW ³´ 
1RWKLQJQHZVHWXSW KH
RXW QHZ2EMHFW2XWSXW6WUHDP VRFNJHW2XWSXW6WUHDP 
QHWZRUNL QJ , 2 DQG P DNH DQG
LQ QHZ2EMHFW,QSXW6WUHDP VRFNJHW,QSXW6WUHDP 
VWDUW WKHUHDGH UWKUH DG
7KUHDGUHPRWH QHZ7KUHDG QHZ5HPRWH5HDGHU 
UHPRWHVWDUW 
`FDWFK ([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ ³FRXOGQ¶WFRQQHFW\RX¶OOKDYHWRSOD\DORQH´ 
`
VHW8S0LGL 
EXLOG*8, 
`FORVHVWDUW8S

SXEOLFYRLGEXLOG*8, ^ *8,FRGHQRWKLQJQHZKHUH
WKH)UDPH QHZ-)UDPH ³&\EHU%HDW%R[´ 
%RUGHU/D\RXWOD\RXW QHZ%RUGHU/D\RXW 
-3DQHOEDFNJURXQG QHZ-3DQHO OD\RXW 
EDFNJURXQGVHW%RUGHU %RUGHU)DFWRU\FUHDWH(PSW\%RUGHU  

FKHFNER[/LVW QHZ$UUD\/LVW-&KHFN%R[! 

%R[EXWWRQ%R[ QHZ%R[ %R[/D\RXW<B$;,6 


-%XWWRQVWDUW QHZ-%XWWRQ ³6WDUW´ 
VWDUWDGG$FWLRQ/LVWHQHU QHZ0\6WDUW/LVWHQHU 
EXWWRQ%R[DGG VWDUW 

-%XWWRQVWRS QHZ-%XWWRQ ³6WRS´ 


VWRSDGG$FWLRQ/LVWHQHU QHZ0\6WRS/LVWHQHU 
EXWWRQ%R[DGG VWRS 

-%XWWRQXS7HPSR QHZ-%XWWRQ ³7HPSR8S´ 


XS7HPSRDGG$FWLRQ/LVWHQHU QHZ0\8S7HPSR/LVWHQHU 
EXWWRQ%R[DGG XS7HPSR 

-%XWWRQGRZQ7HPSR QHZ-%XWWRQ ³7HPSR'RZQ´ 


GRZQ7HPSRDGG$FWLRQ/LVWHQHU QHZ0\'RZQ7HPSR/LVWHQHU 
EXWWRQ%R[DGG GRZQ7HPSR 

-%XWWRQVHQG,W QHZ-%XWWRQ ³VHQG,W´ 


VHQG,WDGG$FWLRQ/LVWHQHU QHZ0\6HQG/LVWHQHU 
EXWWRQ%R[DGG VHQG,W 

XVHU0HVVDJH QHZ-7H[W)LHOG 

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDO%HDW%R[FRGH

EXWWRQ%R[DGG XVHU0HVVDJH 

LQFRPLQJ/LVW QHZ-/LVW 
LQFRPLQJ/LVWDGG/LVW6HOHFWLRQ/LVWHQHU QHZ0\/LVW6HOHFWLRQ/LVWHQHU 
LQFRPLQJ/LVWVHW6HOHFWLRQ0RGH /LVW6HOHFWLRQ0RGHO6,1*/(B6(/(&7,21 
-6FUROO3DQHWKH/LVW QHZ-6FUROO3DQH LQFRPLQJ/LVW 
EXWWRQ%R[DGG WKH/LVW 
LQFRPLQJ/LVWVHW/LVW'DWD OLVW9HFWRU QRGDWDWRVWDUWZLWK

%R[QDPH%R[ QHZ%R[ %R[/D\RXW<B$;,6  -/LVWLVDFRPSRQHQWZK ZHKDYHQ·W


IRU LQWL LL ^ XVHGEHIRUH 7KLV LV HUHWKH
\HG
QDPH%R[DGG QHZ/DEHO LQVWUXPHQW1DPHV>L@  LQFRPLQJPHVVDJHVDUHUPDOSOD
GLV
FKD W
` 2QO\LQVWHD GR ID QR
. DW WK H
ZKHUH\RXMXVW/22 \RXFDQ
EDFNJURXQGDGG %RUGHU/D\RXW($67EXWWRQ%R[  PHVVDJHVLQWKLVDSSIURPWKHOLVW
EDFNJURXQGDGG %RUGHU/D\RXW:(67QDPH%R[  6(/(&7DPHVVDJHHDWWDFKHG
WRORDGDQGSOD\WK
WKH)UDPHJHW&RQWHQW3DQH DGG EDFNJURXQG  EHDWSDWWHUQ
*ULG/D\RXWJULG QHZ*ULG/D\RXW  
JULGVHW9JDS  
JULGVHW+JDS  
PDLQ3DQHO QHZ-3DQHO JULG 
EDFNJURXQGDGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 

IRU LQWL LL ^


-&KHFN%R[F QHZ-&KHFN%R[ 
FVHW6HOHFWHG IDOVH 
1RWKLQJHOVHRQWKLVSDJHLVQHZ
FKHFNER[/LVWDGG F 
PDLQ3DQHODGG F 
`HQGORRS

WKH)UDPHVHW%RXQGV  
WKH)UDPHSDFN 
WKH)UDPHVHW9LVLEOH WUXH 
`FORVHEXLOG*8,

SXEOLFYRLGVHW8S0LGL ^
WU\^
VHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
VHTXHQFHURSHQ 
VHTXHQFH QHZ6HTXHQFH 6HTXHQFH334 
DNHD
XHQFHUP7
WUDFN VHTXHQFHFUHDWH7UDFN 
*HWWKH6HT PDNHD UDFN
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
6HTXHQFH DQG

`FORVHVHW8S0LGL

 DSSHQGL[$

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[$)LQDO&RGH.LWFKHQ

SXEOLFYRLGEXLOG7UDFN$QG6WDUW ^
$UUD\/LVW,QWHJHU!WUDFN/LVW QXOOWKLVZLOOKROGWKHLQVWUXPHQWVIRUHDFK
ER[HV
XJKWKHFKRHFDNQ
VHTXHQFHGHOHWH7UDFN WUDFN 
WUDFN VHTXHQFHFUHDWH7UDFN  \Z DON LQ J WK UR W
%XLOGDWUDHLFN
E SLQJWKDW
HW W K U VW DWHDQGPWKDHS 0LGL(YHQWIRULW VLW
IRU LQWL LL ^ WRJ QGPDNLQJ ;$&7/<D
LQVWUXPHQW WWD\FRPSOH[EXWLWLRVU(HIHUWRSUHYLRXV
WUDFN/LVW QHZ$UUD\/LVW,QWHJHU!  7KLVLVSUHHSUHYLRXVFKDSWHUVV H[SODQDWLRQDJDLQ
ZDVLQWK HQVWRJHWWKHIXOO
IRU LQWM MM ^ &RGH.LWFK
-&KHFN%R[MF  -&KHFN%R[ FKHFNER[/LVWJHW M  L 
LI MFLV6HOHFWHG ^

Licensed by
LQWNH\ LQVWUXPHQWV>L@
WUDFN/LVWDGG QHZ,QWHJHU NH\ 
`HOVH^
WUDFN/LVWDGG QXOO EHFDXVHWKLVVORWVKRXOGEHHPSW\LQWKHWUDFN
`
`FORVHLQQHUORRS

Eduard Simons
PDNH7UDFNV WUDFN/LVW 
`FORVHRXWHUORRS
WUDFNDGG PDNH(YHQW  VRZHDOZD\VJRWRIXOOEHDWV
WU\^
VHTXHQFHUVHW6HTXHQFH VHTXHQFH 

104038
VHTXHQFHUVHW/RRS&RXQW VHTXHQFHU/223B&217,18286/< 
VHTXHQFHUVWDUW 
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
`FORVHPHWKRG

SXEOLFFODVV0\6WDUW/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
EXLOG7UDFN$QG6WDUW 
HUV
7KH*8,OLKVWHHQVDPHDVWKH
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV W
([DFWO\ KDSWHU·VYHUVLRQ
SXEOLFFODVV0\6WRS/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^ SUHYLRXVF
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
VHTXHQFHUVWRS 
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV

SXEOLFFODVV0\8S7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
ÀRDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU 
VHTXHQFHUVHW7HPSR)DFWRU ÀRDW WHPSR)DFWRU  
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDO%HDW%R[FRGH

SXEOLFFODVV0\'RZQ7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
ÀRDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU 
VHTXHQFHUVHW7HPSR)DFWRU ÀRDW WHPSR)DFWRU  
`
`

SXEOLFFODVV0\6HQG/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
PDNHDQDUUD\OLVWRIMXVWWKH67$7(RIWKHFKHFNER[HV
ERROHDQ>@FKHFNER[6WDWH QHZERROHDQ>@
IRU LQWL LL ^
FHSW
&KDW&OLHQWHWH[ZRREMHFWV
-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L 
LI FKHFNLV6HOHFWHG ^ H W K H 6LP S OH
ORWOLN HVHULDOL] 
FKHFNER[6WDWH>L@ WUXH
7 K LV LVQHZLWG·VLQDJD6WULQJPHVVDJHDZWWHUQ DQGZULWHWKR VH
`
LQVWHDGRIQVJHQPHVVDJHDQGWKHEHDSXW WS KHVHUYHU
`FORVHORRS
W K H 6WUL FN HW R XW VWUHDP WRW
RWKHVR
6WULQJPHVVDJH7R6HQG QXOO
WU\^
WZRREMHFWVW
RXWZULWH2EMHFW XVHU1DPHQH[W1XP³³XVHU0HVVDJHJHW7H[W 
RXWZULWH2EMHFW FKHFNER[6WDWH 
`FDWFK ([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ ³6RUU\GXGH&RXOGQRWVHQGLWWRWKHVHUYHU´ 
`
XVHU0HVVDJHVHW7H[W ³´ 
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV

SXEOLFFODVV0\/LVW6HOHFWLRQ/LVWHQHULPSOHPHQWV/LVW6HOHFWLRQ/LVWHQHU^
SXEOLFYRLGYDOXH&KDQJHG /LVW6HOHFWLRQ(YHQWOH ^
LI OHJHW9DOXH,V$GMXVWLQJ ^
6WULQJVHOHFWHG  6WULQJ LQFRPLQJ/LVWJHW6HOHFWHG9DOXH 
LI VHOHFWHG QXOO ^
QRZJRWRWKHPDSDQGFKDQJHWKHVHTXHQFH
ERROHDQ>@VHOHFWHG6WDWH  ERROHDQ>@ RWKHU6HTV0DSJHW VHOHFWHG 
FKDQJH6HTXHQFH VHOHFWHG6WDWH 
VHTXHQFHUVWRS 
EXLOG7UDFN$QG6WDUW 
`
` 7KLVLVDOVRQ
ZKHQWKHX HZD/LV
`FORVHYDOXH&KDQJHG W6H
`FORVHLQQHUFODVV : KHQWKHXVH PDGHDVHOHFWLROHQFWLRQ/LVWHQHUWKDWW
VH U
ORDGWKH VV UVHOHFWVDPHVVDJ RQWKHOLVWRIPHVV HOOVXV
FDOOHGRWD
K H U
RFLDWHGEHD H
WSDWWHUQ ZH,00(',$7(/D<JHV
LIWHVWV 6 H T V0 DS DQGV LW·VLQWKH+
/LVW6HOHFEWHLRFDXVHRIOLWWOHTXWLUDNUWSOD\LQJLW7KHUDHVK0DS
Q(YHQWV \WKLQJVDER ·V
XWJHWWLQVJRPH



 DSSHQGL[$

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[$)LQDO&RGH.LWFKHQ
SXEOLFFODVV5HPRWH5HDGHULPSOHPHQWV5XQQDEOH^
D
UHDGLQWGD·DWZLOO
ERROHDQ>@FKHFNER[6WDWH QXOO
6WULQJQDPH7R6KRZ QXOO
W K UHD G MR E D
2EMHFWREM QXOO 7KLVLVWKHVHUYHU,QWKLVFRGH¶GVWKH
SXEOLFYRLGUXQ ^ IURPWKH WZRVHULDOL]HGREMHFWDWWHUQ DQ
WU\^ DOZD\VEHHVVDJHDQGWKHEHDWS YDOXHV
ZKLOH REM LQUHDG2EMHFW  QXOO ^ 6WULQJP WRIFKHFNER[VWDWH
$UUD\/LV
6\VWHPRXWSULQWOQ ³JRWDQREMHFWIURPVHUYHU´ 
6\VWHPRXWSULQWOQ REMJHW&ODVV 
6WULQJQDPH7R6KRZ  6WULQJ REM :KHQD
FKHFNER[6WDWH  ERROHDQ>@ LQUHDG2EMHFW  GHVHULDOLP]HVVDJHFRPHVLQ
RWKHU6HTV0DSSXW QDPH7R6KRZFKHFNER[6WDWH  PHVVDJ H WKHWZRR ZHUHDG
OLVW9HFWRUDGG QDPH7R6KRZ  FKHFNERH[D QGWKH$UUD\/ELVMHFWV WKH
LQFRPLQJ/LVWVHW/LVW'DWD OLVW9HFWRU  WKH-/ VWDWHYDOXHV WRI%RROHDQ
`FORVHZKLOH LVDWZRLVWV FRPSRQHQW$DGQGGDGGLWWR 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH ` RIWKH WHSWKLQJ\R LQJWRD-/
`FORVHUXQ IDVKLRQHOLGVWVGDWD 9HFWXRUNHHSD9HFWRULV W
`FORVHLQQHUFODVV -/LV $UUD\/LVW LVDQROG
W 
IRUZKDWWRXVHWKDW9HFWDRQUGWKHQWHOOWKH
WRGLVSOD\ 
SXEOLFFODVV0\3OD\0LQH/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
LQWKHDOLVVLW·VVRXUFH
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^ W
LI P\6HTXHQFH QXOO ^
VHTXHQFH P\6HTXHQFHUHVWRUHWRP\RULJLQDO
`
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV 7KLVPHWKRGLVFDOOHGZ
KH
VRPHWKLQJIURPWKHOLVW QWKHXVHUVHOHFWV
FK :H,00(',$7(/<
DQJHWKHSDWWHUQWRWK
SXEOLFYRLGFKDQJH6HTXHQFH ERROHDQ>@FKHFNER[6WDWH ^
IRU LQWL LL ^
HRQHWKH\VHOHFWHG
-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L 
LI FKHFNER[6WDWH>L@ ^
FKHFNVHW6HOHFWHG WUXH 
`HOVH^
FKHFNVHW6HOHFWHG IDOVH 

H[DFWO\WKHVDPHDVLW
`
`FORVHORRS $OOWKH0,',VWXIILV
`FORVHFKDQJH6HTXHQFH ZDVLQWKHSUHYLRXVYHUVLRQ
SXEOLFYRLGPDNH7UDFNV $UUD\/LVWOLVW ^
,WHUDWRULW OLVWLWHUDWRU 
IRU LQWL LL ^
,QWHJHUQXP  ,QWHJHU LWQH[W 
LI QXP QXOO ^
LQWQXP.H\ QXPLQW9DOXH 
WUDFNDGG PDNH(YHQW QXP.H\L 
WUDFNDGG PDNH(YHQW QXP.H\L 
`
`FORVHORRS
`FORVHPDNH7UDFNV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDO%HDW%R[FRGH

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 
RQ
`FDWFK ([FHSWLRQH ^`
 - XV W O LN H WKHODVWYHUVL
1RWKLQJQHZ
UHWXUQHYHQW
`FORVHPDNH(YHQW

`FORVHFODVV










6KDUSHQ \RXU SHQFLO
7HATARESOMEOFTHEWAYSYOUCANIMPROVETHISPROGRAM
(EREAREAFEWIDEASTOGETYOUSTARTED
 /NCEYOUSELECTAPATTERN WHATEVERCURRENTPATTERNWASPLAYINGISBLOWN
AWAY)FTHATWASANEWPATTERNYOUWEREWORKINGONORAMODIFICATIONOF
ANOTHERONE YOUREOUTOFLUCK9OUMIGHTWANTTOPOPUPADIALOGBOXTHAT
ASKSTHEUSERIFHEDLIKETOSAVETHECURRENTPATTERN

 )FYOUFAILTOTYPEINACOMMAND LINEARGUMENT YOUJUSTGETANEXCEPTION


WHENYOURUNIT0UTSOMETHINGINTHEMAINMETHODTHATCHECKSTOSEEIF
YOUVEPASSEDINACOMMAND LINEARGUMENT)FTHEUSERDOESNTSUPPLYONE
EITHERPICKADEFAULTORPRINTOUTAMESSAGETHATSAYSTHEYNEEDTORUNIT
AGAIN BUTTHISTIMEWITHANARGUMENTFORTHEIRSCREENNAME

 )TMIGHTBENICETOHAVEAFEATUREWHEREYOUCANCLICKABUTTONANDIT
WILLGENERATEARANDOMPATTERNFORYOU9OUMIGHTHITONONEYOUREALLYLIKE
"ETTERYET HAVEANOTHERFEATURETHATLETSYOULOADINEXISTING@FOUNDATION
PATTERNS LIKEONEFORJAZZ ROCK REGGAE ETCTHATTHEUSERCANADDTO
9OUCANFINDEXISTINGPATTERNSONTHE(EAD&IRST*AVAWEBSTART

 DSSHQGL[$

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[$)LQDO&RGH.LWFKHQ

)LQDO%HDW%R[VHUYHUSURJUDP
0RVWRIWKLVFRGHLVLGHQWLFDOWRWKH6LPSOH&KDW6HUYHUZHPDGHLQWKH
1HWZRUNLQJDQG7KUHDGVFKDSWHU7KHRQO\GLIIHUHQFHLQIDFWLVWKDWWKLVVHUYHU
UHFHLYHVDQGWKHQUHVHQGVWZRVHULDOL]HGREMHFWVLQVWHDGRIDSODLQ6WULQJ
DOWKRXJKRQHRIWKHVHULDOL]HGREMHFWVKDSSHQVWREHD6WULQJ 

LPSRUWMDYDLR 
LPSRUWMDYDQHW 
LPSRUWMDYDXWLO 

SXEOLFFODVV0XVLF6HUYHU^

$UUD\/LVW2EMHFW2XWSXW6WUHDP!FOLHQW2XWSXW6WUHDPV

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ0XVLF6HUYHU JR 
`

SXEOLFFODVV&OLHQW+DQGOHULPSOHPHQWV5XQQDEOH^

2EMHFW,QSXW6WUHDPLQ
6RFNHWFOLHQW6RFNHW

SXEOLF&OLHQW+DQGOHU 6RFNHWVRFNHW ^
WU\^
FOLHQW6RFNHW VRFNHW
LQ QHZ2EMHFW,QSXW6WUHDP FOLHQW6RFNHWJHW,QSXW6WUHDP 

`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVHFRQVWUXFWRU

SXEOLFYRLGUXQ ^
2EMHFWR QXOO
2EMHFWR QXOO
WU\^

ZKLOH R LQUHDG2EMHFW  QXOO ^



R LQUHDG2EMHFW 

6\VWHPRXWSULQWOQ ³UHDGWZRREMHFWV´ 
WHOO(YHU\RQH RR 
`FORVHZKLOH

`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `


`FORVHUXQ
`FORVHLQQHUFODVV

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ILQDO%HDW%R[FRGH

SXEOLFYRLGJR ^
FOLHQW2XWSXW6WUHDPV QHZ$UUD\/LVW2EMHFW2XWSXW6WUHDP! 

WU\^
6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  

ZKLOH WUXH ^
6RFNHWFOLHQW6RFNHW VHUYHU6RFNDFFHSW 
2EMHFW2XWSXW6WUHDPRXW QHZ2EMHFW2XWSXW6WUHDP FOLHQW6RFNHWJHW2XWSXW6WUHDP 
FOLHQW2XWSXW6WUHDPVDGG RXW 

7KUHDGW QHZ7KUHDG QHZ&OLHQW+DQGOHU FOLHQW6RFNHW 


WVWDUW 

6\VWHPRXWSULQWOQ ³JRWDFRQQHFWLRQ´ 
`
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`FORVHJR

SXEOLFYRLGWHOO(YHU\RQH 2EMHFWRQH2EMHFWWZR ^
,WHUDWRULW FOLHQW2XWSXW6WUHDPVLWHUDWRU 
ZKLOH LWKDV1H[W ^
WU\^
2EMHFW2XWSXW6WUHDPRXW  2EMHFW2XWSXW6WUHDP LWQH[W 
RXWZULWH2EMHFW RQH 
RXWZULWH2EMHFW WZR 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`
`FORVHWHOO(YHU\RQH

`FORVHFODVV

 DSSHQGL[$

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
$SSHQGL[%
7KH7RS7HQ7RSLFVWKDWDOPRVWPDGHLWLQWRWKH5HDO%RRN

<RXPHDQWKHUH·VVWLOO
025("'RHVQ·WWKLV
ERRN(9(5HQG"

7ECOVEREDALOTOFGROUND ANDYOUREALMOSTFINISHEDWITHTHISBOOK7ELLMISSYOU BUTBEFORE


WELETYOUGO WEWOULDNTFEELRIGHTABOUTSENDINGYOUOUTINTO*AVA,ANDWITHOUTALITTLEMORE
PREPARATION7ECANTPOSSIBLYFITEVERYTHINGYOULLNEEDTOKNOWINTOTHISRELATIVELYSMALLAPPENDIX
!CTUALLY WEDIDORIGINALLYINCLUDEEVERYTHINGYOUNEEDTOKNOWABOUT*AVANOTALREADYCOVEREDBY
THEOTHERCHAPTERS BYREDUCINGTHETYPEPOINTSIZETO)TALLFIT BUTNOBODYCOULDREADIT3O
WETHREWMOSTOFITAWAY BUTKEPTTHEBESTBITSFORTHIS4OP4ENAPPENDIX

4HISREALLYISTHEENDOFTHEBOOK%XCEPTFORTHEINDEXAMUST READ 

WKLVLVDQHZDSSHQGL[ 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ELWPDQLSXODWLRQ

%LW0DQLSXODWLRQ
?PaLWaW]KIZM' 7KH6KLIW2SHUDWRUV
4HESEOPERATORSTAKEASINGLEINTEGERPRIMITIVEANDSHIFTOR
7EVETALKEDABOUTTHEFACTTHATTHEREAREBITSINABYTE SLIDE ALLOFITSBITSINONEDIRECTIONORANOTHER)FYOUWANT
BITSINASHORT ANDSOON9OUMIGHTHAVEOCCASIONTO TODUSTOFFYOURBINARYMATHSKILLS YOUMIGHTREALIZETHAT
TURNINDIVIDUALBITSONOROFF&ORINSTANCEYOUMIGHTlND SHIFTINGBITSLEFTEFFECTIVELYMULTIPLIESANUMBERBYAPOWEROF
YOURSELFWRITINGCODEFORYOURNEW*AVAENABLEDTOASTER TWO ANDSHIFTINGBITSRIGHTEFFECTIVELYDIVIDESANUMBERBYA
ANDREALIZETHATDUETOSEVEREMEMORYLIMITATIONS CERTAIN POWEROFTWO
TOASTERSETTINGSARECONTROLLEDATTHEBITLEVEL&OREASIER
READING WERESHOWINGONLYTHELASTBITSINTHECOMMENTS 7ELLUSETHEFOLLOWINGEXAMPLEFORTHENEXTTHREEOPERATORS
RATHERTHANTHEFULLFORANINT 
INTX BITSARE
%LWZLVH1272SHUDWRUa /K OK WEVEBEENPUTTINGITOFF HEREISTHEWORLDS
4HISOPERATOR@mIPSALLTHEBITSOFAPRIMITIVE SHORTESTEXPLANATIONOFSTORINGNEGATIVENUMBERS AND
TWOSCOMPLEMENT2EMEMBER THELEFTMOSTBITOFANINTEGER
INTXBITSARE NUMBERISCALLEDTHESIGNBIT!NEGATIVEINTEGERNUMBERIN
*AVAALWAYSHASITSSIGNBITTURNEDONIESETTO !POSITIVE
X^XBITSARENOW
INTEGERNUMBERALWAYSHASITSSIGNBITTURNEDOFF *AVA
USESTHETWOSCOMPLEMENTFORMULATOSTORENEGATIVENUMBERS
4HENEXTTHREEOPERATORSCOMPARETWOPRIMITIVESONABIT 4OCHANGEANUMBERSSIGNUSINGTWOSCOMPLEMENT mIPALL
BYBITBASIS ANDRETURNARESULTBASEDONCOMPARINGTHESE THEBITS THENADDWITHABYTE FOREXAMPLE THATWOULD
BITS7ELLUSETHEFOLLOWINGEXAMPLEFORTHENEXTTHREE MEANADDINGTOTHEmIPPEDVALUE 
OPERATORS

INTXBITSARE
5LJKW6KLIW2SHUDWRU!!
4HISOPERATORSHIFTSALLOFANUMBERSBITSRIGHTBYACERTAIN
INTYBITSARE NUMBER ANDlLLSALLOFTHEBITSONTHELEFTSIDEWITHWHATEVER
THEORIGINALLEFTMOSTBITWAS4HESIGNBITDOESNOTCHANGE

%LWZLVH$1'2SHUDWRU INTYXBITSARE
4HISOPERATORRETURNSAVALUEWHOSEBITSARETURNEDONONLY
IFBOTHORIGINALBITSARETURNEDON
8QVLJQHG5LJKW6KLIW2SHUDWRU!!!
INTAXYBITSARE *USTLIKETHERIGHTSHIFTOPERATOR"54IT!,7!93lLLSTHE
LEFTMOSTBITSWITHZEROS4HESIGNBITMIGHTCHANGE

%LWZLVH252SHUDWRU_
4HISOPERATORRETURNSAVALUEWHOSEBITSARETURNEDONONLY INTYXBITSARE
IFEITHEROFTHEORIGINALBITSARETURNEDON

INTAX\YBITSARE /HIW6KLIW2SHUDWRU
*USTLIKETHEUNSIGNEDRIGHTSHIFTOPERATOR BUTINTHEOTHER
DIRECTIONTHERIGHTMOSTBITSARElLLEDWITHZEROS4HESIGNBIT
%LWZLVH;25 H[FOXVLYH25 2SHUDWRUA MIGHTCHANGE
4HISOPERATORRETURNSAVALUEWHOSEBITSARETURNEDONONLY
IFEXACTLYONEOFTHEORIGINALBITSARETURNEDON INTYXBITSARE

INTAX>YBITSARE

 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[%7RS7HQ5HIHUHQFH

,PPXWDELOLW\

?PaLWaW]KIZM\PI\;\ZQVO[IZM1UU]\IJTM' ?PaLWaW]KIZM\PI\?ZIXXMZ[IZM
7HENYOUR*AVAPROGRAMSSTARTTOGETBIG YOULL 1UU]\IJTM'
INEVITABLYENDUPWITHLOTSANDLOTSOF3TRINGOBJECTS )NTHE-ATHCHAPTERWETALKEDABOUTTHETWOMAIN
&ORSECURITYPURPOSES ANDFORTHESAKEOFCONSERVING USESOFTHEWRAPPERCLASSES
MEMORYREMEMBERYOUR*AVAPROGRAMSCANRUNON
TEENY*AVA ENABLEDCELLPHONES 3TRINGSIN*AVAARE s7RAPPINGAPRIMITIVESOITCANPRETENDTOBEAN
IMMUTABLE7HATTHISM
EANSISTHATWHENYOUSAY OBJECT
s5SINGTHESTATICUTILITYMETHODSFOREXAMPLE
3TRINGShv )NTEGERPARSE)NT 
FORINTXXX [ )TSIMPORTANTTOREMEMBERTHATWHENYOUCREATEA
SS X WRAPPEROBJECTLIKE
]
7HATSACTUALLYHAPPENINGISTHATYOURECREATINGTEN )NTEGERI7RAPNEW)NTEGER 
3TRINGOBJECTSWITHVALUEShv hv hv THROUGH
hv )NTHEENDSISREFERRINGTOTHE3TRING
4HATSITFORTHATWRAPPEROBJECT)TSVALUEWILLALWAYS
WITHTHEVALUEhv BUTATTHISPOINTTHERE
BE4HEREISNOSETTERMETHODFORAWRAPPEROBJECT
ARETEN3TRINGSINEXISTENCE
9OUCAN OFCOURSE REFERI7RAPTOADIFFERENTWRAPPER
7HENEVERYOUMAKEANEW3TRING THE*6-PUTSIT OBJECT BUTTHENYOULLHAVETWOOBJECTS/NCEYOU
INTOASPECIALPARTOFMEMORYCALLEDTHE@3TRING0OOL CREATEAWRAPPEROBJECT THERESNOWAYTOCHANGE
SOUNDSREFRESHINGDOESNTIT )FTHEREISALREADY THEVALUEOFTHATOBJECT
A3TRINGINTHE3TRING0OOLWITHTHESAMEVALUE THE
*6-DOESNTCREATEADUPLICATE ITSIMPLYREFERSYOUR
REFERENCEVARIABLETOTHEEXISTINGENTRY4HE*6-CAN
GETAWAYWITHTHISBECAUSE3TRINGSAREIMMUTABLEONE
REFERENCEVARIABLECANTCHANGEA3TRINGSVALUEOUT
FROMUNDERANOTHERREFERENCEVARIABLEREFERRINGTO
THESAME3TRING
0DNH LW 6WLF
4HEOTHERISSUEWITHTHE3TRINGPOOLISTHATTHE N
'ARBAGE#OLLECTORDOESNTGOTHERE3OINOUREXAMPLE
UNLESSBYCOINCIDENCEYOULATERHAPPENTOMAKEA 2OSESARER
ED VIOLETSA
3TRINGCALLEDhv FORINSTANCE THElRSTNINE 3TRINGSARE REBLUE
IMMUTAB
3TRINGSCREATEDINOURFORLOOPWILLJUSTSITAROUND LE WRAPPE
RSARET OO
WASTINGMEMORY
2KORRN$ERQ
XV0DNHLW6W
+RZGRHVWKLVVDYHPHPRU\" 5LJKWKHUHLQW LFN
KHDSSHQGL[
7ELL IFYOURENOTCAREFUL ITDOESNT"UTIFYOUUN
DERSTANDHOW3TRINGIMMUTABILITYWORKS THANYOU
CANSOMETIMESTAKEADVANTAGEOFITTOSAVEMEMORY
)FYOUHAVETODOALOTOF3TRINGMANIPULATIONSLIKE
CONCATENATIONS ETC HOWEVER THEREISANOTHERCLASS
3TRING"UILDER BETTERSUITEDFORTHATPURPOSE7ELL
TALKMOREABOUT3TRING"UILDERINAFEWPAGES

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DVVHUWLRQV

$VVHUWLRQV
7EHAVENTTALKEDMUCHABOUTHOWTODEBUGYOUR*AVA +RZWRPDNH$VVHUWLRQVZRUN
PROGRAMWHILEYOUREDEVELOPINGIT7EBELIEVETHAT
YOUSHOULDLEARN*AVAATTHECOMMANDLINE ASWEVE !DDASSERTIONSTATEMENTSTOYOURCODEWHEREVERYOU
BEENDOINGTHROUGHOUTTHEBOOK/NCEYOUREA*AVA BELIEVETHATSOMETHINGMUSTBETRUE&ORINSTANCE
PRO IFYOUDECIDETOUSEAN)$%
YOUMIGHTHAVE
DVVHUW KHLJKW! 
OTHERDEBUGGINGTOOLSTOUSE)NTHEOLDDAYS WHEN
A*AVAPROGRAMMERWANTEDTODEBUGHERCODE SHED LIWUXHSURJUDPFRQWLQXHVQRUPDOO\
STICKABUNCHOF3YSTEMOUTPRINTLN STATEMENTS
LIIDOVHWKURZDQ$VVHUWLRQ(UURU
THROUGHOUTTHEPROGRAM PRINTINGCURRENTVARIABLE 
VALUES ANDh)GOTHEREvMESSAGES TOSEEIFTHEmOW 9OUCANADDALITTLEMOREINFORMATIONTOTHESTACK
CONTROLWASWORKINGPROPERLY4HEREADY BAKECODE TRACEBYSAYING
INCHAPTERLEFTSOMEDEBUGGING@PRINTSTATEMENTS
INTHECODE 4HEN ONCETHEPROGRAMWASWORKING DVVHUW KHLJKW! ³KHLJKW ³
CORRECTLY SHEDGOTHROUGHANDTAKEALLTHOSE3YSTEM KHLJKW³ZHLJKW ³ZHLJKW
OUTPRINTLN STATEMENTSBACKOUTAGAIN)TWAS
4HEEXPRESSIONAFTERTHECOLONCANBEANYLEGAL
TEDIOUSANDERRORPRONE"UTASOF*AVAAND
*AVAEXPRESSIONTHATRESOLVESTOANON NULLVALUE"UT
DEBUGGINGGOTAWHOLELOTEASIER4HEANSWER
WHATEVERYOUDO DONTCREATEASSERTIONSTHATCHANGEAN
$VVHUWLRQV OBJECTSSTATE)FYOUDO ENABLINGASSERTIONSATRUNTIME
MIGHTCHANGEHOWYOURPROGRAMPERFORMS
!SSERTIONSARELIKE3YSTEMOUTPRINTLN STATEMENTS
ONSTEROIDS!DDTHEMTOYOURCODEASYOUWOULD 
ADDPRINTLNSTATEMENTS4HE*AVACOMPILER &RPSLOLQJDQGUXQQLQJZLWK
ASSUMESYOULLBECOMPILINGSOURCElLESTHATARE $VVHUWLRQV
COMPATIBLE SOASOF*AVA COMPILINGWITHASSERTIONS
4OCOMPILEWITHASSERTIONS
ISENABLEDBYDEFAULT
!TRUNTIME IFYOUDONOTHING THEASSERTSTATEMENTS MDYDF7HVW'ULYH*DPHMDYD
YOUADDEDTOYOURCODEWILLBEIGNOREDBYTHE*6-
.OTICETHATNOCOMMANDLINEOPTIONSWERE
ANDWONTSLOWDOWNYOURPROGRAM"UTIFYOUTELLTHE
*6-TOENABLEYOURASSERTIONS THEYWILLHELPYOUDO NECESSARY
YOURDEBUGGING WITHOUTCHANGINGALINEOFCODE 4ORUNWITHASSERTIONS
3OMEFOLKSHAVECOMPLAINEDABOUTHAVINGTOLEAVE
ASSERTSTATEMENTSINTHEIRPRODUCTIONCODE BUT MDYDHD7HVW'ULYH*DPH
LEAVINGTHEMINCANBEREALLYVALUABLEWHENYOUR
CODEISALREADYDEPLOYEDINTHElELD)FYOURCLIENT
ISHAVINGTROUBLE YOUCANINSTRUCTTHECLIENTTORUN
THEPROGRAMWITHASSERTIONSENABLED ANDHAVETHE
CLIENTSENDYOUTHEOUTPUT)FTHEASSERTIONSWERE
STRIPPEDOUTOFYOURDEPLOYEDCODE YOUDNEVER
HAVETHATOPTION!NDTHEREISALMOSTNODOWNSIDE
WHENASSERTIONSARENOTENABLED THEYARECOMPLETELY
IGNOREDBYTHE*6- SOTHERESNOPERFORMANCEHITTO
)$%STANDSFOR)NTEGRATED$EVELOPMENT%NVIRONMENT
WORRYABOUT ANDINCLUDESTOOLSSUCHAS%CLIPSE "ORLANDS*"UILDER OR
THEOPENSOURCE.ET"EANSNETBEANSORG 

 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[%7RS7HQ5HIHUHQFH

%ORFN6FRSH
)NCHAPTER WETALKEDABOUTHOWLOCALVARIABLES
LIVEONLYASLONGASTHEMETHODINWHICHTHEYRE
DECLAREDSTAYSONTHESTACK"UTSOMEVARIABLESCAN
HAVEEVENSHORTERLIFESPANS)NSIDEOFMETHODS WE
OFTENCREATEBLOCKSOFCODE7EVEBEENDOINGTHIS
ALLALONG BUTWEHAVENTEXPLICITLYTALKEDINTERMSOF
BLOCKS4YPICALLY BLOCKSOFCODEOCCURWITHINMETHODS
ANDAREBOUNDEDBYCURLYBRACES[]3OMECOMMON
EXAMPLESOFCODEBLOCKSTHATYOULLRECOGNIZEINCLUDE
LOOPSFOR WHILE ANDCONDITIONALEXPRESSIONSLIKEIF

Licensed by
STATEMENTS 
EORFN
KHPHWKRG
VWDUWRIW
,ETSLOOKATANEXAMPLE
YRLGGR6WXII ^ HQWLUHPHWKRG
WKH
ORFDOYDULDEOHVFRSHGWR

Eduard Simons
LQW[ 
EORFNDQG\LV
IRU LQW\ \\ ^ EHJLQQLQJRIDIRUHORIRRSUORRS
 VFRSHGWRRQO\WK
[ [\ ERWKLQVFRSH
1RSUREOHP[DQG\DUH

104038
`
HQGRIWKHIRUORRSEORFN

[ [ \
$D FN:RQ·WFRPSLOH\ XWRIVFR
` WKHZD\LWZRUNVLQVRPLVR SHKHUH VLVQRW
HRWKHUODQJXDJHVVREWKL
HZDUH
HQGRIWKHPHWKRGEORFNQRZ[
LVDOVRRXWRIVFRSH


)NTHEPREVIOUSEXAMPLE YWASABLOCKVARIABLE
DECLAREDINSIDEABLOCK ANDYWENTOUTOFSCOPEAS
SOONASTHEFORLOOPENDED9OUR*AVAPROGRAMSWILL
BEMOREDEBUGGABLEANDEXPANDABLEIFYOUUSELOCAL
VARIABLESINSTEADOFINSTANCEVARIABLES ANDBLOCK
VARIABLESINSTEADOFLOCALVARIABLES WHENEVERPOSSIBLE
4HECOMPILERWILLMAKESURETHATYOUDONTTRYTOUSE
AVARIABLETHATSGONEOUTOFSCOPE SOYOUDONTHAVE
TOWORRYABOUTRUNTIMEMELTDOWNS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
OLQNHGLQYRFDWLRQV

/LQNHG,QYRFDWLRQV
7HILEYOUDIDSEEALITTLEOFTHISINTHISBOOK WETRIEDTOKEEPOURSYNTAXASCLEANAND
READABLEASPOSSIBLE4HEREARE HOWEVER MANYLEGALSHORTCUTSIN*AVA THATYOULLNODOUBT
BEEXPOSEDTO ESPECIALLYIFYOUHAVETOREADALOTCODEYOUDIDNTWRITE/NEOFTHEMORE
COMMONCONSTRUCTSYOUWILLENCOUNTERISKNOWNASLINKEDINVOCATIONS&OREXAMPLE
6WULQJ%XIIHUVE QHZ6WULQJ%XIIHU ³VSULQJ´ 
VE VEGHOHWH  LQVHUW ´XPPH´ GHOHWH&KDU$W  
6\VWHPRXWSULQWOQ ³VE ³VE 
UHVXOWLVVE VXPPHU
7HATINTHEWORLDISHAPPENINGINTHESECONDLINEOFCODE!DMITTEDLY THISISACONTRIVED
EXAMPLE BUTYOUNEEDTOLEARNHOWTODECIPHERTHESE
 7ORKFROMLEFTTORIGHT
 &INDTHERESULTOFTHELEFTMOSTMETHODCALL INTHISCASEVEGHOHWH  )FYOU
LOOKUP3TRING"UFFERINTHE!0)DOCS YOULLSEETHATTHEGHOHWH METHODRETURNSA
3TRING"UFFEROBJECT4HERESULTOFRUNNINGTHEGHOHWH METHODISA3TRING"UFFEROBJECT
WITHTHEVALUEhSPRv
 4HENEXTLEFTMOSTMETHODLQVHUW ISCALLEDONTHENEWLYCREATED3TRING"UFFER
OBJECThSPRv4HERESULTOFTHATMETHODCALLTHELQVHUW METHOD ISALSOA3TRING"UFFER
OBJECTALTHOUGHITDOESNTHAVETOBETHESAMETYPEASTHEPREVIOUSMETHODRETURN ANDSO
ITGOES THERETURNEDOBJECTISUSEDTOCALLTHENEXTMETHODTOTHERIGHT)NTHEORY YOUCAN
LINKASMANYMETHODSASYOUWANTINASINGLESTATEMENTALTHOUGHITSRARETOSEEMORETHAN
THREELINKEDMETHODSINASINGLESTATEMENT 7ITHOUTLINKING THESECONDLINEOFCODEFROM
ABOVEWOULDBEMOREREADABLE ANDLOOKSOMETHINGLIKETHIS

VE VEGHOHWH  


VE VELQVHUW ´XPPH´ 
VE VEGHOHWH&KDU$W  
"UTHERESAMORECOMMON ANDUSEFULEXAMPLE THATYOUSAWUSUSING BUTWETHOUGHT
WEDPOINTITOUTAGAINHERE4HISISFORWHENYOURMAIN METHODNEEDSTOINVOKEAN
INSTANCEMETHODOFTHEMAINCLASS BUTYOUDONTNEEDTOKEEPAREFERENCETOTHEINSTANCEOF
THECLASS)NOTHERWORDS THEMAIN NEEDSTOCREATETHEINSTANCEONLYSOTHATMAIN CAN
INVOKEONEOFTHEINSTANCESMETHODS
FODVV)RR^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV >
EX DERXW
WZHGRQ·WFDUDVHVLJ
QHZ)RR JR 
ZHZ DQ W WR F DOO J R  U QLQJ
` WKH)RRLQVWDQFMH HVRZHGRQ·WEUHRWQFKHH
RDUHIH
YRLGJR ^ WKHQHZ)RRRE FWW
KHUH¶VZKDWZH5($//<ZDQW
`
`

 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DSSHQGL[%7RS7HQ5HIHUHQFH

$QRQ\PRXVDQG6WDWLF1HVWHG&ODVVHV

1HVWHGFODVVHVFRPHLQPDQ\ÁDYRUV
)NTHE'5)EVENT HANDLINGSECTIONOFTHEBOOK WESTARTEDUSINGINNERNESTED CLASSESASA
SOLUTIONFORIMPLEMENTINGLISTENERINTERFACES4HATSTHEMOSTCOMMON PRACTICAL ANDREAD
ABLEFORMOFANINNERCLASSˆWHERETHECLASSISSIMPLYNESTEDWITHINTHECURLYBRACESOFANOTHER
ENCLOSINGCLASS!NDREMEMBER ITMEANSYOUNEEDANINSTANCEOFTHEOUTERCLASSINORDERTOGET
ANINSTANCEOFTHEINNERCLASS BECAUSETHEINNERCLASSISAMEMBEROFTHEOUTERENCLOSINGCLASS
"UTTHEREAREOTHERKINDSOFINNERCLASSESINCLUDINGSTATICANDANONYMOUS7ERENOTGOING
INTOTHEDETAILSHERE BUTWEDONTWANTYOUTOBETHROWNBYSTRANGESYNTAXWHENYOUSEEITIN
SOMEONESCODE"ECAUSEOUTOFVIRTUALLYANYTHINGYOUCANDOWITHTHE*AVALANGUAGE PERHAPS
NOTHINGPRODUCESMOREBIZARRE LOOKINGCODETHANANONYMOUSINNERCLASSES"UTWELLSTARTWITH
SOMETHINGSIMPLERˆSTATICNESTEDCLASSES
6WDWLFQHVWHGFODVVHV
9OUALREADYKNOWWHATSTATICMEANSˆSOMETHINGTIEDTOTHECLASS NOTAPARTICULARINSTANCE!
STATICNESTEDCLASSLOOKSJUSTLIKETHENON STATICCLASSESWEUSEDFOREVENTLISTENERS EXCEPTTHEYRE
MARKEDWITHTHEKEYWORDVWDWLF

VLVMXVWWKDW³D
SXEOLFFODVV)RR2XWHU^ $VWDWLFQHVWHGZLFWKODVLQDQRWKHUDQG
FODVVHQFORVHG HVWDWLFPRGLILHU
VWDWLFFODVV%DU,QQHU^ PDUNHGZLWKWK
YRLGVD\,W ^
6\VWHPRXWSULQWOQ ³PHWKRGRIDVWDWLFLQQHUFODVV´ 
`
`
%HFDXVHDVWDW
` XVHDQLQVWDQFHRLFIQHWKVWHGFODVVLVVWDWLF\RXGRQ·W
QDPHRIWKHFODVVW HRXWHUFODVV<RXMXVWXVHWKH
PHWKRGVRUDFFHVVVWKHVDPHZD\\RXLQYRNHVWDWLF
FODVV7HVW^ DWLFYDULDEOHV
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)RR2XWHU%DU,QQHUIRR QHZ)RR2XWHU%DU,QQHU 
IRRVD\,W 
`
`
3TATICNESTEDCLASSESAREMORELIKEREGULARNON NESTEDCLASSESINTHATTHEYDONTENJOYASPECIALRELATION

SHIPWITHANENCLOSINGOUTEROBJECT"UTBECAUSESTATICNESTEDCLASSESARESTILLCONSIDEREDAMEMBEROF
THEENCLOSINGOUTERCLASS THEYSTILLGETACCESSTOANYPRIVATEMEMBERSOFTHEOUTERCLASSBUTONLYTHE
ONESTHATAREALSOSTATIC3INCETHESTATICNESTEDCLASSISNTCONNECTEDTOANINSTANCEOFTHEOUTERCLASS IT
DOESNTHAVEANYSPECIALWAYTOACCESSTHENON STATICINSTANCE VARIABLESANDMETHODS

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

$QRQ\PRXVDQG6WDWLF1HVWHG&ODVVHVFRQWLQXHG

7KHGLIIHUHQFHEHWZHHQQHVWHGDQGLQQHU
!NY*AVACLASSTHATSDElNEDWITHINTHESCOPEOFANOTHERCLASSISKNOWNASANESTEDCLASS)T
DOESNTMATTERIFITSANONYMOUS STATIC NORMAL WHATEVER)FITSINSIDEANOTHERCLASS ITS
TECHNICALLYCONSIDEREDANESTEDCLASS"UTNON STATICNESTEDCLASSESAREOFTENREFERREDTOASINNER
CLASSES WHICHISWHATWECALLEDTHEMEARLIERINTHEBOOK4HEBOTTOMLINEALLINNERCLASSESARE
NESTEDCLASSES BUTNOTALLNESTEDCLASSESAREINNERCLASSES
$QRQ\PRXVLQQHUFODVVHV
)MAGINEYOUREWRITINGSOME'5)CODE ANDSUDDENLYREALIZETHATYOUNEEDANINSTANCE
OFACLASSTHATIMPLEMENTS!CTION,ISTENER"UTYOUREALIZEYOUDONTHAVEANINSTANCEOFAN
!CTION,ISTENER4HENYOUREALIZETHATYOUALSONEVERWROTEACLASSFORTHATLISTENER9OUHAVETWO
CHOICESATTHATPOINT
 7RITEANINNERCLASSINYOURCODE THEWAYWEDIDINOUR'5)CODE ANDTHENINSTANTIATEIT
ANDPASSTHATINSTANCEINTOTHEBUTTONSEVENTREGISTRATIONADD!CTION,ISTENER METHOD
/2
 #REATEANANONYMOUSINNERCLASSANDINSTANTIATEIT RIGHTTHERE JUST IN TIME,ITERALLYRIGHT
WHEREYOUAREATTHEPOINTYOUNEEDTHELISTENEROBJECT4HATSRIGHT YOUCREATETHECLASSANDTHE
INSTANCEINTHEPLACEWHEREYOUDNORMALLYBESUPPLYINGJUSTTHEINSTANCE4HINKABOUTTHATFOR
AMOMENTˆITMEANSYOUPASSTHEENTIRECLASSWHEREYOUDNORMALLYPASSONLYANINSTANCEINTOA
METHODARGUMENT
QRZZH
DEXWWRQKDQWGKHEXWWRQ
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYD[VZLQJ  P H DQ G D G G HG
:HPDGHDJLIVW UD WHQHUZLW HPHQWVWKH
SXEOLFFODVV7HVW$QRQ^ HUDQDFWLRQOLV SO
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^ QHHGWRUH QHYHUPDGHDFODVVWKDWLP
([FH SW Z H
LQWHUIDFH
-)UDPHIUDPH QHZ-)UDPH  $FWLRQ/LVWHQHU HW KL QJ O LN
LQ
HWKLV³SDVVDVLQVJDQ
R VR P DQLQQHUFOHU DQG
-%XWWRQEXWWRQ QHZ-%XWWRQ ³FOLFN´  1RUPDOO\ZFHH·WGGR DQ LQVWDQFHR$IFW LVWHQ
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
DUH I HU HQ
DVV W KD W L P SOHPHQW G LRQ/
V
EXWWRQDGG$FWLRQ/LVWHQHU TXLW/LVWHQHU 
LQQHUFO HUIRUPHG PHWKR
WKHDFWLRQ3 W
7KLVVWDWHP HQ W 
QV W HD G R I S DV VLQJLQDQREMHZHF
EXWWRQDGG$FWLRQ/LVWHQHU QHZ$FWLRQ/LVWHQHU ^ %XWQRZL ZHSDVVLQWKHZKROH H Q
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
PHG UHIHUHQFH LWLRQ,QRWKHUZRUGVZF
6\VWHPH[LW   FODVVGHILQFODVVWKDWLPSOHPHQWV$(:(
` ZULWHWKH HU5,*+7+(5(:+(5HVDQ
WLRQ/LVWHQ7KHV\QWD[DOVRFUHDWO\
`   1((',7 IWKHFODVVDXWRPDWLFDO
QHZ $ FWL RQ/LVWHQHU µH YHQ
1R WLF HW KDWZH VD \´ VR\RX LQVWDQFHR
WKRXJK$FWLRQ/LVWHQHQFH ULVDQLQWHUIDFHDQG\QW D[
 FDQ·W0$.(DQLQVWD RI LW%XWWKLVV
HQGVGRZQKHUH UHD OO\PHDQV´F UHD WH DQ HZ FODVV ZLWKQRQDPH 
WLR Q/ LVWHQHULQWHUIDFH

WKDWLPSOHPHQWVWKH$F LPSOHPHQWDWLRQRIWKH
DQG E\WKHZD\KHUH·VWKH Q3 HUI RUPHG 
`
`
LQWHUIDFHPHWKRGVDFWLR
 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
DFFHVVOHYHOV DSSHQGL[%7RS7HQ5HIHUHQFH

$FFHVV/HYHOVDQG$FFHVV0RGLÀHUV :KR6HHV:KDW

*AVAHASFOURACCESSLEVELSANDTHREEACCESSMODIlERS4HEREAREONLYTHREEMODIlERSBECAUSE
THEDEFAULTWHATYOUGETWHENYOUDONTUSEANYACCESSMODIlER ISONEOFTHEFOUR
ACCESSLEVELS

$FFHVV/HYHOVINORDEROFHOWRESTRICTIVETHEYARE FROMLEASTTOMOSTRESTRICTIVE

PUBLIC SXEOLFPHDQVDQ\FRGHDQ\ZKHUHFDQDFFHVVWKHSXEOLFWKLQJ E\


¶WKLQJ·ZHPHDQFODVVYDULDEOHPHWKRGFRQVWUXFWRUHWF 
PROTECTED SURWHFWHGZRUNVMXVWOLNHGHIDXOW FRGHLQWKHVDPHSDFNDJHKDVDFFHVV (;&(37LW
DOVRDOORZVVXEFODVVHVRXWVLGHWKHSDFNDJHWRLQKHULWWKHSURWHFWHGWKLQJ
DEFAULT
GHIDXOWDFFHVVPHDQVWKDWRQO\FRGHZLWKLQWKHVDPHSDFNDJHDV
WKHFODVVZLWKWKHGHIDXOWWKLQJFDQDFFHVVWKHGHIDXOWWKLQJ
PRIVATE
SULYDWHPHDQVWKDWRQO\FRGHZLWKLQWKHVDPHFODVVFDQDFFHVVWKHSULYDWHWKLQJ
.HHSLQPLQGLWPHDQVSULYDWHWRWKHFODVVQRWSULYDWHWRWKHREMHFW2QH'RJ
FDQVHHDQRWKHU'RJREMHFW·VSULYDWHVWXIIEXWD&DWFDQ·WVHHD'RJ·VSULYDWHV
$FFHVVPRGLÀHUV

SXEOLF
SURWHFWHG
SULYDWH

-OSTOFTHETIMEYOULLUSEONLYPUBLICANDPRIVATEACCESSLEVELS
SXEOLF
5SEPUBLICFORCLASSES CONSTANTSSTATIClNALVARIABLES ANDMETHODSTHATYOURE
EXPOSINGTOOTHERCODEFOREXAMPLEGETTERSANDSETTERS ANDMOSTCONSTRUCTORS
SULYDWH
5SEPRIVATEFORVIRTUALLYALLINSTANCEVARIABLES ANDFORMETHODSTHATYOUDONTWANT
OUTSIDECODETOCALLINOTHERWORDS METHODSUSEDBYTHEPUBLICMETHODSOFYOURCLASS 
"UTALTHOUGHYOUMIGHTNOTUSETHEOTHERTWOPROTECTEDANDDEFAULT YOUSTILLNEEDTO
KNOWWHATTHEYDOBECAUSEYOULLSEETHEMINOTHERCODE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

$FFHVV/HYHOVDQG$FFHVV0RGLÀHUVFRQW

GHIDXOWDQGSURWHFWHG

GHIDXOW
"OTHPROTECTEDANDDEFAULTACCESSLEVELSARETIEDTOPACKAGES$EFAULTACCESSISSIMPLEˆIT
MEANSTHATONLYCODEWITHINTHESAMEPACKAGECANACCESSCODEWITHDEFAULTACCESS3OA
DEFAULTCLASS FOREXAMPLEWHICHMEANSACLASSTHATISNTEXPLICITLYDECLAREDASPUBLIC CAN
BEACCESSEDBYONLYCLASSESWITHINTHESAMEPACKAGEASTHEDEFAULTCLASS
"UTWHATDOESITREALLYMEANTOACCESSACLASS#ODETHATDOESNOTHAVEACCESSTOACLASSIS
NOTALLOWEDTOEVENTHINKABOUTTHECLASS!NDBYTHINK WEMEANUSETHECLASSINCODE
&OREXAMPLE IFYOUDONTHAVEACCESSTOACLASS BECAUSEOFACCESSRESTRICTION YOUARENT
ALLOWEDTOINSTANTIATETHECLASSOREVENDECLAREITASATYPEFORAVARIABLE ARGUMENT OR
RETURNVALUE9OUSIMPLYCANTTYPEITINTOYOURCODEATALL)FYOUDO THECOMPILERWILL
COMPLAIN
4HINKABOUTTHEIMPLICATIONSˆADEFAULTCLASSWITHPUBLICMETHODSMEANSTHEPUBLIC
METHODSARENTREALLYPUBLICATALL9OUCANTACCESSAMETHODIFYOUCANTSEETHECLASS
7HYWOULDANYONEWANTTORESTRICTACCESSTOCODEWITHINTHESAMEPACKAGE4YPICALLY
PACKAGESAREDESIGNEDASAGROUPOFCLASSESTHATWORKTOGETHERASARELATEDSET3OITMIGHT
MAKESENSETHATCLASSESWITHINTHESAMEPACKAGENEEDTOACCESSONEANOTHERSCODE WHILE
ASAPACKAGE ONLYASMALLNUMBEROFCLASSESANDMETHODSAREEXPOSEDTOTHEOUTSIDE
WORLDIECODEOUTSIDETHATPACKAGE 

/+ THATSDEFAULT)TSSIMPLEˆIFSOMETHINGHASDEFAULTACCESSWHICH REMEMBER MEANS


NOEXPLICITACCESSMODIlER ONLYCODEWITHINTHESAMEPACKAGEASTHEDEFAULTTHING
CLASS VARIABLE METHOD INNERCLASS CANACCESSTHATTHING
4HENWHATSPROTECTEDFOR

SURWHFWHG
0ROTECTEDACCESSISALMOSTIDENTICALTODEFAULTACCESS WITHONEEXCEPTIONITALLOWSSUB
CLASSESTOINHERITTHEPROTECTEDTHING EVENIFTHOSESUBCLASSESAREOUTSIDETHEPACKAGEOFTHESUPER
CLASSTHEYEXTEND4HATSIT4HATSALLPROTECTEDBUYSYOUˆTHEABILITYTOLETYOURSUBCLASSES
BEOUTSIDEYOURSUPERCLASSPACKAGE YETSTILLINHERITPIECESOFTHECLASS INCLUDINGMETHODS
ANDCONSTRUCTORS
-ANYDEVELOPERSlNDVERYLITTLEREASONTOUSEPROTECTED BUTITISUSEDINSOMEDESIGNS
ANDSOMEDAYYOUMIGHTlNDITTOBEEXACTLYWHATYOUNEED/NEOFTHEINTERESTINGTHINGS
ABOUTPROTECTEDISTHATˆUNLIKETHEOTHERACCESSLEVELSˆPROTECTEDACCESSAPPLIESONLYTO
INHERITANCE)FASUBCLASS OUTSIDE THE PACKAGEHASAREFERENCETOANINSTANCEOFTHESUPERCLASS
THESUPERCLASSTHATHAS SAY APROTECTEDMETHOD THESUBCLASSCANTACCESSTHEPRO
TECTEDMETHODUSINGTHATSUPERCLASSREFERENCE4HEONLYWAYTHESUBCLASSCANACCESSTHAT
METHODISBYINHERITINGIT)NOTHERWORDS THESUBCLASS OUTSIDE THE PACKAGEDOESNTHAVE
ACCESSTOTHEPROTECTEDMETHOD ITJUSTHASTHEMETHOD THROUGHINHERITANCE
 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
6WULQJDQG6WULQJ%XIIHU DSSHQGL[%7RS7HQ5HIHUHQFH

6WULQJDQG6WULQJ%XIIHU6WULQJ%XLOGHU0HWKRGV
4WOOFTHEMOSTCOMMONLYUSEDCLASSESINTHE*AVA!0)ARE3TRINGAND3TRING"UFFERREMEMBERFROM
AFEWPAGESBACK 3TRINGSAREIMMUTABLE SOA3TRING"UFFER3TRING"UILDERCANBEALOTMOREFlCIENT
IFYOUREMANIPULATINGA3TRING !SOF*AVAYOUSHOULDUSETHE3TRING"UILDERCLASSINSTEADOF
3TRING"UFFER UNLESSYOUR3TRINGMANIPULATIONSNEEDTOBETHREAD SAFE WHICHISNOTCOMMON(ERESA
BRIEFOVERVIEWOFTHEKEYMETHODSINTHESECLASSES
"OTH3TRINGAND3TRING"UFFER3TRING"UILDERCLASSESHAVE
CHARCHAR!TINTINDEX WHATCHARISATACERTAINPOSITION
INTLENGTH HOWLONGISTHIS
3TRINGSUBSTRINGINTSTART INTEND GETAPARTOFTHIS
3TRINGTO3TRING WHATSTHE3TRINGVALUEOFTHIS

4OCONCATENATE3TRINGS
3TRINGCONCATSTRING FORTHE3TRINGCLASS

3TRINGAPPEND3TRING FOR3TRING"UFFER3TRING"UILDER

4HE3TRINGCLASSHAS
3TRINGREPLACECHAROLD CHARNEW REPLACEALLOCCURENCESOFACHAR
3TRINGSUBSTRINGINTBEGIN INTEND GETAPORTIONOFA3TRING
CHAR;=TO#HAR!RRAY CONVERTTOANARRAYOFCHARS
3TRINGTO,OWER#ASE CONVERTALLCHARACTERSTOLOWERCASE
3TRINGTO5PPER#ASE CONVERTALLCHARACTERSTOUPPERCASE
3TRINGTRIM REMOVEWHITESPACEFROMTHEENDS
3TRINGVALUE/FCHAR;= MAKEA3TRINGOUTOFACHARARRAY
3TRINGVALUE/FINTI MAKEA3TRINGOUTOFAPRIMITIVE
OTHERPRIMITIVESARESUPPORTEDASWELL
4HE3TRING"UFFER3TRING"UILDERCLASSESHAVE
3TRING"XXXXDELETEINTSTART INTEND DELETEAPORTION
3TRING"XXXXINSERTINTOFFSET ANYPRIMITIVEORACHAR;= INSERTSOMETHING
3TRING"XXXXREPLACEINTSTART INTEND 3TRINGS REPLACETHISPARTWITHTHIS3TRING
3TRING"XXXXREVERSE  REVERSETHE3"FROMFRONTTOBACK
VOIDSET#HAR!TINTINDEX CHARCH REPLACEAGIVENCHARACTER
.OTE3TRING"XXXXREFERSTOEITHER3TRING"UFFEROR3TRING"UILDER ASAPPROPRIATE

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

0XOWLGLPHQVLRQDO$UUD\V
)NMOSTLANGUAGES IFYOUCREATE SAY AXTWO DIMENSIONALARRAY YOUWOULDVISUALIZEA
RECTANGLE ELEMENTSBYELEMENTS WITHATOTALOFELEMENTS"UTIN*AVA SUCHANARRAY
WOULDACTUALLYBEARRAYSLINKEDTOGETHER)N*AVA ATWODIMENSIONALARRAYISSIMPLYANARRAY
OFARRAYS!THREEDIMENSIONALARRAYISANARRAYOFARRAYSOFARRAYS BUTWELLLEAVETHATFOR
YOUTOPLAYWITH (ERESHOWITWORKS

LQW>@>@DG QHZLQW>@>@
4HE*6-CREATESANARRAYWITHELEMENTS%ACHOFTHESEFOURELEMENTSISACTUALLYAREFERENCE
VARIABLEREFERRINGTOANEWLYCREATED INTARRAYWITHELEMENTS


HDFK
DG>@ UHJXODULQWVJRLQVPHLGQWHV
@ RIWKHHLJKW HOH DG>@>@
DG>@> >@>@
DG
DG>@>
@
LQWLQW LQWLQW

LQW
LQW
LQWDUUD\ LQW>@ LQWDUUD\ LQW>@
QW>@
LQWDUUD\ L LQW
LQW

LQWDUU 
D\ LQW
>@

OHV
HIHUH QFHYDULDE
LQW>@U
LQW>@LQW>@LQW>@LQW>@
DG
5HPHPEHUWKDWWKHDU
LQWDUUD\REMHFW LQW>@>@ DQDUUD\KROGLQJUHI UD\LWVHOILVDQREMHFW
LQW>@>@ HUHQFHVWRLQWDUUD\V

:RUNLQJZLWKPXOWLGLPHQVLRQDODUUD\V

4OACCESSTHESECONDELEMENTINTHETHIRDARRAYLQW[ DG>@>@UHPHPEHUEDVHG
4OMAKEAONE DIMENSIONALREFERENCETOONEOFTHESUB ARRAYSLQW>@FRS\ DG>@
3HORT CUTINITIALIZATIONOFAXARRAYLQW>@>@[ ^^`^``
4OMAKEADARRAYWITHIRREGULARDIMENSIONS
LQW>@>@\ QHZLQW>@>@PDNHVRQO\WKH¿UVWDUUD\ZLWKDOHQJWKRI
\>@ QHZLQW>@PDNHVWKH¿UVWVXEDUUD\HOHPHQWVLQOHQJWK
\>@ QHZLQW>@PDNHVWKHVHFRQGVXEDUUD\HOHPHQWVLQOHQJWK

 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HQXPHUDWLRQV DSSHQGL[%7RS7HQ5HIHUHQFH

$QGWKHQXPEHURQHWRSLFWKDWGLGQ·WTXLWHPDNHLWLQ

(QXPHUDWLRQV DOVRFDOOHG(QXPHUDWHG7\SHVRU(QXPV

7EVETALKEDABOUTCONSTANTSTHATAREDElNEDINTHE!0) FORINSTANCE
-)UDPH(;,7B21B&/26(9OUCANALSOCREATEYOUROWNCONSTANTSBY
MARKINGAVARIABLEVWDWLF¿QDO"UTSOMETIMESYOULLWANTTOCREATEASET
OFCONSTANTVALUESTOREPRESENTTHEONLYVALIDVALUESFORAVARIABLE4HISSETOF
VALIDVALUESISCOMMONLYREFERREDTOASANENUMERATION"EFORE*AVAYOU
COULDONLYDOAHALF BAKEDJOBOFCREATINGANENUMERATIONIN*AVA!SOF*AVA
YOUCANCREATEFULLmEDGEDENUMERATIONSTHATWILLBETHEENVYOFALLYOUR
PRE *AVA USINGFRIENDS

7HOSINTHEBAND

,ETSSAYTHATYOURECREATINGAWEBSITEFORYOURFAVORITEBAND ANDYOUWANTTO
MAKESURETHATALLOFTHECOMMENTSAREDIRECTEDTOAPARTICULARBANDMEMBER

4HEOLDWAYTOFAKEANhENUMv

SXEOLFVWDWLF¿QDOLQW-(55< 
SXEOLFVWDWLF¿QDOLQW%2%%< 
SXEOLFVWDWLF¿QDOLQW3+,/ 

ODWHULQWKHFRGH :H·UHKRSLQJWKDWE\WKHWLPHZHJRWKHUH
LI VHOHFWHG%DQG0HPEHU -(55< ^
´VHOHFWHG%DQG0HPEHUµKDVDYDOLGYDOXH
GR-(55<UHODWHGVWXII
`

4HEGOODNEWSABOUTTHISTECHNIQUEISTHATIT$/%3MAKETHECODEEASIERTO
READ4HEOTHERGOODNEWSISTHATYOUCANTEVERCHANGETHEVALUEOFTHEFAKE
ENUMSYOUVECREATED-(55<WILLALWAYSBE4HEBADNEWSISTHATTHERES
NOEASYORGOODWAYTOMAKESURETHATTHEVALUEOFVHOHFWHG%DQG0HPEHU
WILLALWAYSBE  OR)FSOMEHARDTOlNDPIECEOFCODESETS
VHOHFWHG%DQG0HPEHUEQUALTO ITSPRETTYLIKELYYOURCODEWILLBREAK

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

(QXPHUDWLRQVFRQW
4HESAMESITUATIONUSINGAGENUINE*AVAENUM7HILETHISISAVERYBASIC
Q
ENUMERATION MOSTENUMERATIONSUSUALLYARETHISSIMPLE
V LP S OH  F OD VVGHILQLWLR
NHD  D
!NEW OFlCIALhENUMv RIORRNVOL HQXPV$5(
7KLVNLQG ,WWXUQVRXWWKDW FUHDWHGDQHZ
" H
SXEOLFHQXP0HPEHUV^-(55<%2%%<3+,/` GRHVQ·WLW RIFODVV+HUHZH·Y UVµ
N LQG H P E H
SXEOLF0HPEHUVVHOHFWHG%DQG0HPEHU VSHFLDO W\SHFDOOHG´0
W H G
HQXPHUD
ODWHULQWKHFRGH
7KH´VHOHFWHG%DQG0HPEHUµYDULDEOHLVRIW\SH
LI VHOHFWHG%DQG0HPEHU 0HPEHUV-(55< ^ ´0HPEHUVµDQGFDQ21/<KDYHDYDOXHRI
GR-(55<UHODWHGVWXII ´-(55<µ´%2%%<µRU´3+,/µ
`
1RQHHGWRZRUU\DERXWWKLVYDULDEOH·VYDOXH 7KHV\QWD[WRUHIHUWRDQHQXP´LQVWDQFHµ

<RXUHQXPH[WHQGVMDYDODQJ(QXP
7HENYOUCREATEANENUM YOURECREATINGANEWCLASS ANDYOUREIMPLICITLYEXTENDING
MDYDODQJ(QXP9OUCANDECLAREANENUMASITSOWNSTANDALONECLASS INITSOWN
SOURCElLE ORASAMEMBEROFANOTHERCLASS

8VLQJ´LIµDQG´VZLWFKµZLWK(QXPV
5SINGTHEENUMWEJUSTCREATED WECANPERFORMBRANCHESINOURCODEUSINGEITHER
THELIORVZLWFKSTATEMENT!LSONOTICETHATWECANCOMPAREENUMINSTANCESUSING
EITHER ORTHEHTXDOV METHOD5SUALLY ISCONSIDEREDBETTERSTYLE

$VVLJQLQJDQHQXPYDOXHWRDYDULDEOH
0HPEHUVQ 0HPEHUV%2%%<
LI QHTXDOV 0HPEHUV-(55< 6\VWHPRXWSULQWOQ ³-HUUUU\´  
LI Q 0HPEHUV%2%%< 6\VWHPRXWSULQWOQ ³5DW'RJ´   R I W K H V H ZRUNILQH
%RWK
G
µLVSULQWH
0HPEHUVLI1DPH 0HPEHUV3+,/ ´5DW'RJ
VZLWFK LI1DPH ^
FDVH-(55<6\VWHPRXWSULQW ³PDNHLWVLQJ³ 
FDVH3+,/6\VWHPRXWSULQW ³JRGHHS³  3RS4XL]:KDW·VWKHRXWSXW"
FDVH%2%%<6\VWHPRXWSULQWOQ ³&DVVLG\´ 
`
JRGHHS&DVVLG\
$QVZHU
 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
HQXPHUDWLRQV DSSHQGL[%7RS7HQ5HIHUHQFH

(QXPHUDWLRQVFRPSOHWHG
$UHDOO\WULFNHGRXWYHUVLRQRIDVLPLODUHQXP
9OUCANADDABUNCHOFTHINGSTOYOURENUMLIKEACONSTRUCTOR METHODS
VARIABLES ANDSOMETHINGCALLEDACONSTANT SPECIlCCLASSBODY4HEYRE
NOTCOMMON BUTYOUMIGHTRUNINTOTHEM
WR
SXEOLFFODVV+IM(QXP^
D Q D U J X PH QWSDVVHGLQORZ
7KLVLV HGEH
K H FR Q VW U X FWRUGHFODU
HQXP1DPHV^ W G
-(55< ³OHDGJXLWDU´ ^SXEOLF6WULQJVLQJV ^ 7KHVHDUHWKHVRFDOOHVVERGLHVµ
UHWXUQ³SODLQWLYHO\´` ´FRQVWDQWVSHFLILFFOD ULGLQJWKH
` 7KLQNRIWKHPDVRYHU WKLVFDVH

Licensed by EDVLFHQXPPHWKRG LQLIVLQJ LV


%2%%< ³UK\WKPJXLWDU´ ^SXEOLF6WULQJVLQJV ^
UHWXUQ³KRDUVHO\´`
WKH´VLQJ µPHWKRG  WKDQHQXP
`
FDOOHGRQDYDULDEOHZL %%<
YDOXHRI-(55<RU%2
3+,/ ³EDVV´ 

Eduard Simons
SULYDWH6WULQJLQVWUXPHQW

1DPHV 6WULQJLQVWUXPHQW ^ 7KLVLVWKHHQXP·VFRQVWUXFWRU,WUXQV


WKLVLQVWUXPHQW LQVWUXPHQW RQFHIRUHDFKGHFODUHGHQXPYDOXH LQ

104038
`
WKLVFDVHLWUXQVWKUHHWLPHV 
SXEOLF6WULQJJHW,QVWUXPHQW ^
UHWXUQWKLVLQVWUXPHQW
`
SXEOLF6WULQJVLQJV ^ <RX·OOVHHWKHVHPHWKRGVEHLQJFDOOHGIURP´PDLQ µ
UHWXUQ³RFFDVLRQDOO\´
`
`

KD
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
(YHU\HQXPFRPHVZLW KRG
IRU 1DPHVQ1DPHVYDOXHV ^ HW
EXLOWLQ´YDOXHV µP LQD
6\VWHPRXWSULQW Q 
6\VWHPRXWSULQW ³LQVWUXPHQW³QJHW,QVWUXPHQW  ZKLFK
LVW\SLFDOO\XVHG
6\VWHPRXWSULQWOQ ³VLQJV³QVLQJV  ´IRUµORRSDVVKRZQ
`
`
` )LOH(GLW:LQGRZ+HOS%RRWOHJ

MDYD+IM(QXP
-(55<LQVWUXPHQWOHDGJXLWDUVLQJVSODLQWLYHO\
1RWLFHWKDWWKHEDVLF´VLQJ µ
%2%%<LQVWUXPHQWUK\WKPJXLWDUVLQJVKRDUVHO\ PHWKRGLVRQO\FDOOHGZKHQWKH
3+,/LQVWUXPHQWEDVVVLQJVRFFDVLRQDOO\ HQXPYDOXHKDVQRFRQVWDQW
 VSHFLILFFODVVERG\

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
ZKHQDUUD\VDUHQ·WHQRXJK

)LYH0LQXWH $/RQJ7ULS+RPH
0\VWHU\ &DSWDLQ%\WHRIWKH)ODWODQGVWDUVKLS³7UDYHUVHU´KDGUHFHLYHGDQXUJHQW7RS6HFUHWWUDQVPLVVLRQ
IURPKHDGTXDUWHUV7KHPHVVDJHFRQWDLQHGKHDYLO\HQFU\SWHGQDYLJDWLRQDOFRGHVWKDWWKH
7UDYHUVHUZRXOGQHHGWRVXFFHVVIXOO\SORWDFRXUVHKRPHWKURXJKHQHP\VHFWRUV7KHHQHP\
+DFNDULDQVIURPDQHLJKERULQJJDOD[\KDGGHYLVHGDGHYLOLVKFRGHVFUDPEOLQJUD\WKDWZDVFDSDEOH
RIFUHDWLQJERJXVREMHFWVRQWKHKHDSRIWKH7UDYHUVHU¶VRQO\QDYLJDWLRQDOFRPSXWHU,Q
DGGLWLRQWKHDOLHQUD\FRXOGDOWHUYDOLGUHIHUHQFHYDULDEOHVVRWKDWWKH\UHIHUUHGWRWKHVH
ERJXVREMHFWV7KHRQO\GHIHQVHWKH7UDYHUVHUFUHZKDGDJDLQVWWKLVHYLO+DFNDULDQUD\ZDV
WRUXQDQLQOLQHYLUXVFKHFNHUZKLFKFRXOGEHLPEHGGHGLQWRWKH7UDYHUVHU¶VVWDWHRIWKHDUW
-DYDFRGH

&DSWDLQ%\WHJDYH(QVLJQ6PLWKWKHIROORZLQJSURJUDPPLQJLQVWUXFWLRQVWRSURFHVVWKHFULWLFDO
QDYLJDWLRQDOFRGHV

³3XWWKH¿UVW¿YHFRGHVLQDQDUUD\RIW\SH3DUVHF.H\3XWWKHODVWFRGHVLQD¿YHE\¿YHWZR
GLPHQVLRQDODUUD\RIW\SH4XDGUDQW.H\3DVVWKHVHWZRDUUD\VLQWRWKHSORW&RXUVH PHWKRGRIWKH
SXEOLF¿QDOFODVV6KLS1DYLJDWLRQ2QFHWKHFRXUVHREMHFWLVUHWXUQHGUXQWKHLQOLQHYLUXVFKHFNHU
DJDLQVWDOOWKHSURJUDPVUHIHUHQFHYDULDEOHVDQGWKHQUXQWKH1DY6LPSURJUDPDQGEULQJPHWKH
UHVXOWV´

$IHZPLQXWHVODWHU(QVLJQ6PLWKUHWXUQHGZLWKWKH1DY6LPRXWSXW³1DY6LPRXWSXWUHDG\IRU
UHYLHZVLU´GHFODUHG(QVLJQ6PLWK³)LQH´UHSOLHGWKH&DSWDLQ³3OHDVHUHYLHZ\RXUZRUN´³<HV
VLU´UHVSRQGHGWKH(QVLJQ³)LUVW,GHFODUHGDQGFRQVWUXFWHGDQDUUD\RIW\SH3DUVHF.H\ZLWKWKH
IROORZLQJFRGH3DUVHF.H\>@S QHZ3DUVHF.H\>@QH[W,GHFODUHGDQGFRQVWUXFWHGDQDUUD\
RIW\SH4XDGUDQW.H\ZLWKWKHIROORZLQJFRGH4XDGUDQW.H\>@>@T QHZ4XDGUDQW.H\>@>@
1H[W,ORDGHGWKH¿UVWFRGHVLQWRWKH3DUVHF.H\DUUD\XVLQJDµIRU¶ORRSDQGWKHQ,ORDGHGWKHODVW
FRGHVLQWRWKH4XDGUDQW.H\DUUD\XVLQJQHVWHGµIRU¶ORRSV1H[W,UDQWKHYLUXVFKHFNHUDJDLQVW
DOOUHIHUHQFHYDULDEOHVIRUWKH3DUVHF.H\DUUD\DQGIRULWVHOHPHQWVIRUWKH4XDGUDQW.H\
DUUD\DQGIRULWVHOHPHQWV2QFHWKHYLUXVFKHFNUHWXUQHGZLWKQRYLUXVHVGHWHFWHG,UDQWKH
1DY6LPSURJUDPDQGUHUDQWKHYLUXVFKHFNHUMXVWWREHVDIH«6LU³

&DSWDLQ%\WHJDYHWKH(QVLJQDFRROORQJVWDUHDQGVDLGFDOPO\³(QVLJQ\RXDUHFRQ¿QHGWR
TXDUWHUVIRUHQGDQJHULQJWKHVDIHW\RIWKLVVKLS,GRQ¶WZDQWWRVHH\RXUIDFHRQWKLVEULGJHDJDLQ
XQWLO\RXKDYHSURSHUO\OHDUQHG\RXU-DYD/LHXWHQDQW%RROHDQWDNHRYHUIRUWKH(QVLJQDQGGRWKLV
MREFRUUHFWO\´

:K\GLGWKHFDSWDLQFRQ¿QHWKH(QVLJQWRKLVTXDUWHUV"
 DSSHQGL[%

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
SX]]OHDQVZHUV DSSHQGL[%7RS7HQ5HIHUHQFH

)LYH0LQXWH0\VWHU\6ROXWLRQ

!,ONG4RIP(OME
#APTAIN"YTEKNEWTHATIN*AVA MULTIDIMENSIONALARRAYSAREACTU
ALLYARRAYSOFARRAYS4HElVEBYlVE1UADRANT+EYARRAY@Q WOULD
ACTUALLYNEEDATOTALOFREFERENCEVARIABLESTOBEABLETOACCESS
ALLOFITSCOMPONENTS

 REFERENCEVARIABLEFOR@Q

 REFERENCEVARIABLESFORQ;= Q;=

 REFERENCEVARIABLESFORQ;=;= Q;=;=

4HEENSIGNHADFORGOTTENTHEREFERENCEVARIABLESFORTHElVEONE
DIMENSIONALARRAYSEMBEDDEDINTHE@QARRAY!NYOFTHOSElVE
REFERENCEVARIABLESCOULDHAVEBEENCORRUPTEDBYTHE(ACKARIAN
RAY ANDTHEENSIGNSTESTWOULDNEVERREVEALTHEPROBLEM

\RXDUHKHUH 

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.

S-ar putea să vă placă și