Вы находитесь на странице: 1из 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

&RYHU'HVLJQHU

-IKE,OUKIDES
%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*AVATO 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
Eduard Simons
104038
DESPITESHAKYEVIDENCE

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
A4OP4EN%DITORS#HOICEFOR
#OMPUTER"OOKSOF
lRSTEDITION

3OFTWARE$EVELOPMENT-AGAZINENAMED
(EAD&IRST*AVAAlNALISTFORTHETH!NNUAL
*OLT#OLA0RODUCT%XCELLENCE!WARDS

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 HIPANDPRACTICALTHEREARENTALOTOFTEXTBOOKSTHATCANMAKETHATCLAIM
ANDLIVEUPTOITWHILEALSOTEACHINGYOUABOUTOBJECTSERIALIZATIONANDNETWORKLAUNCHPROTOCOLSv

$R$AN2USSELL $IRECTOROF5SER3CIENCESAND%XPERIENCE2ESEARCH
)"-!LMADEN2ESEARCH#ENTERANDTEACHES!RTIlCIAL)NTELLIGENCEAT3TANFORD5NIVERSITY

h)TSFAST IRREVERENT FUN ANDENGAGING"ECAREFULYOUMIGHTACTUALLYLEARNSOMETHINGv



+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
A4OP4EN%DITORS#HOICEFOR
#OMPUTER"OOKSOF
lRSTEDITION

3OFTWARE$EVELOPMENT-AGAZINENAMED
(EAD&IRST3ERVLETSAND(EAD&IRST$ESIGN
0ATTERNSlNALISTSFORTHETH!NNUAL
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
TICALDEVELOPMENTSTRATEGIESGETSMYBRAINGOINGWITHOUTHAVINGTOSLOGTHROUGHABUNCHOFTIRED
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 OReilly


$QW7KH'HQLWLYH*XLGH
%HWWHU)DVWHU/LJKWHU-DYD
(QWHUSULVH-DYD%HDQV
+LEHUQDWH$'HYHORSHUV1RWHERRN
-DYD7LJHU$'HYHORSHUV1RWHERRN
-DYD&RRNERRN
-DYDLQD1XWVKHOO
-DYD1HWZRUN3URJUDPPLQJ
-DYD6HUYOHW -63&RRNERRN
-DYD6ZLQJ
-DYD6HUYHU)DFHV
-DYD6HUYHU3DJHV
3URJUDPPLQJ-DNDUWD6WUXWV
7RPFDW7KH'HILQLWLYH*XLGH

Other books in OReillys 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
,FDQWEHOLHYHWKH\
SXWWKDWLQD-DYD
SURJUDPPLQJERRN


QLQJTXHVWLRQPP
XU
E
KH
ERRN"
W
J
HU
LQ
VZ
DQ
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


+DYH\RXGRQHVRPHSURJUDPPLQJ"

'R\RXZDQWWROHDUQ-DYD"

'R\RXSUHIHUVWLPXODWLQJGLQQHUSDUW\
FRQYHUVDWLRQWRGU\GXOOWHFKQLFDO
OHFWXUHV"

7KLVLV127DUHIHUHQFH
ERRN+HDG)LUVW-DYDLVD
ERRNGHVLJQHGIRUOHDUQLQJ
QRWDQHQF\FORSHGLDRI
-DYDIDFWV

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
WKDQDWHFKQLFDOERRNFDQWEHVHULRXVLI
WKHUHVDSLFWXUHRIDGXFNLQWKHPHPRU\
PDQDJHPHQWVHFWLRQ"

THISBOOKISNOTFORYOU

>QRWHIURPPDUNHWLQJZKRWRRNRXW
WKHSDUWDERXWKRZ
WKLVERRNLVIRUDQ\RQHZLW
YDOLGFUHGLWFDUG"$QGZKD W
DERXWWKDW*LYHWKH*LIWRKDIDYDKROLGD\SURPRWLRQZH
GLVFXVVHG)UHG@
[[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

)VL_MSVW__PI\aW]ZJZIQVQ[\PQVSQVO

\RXUEUDLQ
7+,6LVLP WKLQNV
SRUWDQW

9OURBRAINCRAVESNOVELTY)TSALWAYSSEARCHING SCANNING WAITINGFOR


SOMETHINGUNUSUAL)TWASBUILTTHATWAY ANDITHELPSYOUSTAYALIVE
4ODAY YOURELESSLIKELYTOBEATIGERSNACK"UTYOURBRAINSSTILL
LOOKING9OUJUSTNEVERKNOW
3OWHATDOESYOURBRAINDOWITHALLTHEROUTINE ORDINARY NORMAL
THINGSYOUENCOUNTER%VERYTHINGITCANTOSTOPTHEMFROM
INTERFERINGWITHTHEBRAINSREALJOBRECORDINGTHINGSTHATMATTER)T
DOESNTBOTHERSAVINGTHEBORINGTHINGSTHEYNEVERMAKEITPASTTHE
hTHISISOBVIOUSLYNOTIMPORTANTvlLTER
(OWDOESYOURBRAINKNOWWHATSIMPORTANT3UPPOSEYOUREOUTFOR
ADAYHIKEANDATIGERJUMPSINFRONTOFYOU WHATHAPPENSINSIDEYOUR
HEAD

*UHDW2QO\
PRUHGXOOGU\
ERULQJSDJHV

.EURONSlRE%MOTIONSCRANKUP#HEMICALSSURGE
!NDTHATSHOWYOURBRAINKNOWS
7KLVPXVWEHLPSRUWDQW'RQWIRUJHWLW
"UTIMAGINEYOUREATHOME ORINALIBRARY)TSASAFE WARM TIGER FREE
ZONE9OURESTUDYING'ETTINGREADYFORANEXAM/RTRYINGTOLEARN
SOMETOUGHTECHNICALTOPICYOURBOSSTHINKSWILLTAKEAWEEK TENDAYS
ATTHEMOST

WKLQNV
\RXUEUDQLQWZRUWK
7+,6LQJLV
VDY

*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

UHDGHUDVDOHDUQHU

W-DYD
:HWKLQNRID+HDG)LUV

HVXUH
YHWRJHWLWWKHQPDN
WKLQJ")LUVW\RXKD
PH
VR
UQ

OHD
R
KH
HW
QW
WDN
GR
RXUKHDG%DVH
6RZKDWGRHVLW
WSXVKLQJIDFWVLQWR\
RX
DE
\
RW
ORJ
VQ
KR
,W
\F
LW
W
SV
\RXGRQWIRUJH
QGHGXFDWLRQDO
LHQFHQHXURELRORJ\D
VF

RQ
LYH
LQ
QLW
RJ
EUD
QF
XU
KL
\R
ODWHVWUHVHDUF
QRZZKDWWXUQV
WH[WRQDSDJH:HN
DQ
WK
RUH
P
ORW
D
HV
OHDUQLQJWDN
LQFLSOHV
QHHGVWRFDOOD
G)LUVWOHDUQLQJSU
6RPHRI WKH+HD

PHWKRGRQWKH

50,UHPRWH

VHUYHU
VHUYLFH
MORABLETHANWORDS
AGESAREFARMOREME
0DNHLWYLVXDO)M


PTO
5
TIVE
FFEC
GMUCHMOREE
GR&DOF
ALONE ANDMAKELEARNIN
ALSOMAKES
ANDTRANSFERSTUDIES )T
ALL
REC
IN
ENT
IMPROVEM
LQ
LWK
VZ
NDABLE3XWWKHZRUG
THINGSMOREUNDERSTA
UHWXUQYDOXH
THANONTHE
VTHEYRELATETO RATHER
KLF
DS
RUQHDUWKHJU
TWICE
PTO
EU
LLB
WI
ERS
ARN
RPAGE ANDLE
BOTTOMORONANOTHE
NT
SRELATEDTOTHECONTE
LEM
ROB
EP
OLV
OS
LYT
ASLIKE
TSTUDIES
DOL]HGVW\OH)NRECEN
RQDODQGSHUVRQ
ECONTENTSPOKE
IFTH
STS
8VHDFRQYHUVDWL
GTE
RNIN
BETTERONPOST LEA
PTO
DU
RME
ERFO
ERTHAN
TSP
STUDEN
ONVERSATIONALSTYLERATH
Q
USINGAFIRST PERSON C
,WUHDOO\VXFNVWREHD
UAGE$ONT
ANG
ALL
DIRECTLYTOTHEREADER
SECASU

SINSTEADOFLECTURING5
DEVWUDFWPHWKRG<RX
TIMULATING
AFORMALTONE4ELLSTORIE
AS
ING
NTO
TAK
NTIO
TTE
REA
ICHWOULDYOUPAYMO
GRQWKDYHDERG\
7H
SLY
IOU
SER
TOO
SELF
TAKEYOUR
ON ORALECTURE
DINNERPARTYCOMPANI
R
SS
'RHVLWPDNHVHQVHW
O\)NOTHERWORDS UNLE
WKLQNPRUHGHHS
%DWKURRP"
WR
HU
6$
E,
DUQ
7X
OH

VD\
KH
AD
WW
HE
*H
HAPPENSINYOUR
2ULV
EURONS NOTHINGMUCH
%DWKURRP,6$7XE"
YOUAC TIVELYFLEXYOURN
UHODWLRQVKLS"
NDINSPIREDTO
S A
6$
RIOU
+$
LWD
CU
GED
NGA
ATED E
!READERHASTOBEMOTIV
RATENEWK NOWLEDGE
CONCLUSIONS ANDGENE
AW
DR
MS
BLE
PRO
VE
SOL
DTHOUGHT
EX
CHALLENGES ERCISES AN
!NDFORTHAT YOUNEED
VOLVEBOTHSIDES
S ANDACTIVITIESTHATIN
DEVWUDFWYRLGURDP  PROVOK INGQUESTION
LESENSES
OFTHEBRAIN ANDMULTIP

Licensed by
Eduard Simons
104038


ERG\  LFRORQ
EVEALL
WKRG
P
DGHUVDWWHQWLRQ7
1RPH ZLWKDVH
DQGNHHSWKHUH
W
*H
PAST
AKE
LW
AW
HISBUT)CANTSTAY
(QG
h)REALLYWANTTOLEARNT

UT
HADTHE
NTOTHINGSTHATAREO
9OURBRAINPAYSATTENTIO
EW
AN
PAGEONEvEXPERIENCE
ING
ARN
,E
ED
ECT
NG UNEXP
OT
TING STRANGE EYE CATCHI
CHMOREQUICKLYIFITSN
OFTHEORDINARY INTERES
9OURBRAINWILLLEARNMU
RING
BO
BE
ETO
HAV
NT
OES
TOUGH TECHNICALTOPICD
INGISLARGELY
TYTOREMEMBERSOMETH
OWKNOWTHATYOURABILI
EN
7
QV
WLR
MEMBERWHEN
URE
PR
OUT9O
7RXFKWKHLUH
MBERWHATYOUCAREAB
NALCONTENT9OUREME
HISDOG
OTIO
AND
EM
OY
ITS
AB
ON
OUT
ENT
DEPEND
T WRENCHINGSTORIESAB
EAR
GH
LKIN
TTA
NO
ERE
)2ULEv
OW
ANDTHEFEELINGOFh
YOUFEELSOMETHING.
RIOSITY FUN hWHATTHEv
CU
ISE
RPR
SU
REALIZE
LIKE
OR
NS
ARD
SH
7ERETALK INGEMOTIO
EVERYBODYELSETHINKSI
ZZLE LEARNSOMETHING
PU
EA
T
OLV
ESN
US
DO
YO
RING
HEN
NEE
NGI
THATCOMESW
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
PAYATTENTIONTOHOWYOUPAYATTENTION4HINKABOUTHOWYOUTHINK,EARNHOW
YOULEARN
-OSTOFUSDIDNOTTAKECOURSESONMETACOGNITIONORLEARNINGTHEORYWHENWEWERE
GROWINGUP7EWEREEXPECTEDTOLEARN BUTRARELYTAUGHTTOLEARN

,ZRQGHUKRZ,
FDQWULFNP\EUDLQ
LQWRUHPHPEHULQJ
WKLVVWXII

"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"

7EUSEDREPETITION SAYINGTHESAMETHINGINDIFFERENTWAYSANDWITHDIFFERENTMEDIA
TYPES ANDMULTIPLESENSES TOINCREASETHECHANCETHATTHECONTENTGETSCODEDCODED
INTOMORETHANONEAREAOFYOURBRAIN


kar]

LQW
FW
'RJREMH

^a\g

7EUSEDPICTURES BECAUSEYOURBRAINISTUNEDFORVISUALS NOTTEXT!SFARASYOUR


BRAINSCONCERNED APICTUREREALLYISWORTHWORDS!NDWHENTEXTANDPICTURES
WORKTOGETHER WEEMBEDDEDTHETEXTINTHEPICTURESBECAUSEYOURBRAINWORKS
MOREEFFECTIVELYWHENTHETEXTISWITHINTHETHINGTHETEXTREFERSTO ASOPPOSEDTOIN
ACAPTIONORBURIEDINTHETEXTSOMEWHERE

'RJ
'RJ

"%THECOMPILER

7EUSEDCONCEPTSANDPICTURESINUNEXPECTEDWAYSBECAUSEYOURBRAINISTUNEDFOR
NOVELTY ANDWEUSEDPICTURESANDIDEASWITHATLEASTSOMEEMOTIONALCONTENT BECAUSE
YOURBRAINISTUNEDTOPAYATTENTIONTOTHEBIOCHEMISTRYOFEMOTIONS4HATWHICH
CAUSESYOUTOFEELSOMETHINGISMORELIKELYTOBEREMEMBERED EVENIFTHATFEELINGIS
NOTHINGMORETHANALITTLEHUMOR SURPRISE ORINTEREST
7EUSEDAPERSONALIZED CONVERSATIONALSTYLE BECAUSEYOURBRAINISTUNEDTOPAYMORE
ATTENTIONWHENITBELIEVESYOUREINACONVERSATIONTHANIFITTHINKSYOUREPASSIVELY
LISTENINGTOAPRESENTATION9OURBRAINDOESTHISEVENWHENYOUREREADING
7EINCLUDEDMORETHANEXERCISES BECAUSEYOURBRAINISTUNEDTOLEARNAND
REMEMBERMOREWHENYOUDOTHINGSTHANWHENYOUREADABOUTTHINGS!NDWE
MADETHEEXERCISESCHALLENGING YET DO ABLE BECAUSETHATSWHATMOSTPEOPLEPREFER
7EUSEDMULTIPLELEARNINGSTYLES BECAUSEYOUMIGHTPREFERSTEP BY STEPPROCEDURES
WHILESOMEONEELSEWANTSTOUNDERSTANDTHEBIGPICTURElRST WHILESOMEONEELSE
JUSTWANTSTOSEEACODEEXAMPLE"UTREGARDLESSOFYOUROWNLEARNINGPREFERENCE
EVERYONEBENElTSFROMSEEINGTHESAMECONTENTREPRESENTEDINMULTIPLEWAYS
7EINCLUDECONTENTFORBOTHSIDESOFYOURBRAIN BECAUSETHEMOREOFYOURBRAINYOU
ENGAGE THEMORELIKELYYOUARETOLEARNANDREMEMBER ANDTHELONGERYOUCAN
STAYFOCUSED3INCEWORKINGONESIDEOFTHEBRAINOFTENMEANSGIVINGTHEOTHERSIDE
ACHANCETOREST YOUCANBEMOREPRODUCTIVEATLEARNINGFORALONGERPERIODOF
TIME
!NDWEINCLUDEDSTORIESANDEXERCISESTHATPRESENTMORETHANONEPOINTOFVIEW
BECAUSEYOURBRAINISTUNEDTOLEARNMOREDEEPLYWHENITSFORCEDTOMAKE
EVALUATIONSANDJUDGEMENTS
7EINCLUDEDCHALLENGES WITHEXERCISES ANDBYASKINGQUESTIONSTHATDONTALWAYSHAVE
ASTRAIGHTANSWER BECAUSEYOURBRAINISTUNEDTOLEARNANDREMEMBERWHENITHAS
TOWORKATSOMETHINGJUSTASYOUCANTGETYOURBODYINSHAPEBYWATCHINGPEOPLE
ATTHEGYM "UTWEDIDOURBESTTOMAKESURETHATWHENYOUREWORKINGHARD ITS
ONTHERIGHTTHINGS4HATYOURENOTSPENDINGONEEXTRADENDRITEPROCESSINGAHARD TO
UNDERSTANDEXAMPLE ORPARSINGDIFlCULT JARGON LADEN OREXTREMELYTERSETEXT

7KLV LV
OOH
3X]]OH9L

:MDD=LHGAFLK

,CXC
'ZRQUGF
OO
%UDLQ%DUEH

DUEHOO
EUDLQ E

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.

0MZM[_PI\A7=KIVLW\WJMVLaW]Z
JZIQVQV\W[]JUQ[[QWV

WKHLQWUR

3O WEDIDOURPART4HERESTISUPTOYOU4HESETIPSAREA
STARTINGPOINT,ISTENTOYOURBRAINANDlGUREOUTWHATWORKS
FORYOUANDWHATDOESNT4RYNEWTHINGS

FXWWKLVRXW
RQ\RXUUHIULGDQJHGUDVWLFNLW
WRU


6ORZGRZQ7KHPRUH\RXXQGHUVWDQG
WKHOHVV\RXKDYHWRPHPRUL]H

$ONTJUSTREAD3TOPANDTHINK7HENTHE
BOOKASKSYOUAQUESTION DONTJUSTSKIPTO
THEANSWER)MAGINETHATSOMEONEREALLYIS
ASKINGTHEQUESTION4HEMOREDEEPLYYOU
FORCEYOURBRAINTOTHINK THEBETTERCHANCE
YOUHAVEOFLEARNINGANDREMEMBERING


3TAND UP STRETCH MOVEAROUND CHANGE


CHAIRS CHANGEROOMS)TLLHELPYOURBRAIN
FEELSOMETHING ANDKEEPSYOURLEARNINGFROM
BEINGTOOCONNECTEDTOAPARTICULARPLACE


0DNHWKLVWKHODVWWKLQJ\RXUHDGEHIRUH
EHG2UDWOHDVWWKHODVWFKDOOHQJLQJWKLQJ

0ARTOFTHELEARNINGESPECIALLYTHETRANSFER
TOLONG TERMMEMORY HAPPENSAFTERYOUPUT
THEBOOKDOWN9OURBRAINNEEDSTIMEON
ITSOWN TODOMOREPROCESSING)FYOUPUTIN
SOMETHINGNEWDURINGTHATPROCESSING TIME
SOMEOFWHATYOUJUSTLEARNEDWILLBELOST

/LVWHQWR\RXUEUDLQ

0AYATTENTIONTOWHETHERYOURBRAINISGETTING
OVERLOADED)FYOUlNDYOURSELFSTARTINGTOSKIM
THESURFACEORFORGETWHATYOUJUSTREAD ITS
TIMEFORABREAK/NCEYOUGOPASTACERTAIN
POINT YOUWONTLEARNFASTERBYTRYINGTOSHOVE
MOREIN ANDYOUMIGHTEVENHURTTHEPROCESS

5HDGWKH7KHUHDUH1R'XPE4XHVWLRQV

'RQWGRDOO\RXUUHDGLQJLQRQHSODFH

7DONDERXWLW2XWORXG

3PEAKINGACTIVATESADIFFERENTPARTOF
THEBRAIN)FYOURETRYINGTOUNDERSTAND
SOMETHING ORINCREASEYOURCHANCEOF
REMEMBERINGITLATER SAYITOUTLOUD"ETTER
STILL TRYTOEXPLAINITOUTLOUDTOSOMEONE
ELSE9OULLLEARNMOREQUICKLY ANDYOUMIGHT
UNCOVERIDEASYOUHADNTKNOWNWERETHERE
WHENYOUWEREREADINGABOUTIT

4HATMEANSALLOFTHEM4HEYRENOT
OPTIONALSIDE BARSTHEYREPARTOFTHECORE
CONTENT3OMETIMESTHEQUESTIONSAREMORE
USEFULTHANTHEANSWERS


'ULQNZDWHU/RWVRILW

9OURBRAINWORKSBESTINANICEBATHOFmUID
$EHYDRATIONWHICHCANHAPPENBEFOREYOU
EVERFEELTHIRSTY DECREASESCOGNITIVEFUNCTION

'RWKHH[HUFLVHV:ULWH\RXURZQQRWHV

7EPUTTHEMIN BUTIFWEDIDTHEMFORYOU
THATWOULDBELIKEHAVINGSOMEONEELSE
DOYOURWORKOUTSFORYOU!NDDONTJUST
LOOKATTHEEXERCISES5SEAPENCIL4HERES
PLENTYOFEVIDENCETHATPHYSICALACTIVITY
WHILELEARNINGCANINCREASETHELEARNING


)HHOVRPHWKLQJ

9OURBRAINNEEDSTOKNOWTHATTHISMATTERS'ET
INVOLVEDWITHTHESTORIES-AKEUPYOUROWN
CAPTIONSFORTHEPHOTOS'ROANINGOVERABAD
JOKEISSTILLBETTERTHANFEELINGNOTHINGATALL
 7\SHDQGUXQWKHFRGH
4YPEANDRUNTHECODEEXAMPLES4HENYOU
CANEXPERIMENTWITHCHANGINGANDIMPROVING
THECODEORBREAKINGIT WHICHISSOMETIMES
THEBESTWAYTOlGUREOUTWHATSREALLY
HAPPENING &ORLONGEXAMPLESOR2EADY BAKE
CODE YOUCANDOWNLOADTHESOURCElLESFROM
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\RXGRQWDOUHDG\KDYHDRUJUHDWHU-DYD6WDQGDUG(GLWLRQ6'. 6RIWZDUH
'HYHORSPHQW.LW \RXQHHGLW,I\RXUHRQ/LQX[:LQGRZVRU6RODULV\RXFDQJHWLWIRUIUHH
IURPMDYDVXQFRP 6XQVZHEVLWHIRU-DYDGHYHORSHUV ,WXVXDOO\WDNHVQRPRUHWKDQWZRFOLFNV
IURPWKHPDLQSDJHWRJHWWRWKH-6(GRZQORDGVSDJH*HWWKHODWHVWQRQEHWDYHUVLRQSRVWHG
7KH6'.LQFOXGHVHYHU\WKLQJ\RXQHHGWRFRPSLOHDQGUXQ-DYD
,I\RXUHUXQQLQJ0DF26;WKH-DYD6'.LVDOUHDG\LQVWDOOHG,WVSDUWRI26;DQG\RX
GRQWKDYHWRGRDQ\WKLQJHOVH,I\RXUHRQDQHDUOLHUYHUVLRQRI26;\RXKDYHDQHDUOLHU
YHUVLRQRI-DYDWKDWZLOOZRUNIRURIWKHFRGHLQWKLVERRN
1RWH7KLVERRNLVEDVHGRQ-DYDEXWIRUVWXQQLQJO\XQFOHDUPDUNHWLQJUHDVRQVVKRUWO\
EHIRUHUHOHDVH6XQUHQDPHGLW-DYDZKLOHVWLOONHHSLQJDVWKHYHUVLRQQXPEHUIRUWKH
GHYHORSHUVNLW6RLI\RXVHH-DYDRU-DYDRU-DYDRU7LJHU YHUVLRQVRULJLQDO
FRGHQDPH WKH\DOOPHDQWKHVDPHWKLQJ7KHUHZDVQHYHUD-DYDRULWMXPSHGIURP
YHUVLRQWREXW\RXZLOOVWLOOILQGSODFHVZKHUHLWVFDOOHGLQVWHDGRI'RQ
WDVN
2KDQGMXVWWRPDNHLWPRUHHQWHUWDLQLQJ-DYDDQGWKH0DF26;ZHUHERWKJLYHQWKH
VDPHFRGHQDPHRI7LJHUDQGVLQFH26;LVWKHYHUVLRQRIWKH0DF26\RXQHHGWRUXQ
-DYD\RXOOKHDUSHRSOHWDONDERXW7LJHURQ7LJHU,WMXVWPHDQV-DYDRQ26; 

 7KH6'.GRHVQRWLQFOXGHWKH$3,GRFXPHQWDWLRQDQG\RXQHHGWKDW*REDFNWRMDYDVXQ
FRPDQGJHWWKH-6($3,GRFXPHQWDWLRQ<RXFDQDOVRDFFHVVWKH$3,GRFVRQOLQHZLWKRXW
GRZQORDGLQJWKHPEXWWKDWVDSDLQ7UXVWXVLWVZRUWKWKHGRZQORDG

 <RXQHHGDWH[WHGLWRU9LUWXDOO\DQ\WH[WHGLWRUZLOOGR YLHPDFVSLFR LQFOXGLQJWKH*8,RQHV


WKDWFRPHZLWKPRVWRSHUDWLQJV\VWHPV1RWHSDG:RUGSDG7H[W(GLWHWFDOOZRUNDVORQJDV
\RXPDNHVXUHWKH\GRQWDSSHQGDW[WRQWRWKHHQGRI\RXUVRXUFHFRGH

 2QFH\RXYHGRZQORDGHGDQGXQSDFNHG]LSSHGZKDWHYHU GHSHQGVRQZKLFKYHUVLRQDQGIRU
ZKLFK26 \RXQHHGWRDGGDQHQWU\WR\RXU3$7+HQYLURQPHQWYDULDEOHWKDWSRLQWVWRWKHELQ
GLUHFWRU\LQVLGHWKHPDLQ-DYDGLUHFWRU\)RUH[DPSOHLIWKH-6'.SXWVDGLUHFWRU\RQ\RXU
GULYHFDOOHGMVGNORRNLQVLGHWKDWGLUHFWRU\DQG\RXOOILQGWKHELQGLUHFWRU\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
ABOUTWHATYOUVEALREADYSEENANDLEARNED
:HXVHVLPSOH80/OLNHGLDJUDPV
)FWEDUSEDPURE5-, YOUDBESEEINGSOMETHINGTHATLOOKSLIKE*AVA BUT
WITHSYNTAXTHATSJUSTPLAINWRONG3OWEUSEASIMPLIlEDVERSIONOF5-,
THATDOESNTCONmICTWITH*AVASYNTAX)FYOUDONTALREADYKNOW5-, YOU
WONTHAVETOWORRYABOUTLEARNING*AVAAND5-,ATTHESAMETIME
:HGRQWZRUU\DERXWRUJDQL]LQJDQGSDFNDJLQJ\RXURZQ
FRGHXQWLOWKHHQGRIWKHERRN
)NTHISBOOK YOUCANGETONWITHTHEBUSINESSOFLEARNING*AVA WITHOUT
STRESSINGOVERSOMEOFTHEORGANIZATIONALORADMINISTRATIVEDETAILSOF
DEVELOPING*AVAPROGRAMS9OUWILL INTHEREALWORLD NEEDTOKNOWAND
USETHESEDETAILS SOWECOVERTHEMINDEPTH"UTWESAVETHEMFORTHEEND
OFTHEBOOKCHAPTER 2ELAXWHILEYOUEASEINTO*AVA GENTLY
7KHHQGRIFKDSWHUH[HUFLVHVDUHPDQGDWRU\SX]]OHVDUH
RSWLRQDO$QVZHUVIRUERWKDUHDWWKHHQGRIHDFKFKDSWHU
/NETHINGYOUNEEDTOKNOWABOUTTHEPUZZLESTHEYREPUZZLES!SINLOGIC
PUZZLES BRAINTEASERS CROSSWORDPUZZLES ETC4HEEXERCISESAREHERETOHELP
YOUPRACTICEWHATYOUVELEARNED ANDYOUSHOULDDOTHEMALL4HEPUZZLES
AREADIFFERENTSTORY ANDSOMEOFTHEMAREQUITECHALLENGINGINAPUZZLE
WAY4HESEPUZZLESAREMEANTFORPUZZLERS ANDYOUPROBABLYALREADYKNOWIF
YOUAREONE)FYOURENOTSURE WESUGGESTYOUGIVESOMEOFTHEMATRY BUT
WHATEVERHAPPENS DONTBEDISCOURAGEDIFYOUCANTSOLVEAPUZZLEORIFYOU
SIMPLYCANTBEBOTHEREDTOTAKETHETIMETOWORKTHEMOUT
7KH6KDUSHQ<RXU3HQFLOH[HUFLVHVGRQWKDYHDQVZHUV
.OTPRINTEDINTHEBOOK ANYWAY&ORSOMEOFTHEM THEREISNORIGHT
ANSWER ANDFORTHEOTHERS PARTOFTHELEARNINGEXPERIENCEFORTHE3HARPEN
ACTIVITIESISFORYOUTODECIDEIFANDWHENYOURANSWERSARERIGHT3OMEOF
OURSUGGESTEDANSWERSAREAVAILABLEONWICKEDLYSMARTCOM
7KHFRGHH[DPSOHVDUHDVOHDQDVSRVVLEOH
)TSFRUSTRATINGTOWADETHROUGHLINESOFCODELOOKINGFORTHETWOLINES
YOUNEEDTOUNDERSTAND-OSTEXAMPLESINTHISBOOKARESHOWNWITHINTHE
SMALLESTPOSSIBLECONTEXT SOTHATTHEPARTYOURETRYINGTOLEARNISCLEARAND
SIMPLE3ODONTEXPECTTHECODETOBEROBUST OREVENCOMPLETE4HATS
YOURASSIGNMENTFORAFTERYOUlNISHTHEBOOK4HEBOOKEXAMPLESARE
WRITTENSPECIlCALLYFORLEARNING ANDARENTALWAYSFULLY FUNCTIONAL

PSOHU
:HXVHDGVLIDX[80/
PRGLILH
'RJ
VL]H
EDUN
HDW
FKDVH&DW

$//
<RXVKRXOGGRSH
XU
DU
RIWKH6K WLHVQ\R
SHQFLODFWLYL

6KDUSHQ \RXU SHQFLO


$FWLYLWLH
([HUFLVHV UPXQDUNHGZLWKWKH
DUHPDQGDWR QLQJVKRH ORJR
WKHPLI\ XUU\'RQWVNLS
HVHULRXVDER
OHDUQLQJ-DRYD
XW


1dQ^OU_Q
WKH
X]]OHORJRI\RX
3
H
K
W
H
H
V
,I\RX LVRSWLRQDODQGL URVV
DFWLYLW\ HWZLVW\ORJLFRUF HWKHVH
GRQWOLN]]OHV\RXZRQWOLN
ZRUGSX
HLWKHU

\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

,
-HVVLFDV0,1

9DOHQWLQ&UHWWD]

-HVVLFD6DQW

9DOHQWLQVWLH
6ALENTIN6ALENTIN#RETTAZHASA-ASTERSDEGREE

*ESSWORKSAT(EWLETT 0ACKARDONTHE3ELF
(EALING3ERVICES4EAM3HEHASA"ACHELORS
IN#OMPUTER%NGINEERINGFROM6ILLANOVA
5NIVERSITY HASHER3#0*AND3#7#$
CERTIlCATIONS ANDISLITERALLYMONTHSAWAY
FROMRECEIVINGHER-ASTERSIN3OFTWARE
%NGINEERINGAT$REXEL5NIVERSITYWHEW
7HENSHESNOTWORKING STUDYINGOR
MOTORINGINHER-).)#OOPER3 *ESSCAN
BEFOUNDlGHTINGHERCATFORYARNASSHE
COMPLETESHERLATESTKNITTINGORCROCHET
PROJECTANYBODYWANTAHAT 3HEIS
ORIGINALLYFROM3ALT,AKE#ITY 5TAHNO
SHESNOT-ORMONYES YOUWERETOO
GOINGTOASK ANDISCURRENTLYLIVINGNEAR
0HILADELPHIAWITHHERHUSBAND -ENDRA AND
TWOCATS#HAIAND3AKE
9OUCANCATCHHERMODERATINGTECHNICAL
FORUMSATJAVARANCHCOM

IN)NFORMATIONAND#OMPUTER3CIENCEFROM
THE3WISS&EDERAL)NSTITUTEOF4ECHNOLOGYIN
,AUSANNE%0&, (EHASWORKEDASASOFTWARE
ENGINEERWITH32))NTERNATIONAL-ENLO0ARK
#! ANDASAPRINCIPALENGINEERINTHE3OFTWARE
%NGINEERING,ABORATORYOF%0&,
6ALENTINISTHECO FOUNDERAND#4/OF#ONDRIS
4ECHNOLOGIES ACOMPANYSPECIALIZINGINTHE
DEVELOPMENTOFSOFTWAREARCHITECTURESOLUTIONS
(ISRESEARCHANDDEVELOPMENTINTERESTS
INCLUDEASPECT ORIENTEDTECHNOLOGIES DESIGN
ANDARCHITECTURALPATTERNS WEBSERVICES AND
SOFTWAREARCHITECTURE"ESIDESTAKINGCAREOF
HISWIFE GARDENING READING ANDDOINGSOME
SPORT 6ALENTINMODERATESTHE3#"#$AND
3#$*73FORUMSAT*AVARANCHCOM(EHOLDS
THE3#*0 3#*$ 3#"#$ 3#7#$ AND3#$*73
CERTIlCATIONS(EHASALSOHADTHEOPPORTUNITY
TOSERVEASACO AUTHORFOR7HIZLABS3#"#$
%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
/URBIGGESTTHANKSTO-IKE,OUKIDESAT/2EILLY FORTAKINGA
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

-HI&XPSV

QH
&RUH\0F*OR

-RKDQQH

VGH-RQ

/URINTREPIDBETATESTERSANDREVIEWERTEAM

/URTOPHONORSANDTHANKSGOTOTHEDIRECTOROFOURJAVARANCH
TECHREVIEWTEAM *OHANNESDE*ONG4HISISYOURlFTHTIMEAROUND
WITHUSONA(EAD&IRSTBOOK ANDWERETHRILLEDYOURESTILLSPEAKING
TOUS*EFF#UMPSISONHISTHIRDBOOKWITHUSNOWANDRELENTLESS
ABOUTlNDINGAREASWHEREWENEEDEDTOBEMORECLEARORCORRECT

#OREY-C'LONE YOUROCK!NDWETHINKYOUGIVETHECLEAREST

G
-DVRQ0HQDU

EXPLANATIONSONJAVARANCH9OULLPROBABLYNOTICEWESTOLEONEOR
TWOOFTHEM*ASON-ENARDSAVEDOURTECHNICALBUTTSONMORE
THANAFEWDETAILS AND4HOMAS0AUL ASALWAYS GAVEUSEXPERT
FEEDBACKANDFOUNDTHESUBTLE*AVAISSUESTHERESTOFUSMISSED
*ANE'RISCTIHASHER*AVACHOPSANDKNOWSATHINGORTWOABOUT
WRITING ANDITWASGREATTOHAVEHERHELPINGONTHENEWEDITION
ALONGWITHLONG TIMEJAVARANCHER"ARRY'AUNT

7KRPDV3DXO

-ARILYNDE1UEIROZGAVEUSEXCELLENTHELPONBOTHEDITIONSOFTHE
BOOK#HRIS*ONES *OHN.YQUIST *AMES#UBETA 4ERRI#UBETA
AND)RA"ECKERGAVEUSATONOFHELPONTHElRSTEDITION
3PECIALTHANKSTOAFEWOFTHE(EAD&IRSTERSWHOVEBEENHELPING
USFROMTHEBEGINNING!NGELO#ELESTE -IKALAI:AIKIN AND
4HOMAS$UFFTWDUFFCOM !NDTHANKSTOOURTERRIlCAGENT $AVID
2OGELBERGOF3TUDIO"BUTSERIOUSLY WHATABOUTTHEMOVIERIGHTS

-DPHV&XEHWD

7HUUL&XEHWD

,UD%HFNHU

-RKQ1\TXLVW

0DULO\PGH
4XHLUR]

&KULV-RQHV

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"AWLSTOlNISHTHISONTIME
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 

7KHODUJHQXPEHURIDFNQRZOHGJHPHQWVLVEHFDXVHZHUHWHVWLQJWKHWKHRU\WKDWHYHU\RQHPHQWLRQHGLQ
DERRNDFNQRZOHGJHPHQWZLOOEX\DWOHDVWRQHFRS\SUREDEO\PRUHZKDWZLWKUHODWLYHVDQGHYHU\WKLQJ,I
\RXGOLNHWREHLQWKHDFNQRZOHGJHPHQWRIRXUQH[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
&RPHRQWKHZDWHUV
JUHDW:HOOGLYHULJKWLQDQG
ZULWHVRPHFRGHWKHQFRPSLOHDQG
UXQLW:HUHWDONLQJV\QWD[ORRSLQJ
DQGEUDQFKLQJDQGDORRNDWZKDW
PDNHV-DYDVRFRRO<RXOOEH
FRGLQJLQQRWLPH

-DYDWDNHV\RXWRQHZSODFHV&ROMITSHUMBLERELEASETOTHEPUBLICASTHE
WIMPY VERSION *AVASEDUCEDPROGRAMMERSWITHITSFRIENDLYSYNTAX OBJECT ORIENTEDFEATURES
MEMORYMANAGEMENT ANDBESTOFALLTHEPROMISEOFPORTABILITY4HELUREOFZULWHRQFHUXQ

DQ\ZKHUHISJUSTTOOSTRONG!DEVOTEDFOLLOWINGEXPLODED ASPROGRAMMERSFOUGHTAGAINSTBUGS
LIMITATIONS AND OHYEAH THEFACTTHATITWASDOGSLOW"UTTHATWASAGESAGO)FYOUREJUSTSTARTINGIN
*AVA \RXUHOXFN\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
Eduard Simons
104038
0HWKRG3DUW\
DORDGB

LQYRNHVSH
FLDO0HWKRG
MDYDODQJ2EMHFW !
UHWXUQ

;W]ZKM


#REATEASOURCE
DOCUMENT5SEAN
ESTABLISHEDPROTOCOL
INTHISCASE THE*AVA
LANGUAGE 



7]\X]\
KWLM

+WUXQTMZ

2UNYOURDOCUMENT
THROUGHASOURCECODE
COMPILER4HECOMPILER
CHECKSFORERRORSAND
WONTLETYOUCOMPILE
UNTILITSSATISlEDTHAT
EVERYTHINGWILLRUN
CORRECTLY

4HECOMPILERCREATESA
NEWDOCUMENT CODED
INTO*AVABYTECODE
!NYDEVICECAPABLEOF
RUNNING*AVAWILLBEABLE
TOINTERPRETTRANSLATE
THISlLEINTOSOMETHING
ITCANRUN4HECOMPILED
B
YTECODEISPLATFORM
INDEPENDENT

Qgm:]l

K`gglE]

>QZ\]IT
5IKPQVM[


9OURFRIENDSDONTHAVE
APHYSICAL*AVA-ACHINE
BUTTHEYALLHAVEA
VIRTUAL*AVAMACHINE
IMPLEMENTEDIN
SOFTWARE RUNNINGINSIDE
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
<RXOOW\SHDVRXUFHFRGHOHFRPSLOHLWXVLQJWKH
MDYDFFRPSLOHUWKHQUXQWKHFRPSLOHGE\WHFRGH
RQD-DYDYLUWXDOPDFKLQH

)LOH(GLW:LQGRZ+HOS3OHDG

LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 
FODVV3DUW\^
SXEOLFYRLGEXLOG,QYLWH ^
)UDPHI QHZ)UDPH 
/DEHOO QHZ/DEHO 3DUW\DW7LPV 
%XWWRQE QHZ%XWWRQ <RXEHW 
%XWWRQF QHZ%XWWRQ 6KRRWPH 
3DQHOS QHZ3DQHO 
SDGG O 
`PRUHFRGHKHUH
`

;W]ZKM


4YPEYOURSOURCECODE
3AVEAS0ARTYJAVA

MDYDF3DUW\MDYD

)LOH(GLW:LQGRZ+HOS6ZHDU

0HWKRG3DUW\

MDYD3DUW\

DORDGB
LQYRNHVSHFLDO0HWKRG
MDYDODQJ2EMHFW !
UHWXUQ
0HWKRGYRLGEXLOG,QYLWH

+WUXQTMZ


#OMPILETHE0ARTYJAVA
lLEBYRUNNINGMDYDF
THECOMPILERAPPLICATION 
)FYOUDONTHAVEERRORS
YOULLGETASECONDDOCU
MENTNAMED0ARTYCLASS
4HECOMPILER GENERATED
0ARTYCLASSlLEISMADEUP
OFBYTECODES

QHZ&ODVVMDYDDZW)UDPH!
GXS
LQYRNHVSHFLDO0HWKRG
MDYDDZW)UDPH !

7]\X]\
KWLM


#OMPILEDCODE0ARTYCLASS

>QZ\]IT
5IKPQVM[


2UNTHEPROGRAMBY
STARTINGTHE*AVA6IRTUAL
-ACHINE*6- WITHTHE
0ARTYCLASSlLE4HE*6-
TRANSLATESTHEBYTECODE
INTOSOMETHINGTHE
UNDERLYINGPLATFORM
UNDERSTANDS ANDRUNS
YOURPROGRAM

1RWHWKLVLVQRWPHDQWWREHDWXWRULDO\RXOOEH
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.









KLVWRU\RI -DYD

2I^I

2I^I

2I^I

2I^I

CLASSES

CLASSES

^MZ[QWV[ 

^M Z[QWV[IVL]X

3LOW

!LITTLEFASTER

CLASSES

CLASSES

#UTENAMEANDLOGO
&UNTOUSE,OTSOF
BUGS!PPLETSARE
THE"IG4HING

-ORECAPABLE FRIENDLIER
"ECOMINGVERYPOPULAR
"ETTER'5)CODE

-UCHFASTER
#ANSOMETIMES RUNAT
NATIVESPEEDS3ERIOUS
POWERFUL#OMESINTHREE
mAVORS-ICRO%DITION*-%
3TANDARD%DITION*3% AND
%NTERPRISE%DITION*%% 
"ECOMESTHELANGUAGEOF
CHOICEFORNEWENTERPRISE
ESPECIALLYWEB BASED AND
MOBILEAPPLICATIONS

-OREPOWER EASIERTO
DEVELOPWITH
"ESIDESADDINGMORETHANA
THOUSANDADDITIONALCLASSES
*AVAKNOWNASh4IGERv
ADDEDMAJORCHANGESTO
THELANGUAGEITSELF MAKING
ITEASIERATLEASTINTHEORY
FORPROGRAMMERSANDGIVING
ITNEWFEATURESTHATWERE
POPULARINOTHERLANGUAGES

FKDSWHU



&ODVVHVLQWKH-DYDVWDQGDUGOLEUDU\

)^MZaJZQMNPQ[\WZaWN2I^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.

GLYH,Q$4XLFN'LS

6KDUSHQ \RXU SHQFLO


4WWSPW_MI[aQ\
Q[\W_ZQ\M2I^I
LQWVL]H 

4RYTOGUESSWHATEACHLINEOFCODEISDOING
ANSWERSAREONTHENEXTPAGE 

GHFODUHDQLQWHJHUYDULDEOHQDPHGVL]HDQGJLYHLWWKHYDOXH

6WULQJQDPH )LGR
'RJP\'RJ QHZ'RJ QDPHVL]H 
[ VL]H
LI [ P\'RJEDUN  
ZKLOH [! ^
P\'RJSOD\ 
`
LQW>@QXP/LVW ^`
6\VWHPRXWSULQW +HOOR 
6\VWHPRXWSULQW 'RJQDPH 
6WULQJQXP 
LQW] ,QWHJHUSDUVH,QW QXP 
WU\^
UHDG7KH)LOH P\)LOHW[W 
`
FDWFK )LOH1RW)RXQG([FHSWLRQH[ ^
6\VWHPRXWSULQW )LOHQRWIRXQG 
`

Q:

)SEE*AVAAND*AVA BUTWASTHEREA*AVA
AND!NDWHYISIT*AVABUTNOT*AVA

A:


4HEJOYSOFMARKETINGWHENTHEVERSIONOF*AVA
SHIFTEDFROMTO THECHANGESTO*AVAWERESO
DRAMATICTHATTHEMARKETERSDECIDEDWENEEDEDAWHOLE
NEWhNAMEv SOTHEYSTARTEDCALLINGIT*AVA EVENTHOUGH
THEACTUALVERSIONOF*AVAWAS"UTVERSIONSAND
WERESTILLCONSIDERED*AVA4HERENEVERWASA*AVAOR
"EGINNINGWITH*AVAVERSION THEMARKETERSDECIDED

ONCEAGAINTHATTHECHANGESWERESODRAMATICTHATA
NEWNAMEWASNEEDEDANDMOSTDEVELOPERSAGREED SO
THEYLOOKEDATTHEOPTIONS4HENEXTNUMBERINTHENAME
SEQUENCEWOULDBEhv BUTCALLING*AVA*AVASEEMED
MORECONFUSING SOTHEYDECIDEDTONAMEIT*AVATO
MATCHTHEhvINVERSIONhv
3O THEORIGINAL*AVAWASVERSIONSTHEFIRSTOFFICIAL
RELEASE THROUGHWEREJUSTh*AVAv6ERSIONS  AND
WEREh*AVAv!NDBEGINNINGWITHVERSION *AVAIS
CALLEDh*AVAv"UTYOULLALSOSEEITCALLEDh*AVAvWITHOUT
THEhv ANDh4IGERvITSORIGINALCODE NAME 7EHAVENO
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[\

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

$ONTWORRYABOUTWHETHERYOUUNDERSTANDANYOFTHISYET
%VERYTHINGHEREISEXPLAINEDINGREATDETAILINTHEBOOK MOST
WITHINTHElRSTPAGES )F*AVARESEMBLESALANGUAGEYOUVE
USEDINTHEPAST SOMEOFTHISWILLBESIMPLE)FNOT DONTWORRY
ABOUTIT7ELLGETTHERE

LQWVL]H 

GHFODUHDQLQWHJHUYDULDEOHQDPHGVL]HDQGJLYHLWWKHYDOXH
GHFODUHDVWULQJRIFKDUDFWHUVYDULDEOHQDPHGQDPHDQGJLYHLWWKHYDOXH)LGR
GHFODUHDQHZ'RJYDULDEOHP\'RJDQGPDNHWKHQHZ'RJXVLQJQDPHDQGVL]H
VXEWUDFWIURP YDOXHRIVL]H DQGDVVLJQLWWRDYDULDEOHQDPHG[
LI[ YDOXHRI LVOHVVWKDQWHOOWKHGRJWREDUNWLPHV

6WULQJQDPH )LGR
'RJP\'RJ QHZ'RJ QDPHVL]H 
[ VL]H
LI [ P\'RJEDUN  
ZKLOH [! ^
P\'RJSOD\ 
`
LQW>@QXP/LVW ^`
6\VWHPRXWSULQW +HOOR 
6\VWHPRXWSULQW 'RJQDPH 
6WULQJQXP 
LQW] ,QWHJHUSDUVH,QW QXP 
WU\^
UHDG7KH)LOH P\)LOHW[W 
`
FDWFK )LOH1RW)RXQG([FHSWLRQH[ ^
6\VWHPRXWSULQW )LOHQRWIRXQG 
`



NHHSORRSLQJDVORQJDV[LVJUHDWHUWKDQ
WHOOWKHGRJWRSOD\ ZKDWHYHU7+$7PHDQVWRDGRJ
WKLVORRNVOLNHWKHHQGRIWKHORRSHYHU\WKLQJLQ^`LVGRQHLQWKHORRS
GHFODUHDOLVWRILQWHJHUVYDULDEOHQXP/LVWDQGSXWLQWRWKHOLVW
SULQWRXW+HOORSUREDEO\DWWKHFRPPDQGOLQH
SULQWRXW+HOOR)LGR WKHYDOXHRIQDPHLV)LGR DWWKHFRPPDQGOLQH
GHFODUHDFKDUDFWHUVWULQJYDULDEOHQXPDQGJLYHLWWKHYDOXHRI
FRQYHUWWKHVWULQJRIFKDUDFWHUVLQWRDQDFWXDOQXPHULFYDOXH
WU\WRGRVRPHWKLQJPD\EHWKHWKLQJZHUHWU\LQJLVQWJXDUDQWHHGWRZRUN
UHDGDWH[WILOHQDPHGP\)LOHW[W RUDWOHDVW75<WRUHDGWKHILOH
PXVWEHWKHHQGRIWKHWKLQJVWRWU\VR,JXHVV\RXFRXOGWU\PDQ\WKLQJV
WKLVPXVWEHZKHUH\RXILQGRXWLIWKHWKLQJ\RXWULHGGLGQWZRUN
LIWKHWKLQJZHWULHGIDLOHGSULQW)LOHQRWIRXQGRXWDWWKHFRPPDQGOLQH
ORRNVOLNHHYHU\WKLQJLQWKH^`LVZKDWWRGRLIWKHWU\GLGQWZRUN

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

:KDWJRHVLQD
VRXUFHILOH"
!SOURCECODElLEWITHTHEJAVA
EXTENSION HOLDSONECLASSDElNI
TION4HECLASSREPRESENTSAPIECE
OFYOURPROGRAM ALTHOUGHAVERY
TINYAPPLICATIONMIGHTNEEDJUST
ASINGLECLASS4HECLASSMUSTGO
WITHINAPAIROFCURLYBRACES

3XWDFODVVLQDVRXUFHOH
3XWPHWKRGVLQDFODVV
3XWVWDWHPHQWVLQDPHWKRG

:KDWJRHVLQD
FODVV"
!CLASSHASONEORMOREMETHODS
)NTHE$OGCLASS THEBARKMETHOD
WILLHOLDINSTRUCTIONSFORHOWTHE
$OGSHOULDBARK9OURMETHODS
MUSTBEDECLAREDINSIDEACLASS
INOTHERWORDS WITHINTHECURLY
BRACESOFTHECLASS 

:KDWJRHVLQD
PHWKRG"
7ITHINTHECURLYBRACESOFA
METHOD WRITEYOURINSTRUCTIONS
FORHOWTHATMETHODSHOULDBE
PERFORMED-ETHODCODEISBASI
CALLYASETOFSTATEMENTS ANDFOR
NOWYOUCANTHINKOFAMETHOD
KINDOFLIKEAFUNCTIONORPROCE
DURE

SXEOLFFODVV'RJ^

KTI[[

SXEOLFFODVV'RJ^
YRLGEDUN ^

`
`

UM\PWL

SXEOLFFODVV'RJ^
YRLGEDUN ^

VWDWHPHQW
VWDWHPHQW
`
`

[\I\MUMV\[
\RXDUHKHUH

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

SXEOLFVRHYHU\RQH
FDQDFFHVVLW

WKLVLVD
FODVV GXK

WKHQDPHRI
WKLVFODVV 

RSHQLQJFXUO\EUDFH
RIWKHFODVV

SXEOLFFODVV0\)LUVW$SS^
ZHOOFRYHUWKLV
RQHODWHU

WKHUHWXUQW\SH
YRLGPHDQVWKHUHV
QRUHWXUQYDOXH

DUJXPHQWVWRWKHPHWKRG
7KLVPHWKRGPXVWEHJLYHQ
DQDUUD\RI LQJVDQGWKH
WKHQDPHRI DUUD\ZLOOEHF6WU
DOOHGDUJV RSHQ
WKLVPHWKRG
LQJ
RIWKH EUDFH
PHWKRG

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQW ,5XOH 
WKLVVD\VSULQWWRVWDQGDUGRXWSXW
GHIDXOWVWRFRPPDQGOLQH
` FORVLQJEUDFHRIWKHPDLQPHWKRG

HQW0867
HYHU\VWDWHP RQ
RO
HQGLQDVHPLF

WKH6WULQJ\RX
ZDQWWRSULQW

FORVLQJEUDFHRIWKH0\)LUVW$SSFODVV

'RQWZRUU\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^
SXEOLFVWDWLFYRLGPDLQ
6WULQJ>@DUJV ^
6\VWHPRXWSULQW ,5XOH 

SXEOLFFODVV0\)LUVW$SS^


N6DYH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ ,5XOH 
6\VWHPRXWSULQWOQ 7KH:RUOG 
`

0\)LUVW$SSMDYD

`


N&RPSLOH
MDYDF0\)LUVW$SSMDYD

0\)LUVW$SSMDYD

FRPSLOHU


N5XQ
)LOH(GLW:LQGRZ+HOS6FUHDP

0HWKRG3DUW\ DORDGB
LQYRNHVSHFLDO0HWKRG
MDYDODQJ2EMHFW !
UHWXUQ
0HWKRGYRLG
PDLQ MDYDODQJ6WULQJ>@

MDYD0\)LUVW$SS
,5XOH
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

?PI\KIVaW][IaQV\PMUIQVUM\PWL'
/NCEYOUREINSIDEMAINORANYMETHOD THEFUN
BEGINS9OUCANSAYALLTHENORMALTHINGSTHATYOUSAY
INMOSTPROGRAMMINGLANGUAGESTOMAKETHECOMPUTER
DOSOMETHING

V
PHQW

ORRSV

EUDQFKLQJ

VWDW

9OURCODECANTELLTHE*6-TO

 LW[WUM\PQVO
3TATEMENTSDECLARATIONS ASSIGNMENTS
METHODCALLS ETC

LQW[ 
6WULQJQDPH 'LUN
[ [ 
6\VWHPRXWSULQW [
LV[ 
GRXEOHG 0DWKUDQGRP 
WKLVLVDFRPPHQW

6\QWD[
)XQ

 LW[WUM\PQVOIOIQVIVLIOIQV
,OOPSFORANDWHILE

ZKLOH [
! ^
[ [
`
IRU LQW[ [[ [ ^
6\VWHPRXWSULQW [LVQRZ[ 
`

 LW[WUM\PQVO]VLMZ\PQ[KWVLQ\QWV
"RANCHINGIFELSETESTS

LI [  ^
6\VWHPRXWSULQW [PXVWEH 
`HOVH^
6\VWHPRXWSULQW [LVQW 
`
LI [   QDPHHTXDOV 'LUN ^
6\VWHPRXWSULQWOQ *HQWO\ 
`
6\VWHPRXWSULQW WKLVOLQHUXQVQRPDWWHUZKDW 

%ACHSTATEMENTMUSTENDINA
SEMICOLON
[ [

!SINGLE LINECOMMENTBEGINS
WITHTWOFORWARDSLASHES
[ 
WKLVOLQHGLVWXUEVPH

-OSTWHITESPACEDOESNTMATTER
[ 

6ARIABLESAREDECLAREDWITHA
NAMEANDATYPEYOULLLEARNABOUT
ALLTHE*AVATYPESINCHAPTER 
LQWZHLJKW
W\SHLQWQDPHZHLJKW

#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[\[

4WWXQVOIVLTWWXQVOIVL
*AVAHASTHREESTANDARDLOOPINGCONSTRUCTSWHILE
DO WHILE ANDFOR9OULLGETTHEFULLLOOPSCOOPLATER
INTHEBOOK BUTNOTFORAWHILE SOLETSDOWHILEFOR
NOW
4HESYNTAXNOTTOMENTIONLOGIC ISSOSIMPLE
YOUREPROBABLYASLEEPALREADY!SLONGASSOME
CONDITIONISTRUE YOUDOEVERYTHINGINSIDETHE
LOOPBLOCK4HELOOPBLOCKISBOUNDEDBYAPAIROF
CURLYBRACES SOWHATEVERYOUWANTTOREPEATNEEDS
TOBEINSIDETHATBLOCK
4HEKEYTOALOOPISTHECONDITIONALTEST)N*AVA A
CONDITIONALTESTISANEXPRESSIONTHATRESULTSINA
BOOLEANVALUEINOTHERWORDS SOMETHINGTHATIS
EITHERTRUEORFALSE
)FYOUSAYSOMETHINGLIKE h7HILEICE#REAM)N4HE4UB
ISTRUE KEEPSCOOPINGv YOUHAVEACLEARBOOLEAN
TEST4HEREEITHERISICECREAMINTHETUBORTHERE
ISNT"UTIFYOUWERETOSAY h7HILE"OBKEEP
SCOOPINGv YOUDONTHAVEAREALTEST4OMAKE
THATWORK YOUDHAVETOCHANGEITTOSOMETHING
LIKE h7HILE"OBISSNORINGvORh7HILE"OBISNOT
WEARINGPLAIDv

9OUCANDOASIMPLEBOOLEANTESTBYCHECKING
THEVALUEOFAVARIABLE USINGACOMPARISONOPERATOR
INCLUDING
LESSTHAN
GREATERTHAN

EQUALITY YES THATSTWOEQUALSSIGNS


.OTICETHEDIFFERENCEBETWEENTHEASSIGNMENT
OPERATORASINGLEEQUALSSIGN ANDTHEEQUALS
OPERATORTWOEQUALSSIGNS ,OTSOFPROGRAMMERS
ACCIDENTALLYTYPEWHENTHEYWANT"UTNOT
YOU
LQW[ DVVLJQWR[
ZKLOH [! ^
ORRSFRGHZLOOUXQEHFDXVH
[LVJUHDWHUWKDQ
[ [RUZHGORRSIRUHYHU
`
LQW] 
ZKLOH ]  ^
ORRSFRGHZLOOQRWUXQEHFDXVH
]LVQRWHTXDOWR
`
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

Q:

7HYDOESEVERYTHINGHAVE
TOBEINACLASS

A:

*AVAISANOBJECT ORIENTED
// LANGUAGE)TSNOTLIKETHE
OLDDAYSWHENYOUHADSTEAM
DRIVENCOMPILERSANDWROTEONE
MONOLITHICSOURCEFILEWITHAPILE
OFPROCEDURES)NCHAPTERYOULL
LEARNTHATACLASSISABLUEPRINTFOR
ANOBJECT ANDTHATNEARLYEVERY
THINGIN*AVAISANOBJECT

Q:

.OPE!*AVAPROGRAM
MIGHTUSEDOZENSOFCLASSESEVEN
HUNDREDS BUTYOUMIGHTONLY
HAVEONEWITHAMAINMETHOD
THEONETHATSTARTSTHEPROGRAM
RUNNING9OUMIGHTWRITETEST
CLASSES THOUGH THATHAVEMAIN
METHODSFORTESTINGYOUROTHER
CLASSES

Q:

)NMYOTHERLANGUAGE)CAN
DOABOOLEANTESTONANINTEGER
)N*AVA CAN)SAYSOMETHINGLIKE
LQW[ 
ZKLOH [ ^`

A:

.O!BOOLEANANDAN
INTEGERARENOTCOMPATIBLETYPESIN
*AVA3INCETHERESULTOFACONDI
TIONALTESTMUSTBEABOOLEAN THE
ONLYVARIABLEYOUCANDIRECTLYTEST
WITHOUTUSINGACOMPARISONOP
ERATOR ISABOOLEAN&OREXAMPLE
YOUCANSAY
ERROHDQLV+RW WUXH
ZKLOH LV+RW ^`



SXEOLFFODVV/RRS\^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
6\VWHPRXWSULQWOQ %HIRUHWKH/RRS 
ZKLOH [ ^
6\VWHPRXWSULQWOQ ,QWKHORRS 
6\VWHPRXWSULQWOQ 9DOXHRI[LV[ 
[ [
`
6\VWHPRXWSULQWOQ 7KLVLVDIWHUWKHORRS 
`

Licensed by
Eduard Simons
104038

$O)HAVETOPUTAMAININ
EVERYCLASS)WRITE

A:

-`IUXTMWNIZKLOHTWWX

WKLVLVW

MDYD/RRS\
%HIRUHWKH/RRS
,QWKHORRS
9DOXHRI[LV
,QWKHORRS
9DOXHRI[LV
,QWKHORRS
9DOXHRI[LV
7KLVLVDIWHUWKHORRS

KHRXWS

XW

:MDD=LHGAFLK

 6WDWHPHQWVHQGLQDVHPLFRORQ
 &RGHEORFNVDUHGHILQHGE\DSDLURIFXUO\EUDFHV^`
 'HFODUHDQLQWYDULDEOHZLWKDQDPHDQGDW\SHLQW[
 7KHDVVLJQPHQWRSHUDWRULVRQHHTXDOVVLJQ
 7KHHTXDOVRSHUDWRUXVHVWZRHTXDOVVLJQV
 $ZKLOHORRSUXQVHYHU\WKLQJZLWKLQLWVEORFN GHILQHGE\FXUO\
EUDFHV DVORQJDVWKHFRQGLWLRQDOWHVWLVWUXH

 ,IWKHFRQGLWLRQDOWHVWLVIDOVHWKHZKLOHORRSFRGHEORFNZRQW
UXQDQGH[HFXWLRQZLOOPRYHGRZQWRWKHFRGHLPPHGLDWHO\
DIWHUWKHORRSEORFN

 3XWDERROHDQWHVWLQVLGHSDUHQWKHVHV
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
)N*AVA ANIFTESTISBASICALLYTHESAMEASTHEBOOLEANTESTINA
WHILELOOPnEXCEPTINSTEADOFSAYING hWHILETHERESSTILLBEERv
YOULLSAY hIFTHERESSTILLBEERv
FODVV,I7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
LI [  ^
6\VWHPRXWSULQWOQ [PXVWEH 
`
6\VWHPRXWSULQWOQ 7KLVUXQVQRPDWWHUZKDW 
`
`
MDYD,I7HVW
[PXVWEH
7KLVUXQVQRPDWWHUZKDW

;a[\MUW]\XZQV\^[
;a[\MUW]\XZQV\TV
)FYOUVEBEENPAYINGATTENTIONOF
COURSEYOUHAVE THENYOUVENOTICEDUS
SWITCHINGBETWEENPRINTANDPRINTLN
$IDYOUSPOTTHEDIFFERENCE
3YSTEMOUTPRINTLNINSERTSANEWLINE
THINKOFPRINTLNASPRINTNEWLINEWHILE
3YSTEMOUTPRINTKEEPSPRINTINGTO
THESAMELINE)FYOUWANTEACHTHING
YOUPRINTOUTTOBEONITSOWNLINE USE
PRINTLN)FYOUWANTEVERYTHINGTOSTICK
TOGETHERONONELINE USEPRINT

FRGHRXW
SXW

4HECODEABOVEEXECUTESTHELINETHATPRINTShXMUSTBEvONLY
IFTHECONDITIONXISEQUALTO ISTRUE2EGARDLESSOFWHETHER
ITSTRUE THOUGH THELINETHATPRINTS h4HISRUNSNOMATTERWHATv
WILLRUN3ODEPENDINGONTHEVALUEOFX EITHERONESTATEMENT
ORTWOWILLPRINTOUT
"UTWECANADDANELSETOTHECONDITION SOTHATWECAN
SAYSOMETHINGLIKE h)FTHERESSTILLBEER KEEPCODING ELSE
OTHERWISE GETMOREBEER ANDTHENCONTINUEONv

6KDUSHQ \RXU SHQFLO


'IVENTHEOUTPUT

MDYD'RR%HH
'RR%HH'RR%HH'R
&ILLINTHEMISSINGCODE
PUBLICCLASS$OO"EE[
PUBLICSTATICVOIDMAIN3TRING;=ARGS [
INTX

FODVV,I7HVW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
LI [  ^
6\VWHPRXWSULQWOQ [PXVWEH 
`HOVH^
6\VWHPRXWSULQWOQ [LV127 
`
6\VWHPRXWSULQWOQ 7KLVUXQVQRPDWWHUZKDW 
`
`

MDYD,I7HVW
[LV127
7KLVUXQVQRPDWWHUZKDW

QHZRXWSXW

WHILEX????? [
3YSTEMOUT?????????h$OOv 
3YSTEMOUT?????????h"EEv 
XX 
]
IFX?????? [
3YSTEMOUTPRINTh$Ov 
]
]
]

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ERWWOHVLQJXODUDVLQ21(ERWWOH
`
6\VWHPRXWSULQWOQ EHHU1XPZRUGRIEHHURQWKHZDOO 
6\VWHPRXWSULQWOQ EHHU1XPZRUGRIEHHU 
6\VWHPRXWSULQWOQ 7DNHRQHGRZQ 
6\VWHPRXWSULQWOQ 3DVVLWDURXQG 
EHHU1XP EHHU1XP
LI EHHU1XP! ^
6\VWHPRXWSULQWOQ EHHU1XPZRUGRIEHHURQWKHZDOO 
`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[
-DYDLQVLGH

*WJ[ITIZUKTWKSZQVO[I\ "5WVLIaUWZVQVOR][\TQSMM^MZaW\PMZ_MMSLIa
*]\*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\PMKWNNMMUISMZ0Ma\PMOMMS[
[TMMXQVOQVIOIQVLMTIa\PMKWNNMMUQV]\M[

-DYDKHUHWRR

<PMKWNNMMUISMZ[MVL[IUM[[IOM\W\PM5W\WZWTI
\WI[\MZ0WTL\PM\WI[\*WJ[[VWWbQVO
<PMITIZUKTWKS\PMV[MVL[IUM[[IOM\W*WJ[
6WSQI6I^QOI\WZKMTTXPWVM+ITT*WJ[!
WKTWKSIVL\MTTPQU_MZMZ]VVQVOITQ\\TMTI\M

OODU
6DPVFYRD
KDV-D

.QVITTa\PMITIZUKTWKS[MVL[IUM[[IOM\W

-DYD
;IU[;IUQ[\PMLWO_QZMTM[[KWTTIZ_Q\P\PM\WWNIUQTQIZ[QOVIT\PI\
WRDVWHU UMIV[/M\\PMXIXMZJ]\LWV\M`XMK\I_ITS
)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[\PMR]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;PIKSPI^MMVPIVKML\PMLIQTa
ZW]\QVM[WN PQ[TQNM
0Q[\WI[\Q[\WI[\ML

EXWWHUKHUH

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[WKITTMLXT]O
IVLXTIa_PQKPIK\]ITTaUMIV[XT]OIVLXTIa_Q\PQ\NWZ\PMVM`\\PZMMLIa[
\ZaQVO\WOM\Q\\W_WZSWZXWZ\IJTMXTI\NWZU[*WJ[[Q[\MZ*M\\a\ZQMLWVMWN 
\PW[MW\PMZ[IVL\PMZM[]T\[_MZM_MTTVW\^MZaIXXMITQVOWZ[INM
*Q\WN I[PIUMIJW]\PMZLWO\WW

$6 ,

) 21

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.

OHWVZULWHDSURJUDP

7U\P\QHZ
SKUDVHRPDWLFDQG
\RXOOEHDVOLFNWDONHU
MXVWOLNHWKHERVVRU
WKRVHJX\VLQPDUNHWLQJ

SXEOLFFODVV3KUDVH20DWLF^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
''eYc]l`j]]k]lkg^ogj\klg[`ggk]^jge&9\\qgmjgof
^PXOWL
7LHUIRRW%WR%ZLQZLQIURQW
HQGZHEEDVHGSHUYDVLYHVPDUWVL[
VLJPDFULWLFDOSDWKG\QDPLF`

 6WULQJ>@ZRUG/LVW2QH

6WULQJ>@ZRUG/LVW7ZR ^HPSRZHUHGVWLFN\
YDOXHDGGHGRULHQWHGFHQWULFGLVWULEXWHG
FOXVWHUHGEUDQGHGRXWVLGHWKHER[SRVLWLRQHG
QHWZRUNHGIRFXVHGOHYHUDJHGDOLJQHG
WDUJHWHGVKDUHGFRRSHUDWLYHDFFHOHUDWHG`
/+ SOTHEBEERSONGWASNTREALLYASERIOUS
BUSINESSAPPLICATION3TILLNEEDSOMETHING
PRACTICALTOSHOWTHEBOSS#HECKOUTTHE
0HRASE / -ATICCODE

6WULQJ>@ZRUG/LVW7KUHH ^SURFHVVWLSSLQJ
SRLQWVROXWLRQDUFKLWHFWXUHFRUHFRPSHWHQF\
VWUDWHJ\PLQGVKDUHSRUWDOVSDFHYLVLRQ
SDUDGLJPPLVVLRQ`
''f\gml`goeYfqogj\kYj]af]Y[`dakl
ZRUG/LVW2QHOHQJWK
LQWWZR/HQJWK ZRUG/LVW7ZROHQJWK
LQWWKUHH/HQJWK ZRUG/LVW7KUHHOHQJWK

 LQWRQH/HQJWK
QRWHZKHQ\
WKHFRGHGR RXW\SHWKLVLQWRDQHG
1HYHUKLWWKLWVRZQZRUGOLQHZUDSLWRUOHW
D6WULQJ DWHUHWXUQNH\ZKHQ\RXUHSLQJ
ZRQWFRPSLO KLQJEHWZHHQTXRWHV W\SLQJ
WKLVSDJHDUHH6RWKHK\SKHQV\RXVHRULW
EXWGRQWKLW UHDODQG\RXFDQW\SHHRQ
\RXYHFORVHG WKHUHWXUQNH\XQWLO$ WKHP
D6WULQJ
)7(5

''_]f]jYl]l`j]]jYf\gefmeZ]jk
 LQW  0DWKUDQGRP  RQH/HQJWK 
LQWUDQG  LQW  0DWKUDQGRP  WZR/HQJWK 
LQWUDQG  LQW  0DWKUDQGRP  WKUHH/HQJWK 

 LQWUDQG

 ''fgoZmad\Yh`jYk]

6WULQJSKUDVH ZRUG/LVW2QH>UDQG@
ZRUG/LVW7ZR>UDQG@ZRUG/LVW7KUHH>UDQG@

 ''hjaflgmll`]h`jYk]
6\VWHPRXWSULQWOQ :KDWZHQHHGLVDSKUDVH 
`
`


FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
POSITION THESECONDWORDPOSITION ANDTHELASTWORDISPOSITIONINA ELEMENT
ARRAY 1UITEHANDILY A*AVAARRAYISMORETHANHAPPYTOTELLYOUITSLENGTH9OUJUST
HAVETOASK)NTHEPETSARRAY WEDSAY
LQW[ SHWVOHQJWK

AND[WOULDNOWHOLDTHEVALUE

3.7ENEEDTHREERANDOMNUMBERS*AVASHIPSOUT OF THE BOX OFF THE SHELF SHRINK


WRAPPED ANDCORECOMPETENTWITHASETOFMATHMETHODSFORNOW THINKOFTHEMAS
FUNCTIONS 4HEUDQGRP METHODRETURNSARANDOMNUMBERBETWEENANDNOT
QUITE  SOWEHAVETOMULTIPLYITBYTHENUMBEROFELEMENTSTHEARRAYLENGTH INTHE
LISTWEREUSING7EHAVETOFORCETHERESULTTOBEANINTEGERNODECIMALSALLOWED SO
WEPUTINACASTYOULLGETTHEDETAILSINCHAPTER )TSTHESAMEASIFWEHADANYmOAT
INGPOINTNUMBERTHATWEWANTEDTOCONVERTTOANINTEGER
LQW[  LQW 

4.

ZKDWZHQHHG
KHUHLVD

SHUYDVLYHWDUJHWHG
SURFHVV

G\QDPLFRXWVLGH
WKHER[WLSSLQJ
SRLQW

VPDUWGLVWULEXWHG
FRUHFRPSHWHQF\

HPSRZHUHG
PLQGVKDUH

.OWWEGETTOBUILDTHEPHRASE BYPICKINGAWORDFROMEACHOFTHETHREELISTS
ANDSMOOSHINGTHEMTOGETHERALSOINSERTINGSPACESBETWEENWORDS 7EUSETHEhv
OPERATOR WHICHCONCATENATESWEPREFERTHEMORETECHNICAL@SMOOSHES THE3TRINGOBJECTS
TOGETHER4OGETANELEMENTFROMANARRAY YOUGIVETHEARRAYTHEINDEXNUMBERPOSI
TION OFTHETHINGYOUWANTUSING

IRRWZLQZLQ
YLVLRQ

6WULQJV SHWV>@VLVQRZWKH6WULQJ)LGR
V VLVDGRJVLVQRZ)LGRLVDGRJ

VL[VLJPDQHW
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

)MNOTSAYINGYOURE LIKE COMPLETELYUSELESS


"UTREALLY WHATISITTHATYOUDO3ERIOUSLY)
HAVENOIDEA!PROGRAMMERCOULDJUSTWRITE
BYTECODEBYHAND AND)DTAKEIT9OUMIGHT
BEOUTOFAJOBSOON BUDDY

)RESTMYCASEONTHEHUMORTHING "UTYOU
STILLDIDNTANSWERMYQUESTION WHATDOYOU
ACTUALLYDO



%XCUSEME BUTWITHOUTME WHATEXACTLY


WOULDYOURUN4HERESAREASON*AVAWAS
DESIGNEDTOUSEABYTECODECOMPILER FORYOUR
INFORMATION)F*AVAWEREAPURELYINTERPRETED
LANGUAGE WHEREATRUNTIMETHEVIRTUAL
MACHINEHADTOTRANSLATESTRAIGHT FROM A TEXT
EDITORSOURCECODE A*AVAPROGRAMWOULD
RUNATALUDICROUSLYGLACIALPACE*AVASHADA
CHALLENGINGENOUGHTIMECONVINCINGPEOPLE
THATITSlNALLYFASTANDPOWERFULENOUGHFOR
MOSTJOBS

%XCUSEME BUTTHATSQUITEANIGNORANTNOT
TOMENTIONARROGANT PERSPECTIVE7HILEIT
ISTRUETHATTHEORETICALLYYOUCANRUNANY
PROPERLYFORMATTEDBYTECODEEVENIFITDIDNT
COMEOUTOFA*AVACOMPILER INPRACTICETHATS
ABSURD!PROGRAMMERWRITINGBYTECODEBY
HANDISLIKEDOINGYOURWORDPROCESSINGBY
WRITINGRAWPOSTSCRIPT!ND)WOULDAPPRECIATE
ITIFYOUWOULDNOTREFERTOMEAShBUDDYv

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

"UTSOMESTILLGETTHROUGH)CANTHROW#LASS
#AST%XCEPTIONSANDSOMETIMES)GETPEOPLE
TRYINGTOPUTTHEWRONGTYPEOFTHINGINAN
ARRAYTHATWASDECLAREDTOHOLDSOMETHING
ELSE AND

/+3URE"UTWHATABOUTSECURITY,OOKATALL
THESECURITYSTUFF)DO ANDYOURELIKE WHAT
CHECKINGFORSEMICOLONS/OOOHHHBIGSECURITY
RISK4HANKGOODNESSFORYOU

7HATEVER)HAVETODOTHATSAMESTUFFTOO
THOUGH JUSTTOMAKESURENOBODYSNUCKIN
AFTERYOUANDCHANGEDTHEBYTECODEBEFORE
RUNNINGIT

<PM+WUXQTMZ
2EMEMBERTHAT*AVAISASTRONGLY TYPEDLAN
GUAGE ANDTHATMEANS)CANTALLOWVARIABLES
TOHOLDDATAOFTHEWRONGTYPE4HISISA
CRUCIALSAFETYFEATURE AND)MABLETOSTOPTHE
VASTMAJORITYOFVIOLATIONSBEFORETHEYEVERGET
TOYOU!ND)ALSO

%XCUSEME BUT)WASNTDONE!NDYES THERE


ARESOMEDATATYPEEXCEPTIONSTHATCANEMERGE
ATRUNTIME BUTSOMEOFTHOSEHAVETOBE
ALLOWEDTOSUPPORTONEOF*AVASOTHERIMPOR
TANTFEATURESDYNAMICBINDING!TRUNTIME
A*AVAPROGRAMCANINCLUDENEWOBJECTSTHAT
WERENTEVENKNOWNTOTHEORIGINALPROGRAM
MER SO)HAVETOALLOWACERTAINAMOUNTOF
mEXIBILITY"UTMYJOBISTOSTOPANYTHINGTHAT
WOULDNEVERCOULDNEVERSUCCEEDATRUN
TIME5SUALLY)CANTELLWHENSOMETHINGWONT
WORK FOREXAMPLE IFAPROGRAMMERACCIDEN
TALLYTRIEDTOUSEA"UTTONOBJECTASA3OCKET
CONNECTION )WOULDDETECTTHATANDTHUS
PROTECTHIMFROMCAUSINGHARMATRUNTIME
%XCUSEME BUT)AMTHElRSTLINEOFDEFENSE
ASTHEYSAY4HEDATATYPEVIOLATIONS)PREVIOUS
LYDESCRIBEDCOULDWREAKHAVOCINAPROGRAM
IFTHEYWEREALLOWEDTOMANIFEST)AMALSO
THEONEWHOPREVENTSACCESSVIOLATIONS SUCH
ASCODETRYINGTOINVOKEAPRIVATEMETHOD OR
CHANGEAMETHODTHATnFORSECURITYREASONS
nMUSTNEVERBECHANGED)STOPPEOPLEFROM
TOUCHINGCODETHEYRENOTMEANTTOSEE
INCLUDINGCODETRYINGTOACCESSANOTHERCLASS
CRITICALDATA)TWOULDTAKEHOURS PERHAPSDAYS
EVEN TODESCRIBETHESIGNIlCANCEOFMYWORK
/FCOURSE BUTAS)INDICATEDPREVIOUSLY IF)
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
ANDTHEYWERETOOSMALLTOPICKUP SOFEEL
FREETOADDASMANYOFTHOSEASYOUNEED



LI [

 ^
VWHP
RXWS

ULQW
[
G 
[



`


6\

LI [

 ^

6\VWHPRXWSULQW EF 
`

FODVV6KXIH^
SXEOLFVWDWL
FYR

LGPDLQ 6WULQJ

>@DUJV ^

[! ^
LI
ULQW D 
VWHPRXWS
6\
`

LQW[ 
[
[
6\
VWHPRXW


SULQW 

^

H [!

ZKLO

7]\X]\"



)LOH(GLW:LQGRZ+HOS6OHHS

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
(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRIWKHVH
ILOHVZLOOFRPSLOH,IWKH\
ZRQWFRPSLOHKRZ
ZRXOG\RXIL[WKHP"

FODVV([HUFLVHE^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
ZKLOH [ ^
LI [! ^
6\VWHPRXWSULQWOQ ELJ[ 
`
`

LI [ ^
6\VWHPRXWSULQWOQ VPDOO[ 
`
`
`

&

FODVV([HUFLVHE^
LQW[ 
ZKLOH [! ^
[ [
LI [ ^
6\VWHPRXWSULQWOQ VPDOO[ 
`
`
`

`
`

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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











Licensed by
Eduard Simons
104038








!CROSS

,ETSGIVEYOURRIGHTBRAINSOMETHINGTODO
)TSYOURSTANDARDCROSSWORD BUTALMOSTALL
OFTHESOLUTIONWORDSAREFROMCHAPTER*UST
TOKEEPYOUAWAKE WEALSOTHREWINAFEW
NON *AVA WORDSFROMTHEHIGH TECHWORLD







#OMMAND LINEINVOKER
"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
OFTHELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE$RAWLINES
CONNECTINGTHECANDIDATEBLOCKSOFCODEWITHTHEIRMATCHING
COMMAND LINEOUTPUT4HEANSWERSAREATTHEENDOFTHECHAPTER 

-IXED

-ESSAGES

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


FDQGLGDWH
JRHVKHUH FRGH

 
 6\VWHPRXWSULQW [\ 
[ [
 `
`
`
#ANDIDATES

PDWFKHDFKLWK
FDQGLGDWHZ 
RQHRIWKHSXWV
SRVVLEOHRXW

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

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.

SX]]OH3RRO3X]]OH

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

3RRO3X]]OH
9OURJOBISTOTAKECODESNIPPETSFROMTHE
POOLANDPLACETHEMINTOTHEBLANK
LINESINTHECODE9OUMAYNOTUSETHE
SAMESNIPPETMORETHANONCE AND
YOUWONTNEEDTOUSEALLTHESNIP
PETS9OURGOALISTOMAKEACLASSTHAT
WILLCOMPILEANDRUNANDPRODUCETHE
OUTPUTLISTED$ONTBEFOOLEDTHISONES
HARDERTHANITLOOKS

/UTPUT
)LOH(GLW:LQGRZ+HOS&KHDW

MDYD3RRO3X]]OH2QH
DQRLVH
DQQR\V
DQR\VWHU

ZKLOH BBBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
LI [ ^
BBBBBBBBBBBBBBBBBBBBBBBBBBB
`
BBBBBBBBBBBBBBBBBBBBBBBBBBBBB
LI BBBBBBBBBB ^

BBBBBBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBB
`
LI [  ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
LI BBBBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
6\VWHPRXWSULQWOQ 
BBBBBBBBBBBB
`
`
`

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDONLYONCE

3YSTEMOUTPRINThv 
3YSTEMOUTPRINThAh 
3YSTEMOUTPRINThNh 
3YSTEM OUT PRINThANh 



X
X
X
X
X

XX 
XX 
XX 
XX 

3YSTEMOUTPRINThNOYSh 
3YSTEMOUTPRINThOISEh 
3YSTEMOUTPRINThOYSTERh 
3YSTEMOUTPRINThANNOYSv 
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

`

FODVV6KXIH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

`7KLVZLOOFRPSLOHDQGUXQ QRRXWSXW EXW


`ZLWKRXWDOLQHDGGHGWRWKHSURJUDPLW
ZRXOGUXQIRUHYHULQDQLQQLWHZKLOHORRS

LQW[ 
ZKLOH [! ^
LI [! ^
6\VWHPRXWSULQW D 
`

FODVV)RR^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 

[ [
6\VWHPRXWSULQW  

ZKLOH [! ^
[ [

LI [  ^
6\VWHPRXWSULQW EF 
`

LI [ ^
6\VWHPRXWSULQWOQ VPDOO[ 
`
`7KLVOHZRQWFRPSLOHZLWKRXWD

LI [  ^
6\VWHPRXWSULQW G 
[ [
`
`
`
`

`FODVVGHFODUDWLRQDQGGRQWIRUJHW
`WKHPDWFKLQJFXUO\EUDFH

FODVV([HUFLVHE^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)LOH(GLW:LQGRZ+HOS3RHW

LQW[ 

MDYD6KXIIOH
DEFG

ZKLOH [! ^
[ [

&

LI [ ^
6\VWHPRXWSULQWOQ VPDOO[ 
`
`

7KHZKLOHORRSFRGHPXVWEHLQ
VLGHDPHWKRG,WFDQWMXVWEH
`
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$
5

5
%$1&+

<

%




' &

, 17





3
8



2
/ 23

/
,


,&



6 <7(28735,17
0
6

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



LI ;! ^

6\VWHPRXWSULQW R\VWHU 
[ [
`
LI [  ^
6\VWHPRXWSULQW QR\V 
`
LI ; ^
6\VWHPRXWSULQW RLVH 
`
6\VWHPRXWSULQWOQ 
)LOH(GLW:LQGRZ+HOS&KHDW

MDYD3RRO3X]]OH2QH
DQRLVH
DQQR\V
DQR\VWHU



'(&/$5(
5

6\VWHPRXWSULQW D 
LI [ ^
6\VWHPRXWSULQW  
`
6\VWHPRXWSULQW Q 

(


&


7
+

2
9
&200$1'

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



 6\VWHPRXWSULQW [\ 


[ [
 `
`
`
#ANDIDATES

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





1
65,*
7

ZKLOH ; ^

; ;
`
`
`

0OSSIBLEOUTPUT










FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
:HUHJRLQJWR
2EMHFWYLOOH:HUH
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
FORTHEANSWERTOYOURBURNINGQUESTION h3O WHOGOTTHE
!ERONv

\PM KPIQZ

1V4IZZa[K]JM

)\*ZIL[TIX\WXI\\PMKINM

!SHEHADDONEAGAZILLIONTIMESBEFORE ,ARRY
SETABOUTWRITINGHIS)MPORTANT0ROCEDURES
(EWROTEROTATEANDPLAY3OUNDINNOTIME
URWDWH VKDSH1XP ^

"RADWROTEACLASSFOREACHOFTHETHREESHAPES

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\PMLVIQTMLQ\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
M IV IUW W\PMZ[
J
T
QT
_
M
Z
<PM
P \PM
ZMMV _Q\
WV \PM [K [MZ KTQKS[ WV \PM
M]
M \PM
?PMV \P
W\I\M TQS L NQTM 
Z
T
QT
_
Q\
IUWMJI
PQN [W]V
VL XTIa I
I

[
Z
M
P
\
W

_PI\ OW\ ILLML \W \PM [XMK

*IKSQV4IZZa[K]JM

)\*ZIL[TIX\WXI\\PMJMIKP

4HEROTATEPROCEDUREWOULDSTILLWORKTHECODEUSED
ALOOKUPTABLETOMATCHASHAPE.UMTOANACTUAL
SHAPEGRAPHIC"UTPLAY3OUNDWOULDHAVETOCHANGE
!NDWHATTHEHECKISAHIFlLE

"RADSMILED SIPPEDHISMARGARITA ANDWROTEONE


NEWCLASS3OMETIMESTHETHINGHELOVEDMOST
ABOUT//WASTHATHEDIDNTHAVETOTOUCHCODE
HEDALREADYTESTEDANDDELIVEREDh&LEXIBILITY
EXTENSIBILITY vHEMUSED REmECTINGONTHE
BENElTSOF//
$PRHED

SOD\6RXQG VKDSH1XP ^
LIWKHVKDSHLVQRWDQDPRHED
XVHVKDSH1XPWRORRNXSZKLFK
$,)VRXQGWRSOD\DQGSOD\LW
HOVH
SOD\DPRHEDKLIVRXQG
`

)TTURNEDOUTNOTTOBESUCHABIGDEAL BUTITSTILL
MADEHIMQUEASYTOTOUCHPREVIOUSLY TESTEDCODE/F
ALLPEOPLE HESHOULDKNOWTHATNOMATTERWHATTHE
PROJECTMANAGERSAYS THESPECALWAYSCHANGES

URWDWH ^
FRGHWRURWDWHDQDPRHED
`
SOD\6RXQG ^
FRGHWRSOD\WKHQHZ
KLIILOHIRUDQDPRHED
`

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 VISUALIZINGCHARRED7ONDERBREADh!LTHOUGH HMMMM)COULD
JUSTADDANOTHERIFELSETOTHEROTATEPROCEDURE ANDTHENJUSTHARD CODETHEROTATIONPOINT
CODEFORTHEAMOEBA4HATPROBABLYWONTBREAKANYTHINGv"UTTHELITTLEVOICEATTHEBACKOF
HISHEADSAID h"IG-ISTAKE$OYOUHONESTLYTHINKTHESPECWONTCHANGEAGAINv

XWQV\ QV
ZW\I\QWV
)UMWJI ^MZ[QWV"
[
IVL *ZIL

4IZZa

?PI\ \PM [XMK KWV^MVQMV\Ta


NWZOW\ \W UMV\QWV

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

*IKSQV4IZZa[K]JM
(ElGUREDHEBETTERADDROTATIONPOINTARGUMENTS
TOTHEROTATEPROCEDURE!LOTOFCODEWASAFFECTED
4ESTING RECOMPILING THEWHOLENINEYARDSALLOVER
AGAIN4HINGSTHATUSEDTOWORK DIDNT
URWDWH VKDSH1XP[3W\3W ^
LIWKHVKDSHLVQRWDQDPRHED
FDOFXODWHWKHFHQWHUSRLQW
EDVHGRQDUHFWDQJOH
WKHQURWDWH
HOVH
XVHWKH[3WDQG\3WDV
WKHURWDWLRQSRLQWRIIVHW
DQGWKHQURWDWH

I\QWV

)\*ZIL[TIX\WXWVPQ[TI_V
KPIQZI\\PM<MTT]ZQLM*T]MOZI[[.M[\Q^IT
7ITHOUTMISSINGABEAT "RADMODIlEDTHEROTATE
METHOD BUTONLYINTHE!MOEBACLASS(ENEVER
TOUCHEDTHETESTED WORKING
$PRHED
COMPILEDCODEFORTHEOTHER
PARTSOFTHEPROGRAM4O LQW[3RLQW
LQW\3RLQW
GIVETHE!MOEBAAROTA
TIONPOINT HEADDEDAN URWDWH ^
ATTRIBUTETHATALL!MOEBAS FRGHWRURWDWHDQDPRHED
XVLQJDPRHEDV[DQG\
WOULDHAVE(EMODI
lED TESTED ANDDELIVERED `
SOD\6RXQG ^
WIRELESSLY THEREVISED
PROGRAMDURINGASINGLE FRGHWRSOD\WKHQHZ
KLIILOHIRUDQDPRHED
"ELA&LECKSET
`

`



FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
URWDWH
SOD\6RXQG

&LUFOH
URWDWH
SOD\6RXQG

7ULDQJOH

$PRHED

URWDWH
SOD\6RXQG

URWDWH
SOD\6RXQG

1 TWWSML I\ _PI\ ITT NW]Z


KTI[[M[ PI^M QV KWUUWV


<PMaZM ;PIXM[ IVL \PMa ITT ZW\I\M IVL
XTIa;W]VL ;W 1 IJ[\ZIK\ML W]\ \PM
KWUUWV NMI\]ZM[ IVL X]\ \PMU QV\W I
VM_ KTI[[ KITTML ;PIXM

6KDSH

URWDWH
SOD\6RXQG

[]XMZKTI[[

<RXFDQUHDGWKLVDV6TXDUHLQKHULWVIURP6KDSH
&LUFOHLQKHULWVIURP6KDSHDQGVRRQ,UHPRYHG
URWDWH DQGSOD\6RXQG IURPWKHRWKHUVKDSHVVRQRZ
WKHUHVRQO\RQHFRS\WRPDLQWDLQ
7KH6KDSHFODVVLVFDOOHGWKHVXSHUFODVVRIWKHRWKHUIRXU
FODVVHV7KHRWKHUIRXUDUHWKHVXEFODVVHVRI6KDSH7KH
VXEFODVVHVLQKHULWWKHPHWKRGVRIWKHVXSHUFODVV,QRWKHU
ZRUGVLIWKH6KDSHFODVVKDVWKHIXQFWLRQDOLW\WKHQWKH
VXEFODVVHVDXWRPDWLFDOO\JHWWKDWVDPHIXQFWLRQDOLW\

<PMV1TQVSML\PMW\PMZ
NW]Z[PIXMKTI[[M[\W
\PMVM_;PIXMKTI[[
QVIZMTI\QWV[PQXKITTML
QVPMZQ\IVKM

6KDSH
URWDWH
SOD\6RXQG

[]JKTI[[M[
6TXDUH

&LUFOH

7ULDQJOH

$PRHED

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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'
,!2297ASNTTHATTHEWHOLEPROBLEMHERETHATTHEAMOEBASHAPE
HADACOMPLETELYDIFFERENTROTATEANDPLAY3OUNDPROCEDURE
2

"2!$-ETHOD
,!2297HATEVER(OWCANAMOEBADOSOMETHINGDIFFERENTIF
IThINHERITSvITSFUNCTIONALITYFROMTHE3HAPECLASS

UULGH 1RZ
YH

$V

N 0H +R

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

[]XMZKTI[[

Licensed by
Eduard Simons
104038
6KDSH

UWZM IJ[\ZIK\

[]JKTI[[M[
UWZM [XMKQNQK
6TXDUH

&LUFOH

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

URWDWH
SOD\6RXQG

7ULDQJOH

$PRHED

URWDWH ^
 DPRHEDVSHFLILF
 URWDWH FRGH ^
SOD\6RXQG ^

7^MZZQLQVOR][\UMIV[\PI\I
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[
\WKPIVOMWZM`\MVL\PMJMPI^QWZ
\W
KPIVOM WZ M`\MVL \PM JMPI^QWZ
WN\PI\UM\PWL
WN
\PI\ UM\PWL

7^MZZQLQVO UM\PWL[

 DPRHEDVSHFLILF
 VRXQG FRGH ^

,!229(OWDOYOUhTELLvAN!MOEBATO
DOSOMETHING$ONTYOUHAVETOCALLTHE
PROCEDURE SORRYMETHOD ANDTHENTELLIT
WHICHTHINGTOROTATE
"2!$4HATSTHEREALLYCOOLTHINGABOUT//
7HENITSTIMEFOR SAY THETRIANGLETOROTATE
THEPROGRAMCODEINVOKESCALLS THEROTATE
METHODONTHETRIANGLEOBJECT4HERESTOFTHE
PROGRAMREALLYDOESNTKNOWORCAREHOWTHE
TRIANGLEDOESIT!NDWHENYOUNEEDTOADD
SOMETHINGNEWTOTHEPROGRAM YOUJUSTWRITE
ANEWCLASSFORTHENEWOBJECTTYPE SOTHENEW
OBJECTSWILLHAVETHEIROWNBEHAVIOR



,NQRZKRZD6KDSHLV
VXSSRVHGWREHKDYH<RXU
MRELVWRWHOOPHZKDWWR
GRDQGP\MRELVWRPDNHLWKDSSHQ
'RQW\RXZRUU\\RXUOLWWOHSURJUDP
PHUKHDGDERXWKRZ,GRLW

,FDQWDNH
FDUHRIP\VHOI
,NQRZKRZDQ$PRHED
LVVXSSRVHGWRURWDWH
DQGSOD\DVRXQG

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

?PI\LWaW]TQSMIJW]\77'

YiX`e
gfn\i
4IMETOPUMPSOMENEURONS

,WKHOSVPHGHVLJQLQDPRUHQDWXUDOZD\7KLQJV
KDYHDZD\RIHYROYLQJ
-R\VRIWZDUHDUFKLWHFW


1RWPHVVLQJDURXQGZLWKFRGH,YHDOUHDG\
WHVWHGMXVWWRDGGDQHZIHDWXUH
%UDGSURJUDPPHU

,OLNHWKDWWKHGDWDDQGWKHPHWKRGVWKDWRSHU
DWHRQWKDWGDWDDUHWRJHWKHULQRQHFODVV
-RVKEHHUGULQNHU

5HXVLQJFRGHLQRWKHUDSSOLFDWLRQV:KHQ,ZULWH
DQHZFODVV,FDQPDNHLWH[LEOHHQRXJKWREH
XVHGLQVRPHWKLQJQHZODWHU
&KULVSURMHFWPDQDJHU

,FDQWEHOLHYH&KULVMXVWVDLGWKDW+HKDVQW
ZULWWHQDOLQHRIFRGHLQ\HDUV

'DU\OZRUNVIRU&KULV
%HVLGHVWKHFKDLU"
$P\SURJUDPPHU


9OUJUSTREADASTORYBOUTAPROCEDURAL
PROGRAMMERGOINGHEAD TO HEADWITHAN//
PROGRAMMER9OUGOTAQUICKOVERVIEWOFSOME
KEY//CONCEPTSINCLUDINGCLASSES METHODS AND
ATTRIBUTES7ELLSPENDTHERESTOFTHECHAPTER
LOOKINGATCLASSESANDOBJECTSWELLRETURNTO
INHERITANCEANDOVERRIDINGINLATERCHAPTERS 
"ASEDONWHATYOUVESEENSOFARANDWHATYOU
MAYKNOWFROMAPREVIOUS//LANGUAGEYOUVE
WORKEDWITH TAKEAMOMENTTOTHINKABOUT
THESEQUESTIONS
7HATARETHEFUNDAMENTALTHINGSYOUNEEDTO
THINKABOUTWHENYOUDESIGNA*AVACLASS7HAT
ARETHEQUESTIONSYOUNEEDTOASKYOURSELF
)FYOUCOULDDESIGNACHECKLISTTOUSEWHEN
YOUREDESIGNINGACLASS WHATWOULDBEONTHE
CHECKLIST

PHWDFRJQLWLYH WLS
,I \RXUH VWXFN RQ DQ H[HUFLVH WU\ WDONLQJ DERXW
LW RXW ORXG 6SHDNLQJ DQG KHDULQJ DFWLYDWHV
D GLIIHUHQW SDUW RI \RXU EUDLQ $OWKRXJK LW
ZRUNV EHVW LI \RX KDYH DQRWKHU SHUVRQ WR
GLVFXVV LW ZLWK SHWV ZRUN WRR 7KDWV 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

FDUW&RQWHQWV

DGG7R&DUW
UHPRYH)URP&DUW
FKHFN2XW

$ODUP

%XWWRQ

6KRSSLQJ&DUW

SVW_[
LWM[

ODEHO
FRORU

DODUP7LPH
DODUP0RGH

SVW_[

VHW&RORU
VHW/DEHO
GH3UHVV
XQ'HSUHVV

VHW$ODUP7LPH
JHW$ODUP7LPH
VHW$ODUP
LV$ODUP6HW
VQRR]H

LWM[

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

NLQVWDQFHYDULDEOHV

SVW_[
LWM[

6RQJ

QV[\IVKM
^IZQIJTM[

WLWOH
DUWLVW

SVW_[

VHW7LWOH
VHW$UWLVW
SOD\

LWM[

VWDWH

<PQVO[IVWJRMK\KIVLWIZMKITTML

NPHWKRGV

UM\PWL[
EHKDYLRU

4HINGSANOBJECTKNOWSABOUTITSELFARECALLEDINSTANCE
VARIABLES4HEYREPRESENTANOBJECTSSTATETHEDATA AND
CANHAVEUNIQUEVALUESFOREACHOBJECTOFTHATTYPE
7KLQNRILQVWDQFHDVDQRWKHUZD\RIVD\LQJREMHFW

6KDUSHQ \RXU SHQFLO


&ILLINWHATATELEVISIONOBJECT
MIGHTNEEDTOKNOWANDDO

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

:KDWVWKHGLIIHUHQFHEHWZHHQ
DFODVVDQGDQREMHFW"

)KTI[[Q[VW\IVWJRMK\
J]\Q\[][ML\WKWV[\Z]K\\PMU
!CLASSISABLUEPRINTFORANOBJECT)TTELLSTHE
VIRTUALMACHINEHOWTOMAKEANOBJECTOFTHAT
PARTICULARTYPE%ACHOBJECTMADEFROMTHAT
CLASSCANHAVEITSOWNVALUESFORTHE
INSTANCEVARIABLESOFTHATCLASS&OR
EXAMPLE YOUMIGHTUSETHE"UTTON
CLASSTOMAKEDOZENSOFDIFFERENT
BUTTONS ANDEACHBUTTONMIGHTHAVE
ITSOWNCOLOR SIZE SHAPE LABEL ANDSOON

/RRNDWLWWKLVZD\

-90

FODVV

!NOBJECTISLIKEONEENTRYINYOURADDRESSBOOK
/NEANALOGYFOROBJECTSISAPACKETOFUNUSED2OLODEXCARDS
%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
ETC ANDANOTHERCLASSTOTESTYOURNEWCLASS4HETESTERCLASSISWHEREYOUPUT
THEMAINMETHOD ANDINTHATMAIN METHODYOUCREATEANDACCESSOBJECTS
OFYOURNEWCLASSTYPE4HETESTERCLASSHASONLYONEJOBTOTRYOUTTHEMETH
ODSANDVARIABLESOFYOURNEWOBJECTCLASSTYPE
&ROMTHISPOINTFORWARDINTHEBOOK YOULLSEETWOCLASSESINMANYOF
OUREXAMPLES/NEWILLBETHEREALCLASSnTHECLASSWHOSEOBJECTSWE
REALLYWANTTOUSE ANDTHEOTHERCLASSWILLBETHETESTERCLASS WHICHWE
CALLWHATEVER9OUR#LASS.AME)S7HVW'ULYH&OREXAMPLE IFWEMAKEA
%XQJHHCLASS WELLNEEDA%XQJHH7HVW'ULYHCLASSASWELL/NLYTHE
SOME#LASS.AME7HVW'ULYHCLASSWILLHAVEAMAIN METHOD ANDITSSOLE
PURPOSEISTOCREATEOBJECTSOFYOURNEWTYPETHENOT THE TESTERCLASS AND
THENUSETHEDOTOPERATOR TOACCESSTHEMETHODSANDVARIABLESOFTHENEW
OBJECTS4HISWILLALLBEMADESTUNNINGLYCLEARBYTHEFOLLOWINGEXAMPLES

7KH'RW2SHUDWRU 
4HEDOTOPERATOR GIVES
YOUACCESSTOANOBJECTS
STATEANDBEHAVIORINSTANCE
VARIABLESANDMETHODS 
MAKEANEWOBJECT
$OGDNEW$OG 
TELLITTOBARKBYUSINGTHE
DOTOPERATORONTHE
VARIABLEDTOCALLBARK
DBARK 

:ULWH\RXUFODVV

FODVV'RJ^
LQWVL]H
6WULQJEUHHG
6WULQJQDPH

LQVWDQFHYD

SETITSSIZEUSINGTHE
DOTOPERATOR

ULDEOHV

DPHWKRG

'2*

EDUN

YRLGEDUN ^
6\VWHPRXWSULQWOQ 5XII5XII 
`
`

KRG
DLQPHW RGH
P

D

W
V
F
X
M
QDSXHW[WVWHS
Q
R
J

H
U
ZH LWLQWKHQ
LQ

DSIZE

VL]H
EUHHG
QDPH

:ULWHDWHVWHU 7HVW'ULYH FODVV

FODVV'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RJWHVWFRGHJRHVKHUH
`
`

,Q\RXUWHVWHUPDNHDQREMHFWDQGDFFHVV
WKHREMHFWVYDULDEOHVDQGPHWKRGV

FODVV'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RJG QHZ'RJ 

EMHFW
XVHWKHGRWRSHUDWRU  
WRVHWWKHVL]HRIWKH'
RJ
DQGWRFDOOLWVEDU
N PHWKRG

GVL]H 

EDUN 
GRW WRG
U
RSHUD `
`



PDNHD'RJR

,I\RXDOUHDG\KDYHVRPH22VDYY\
\RXOONQRZZHUHQRWXVLQJHQFDSVXODWLRQ
:HOOJHWWKHUHLQFKDSWHU

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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,(

WLWOH
JHQUH
UDWLQJ

REMHFW 

UDWLQJ

SOD\,W
4HE-OVIE4EST$RIVECLASSCREATESOBJECTSINSTANCES OF
THE-OVIECLASSANDUSESTHEDOTOPERATOR TOSETTHE
INSTANCEVARIABLESTOASPECIFICVALUE4HE-OVIE4EST$RIVE
CLASSALSOINVOKESCALLS AMETHODONONEOFTHEOBJECTS
&ILLINTHECHARTTOTHERIGHTWITHTHEVALUESTHETHREE
OBJECTSHAVEATTHEENDOFMAIN 

JHQUH

WLWOH
REMHFW 

JHQUH
UDWLQJ
WLWOH

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
LOOSETOINTERACTWITHOTHEROBJECTS ETC
!SA@SNEAKPREVIEW THOUGH OFHOWAREAL*AVAAPPLICATIONMIGHTBEHAVE
HERESALITTLEEXAMPLE"ECAUSEWERESTILLATTHEEARLIESTSTAGESOFLEARNING*AVA
WEREWORKINGWITHASMALLTOOLKIT SOYOULLlNDTHISPROGRAMALITTLECLUNKY
ANDINEFlCIENT9OUMIGHTWANTTOTHINKABOUTWHATYOUCOULDDOTOIMPROVE
IT ANDINLATERCHAPTERSTHATSEXACTLYWHATWELLDO$ONTWORRYIFSOMEOFTHE
CODEISCONFUSINGTHEKEYPOINTOFTHISEXAMPLEISTHATOBJECTSTALKTOOBJECTS

<PM/]M[[QVO/IUM
3UMMARY
4HEGUESSINGGAMEINVOLVESA@GAMEOBJECTANDTHREE@PLAYEROBJECTS4HEGAMEGEN
ERATESARANDOMNUMBERBETWEENAND ANDTHETHREEPLAYEROBJECTSTRYTOGUESS
IT7EDIDNTSAYITWASAREALLYEXCITINGGAME

*DPH/DXQFKHU

PDLQ 6WULQJ>@DUJV

*XHVV*DPH
S
S
S

PDNH
*XHVV*VD
REMHFW DPH
WHOOV DQG
VWDUW*LWWR
DPH

LQVWDQ
YDULDEOHFVH
IRUWK
SOD\HUVHWKUHH

VWDUW*DPH

#LASSES
*XHVV*DPHFODVV3OD\HUFODVV*DPH/DXQFKHUFODVV
4HE,OGIC

3OD\HU

 4HE'AME,AUNCHERCLASSISWHERETHEAPPLICATIONSTARTSITHASTHEMAIN METHOD

QXPEHU

 )NTHEMAIN METHOD A'UESS'AMEOBJECTISCREATED ANDITSSTART'AME METHOD


ISCALLED

JXHVV

 4HE'UESS'AMEOBJECTSSTART'AME METHODISWHERETHEENTIREGAMEPLAYSOUT
)TCREATESTHREEPLAYERS THENhTHINKSvOFARANDOMNUMBERTHETARGETFORTHEPLAYERS
TOGUESS )TTHENASKSEACHPLAYERTOGUESS CHECKSTHERESULT ANDEITHERPRINTSOUT
INFORMATIONABOUTTHEWINNINGPLAYERS ORASKSTHEMTOGUESSAGAIN



WKH
WKLVSQOXPEHU
JXHVVHGD\HU
PHWK
PDNLQJRGIRU
JXHVV D

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

*XHVV*DPHKDVW HH
LQVWDQFH
YDULDEOHVIRUWKHKU
W
KU
HH3OD\HU
REMHFWV

SXEOLFFODVV*XHVV*DPH^
3OD\HUS
3OD\HUS
3OD\HUS
SXEOLFYRLGVWDUW*DPH ^
S QHZ3OD\HU 
S QHZ3OD\HU 
S QHZ3OD\HU 

LQWJXHVVS 
LQWJXHVVS 
LQWJXHVVS 

FUHDWHWKUHH3OD\
MHFWVDQG
DVVLJQWKHPWRWKHHUWRE
KU
HH
3OD\HU
LQVWDQFHYDULDEOHV
GHFODUHWKUHHYDULDEOHVWRKROGWKH
WKUHHJXHVVHVWKH3OD\HUVP
DNH

ERROHDQSLV5LJKW IDOVH
ERROHDQSLV5LJKW IDOVH
ERROHDQSLV5LJKW IDOVH

GHFODUHWKUHHYDULDEOHVWRKROGDWUXH
IDOVHEDVHGRQWKHSOD\HUVDQVZHU RU

LQWWDUJHW1XPEHU  LQW  0DWKUDQGRP   


6\VWHPRXWSULQWOQ ,PWKLQNLQJRIDQXPEHUEHWZHHQDQG 

PDNHDWDUJHWQXPEHUWKDWWKH
SOD\HUVKDYHWRJXHVV

ZKLOH WUXH ^
6\VWHPRXWSULQWOQ 1XPEHUWRJXHVVLVWDUJHW1XPEHU 
SJXHVV 
SJXHVV 
SJXHVV 

FDOOHDFKSOD\HUVJXHVV PHWKRG

JXHVVS SQXPEHU
6\VWHPRXWSULQWOQ 3OD\HURQHJXHVVHGJXHVVS 
JXHVVS SQXPEHU
6\VWHPRXWSULQWOQ 3OD\HUWZRJXHVVHGJXHVVS 
JXHVVS SQXPEHU
6\VWHPRXWSULQWOQ 3OD\HUWKUHHJXHVVHGJXHVVS 

LI JXHVVS WDUJHW1XPEHU ^
SLV5LJKW WUXH
`
LI JXHVVS WDUJHW1XPEHU ^
SLV5LJKW WUXH
`
LI JXHVVS WDUJHW1XPEHU ^
SLV5LJKW WUXH
`

JHWHDFKSOD\HUVJXHVV WKHUHVXOWRI LU


JXHVV PHWKRGUXQQLQJ E\DFFHVVLQJWWKH
KH
QXPEHUYDULDEOHRIHDFKSOD\HU

FKHFNHDFKSOD\HUVJXHVVWRVHHLILWPDWFKHV
WKHWDUJHWQXPEHU,IDSOD\HULVULJKW

WKHQVHWWKDWSOD\HUVYDULDEOHWREHWUXH
UHPHPEHUZHVHWLWIDOVHE\GHIDXOW 
LISOD\HURQH25SOD\HUWZR25SOD\HUWKUHHLVULJ
KW
WKH__RSHUDWRUPHDQV25

LI SLV5LJKW__SLV5LJKW__SLV5LJKW ^

6\VWHPRXWSULQWOQ :HKDYHDZLQQHU 
6\VWHPRXWSULQWOQ 3OD\HURQHJRWLWULJKW"SLV5LJKW 
6\VWHPRXWSULQWOQ 3OD\HUWZRJRWLWULJKW"SLV5LJKW 
6\VWHPRXWSULQWOQ 3OD\HUWKUHHJRWLWULJKW"SLV5LJKW 
6\VWHPRXWSULQWOQ *DPHLVRYHU 
EUHDNJDPHRYHUVREUHDNRXWRIWKHORRS
`HOVH^
ZHPXVWNHHSJRLQJEHFDXVHQRERG\JRWLWULJKW
6\VWHPRXWSULQWOQ 3OD\HUVZLOOKDYHWRWU\DJDLQ 
`HQGLIHOVH
`HQGORRS
`HQGPHWKRG
`HQGFODVV

RWKHUZLV
SOD\HUVIHRUVDWD\LQWKHORRSDQGDVN
QRWKHUJXHVV
WKH

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ^
QXPEHU  LQW  0DWKUDQGRP   
6\VWHPRXWSULQWOQ ,PJXHVVLQJ
QXPEHU 
`
`

/UTPUTITWILLBEDIFFERENTEACHTIMEYOURUNIT
)LOH(GLW:LQGRZ+HOS([SORGH

MDYD*DPH/DXQFKHU
,PWKLQNLQJRIDQXPEHUEHWZHHQDQG
1XPEHUWRJXHVVLV

SXEOLFFODVV*DPH/DXQFKHU^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
*XHVV*DPHJDPH QHZ*XHVV*DPH 
JDPHVWDUW*DPH 
`
`

,PJXHVVLQJ
,PJXHVVLQJ
,PJXHVVLQJ
3OD\HURQHJXHVVHG
3OD\HUWZRJXHVVHG
3OD\HUWKUHHJXHVVHG

-DYDWDNHVRXWWKH
*DUEDJH
%ACHTIMEANOBJECTISCREATED
IN*AVA ITGOESINTOANAREAOF
MEMORYKNOWNAS4HE(EAP
!LLOBJECTSNOMATTERWHEN WHERE
ORHOWTHEYRECREATEDnLIVEONTHE
HEAP"UTITSNOTJUSTANYOLDMEMORY
HEAPTHE*AVAHEAPISACTUALLYCALLEDTHE
'ARBAGE #OLLECTIBLE(EAP7HENYOU
CREATEANOBJECT *AVAALLOCATESMEMORY
SPACEONTHEHEAPACCORDINGTOHOW
MUCHTHATPARTICULAROBJECTNEEDS!N
OBJECTWITH SAY INSTANCEVARIABLES
WILLPROBABLYNEEDMORESPACETHANAN
OBJECTWITHONLYTWOINSTANCEVARIABLES
"UTWHATHAPPENSWHENYOUNEEDTO
RECLAIMTHATSPACE(OWDOYOUGETAN
OBJECTOUTOFTHEHEAPWHENYOUREDONE
WITHIT*AVAMANAGESTHATMEMORY
FORYOU7HENTHE*6-CAN@SEETHATAN
OBJECTCANNEVERBEUSEDAGAIN THAT
OBJECTBECOMESELIGIBLEFORGARBAGE
COLLECTION!NDIFYOURERUNNINGLOWON
MEMORY THE'ARBAGE#OLLECTORWILLRUN
THROWOUTTHEUNREACHABLEOBJECTS AND
FREEUPTHESPACE SOTHATTHESPACECAN
BEREUSED)NLATERCHAPTERSYOULLLEARN
MOREABOUTHOWTHISWORKS



3OD\HUVZLOOKDYHWRWU\DJDLQ
1XPEHUWRJXHVVLV
,PJXHVVLQJ
,PJXHVVLQJ
,PJXHVVLQJ
3OD\HURQHJXHVVHG
3OD\HUWZRJXHVVHG
3OD\HUWKUHHJXHVVHG
3OD\HUVZLOOKDYHWRWU\DJDLQ
1XPEHUWRJXHVVLV
,PJXHVVLQJ
,PJXHVVLQJ
,PJXHVVLQJ
3OD\HURQHJXHVVHG
3OD\HUWZRJXHVVHG
3OD\HUWKUHHJXHVVHG
:HKDYHDZLQQHU
3OD\HURQHJRWLWULJKW"WUXH
3OD\HUWZRJRWLWULJKW"IDOVH
3OD\HUWKUHHJRWLWULJKW"IDOVH
*DPHLVRYHU

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
VARIABLESANDMETHODS(OW
DO)DOTHATIFEVERYTHINGHASTO
GOINACLASS

A:

4HEREISNTACONCEPTOF
@GLOBALVARIABLESANDMETHODSIN
A*AVA//PROGRAM)NPRACTICAL
USE HOWEVER THEREARETIMES
WHENYOUWANTAMETHODOR
ACONSTANT TOBEAVAILABLE
TOANYCODERUNNINGINANY
PARTOFYOURPROGRAM4HINK
OFTHEUDQGRP METHODIN
THE0HRASE / -ATICAPPITSA
METHODTHATSHOULDBECALLABLE
FROMANYWHERE/RWHATABOUT
ACONSTANTLIKEPI9OULLLEARN
INCHAPTERTHATMARKING
AMETHODASSXEOLFAND
VWDWLFMAKESITBEHAVEMUCH
LIKEA@GLOBAL!NYCODE INANY
CLASSOFYOURAPPLICATION CAN
ACCESSAPUBLICSTATICMETHOD
!NDIFYOUMARKAVARIABLEAS
SXEOLF VWDWLF ANDQDO
nYOUHAVEESSENTIALLYMADEA
GLOBALLY AVAILABLECONSTANT

Q:

4HENHOWISTHISOBJECT
ORIENTEDIFYOUCANSTILLMAKE
GLOBALFUNCTIONSANDGLOBAL
DATA

A:

&IRSTOFALL EVERYTHING
IN*AVAGOESINACLASS3OTHE
CONSTANTFORPIANDTHEMETHOD
FORUDQGRP ALTHOUGHBOTH
PUBLICANDSTATIC AREDEFINED
WITHINTHE0DWKCLASS!NDYOU
MUSTKEEPINMINDTHATTHESE
STATICGLOBAL LIKE THINGSARETHE
EXCEPTIONRATHERTHANTHERULE
IN*AVA4HEYREPRESENTAVERY
SPECIALCASE WHEREYOUDONT
HAVEMULTIPLEINSTANCESOBJECTS

Q:

7HATISA*AVAPROGRAM
7HATDOYOUACTUALLYDELIVER

A:

!*AVAPROGRAMISAPILE
OFCLASSESORATLEASTONECLASS 
)NA*AVAAPPLICATION ONEOF
THECLASSESMUSTHAVEAMAIN
METHOD USEDTOSTART UPTHE
PROGRAM3OASAPROGRAMMER
YOUWRITEONEORMORECLASSES
!NDTHOSECLASSESAREWHATYOU
DELIVER)FTHEEND USERDOESNT
HAVEA*6- THENYOULLALSO
NEEDTOINCLUDETHATWITH
YOURAPPLICATIONSCLASSES
SOTHATTHEYCANRUNYOUR
PROGRAM4HEREAREANUMBER
OFINSTALLERPROGRAMSTHAT
LETYOUBUNDLEYOURCLASSES
WITHAVARIETYOF*6-SSAY FOR
DIFFERENTPLATFORMS ANDPUTITALL
ONA#$ 2/-4HENTHEEND USER
CANINSTALLTHECORRECTVERSIONOF
THE*6-ASSUMINGTHEYDONT
ALREADYHAVEITONTHEIRMACHINE

Q:

7HATIF)HAVEAHUNDRED
CLASSES/RATHOUSAND)SNT
THATABIGPAINTODELIVER
ALLTHOSEINDIVIDUALlLES
#AN)BUNDLETHEMINTOONE
!PPLICATION4HING

A:

9ES ITWOULDBEABIG
PAINTODELIVERAHUGEBUNCHOF
INDIVIDUALFILESTOYOUREND USERS
BUTYOUWONTHAVETO9OUCAN
PUTALLOFYOURAPPLICATIONFILES
INTOA*AVA!RCHIVEnAJARFILEn
THATSBASEDONTHEPKZIPFORMAT
)NTHEJARFILE YOUCANINCLUDE
ASIMPLETEXTFILEFORMATTEDAS
SOMETHINGCALLEDAMANIFEST THAT
DEFINESWHICHCLASSINTHATJAR
HOLDSTHEMAIN METHODTHAT
SHOULDRUN

0DNH LW 6WLF

N
!CLASSISLI

KEARECIP
E
/BJECTSA
RELIKE
COOKIES

:MDD=LHGAFLK

 2EMHFWRULHQWHGSURJUDPPLQJOHWV\RXH[WHQG










DSURJUDPZLWKRXWKDYLQJWRWRXFKSUHYLRXVO\
WHVWHGZRUNLQJFRGH
$OO-DYDFRGHLVGHILQHGLQDFODVV
$FODVVGHVFULEHVKRZWRPDNHDQREMHFWRI
WKDWFODVVW\SH$FODVVLVOLNHDEOXHSULQW
$QREMHFWFDQWDNHFDUHRILWVHOI\RXGRQW
KDYHWRNQRZRUFDUHKRZWKHREMHFWGRHVLW
$QREMHFWNQRZVWKLQJVDQGGRHVWKLQJV
7KLQJVDQREMHFWNQRZVDERXWLWVHOIDUHFDOOHG
LQVWDQFHYDULDEOHV7KH\UHSUHVHQWWKHVWDWH
RIDQREMHFW
7KLQJVDQREMHFWGRHVDUHFDOOHGPHWKRGV
7KH\UHSUHVHQWWKHEHKDYLRURIDQREMHFW
:KHQ\RXFUHDWHDFODVV\RXPD\DOVRZDQW
WRFUHDWHDVHSDUDWHWHVWFODVVZKLFK\RXOO
XVHWRFUHDWHREMHFWVRI\RXUQHZFODVVW\SH
$FODVVFDQLQKHULWLQVWDQFHYDULDEOHVDQG
PHWKRGVIURPDPRUHDEVWUDFWVXSHUFODVV
$WUXQWLPHD-DYDSURJUDPLVQRWKLQJPRUH
WKDQREMHFWVWDONLQJWRRWKHUREMHFWV
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

"%THECOMPILER

1dQ^OU_Q

(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRI
WKHVHILOHVZLOOFRPSLOH
,IWKH\ZRQWFRPSLOH
KRZZRXOG\RXIL[WKHP
DQGLIWKH\GRFRPSLOH
ZKDWZRXOGEHWKHLURXWSXW"

FODVV7DSH'HFN^

Licensed by
Eduard Simons
104038

ERROHDQFDQ5HFRUG IDOVH

FODVV'9'3OD\HU^

YRLGSOD\7DSH ^
6\VWHPRXWSULQWOQ WDSHSOD\LQJ 
`

YRLGUHFRUG7DSH ^
6\VWHPRXWSULQWOQ WDSHUHFRUGLQJ 
`
`
FODVV7DSH'HFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

ERROHDQFDQ5HFRUG IDOVH
YRLGUHFRUG'9' ^
6\VWHPRXWSULQWOQ '9'UHFRUGLQJ 
`
`
FODVV'9'3OD\HU7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

WFDQ5HFRUG WUXH
WSOD\7DSH 

'9'3OD\HUG QHZ'9'3OD\HU 
GFDQ5HFRUG WUXH
GSOD\'9' 

LI WFDQ5HFRUG WUXH ^


 WUHFRUG7DSH 

LI GFDQ5HFRUG WUXH ^


 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

1dQ^OU_Q

Code Magnets
!*AVAPROGRAMISALLSCRAMBLEDUPON
THEFRIDGE#ANYOURECONSTRUCTTHE
CODESNIPPETSTOMAKEAWORKING*AVA
PROGRAMTHATPRODUCESTHEOUTPUTLISTED
BELOW3OMEOFTHECURLYBRACESFELLON
THEFLOORANDTHEYWERETOOSMALLTOPICK
UP SOFEELFREETOADDASMANYOFTHOSE
ASYOUNEED

GSOD\6QDUH 

'UXP.LWG QHZ'UXP.LW 
 WUXH
ERROHDQWRS+DW
WUXH
ERROHDQVQDUH

YRLGSOD\6QDUH ^
EDEDQJ 
6\VWHPRXWSULQWOQ EDQJEDQJ
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

L

I GVQ


`

GSOD\

DUH

WUXH 
^
6QDUH


GVQDUH IDOVH

FODVV'UXP.LW7HVW'ULYH^
DW 

D\7RS+

SO
G

FODVV'UXP.LW^

)LOH(GLW:LQGRZ+HOS'DQFH

YRLGSOD
\7RS+DW ^
6\VWHP
RXWSULQWOQ
GLQJGLQJ
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
THEPOOLANDPLACETHEMINTOTHE
BLANKLINESINTHECODE9OUMAY
USETHESAMESNIPPETMORETHAN
ONCE ANDYOUWONTNEEDTOUSE
ALLTHESNIPPETS9OURGOALISTO
MAKECLASSESTHATWILLCOMPILEAND
RUNANDPRODUCETHEOUTPUTLISTED

ZKLOH BBBBBBBBBBB ^
HKHOOR 
BBBBBBBBBBBBBBBBBBBBBBBBBB
LI BBBBBBBBBBBB ^
HFRXQW HFRXQW
`
LI BBBBBBBBBBBB ^

/UTPUT

HFRXQW HFRXQWHFRXQW
`

)LOH(GLW:LQGRZ+HOS,PSORGH

MDYD(FKR7HVW'ULYH

[ [

KHOORRRR

`
6\VWHPRXWSULQWOQ HFRXQW 
`
`

KHOORRRR
KHOORRRR
KHOORRRR


FODVVBBBBBBBBBBBB^
LQWBBBBBBBBB 
YRLGBBBBBBBBBBB^

"ONUS1UESTION

6\VWHPRXWSULQWOQ KHOORRRR 
`
`

)FTHELASTLINEOFOUTPUTWAS
INSTEADOFHOWWOULD
YOUCOMPLETETHEPUZZLE

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE
X
Y
E
COUNT
EE 
ECOUNT 
ECOUNTCOUNT 
ECOUNTECOUNT 



X
X
X
X

%CHO
4ESTER
ECHO
COUNT
HELLO

EE
%CHOE
%CHOEE
%CHOENEW%CHO 

X
X

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

"

,
P
D

KR

!BUNCHOF*AVACOMPONENTS INFULLCOSTUME AREPLAYINGAPARTY


GAME h7HOAM)v4HEYGIVEYOUACLUE ANDYOUTRYTOGUESSWHO
THEYARE BASEDONWHATTHEYSAY!SSUMETHEYALWAYSTELLTHETRUTH
ABOUTTHEMSELVES)FTHEYHAPPENTOSAYSOMETHINGTHATCOULDBETRUE
FORMORETHANONEOFTHEM CHOOSEALLFORWHOMTHATSENTENCECAN
APPLY&ILLINTHEBLANKSNEXTTOTHESENTENCEWITHTHENAMESOFONEOR
MOREATTENDEES4HEFIRSTONESONUS
4ONIGHTSATTENDEES

#LASS-ETHOD/BJECT)NSTANCEVARIABLE

,DPFRPSLOHGIURPDMDYDILOH

FODVV

0\LQVWDQFHYDULDEOHYDOXHVFDQ
EHGLIIHUHQWIURPP\EXGG\V
YDOXHV
,EHKDYHOLNHDWHPSODWH
,OLNHWRGRVWXII
,FDQKDYHPDQ\PHWKRGV
,UHSUHVHQWVWDWH
,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

%XERCISE3OLUTIONS
$

&RGH0DJQHWV
FODVV'UXP.LW^

FODVV7DSH'HFN^
ERROHDQFDQ5HFRUG IDOVH
YRLGSOD\7DSH ^
6\VWHPRXWSULQWOQ WDSHSOD\LQJ 
`
YRLGUHFRUG7DSH ^
6\VWHPRXWSULQWOQ WDSHUHFRUGLQJ 
`
`
FODVV7DSH'HFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


7DSH'HFNW QHZ7DSH'HFN  
ERROHDQWRS+DW WUXH
ERROHDQVQDUH WUXH

WFDQ5HFRUG WUXH
WSOD\7DSH 

YRLGSOD\7RS+DW ^
6\VWHPRXWSULQWOQ GLQJGLQJGDGLQJ 
`

LI WFDQ5HFRUG WUXH ^


 WUHFRUG7DSH 
`
`:HYHJRWWKHWHPSODWHQRZZHKDYH
`WRPDNHDQREMHFW

YRLGSOD\6QDUH ^
6\VWHPRXWSULQWOQ EDQJEDQJEDEDQJ 
`
`
FODVV'UXP.LW7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

'UXP.LWG QHZ'UXP.LW 
GSOD\6QDUH 
GVQDUH IDOVH
GSOD\7RS+DW 
LI GVQDUH WUXH ^
GSOD\6QDUH 
`
`
`
)LOH(GLW:LQGRZ+HOS'DQFH

MDYD'UXP.LW7HVW'ULYH
EDQJEDQJEDEDQJ
GLQJGLQJGDGLQJ



FODVV'9'3OD\HU^
ERROHDQFDQ5HFRUG IDOVH
YRLGUHFRUG'9' ^
6\VWHPRXWSULQWOQ '9'UHFRUGLQJ 
`
YRLGSOD\'9'  ^
6\VWHPRXWSULQWOQ '9'SOD\LQJ 
`
`
FODVV'9'3OD\HU7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'9'3OD\HUG QHZ'9'3OD\HU 
% GFDQ5HFRUG WUXH
GSOD\'9' 
LI GFDQ5HFRUG WUXH ^
 GUHFRUG'9' 
`
`7KHOLQHGSOD\'9'  ZRXOGQW
`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 ^
(FKRH QHZ(FKR 

7HOAM)

(FKRH QHZ(FKR  WKHFRUUHFWDQVZHU

,DPFRPSLOHGIURPDMDYDILOH

FODVV

RU

0\LQVWDQFHYDULDEOHYDOXHVFDQEH
GLIIHUHQWIURPP\EXGG\VYDOXHV

,EHKDYHOLNHDWHPSODWH

FODVV

,OLNHWRGRVWXII

REMHFWPHWKRG

,FDQKDYHPDQ\PHWKRGV

FODVVREMHFW

,UHSUHVHQWVWDWH

LQVWDQFHYDULDEOH

LI [! ^

,KDYHEHKDYLRUV

REMHFWFODVV

HFRXQW HFRXQWHFRXQW

,DPORFDWHGLQREMHFWV

PHWKRGLQVWDQFHYDULDEOH

,OLYHRQWKHKHDS

REMHFW

,DPXVHGWRFUHDWHREMHFW
LQVWDQFHV

FODVV

0\VWDWHFDQFKDQJH

REMHFWLQVWDQFHYDULDEOH

,GHFODUHPHWKRGV

FODVV

,FDQFKDQJHDWUXQWLPH

REMHFWLQVWDQFHYDULDEOH

(FKRH HLVWKHERQXVDQVZHU
LQW[ 
ZKLOH [ ^
HKHOOR 
HFRXQW HFRXQW
LI [

 ^

HFRXQW HFRXQW
`

`
[ [
`
6\VWHPRXWSULQWOQ HFRXQW 
`
`

FODVV(FKR^
LQWFRXQW 

REMHFW

YRLGKHOOR  ^
6\VWHPRXWSULQWOQ KHOORRRR 
`
`

1RWHERWKFODVVHVDQGREMHFWVDUHVDLGWRKDYHVWDWHDQGEHKDYLRU
7KH\UHGHQHGLQWKHFODVVEXWWKHREMHFWLVDOVRVDLGWRKDYH
WKHP5LJKWQRZZHGRQWFDUHZKHUHWKH\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
USEDVARIABLESINTWOPLACESASOBJECTVWDWHINSTANCEVARIABLES ANDASORFDOVARIABLES
VARIABLESDECLAREDWITHINAMETHOD ,ATER WELLUSEVARIABLESASDUJXPHQWVVALUESSENTTOA
METHODBYTHECALLINGCODE ANDASUHWXUQW\SHVVALUESSENTBACKTOTHECALLEROFTHEMETHOD 
9OUVESEENVARIABLESDECLAREDASSIMPLESULPLWLYHINTEGERVALUESTYPELQW 9OUVESEEN
VARIABLESDECLAREDASSOMETHINGMOREFRPSOH[LIKEA3TRINGORANARRAY"UTWKHUHVJRWWDEH
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
'IRAFFEREFERENCEINTOA2ABBITVARIABLEWHAT
HAPPENSWHENSOMEONETRIESTOASKTHESO CALLED
2ABBITTOKRS !NDITWONTLETYOUPUTA
mOATINGPOINTNUMBERINTOANINTEGERVARIABLE
UNLESSYOUACKNOWLEDGETOTHECOMPILERTHATYOU
KNOWYOUMIGHTLOSEPRECISIONLIKE EVERYTHING
AFTERTHEDECIMALPOINT 
4HECOMPILERCANSPOTMOSTPROBLEMS

\SH
VDERXWW DIIH
H
U
D
F

D
Y
D
SXWD*LU
<RXFDQW LWYDULDEOH
LQD5DEE

5DEELWKRSSHU QHZ*LUDIIH 
$ONTEXPECTTHATTOCOMPILE4HANKFULLY
&ORALLTHISTYPE SAFETYTOWORK YOUMUSTDECLARE
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

1LTQSMILW]JTMUWKPIVWUISMQ\IVQV\

3ULPLWLYH7\SHV

7HENYOUTHINKOF*AVAVARIABLES THINKOFCUPS#OFFEECUPS TEACUPS GIANT


CUPSTHATHOLDLOTSANDLOTSOFBEER THOSEBIGCUPSTHEPOPCORNCOMESINAT
THEMOVIES CUPSWITHCURVY SEXYHANDLES ANDCUPSWITHMETALLICTRIMTHAT
YOULEARNEDCANNEVER EVERGOINTHEMICROWAVE

7\SH%LW'HSWK

!VARIABLEISJUSTACUP!CONTAINER)THOLDSSOMETHING

CHAR

)THASASIZE ANDATYPE)NTHISCHAPTER WEREGOINGTOLOOKlRSTATTHE


VARIABLESCUPS THATHOLDPRIMITIVES THENALITTLELATERWELLLOOKATCUPS
THATHOLDREFERENCESTOOBJECTS3TAYWITHUSHEREONTHEWHOLECUPANALOGYAS
SIMPLEASITISRIGHTNOW ITLLGIVEUSACOMMONWAYTOLOOKATTHINGSWHEN
THEDISCUSSIONGETSMORECOMPLEX!NDTHATLLHAPPENSOON

QXPHULF DOODUHVLJQHG

0RIMITIVESARELIKETHECUPSTHEYHAVEATTHECOFFEEHOUSE)FYOUVEBEENTOA
3TARBUCKS YOUKNOWWHATWERETALKINGABOUTHERE4HEYCOMEINDIFFERENT
SIZES ANDEACHHASANAMELIKE@SHORT @TALL AND h)DLIKEA
@GRANDEMOCHAHALF CAFFWITHEXTRAWHIPPEDCREAMv
9OUMIGHTSEETHECUPSDISPLAYEDONTHECOUNTER
SOYOUCANORDERAPPROPRIATELY

9DOXH5DQJH

ERROHDQDQGFKDU
BOOLEAN*6- SPECIFIC TRUEORFALSE
BITS TO

LQWHJHU
BYTE

BITS

TO

SHORT

BITS TO



INT

BITS 

TO

LONG

BITS HUGETOHUGE

RDWLQJSRLQW
FLOAT

BITS VARIES

DOUBLE BITS VARIES

VPDOOVKRUWWDOOJUDQGH
!NDIN*AVA PRIMITIVESCOMEINDIFFERENTSIZES ANDTHOSESIZES
HAVENAMES7HENYOUDECLAREAVARIABLEIN*AVA
YOUMUSTDECLAREITWITHASPECIlCTYPE4HE
FOURCONTAINERSHEREAREFORTHEFOUR
INTEGERPRIMITIVESIN*AVA

3ULPLWLYHGHFODUDWLRQV
ZLWKDVVLJQPHQWV
INTX
X
BYTEB
BOOLEANIS&UNTRUE
DOUBLED
CHARC@F

ORQJLQWVKRUWE\WH

INTZX

%ACHCUPHOLDSAVALUE SOFOR*AVAPRIMITIVES RATHERTHANSAYING h)DLIKEA


TALLFRENCHROASTv YOUSAYTOTHECOMPILER h)DLIKEANINTVARIABLEWITHTHE
NUMBERPLEASEv%XCEPTFORONETINYDIFFERENCEIN*AVAYOUALSOHAVETO
GIVEYOURCUPANAME3OITSACTUALLY h)DLIKEANINTPLEASE WITHTHEVALUE
OF ANDNAMETHEVARIABLEHEIGHTv%ACHPRIMITIVEVARIABLEHASAlXED
NUMBEROFBITSCUPSIZE 4HESIZESFORTHESIXNUMERICPRIMITIVESIN*AVA
ARESHOWNBELOW

E\WHVKRUWLQWORQJ

RDWGRXEOH

0).+*.,+*.,

BOOLEANIS0UNK2OCK
IS0UNK2OCKFALSE
BOOLEANPOWER/N
POWER/NIS&UN
LONGBIG
FLOATFF


RWWDKDYHWKDW
1RWHWKHI* FDXVH-DYDWKLQNV
IORDWEH
WLV
ZLWKD
DIORDWLQJSRLQ
QJ
KL
DQ\W ZLWK \RXXVHI
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\
"ESURETHEVALUECANlTINTOTHEVARIABLE
9OUCANTPUTALARGEVALUEINTOA
SMALLCUP
7ELL /+ YOUCAN BUTYOULL
LOSESOME9OULLGET ASWESAY
SPILLAGE4HECOMPILERTRIESTO
HELPPREVENTTHISIFITCANTELL
FROMYOURCODETHATSOMETHINGS
NOTGOINGTOlTINTHECONTAINER
VARIABLECUP YOUREUSING
&OREXAMPLE YOUCANTPOURAN
INT FULLOFSTUFFINTOABYTE SIZED
CONTAINER ASFOLLOWS

6KDUSHQ \RXU SHQFLO


4HECOMPILERWONTLETYOUPUT
AVALUEFROMALARGECUPINTO
ASMALLONE"UTWHATABOUT
THEOTHERWAYPOURINGA
SMALLCUPINTOABIGONE.O
PROBLEM
"ASEDONWHATYOUKNOW
ABOUTTHESIZEANDTYPEOFTHE
PRIMITIVEVARIABLES SEEIFYOU
CANFIGUREOUTWHICHOFTHESE
ARELEGALANDWHICHARENT
7EHAVENTCOVEREDALLTHE
RULESYET SOONSOMEOFTHESE
YOULLHAVETOUSEYOURBEST
JUDGMENT4IP4HECOMPILER
ALWAYSERRSONTHESIDEOF
SAFETY

Licensed by
Eduard Simons
104038
LQW[ 
E\WHE [

ZRQWZRUN

7HYDOESNTTHISWORK YOUASK!FTERALL THEVALUEOFXIS ANDISDElNITELY


SMALLENOUGHTOlTINTOABYTE9OUKNOWTHAT ANDWEKNOWTHAT BUTALLTHE
COMPILERCARESABOUTISTHATYOURETRYINGTOPUTABIGTHINGINTOASMALLTHING
ANDTHERESTHEPOSSIBILITYOFSPILLING$ONTEXPECTTHECOMPILERTOKNOWWHATTHE
VALUEOFXIS EVENIFYOUHAPPENTOBEABLETOSEEITLITERALLYINYOURCODE
9OUCANASSIGNAVALUETOAVARIABLEINONEOFSEVERALWAYSINCLUDING

NTYPEALITERALVALUEAFTERTHEEQUALSSIGNX IS'OODTRUE ETC

NASSIGNTHEVALUEOFONEVARIABLETOANOTHERXY

NUSEANEXPRESSIONCOMBININGTHETWOXY 

&ROMTHEFOLLOWINGLIST #IRCLE
THESTATEMENTSTHATWOULDBE
LEGALIFTHESELINESWEREINA
SINGLEMETHOD
LQW[ 
ERROHDQERR [
LQWJ 
LQW\ J
\ \

)NTHEEXAMPLESBELOW THELITERALVALUESAREINBOLDITALICS

VKRUWV

LQWVL]H 

GHFODUHDQLQWQDPHGVL]HDVVLJQLWWKHYDOXH

V \

FKDULQLWLDO M

GHFODUHDFKDUQDPHGLQLWLDODVVLJQLWWKHYDOXHM

E\WHE 

GRXEOHG 

GHFODUHDGRXEOHQDPHGGDVVLJQLWWKHYDOXH

ERROHDQLV&UD]\ 

GHFODUHDERROHDQQDPHGLV&UD]\ QRDVVLJQPHQW

LV&UD]\ WUXH

DVVLJQWKHYDOXHWUXHWRWKHSUHYLRXVO\GHFODUHGLV&UD]\

LQW\ [ 



GHFODUHDQLQWQDPHG\DVVLJQLWWKHYDOXHWKDWLVWKHVXP
RIZKDWHYHU[LVQRZSOXV

E\WHY E
VKRUWQ 
Y Q
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
FOLLOWINGRULESTHEREALRULESARESLIGHTLYMOREmEXIBLE
BUTTHESEWILLKEEPYOUSAFE 

0DNH LW 6

WLFN


LE
YPESARE
ATDOUB
MITIVET
RI
P
T
H
IG
LONGFLO
T
N
I
4HEE
GROODUVLJQ  <RXFDQWVWDUWDQDPHZLWKD
RT
O
HEM
TESH
BERINGT
CHARBY
QXPEHU
RREMEM
BOOLEAN
O
F
IC
N
O
M
SAMNE
RGE
Q $IWHUWKHUVWFKDUDFWHU\RXFDQXVHQXPEHUVDV
!NDHERE
)NGEST,A
OULDNT
H
3

ZHOO-XVWGRQWVWDUWLWZLWKDQXPEHU
RS
A
L"E
"E#AREFU
ER
Q ,WFDQEHDQ\WKLQJ\RXOLNHVXEMHFWWRWKRVHWZR
S
VENBETT
G
LLSTICKE
URR Y$O
T
&
I
N
W
O
UXOHVMXVWVRORQJDVLWLVQWRQHRI-DYDVUHVHUYHG
OUR
AKEUPY
?
)FYOUM
ZRUGV
,?&?$
?3?)?
"

?
#

?
AREKEYWORDSANDO
THERTHINGS THATTHECOMPILERRECOGNIZES "

Q ,WPXVWVWDUWZLWKDOHWWHUXQGHUVFRUH B RU

!NDIFYOUREALLYWANTTOPLAYCONFUSE A COMPILER THENJUSTTRY


USINGARESERVEDWORDASANAME
9OUVEALREADYSEENSOMERESERVEDWORDSWHENWELOOKEDAT
WRITINGOURlRSTMAINCLASS
GR
SXEOLFVWDWLFYRLG

QW
IRU\RXVHDQ\RI
XURZQ WKHVH
QDPHV

1RPDWWHUZKDW
\RXKHDUGRQRW,UHSHDW
GRQRWOHWPHLQJHVW
DQRWKHUODUJHIXUU\GRJ

!NDTHEPRIMITIVETYPESARERESERVEDASWELL
ERROHDQFKDUE\WHVKRUWLQWORQJRDWGRXEOH
"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_

hjgl][l]\

YZkljY[l

fYd

]dk]

\g

o`ad]

[dYkk

]pl]f\k

[Yl[`

fYddq

k`gjl

hmZda[

hjanYl]

fYlan]

klYla[

klja[l^h

kqf[`jgfar]\ ljYfka]fl

ngdYlad]

a^

koal[`

[Yk]

\]^Ymdl

^gj

Zj]Yc

[gflafm]

Ykk]jl

aehd]e]flk

aehgjl

afklYf[]g^

afl]j^Y[]

f]o

hY[cY_]

kmh]j

l`ak

ljq

l`jgo

l`jgok

j]lmjf

nga\

[gfkl

_glg

]fme

-DYDVNH\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
N 7KHUHLVDFWXDOO\QRVXFKWKLQJDVDQREMHFWYDULDEOH
N 7KHUHVRQO\DQREMHFWUHIHUHQFHYDULDEOH
N $QREMHFWUHIHUHQFHYDULDEOHKROGVELWVWKDWUHSUHVHQWD
ZD\WRDFFHVVDQREMHFW

'RJG QHZ'RJ 
G EDUN 

WKLQNRIWKLV
OLNHWKLV

N ,WGRHVQWKROGWKHREMHFWLWVHOIEXWLWKROGVVRPHWKLQJ
OLNHDSRLQWHU2UDQDGGUHVV([FHSWLQ-DYDZHGRQW
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
OBJECT/BJECTSLIVEINONEPLACEANDONEPLACE
ONLYTHEGARBAGECOLLECTIBLEHEAP9OULL
LEARNMOREABOUTTHATLATERINTHISCHAPTER
!LTHOUGHAPRIMITIVEVARIABLEISFULLOF
BITSREPRESENTINGTHEACTUALVALUEOFTHE
VARIABLE ANOBJECTREFERENCEVARIABLEISFULL
OFBITSREPRESENTINGAWAYTOGETTOTHE
OBJECT

7KLQNRID'RJ
UHIHUHQFHYDULDEOHDV
D'RJUHPRWHFRQWURO
<RXXVHLWWRJHWWKH
REMHFWWRGRVRPHWKLQJ
LQYRNHPHWKRGV 

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


'RJP\'RJ QHZ'RJ 

UHIHUHQFH


0).+*., Zal\]hl`fglj]d]nYfl!
E\WHVKRUWLQWORQJ

)VWJRMK\ZMNMZMVKMQ[R][\
IVW\PMZ^IZQIJTM^IT]M

3OMETHINGTHATGOESINACUP
/NLYTHISTIME THEVALUEISAREMOTECONTROL

8ZQUQ\Q^M>IZQIJTM



E\WH[ 
4HEBITSREPRESENTINGGO
INTOTHEVARIABLE 






SULPLWLYH
YDOXH

'HFODUHDUHIHUHQFH
YDULDEOH

'RJP\'RJ QHZ'RJ 
4ELLSTHE*6-TOALLOCATESPACEFORA
REFERENCEVARIABLE ANDNAMESTHAT
VARIABLEMY$OG4HEREFERENCEVARIABLE
IS FOREVER OFTYPE$OG)NOTHERWORDS
AREMOTECONTROLTHATHASBUTTONSTO
CONTROLA$OG BUTNOTA#ATORA"UTTON
ORA3OCKET

eq<g_
'RJ

E\WH

EM

HFW

:MNMZMVKM>IZQIJTM
'RJP\'RJ QHZ'RJ 

'RJR

4HEBITSREPRESENTINGAWAYTOGETTO
THE$OGOBJECTGOINTOTHEVARIABLE
4HE$OGOBJECTITSELFDOESNOTGOINTO
THEVARIABLE

UHIHUHQFH
YDOXH

&UHDWHDQREMHFW

'RJP\'RJ

QHZ'RJ 

4ELLSTHE*6-TOALLOCATESPACEFORA
NEW$OGOBJECTONTHEHEAPWELL
LEARNALOTMOREABOUTTHATPROCESS
ESPECIALLYINCHAPTER

'RJREMHFW

'RJ

Pbmaikbfbmbo^oZkbZ[e^l%ma^oZen^h_ma^oZkb&
Z[e^bl'''ma^oZen^!.%&+/'0%Z"'
Pbmak^_^k^g\^oZkbZ[e^l%ma^oZen^h_ma^
oZkbZ[e^bl'''[bmlk^ik^l^gmbg`ZpZrmh`^mmh
Zli^\b\h[c^\m'
Rhn]hgmdghp!hk\Zk^"ahpZgriZkmb\neZk
COFbfie^f^gmlh[c^\mk^_^k^g\^l'Lnk^%ma^r
fb`am[^Zihbgm^kmhZihbgm^kmh'''[nm^o^g
b_rhndghp%rhnlmbee\Zgmnl^ma^[bml_hk
Zgrmabg`hma^kmaZgZ\\^llbg`Zgh[c^\m'


'RJP\'RJ

/LQNWKHREMHFW
DQGWKHUHIHUHQFH

QHZ'RJ 

!SSIGNSTHENEW$OGTOTHEREFERENCE
VARIABLEMY$OG)NOTHERWORDS
PROGRAMSTHEREMOTECONTROL

:HGRQWFDUHKRZPDQ\VDQGVWKHUHDUHLQDUHIHUHQFHYDULDEOH,WVXSWRHDFK
-90DQGWKHSKDVHRIWKHPRRQ

'RJREMHFW
eq<g_
'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

Q:

(OWBIGISAREFERENCE
VARIABLE

A:

9OUDONTKNOW5NLESS
YOURECOZYWITHSOMEONEONTHE
*6-SDEVELOPMENTTEAM YOU
DONTKNOWHOWAREFERENCEIS
REPRESENTED4HEREAREPOINTERS
INTHERESOMEWHERE BUTYOU
CANTACCESSTHEM9OUWONT
NEEDTO/+ IFYOUINSIST YOU
MIGHTASWELLJUSTIMAGINEIT
TOBEA BITVALUE "UTWHEN
YOURETALKINGABOUTMEMORY
ALLOCATIONISSUES YOUR"IG
#ONCERNSHOULDBEABOUTHOW
MANYOBJECTSASOPPOSEDTO
OBJECTREFERENCES YOURECREATING
ANDHOWBIGTHEYTHEOBJECTS
REALLYARE

Q:

3O DOESTHATMEANTHAT
ALLOBJECTREFERENCESARETHE
SAMESIZE REGARDLESSOFTHESIZE
OFTHEACTUALOBJECTSTOWHICH
THEYREFER

,CXC'ZRQUGF
7KLVZHHNVLQWHUYLHZ

2EMHFW5HIHUHQFH
+HDG)LUVW;W\MTT][_PI\[TQNMTQSMNWZIVWJRMK\ZMNMZMVKM'
5HIHUHQFH8ZM\\a[QUXTMZMITTa1UIZMUW\MKWV\ZWTIVL1KIVJMXZWOZIUUML\W
KWV\ZWTLQNNMZMV\WJRMK\[
+HDG)LUVW,WaW]UMIVLQNNMZMV\WJRMK\[M^MV_PQTMaW]ZMZ]VVQVO'4QSMKIVaW]
ZMNMZ\WI,WOIVL\PMV^MUQV]\M[TI\MZZMNMZ\WI+IZ'
5HIHUHQFH7N KW]Z[MVW\7VKM1ULMKTIZML\PI\[Q\1N 1UI,WOZMUW\MKWV\ZWT
\PMV1TTVM^MZJMIJTM\WXWQV\WWX[UaJIL_MZMVW\[]XXW[ML\W[IaXWQV\1UMIVZMNMZ
\WIVa\PQVOJ]\I,WO
+HDG)LUVW,WM[\PI\UMIVaW]KIVZMNMZ\WWVTaWVM,WO'
5HIHUHQFH6W1KIVJMZMNMZZQVO\WWVM,WOIVL\PMV^MUQV]\M[TI\MZ1KIVZMNMZ\W
[WUMW\PMZ,WO)[TWVOI[Q\[I,WO1KIVJMZMLQZMK\MLTQSMZMXZWOZIUUQVOaW]ZZMUW\M
\WILQNNMZMV\<>\WQ\=VTM[[VWVM^MZUQVL
+HDG)LUVW6W\MTTUM?PI\_MZMaW]OWVVI[Ia'
5HIHUHQFH1LWV\\PQVSaW]_IV\\WOM\QV\W\PQ[VW_J]\1TTR][\OQ^MaW]\PM[PWZ\
^MZ[QWVQN 1UUIZSMLI[QDO\PMVWVKM1IUI[[QOVMLI,WO1KIVVM^MZJMZMXZW
OZIUUML\WIVa\PQVOMT[MJ]\\PI\WVMIVLWVTa,WO1VW\PMZ_WZL[VWW\PMZWJRMK\KIV
JMI[[QOVML\WUM
+HDG)LUVWAW]ZMZQOP\_MLWV\_IV\\W\ITSIJW]\\PI\VW_73[W]VTM[[aW]ZM
QDO\PMVaW]KIVZMNMZ\WWVM,WOIVL\PMVZMNMZ\WILQNNMZMV\,WOTI\MZ+IVaW]M^MZ
ZMNMZ\WVW\PQVOI\ITT'1[Q\XW[[QJTM\WVW\JMXZWOZIUUML\WIVa\PQVO'
5HIHUHQFHAM[J]\Q\LQ[\]ZJ[UM\W\ITSIJW]\Q\

A:

9EP!LLREFERENCESFORA
GIVEN*6-WILLBETHESAME
SIZEREGARDLESSOFTHEOBJECTS
THEYREFERENCE BUTEACH*6-
MIGHTHAVEADIFFERENTWAYOF
REPRESENTINGREFERENCES SO
REFERENCESONONE*6-MAYBE
SMALLERORLARGERTHANREFERENCES
ONANOTHER*6-

Q:

#AN)DOARITHMETICONA
REFERENCEVARIABLE INCREMENTIT
YOUKNOWn#STUFF

A:

.OPE3AYITWITHMEAGAIN
h*AVAISNOT#v



+HDG)LUVW?PaQ[\PI\'
5HIHUHQFH*MKI][MQ\UMIV[1UQXOOIVL\PI\[]X[M\\QVO\WUM
+HDG)LUVWAW]UMIVJMKI][M\PMVaW]PI^MVW^IT]M'
5HIHUHQFH7PQXOOQ[I^IT]M1U[\QTTIZMUW\MKWV\ZWTJ]\Q\[TQSMaW]JZW]OP\
PWUMIVM_]VQ^MZ[ITZMUW\MKWV\ZWTIVLaW]LWV\PI^MI<>1UVW\XZWOZIUUML\W
KWV\ZWTIVa\PQVO<PMaKIVXZM[[UaJ]\\WV[ITTLIaTWVOJ]\VW\PQVOOWWLPIXXMV[1
R][\NMMT[W][MTM[[)_I[\MWN JQ\[/ZIV\MLVW\\PI\UIVaJQ\[J]\[\QTT)VL\PI\[VW\
\PM_WZ[\XIZ\1N 1IU\PMWVTaZMNMZMVKM\WIXIZ\QK]TIZWJRMK\IVL\PMV1U[M\\WQXOO
LMXZWOZIUUMLQ\UMIV[\PI\VW_VWJWLaKIVOM\\W\PI\WJRMK\1PILJMMVZMNMZZQVO\W
+HDG)LUVW)VL\PI\[JILJMKI][M
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
;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


EAP

RNREMHFW

C TIB

%R

L LE

%RRN

/BJECTS

CO

E

2EFERENCES

4HETWO"OOKOBJECTSARENOWLIVING
ONTHEHEAP

AG

AR

$ECLARETWO"OOKREFERENCE
VARIABLES#REATETWONEW"OOK
OBJECTS!SSIGNTHE"OOKOBJECTSTO
THEREFERENCEVARIABLES

RNREMHFW

%R

%RRNF QHZ%RRN 

LEH

%RRNE QHZ%RRN 

%RRN

%RRNG F

RNREMHFW

EAP

LEH

F
NREMH

C TIB

% RR

W

L LE

%RRN

2EFERENCES

%RRN

/BJECTS

CO

E

7KHFDQGGYDULDEOHVKROG
WZRGLIIHUHQWFRSLHVRIWKH
VDPHYDOXH7ZRUHPRWHV
SURJUDPPHGWRRQH79

%R

AG

AR

%RWKFDQGGUHIHUWRWKHVDPH
REMHFW




$ECLAREANEW"OOKREFERENCEVARIABLE
2ATHERTHANCREATINGANEW THIRD"OOK
OBJECT ASSIGNTHEVALUEOFVARIABLECTO
VARIABLED"UTWHATDOESTHISMEAN
)TSLIKESAYING h4AKETHEBITSINC MAKEA
COPYOFTHEM ANDSTICKTHATCOPYINTODv

\
%RRN

F E


EAP

F
NREMH

C TIB

% RR

LEH

%RRN

L LE

2EFERENCES

F
%RRNREMH

W

%RWKEDQGFUHIHUWRWKH
VDPHREMHFW

W

!SSIGNTHEVALUEOFVARIABLEBTO
VARIABLEC"YNOWYOUKNOWWHAT
THISMEANS4HEBITSINSIDEVARIABLE
BARECOPIED ANDTHATNEWCOPYIS
STUFFEDINTOVARIABLEC

CO

E

/BJECTS
AR

AG

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

RNREMHFW

LEH

%R

C TIB

EAP




$ECLARETWO"OOKREFERENCEVARIABLES
#REATETWONEW"OOKOBJECTS!SSIGN
THE"OOKOBJECTSTOTHEREFERENCE
VARIABLES

RNREMHFW

%R

%RRNF QHZ%RRN 

L LE

%RRN

CO

E

4HETWOBOOKOBJECTSARENOWLIVING
ONTHEHEAP
2EACHABLE/BJECTS

AR

!CTIVE2EFERENCES

AG

%RRN

DVW
7KLVJX\LVWRFWRUEDLW
JDUEDJHFROOH

E F


RNREMHFW

EAP

F
NREMH

L LE

!CTIVE2EFERENCES

% RR

LEH

C TIB

%R

%RWKEDQGFUHIHUWRWKHVDPH
REMHFW2EMHFWLVDEDQGRQHG
DQGHOLJLEOHIRU*DUEDJH&ROOHF
WLRQ *& 

W

!SSIGNTHEVALUEOFVARIABLECTOVARIABLEB
4HEBITSINSIDEVARIABLECARECOPIED AND
THATNEWCOPYISSTUFFEDINTOVARIABLEB
"OTHVARIABLESHOLDIDENTICALVALUES

AG

AR

!BANDONED/BJECTS
4HEFIRSTOBJECTTHATBREFERENCED /BJECT
HASNOMOREREFERENCES)TSUNREACHABLE

CO

E

%RRN

2EACHABLE/BJECTS

%RRN

F QXOO

NULL2EFERENCES
2EACHABLE/BJECTS
!BANDONED/BJECTS



C TIB

LEH

F
NREMH

L LE

% RR

EAP

W

RNREMHFW

QXOOUHIHUHQFH GWRDQ\WKLQJ
PH
QRWSURJUDP

CO

E

%RRN
B

!CTIVE2EFERENCES

%R


1RW\HWWRDJVWDVE
VDIHDVORQ
UHIHUVWRLW

AG

AR

2EMHFWVWLOOKDVDQDFWLYH
UHIHUHQFH E DQGDVORQJ
DVLWGRHVWKHREMHFWLVQRW
HOLJLEOHIRU*&

6WLOOWRDVW

!SSIGNTHEVALUEQXOOTOVARIABLEC
4HISMAKESCANULLREFERENCE MEANING
ITDOESNTREFERTOANYTHING"UTITSSTILL
AREFERENCEVARIABLE ANDANOTHER"OOK
OBJECTCANSTILLBEASSIGNEDTOIT

%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>@

LQW

YDULDE

OHV

LQWYDULDEOHV

*LYHHDFKHOHPHQWLQWKHDUUD\
DQLQWYDOXH
5HPHPEHUHOHPHQWVLQDQLQW
DUUD\DUHMXVWLQWYDULDEOHV

QXPV>@
QXPV>@
QXPV>@
QXPV>@
QXPV>@
QXPV>@
QXPV>@









LQWLQWLQWLQWLQWLQWLQW

LQWDUUD\REMHFW LQW>@

QXPV
LQW>@

1RWLFHWKDWWKHDUUD\LWVHOILVDQREMHFW
HYHQWKRXJKWKHHOHPHQWVDUHSULPLWLYHV

)ZZIa[IZMWJRMK\[\WW
4HE*AVASTANDARDLIBRARYINCLUDES
LOTSOFSOPHISTICATEDDATASTRUCTURES
INCLUDINGMAPS TREES ANDSETS
SEE!PPENDIX" BUTARRAYSARE
GREATWHENYOUJUSTWANTAQUICK
ORDERED EFlCIENTLISTOFTHINGS
!RRAYSGIVEYOUFASTRANDOM
ACCESSBYLETTINGYOUUSEANINDEX
POSITIONTOGETTOANYELEMENTIN
THEARRAY
%VERYELEMENTINANARRAYISJUST
AVARIABLE)NOTHERWORDS ONEOF
THEEIGHTPRIMITIVEVARIABLETYPES
THINK,ARGE&URRY$OG ORA

REFERENCEVARIABLE!NYTHINGYOU
WOULDPUTINAVARIABLEOFTHATTYPE
CANBEASSIGNEDTOANARRAYELEMENT
OFTHATTYPE3OINANARRAYOFTYPE
INTINT;= EACHELEMENTCANHOLD
ANINT)NA$OGARRAY$OG;= EACH
ELEMENTCANHOLDA$OG.O
REMEMBERTHATAREFERENCEVARIABLE
JUSTHOLDSAREFERENCEAREMOTE
CONTROL NOTTHEOBJECTITSELF3O
INA$OGARRAY EACHELEMENTCAN
HOLDAREMOTECONTROLTOA$OG/F
COURSE WESTILLHAVETOMAKETHE
$OGOBJECTSANDYOULLSEEALLTHAT
ONTHENEXTPAGE

"ESURETONOTICEONEKEYTHING
INTHEPICTUREABOVEnTHEARRAYIS
ANOBJECT EVENTHOUGHITSANARRAYOF
PRIMITIVES
!RRAYSAREALWAYSOBJECTS WHETHER
THEYREDECLAREDTOHOLDPRIMITIVES
OROBJECTREFERENCES"UTYOUCAN
HAVEANARRAYOBJECTTHATSDECLARED
TOHOLDPRIMITIVEVALUES)NOTHER
WORDS THEARRAYOBJECTCANHAVE
ELEMENTSWHICHAREPRIMITIVES BUT
THEARRAYITSELFISNEVERAPRIMITIVE
2EGARDLESSOFWHATTHEARRAYHOLDS
THEARRAYITSELFISALWAYSANOBJECT
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

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

'RJ>@SHWV

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

?PI\[UQ[[QVO'
$OGS7EHAVEANARRAY
OF$OGREFERENCES BUTNO
ACTUAL$OGOBJECTS

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

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

J2EMHFW
'R

J2EMHFW
'R

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

6KDUSHQ \RXU SHQFLO


7HATISTHECURRENTVALUEOF
PETS;=???????????
7HATCODEWOULDMAKE
PETS;=REFERTOONEOFTHE
TWOEXISTING$OGOBJECTS
???????????????????????



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

SHWV
'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

QDPH
EDUN
HDW
FKDVH&DW

+WV\ZWTaW]Z,WO
_Q\PIZMNMZMVKM^IZQIJTM
'RJGR QHZ'RJ 

7ECREATEDA$OGOBJECTAND
USEDTHEDOTOPERATORONTHE
REFERENCEVARIABLElDOTOACCESS
THENAMEVARIABLE

7ECANUSETHElDOREFERENCE
TOGETTHEDOGTOBARK OR
EAT ORCHASE#AT 

RXWW\SH
-DYDFDUHVDE

\\RX
FODUHGDQDU UD
2QFH\RXYHGH
WWKLQJV
HS
[F
H
WKLQJLQLW
FDQWSXWDQ\
W\SH
\
GHFODUHGDU UD
WKDWDUHRIWKH
LQWRD'RJ
XFDQWSXWD&DW
)RUH[DPSOH\R
VRPHRQH
LI
XO
ZI
\D
HSUHWW
DUUD\ LWZRXOGE
D\VR
UU
'RJVDUHLQWKHD
WKLQNVWKDWRQO\
WRWKHLU
HQ
WK
G
DQ
N
HWREDU
$QG
WKH\DVNHDFKRQ
J
NLQ
XU
WKHUHVDFDWO
DUUD\
KRUURUGLVFRYHU
QW
QL
RD
QW
L
OH
GRXE
\RXFDQWVWLFND
RZHYHU
EHU" <RXFDQK
VSLOODJHUHPHP
DXVHD
HF
E
D\
UU
D
QW
QL
GFXS
SXWDE\WHLQWRD
L]H
V
QW
VWLQWRDQL
E\WHZLOODOZD\
LQJ:HOO
HQ
LG
Z
FLW
SOL
LP
Q
7KLVLVNQRZQDVD
QRZMXVW
WDLOVODWHUIRU
JHWLQWRWKHGH
QWOHW\RX
ZR
U
LOH
PS
FR
H
WK
UHPHPEHUWKDW
EDVHGRQ
\
UD
DU
WKLQJLQDQ
SXWWKHZURQJ
ODUHGW\SH
WKHDUUD\VGHF

fYe]

GRQDPH )LGR

GREDUN 

6WULQJ

FW
'RJREMH

'RJ

^a\g
'RJ

GRFKDVH&DW 

?PI\PIXXMV[QN\PM,WOQ[QV
I,WOIZZIa'
7EKNOWWECANACCESSTHE$OGS
INSTANCEVARIABLESANDMETHODSUSING
THEDOTOPERATOR BUTONWHAT
7HENTHE$OGISINANARRAY WEDONT
HAVEANACTUALVARIABLENAMELIKE
lDO )NSTEADWEUSEARRAYNOTATIONAND
PUSHTHEREMOTECONTROLBUTTONDOT
OPERATOR ONANOBJECTATAPARTICULAR
INDEXPOSITION INTHEARRAY
'RJ>@P\'RJV QHZ'RJ>@
P\'RJV>@ QHZ'RJ 
P\'RJV>@QDPH )LGR
P\'RJV>@EDUN 
<HVZHNQRZZHUHQRWGHPRQVWUDWLQJHQFDSVXODWLRQKHUHEXWZHUH
WU\LQJWRNHHSLWVLPSOH)RUQRZ:HOOGRHQFDSVXODWLRQLQFKDSWHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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^

),WOM`IUXTM

6WULQJQDPH

'RJ

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
PDNHD'RJREMHFWDQGDFFHVVLW

QDPH

'RJGRJ QHZ'RJ 

EDUN
HDW
FKDVH&DW

GRJEDUN 
GRJQDPH %DUW
QRZPDNHD'RJDUUD\
'RJ>@P\'RJV QHZ'RJ>@

/UTPUT

DQGSXWVRPHGRJVLQLW

)LOH(GLW:LQGRZ+HOS+RZO

Licensed by
Eduard Simons
104038

MDYD'RJ
QXOOVD\V5XII
ODVWGRJVQDPHLV%DUW
)UHGVD\V5XII
0DUJHVD\V5XII
%DUWVD\V5XII

P\'RJV>@ QHZ'RJ 
P\'RJV>@ QHZ'RJ 
P\'RJV>@ GRJ

QRZDFFHVVWKH'RJVXVLQJWKHDUUD\
UHIHUHQFHV

P\'RJV>@QDPH )UHG

P\'RJV>@QDPH 0DUJH


+PPPPZKDWLVP\'RJV>@QDPH"

6\VWHPRXWSULQW ODVWGRJVQDPHLV 
6\VWHPRXWSULQWOQ P\'RJV>@QDPH 
QRZORRSWKURXJKWKHDUUD\
DQGWHOODOOGRJVWREDUN
LQW[ 
ZKLOH [P\'RJVOHQJWK ^
P\'RJV>[@EDUN 
[ [
`
`

WK
ULDEOHOHQJ RI
D
Y

D

H
Y
D
K
DUUD\V \RXWKHQXPEHU
WKDWJLYHV WKHDUUD\
HOHPHQWVLQ

:MDD=LHGAFLK

 9DULDEOHVFRPHLQWZRIODYRUVSULPLWLYHDQG





SXEOLFYRLGEDUN ^
6\VWHPRXWSULQWOQ QDPHVD\V5XII 

`
SXEOLFYRLGHDW ^`
SXEOLFYRLGFKDVH&DW ^`
`



UHIHUHQFH
9DULDEOHVPXVWDOZD\VEHGHFODUHGZLWKDQDPH
DQGDW\SH
$SULPLWLYHYDULDEOHYDOXHLVWKHELWVUHSUHVHQWLQJ
WKHYDOXH DWUXHHWF 
$UHIHUHQFHYDULDEOHYDOXHLVWKHELWV
UHSUHVHQWLQJDZD\WRJHWWRDQREMHFWRQWKH
KHDS
$UHIHUHQFHYDULDEOHLVOLNHDUHPRWHFRQWURO
8VLQJWKHGRWRSHUDWRU  RQDUHIHUHQFH
YDULDEOHLVOLNHSUHVVLQJDEXWWRQRQWKHUHPRWH
FRQWUROWRDFFHVVDPHWKRGRULQVWDQFHYDULDEOH
$UHIHUHQFHYDULDEOHKDVDYDOXHRIQXOOZKHQ
LWLVQRWUHIHUHQFLQJDQ\REMHFW
$QDUUD\LVDOZD\VDQREMHFWHYHQLIWKHDUUD\
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\ZRQW
FRPSLOHKRZZRXOG\RX
IL[WKHP"

$

FODVV%RRNV^
6WULQJWLWOH
6WULQJDXWKRU
`

%

FODVV+REELWV^
6WULQJQDPH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

FODVV%RRNV7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%RRNV>@P\%RRNV QHZ%RRNV>@
LQW[ 
P\%RRNV>@WLWOH 7KH*UDSHVRI-DYD
P\%RRNV>@WLWOH 7KH-DYD*DWVE\
P\%RRNV>@WLWOH 7KH-DYD&RRNERRN
P\%RRNV>@DXWKRU ERE
P\%RRNV>@DXWKRU VXH
P\%RRNV>@DXWKRU LDQ
ZKLOH [ ^
6\VWHPRXWSULQW P\%RRNV>[@WLWOH 
6\VWHPRXWSULQW E\ 
6\VWHPRXWSULQWOQ P\%RRNV>[@DXWKRU 
[ [
`
`
`

+REELWV>@K QHZ+REELWV>@
LQW] 
ZKLOH ] ^
] ]
K>]@ QHZ+REELWV 
K>]@QDPH ELOER
LI ]  ^
K>]@QDPH IURGR
`
LI ]  ^
K>]@QDPH VDP
`
6\VWHPRXWSULQW K>]@QDPHLVD 
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

LQW\

!WORKING*AVAPROGRAMISALLSCRAMBLEDUP
ONTHEFRIDGE#ANYOURECONSTRUCTTHECODE
SNIPPETSTOMAKEAWORKING*AVAPROGRAM
THATPRODUCESTHEOUTPUTLISTEDBELOW
3OMEOFTHECURLYBRACESFELLONTHEFLOOR
ANDTHEYWERETOOSMALLTOPICKUP SOFEEL
FREETOADDASMANYOFTHOSEASYOUNEED

UHI LQGH[>\@

LVODQG

V>@

LVODQG

V>@

LVODQG

V>@

LVODQG

%HUP

XGD

)LML

$]RU

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

MDYD7HVW$UUD\V
LVODQG )LML
LVODQG &R]XPHO
LVODQG %HUPXGD
LVODQG $]RUHV


FODVV7HVW$UUD\V^

SXEOLFVWDWLFYR

LGPDLQ 6WULQJ>@

DUJV ^

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

DVHSDUDWH

3RRO3X]]OH
9OURJOBISTOTAKECODESNIPPETSFROM
THEPOOLANDPLACETHEMINTOTHE
BLANKLINESINTHECODE9OUMAY
USETHESAMESNIPPETMORETHAN
ONCE ANDYOUWONTNEEDTOUSE
ALLTHESNIPPETS9OURGOALISTO
MAKEACLASSTHATWILLCOMPILEAND
RUNANDPRODUCETHEOUTPUTLISTED

WXVH
FODVV7ULDQJOH^
HWLPHVZHGRQZHUHWU\LQJWR
RP
6
GRXEOHDUHD
DXVH
WHVWFODVVEHFWKHSDJH
LQWKHLJKW
Q
R
FH
VDYHVSD
LQWOHQJWK
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
BBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
ZKLOH BBBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBKHLJKW  [  
BBBBBBBBOHQJWK [
BBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQW WULDQJOH[DUHD 

/UTPUT

6\VWHPRXWSULQWOQ  BBBBBBBDUHD 
BBBBBBBBBBBBBBBB

)LOH(GLW:LQGRZ+HOS%HUPXGD

MDYD7ULDQJOH

`

WULDQJOHDUHD 

BBBBBBBBBBBBBB

WULDQJOHDUHD 

[ 

WULDQJOHDUHD 

7ULDQJOHW WD>@

WULDQJOHDUHD BBBB

WD>@DUHD 

\ BBBBBBBBBBBBBBBBBBBBBB

6\VWHPRXWSULQW \ \ 
6\VWHPRXWSULQWOQ WDUHD WDUHD 

"ONUS1UESTION
&OREXTRABONUSPOINTS USESNIPPETS
FROMTHEPOOLTOFILLINTHEMISSING
OUTPUTABOVE 

`
YRLGVHW$UHD ^
BBBBBBBBBBBB  KHLJKW OHQJWK 
`
`

X
Y

AREA
TAAREA
TAXAREA
TA;X=AREA

 TAREA
 TAREA
 TAREA
 TAREA

4RIANGLE;=TANEW4RIANGLE 
4RIANGLETANEW;=4RIANGLE;=
4RIANGLE;=TANEW4RIANGLE;=

TA;X=SET!REA 
TAXSET!REA 
TA;X=SET!REA 

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE

INTX
INTY
INTX
INTX
INTYX



XX 
XX 
XX 

TAX
TAX
TA;X=

TANEW4RIANGLE 
TA;X=NEW4RIANGLE 
TAXNEW4RIANGLE 

X
X

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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+HDSR7URXEOH

!(EAPO4ROUBLE
!SHORT*AVAPROGRAMISLISTEDTOTHE
RIGHT7HEN@DOSTUFFISREACHED SOME
OBJECTSANDSOMEREFERENCEVARIABLES
WILLHAVEBEENCREATED9OURTASKIS
TODETERMINEWHICHOFTHEREFERENCE
VARIABLESREFERTOWHICHOBJECTS.OTALL
THEREFERENCEVARIABLESWILLBEUSED AND
SOMEOBJECTSMIGHTBEREFERREDTOMORE
THANONCE$RAWLINESCONNECTINGTHE
REFERENCEVARIABLESWITHTHEIRMATCHING
OBJECTS
4IP5NLESSYOUREWAYSMARTERTHANUS
YOUPROBABLYNEEDTODRAWDIAGRAMS
LIKETHEONESONPAGEANDOFTHIS
CHAPTER5SEAPENCILSOYOUCANDRAW
ANDTHENERASEREFERENCELINKSTHE
ARROWSGOINGFROMAREFERENCEREMOTE
CONTROLTOANOBJECT 

FODVV+HDS4XL]^
LQWLG 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[ 
+HDS4XL]>@KT QHZ+HDS4XL]>@
ZKLOH [ ^
KT>[@ QHZ+HDS4XL] 
KT>[@LG [
[ [
 `
KT>@ KT>@
KT>@ KT>@
KT>@ QXOO
KT>@ KT>@
KT>@ KT>@
KT>@ KT>@
KT>@ KT>@
GRVWXII
`
`

2EFERENCE6ARIABLES

UHIHUHQFH
PDWFKHDFKKPDWFKLQJ
YDULDEOHZLW
REMHFW V
WKDYHWR
<RXPLJKWQHRIHUHQFH
XVHHYHU\U

(EAP1UIZ/BJECTS

QL%
KT>@

KT>@

QL%
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

)LYH0LQXWH
0\VWHU\

,WZDVDGDUNDQGVWRUP\QLJKW7DZQ\VWUROOHGLQWRWKHSURJUDPPHUVEXOOSHQOLNHVKH
RZQHGWKHSODFH6KHNQHZWKDWDOOWKHSURJUDPPHUVZRXOGVWLOOEHKDUGDWZRUNDQGVKH
ZDQWHGKHOS6KHQHHGHGDQHZPHWKRGDGGHGWRWKHSLYRWDOFODVVWKDWZDVWREHORDGHGLQWRWKH
FOLHQWVQHZWRSVHFUHW-DYDHQDEOHGFHOOSKRQH+HDSVSDFHLQWKHFHOOSKRQHVPHPRU\ZDV
DVWLJKWDV7DZQ\VWRSDQGHYHU\RQHNQHZLW7KHQRUPDOO\UDXFRXVEX]]LQWKHEXOOSHQIHOOWR
VLOHQFHDV7DZQ\HDVHGKHUZD\WRWKHZKLWHERDUG6KHVNHWFKHGDTXLFNRYHUYLHZRIWKHQHZ
PHWKRGVIXQFWLRQDOLW\DQGVORZO\VFDQQHGWKHURRP:HOOER\VLWVFUXQFKWLPHVKHSXUUHG
:KRHYHUFUHDWHVWKHPRVWPHPRU\HIFLHQWYHUVLRQRIWKLVPHWKRGLVFRPLQJZLWKPHWRWKH
FOLHQWVODXQFKSDUW\RQ0DXLWRPRUURZWRKHOSPHLQVWDOOWKHQHZVRIWZDUH
7KHQH[WPRUQLQJ7DZQ\JOLGHGLQWRWKHEXOOSHQZHDULQJKHUVKRUW$ORKDGUHVV
*HQWOHPHQVKHVPLOHGWKHSODQHOHDYHVLQDIHZKRXUVVKRZPHZKDW\RXYH
JRW%REZHQWUVWDVKHEHJDQWRVNHWFKKLVGHVLJQRQWKHZKLWHERDUG7DZQ\
VDLG/HWVJHWWRWKHSRLQW%REVKRZPHKRZ\RXKDQGOHGXSGDWLQJWKHOLVWRIFRQ
WDFWREMHFWV%RETXLFNO\GUHZDFRGHIUDJPHQWRQWKHERDUG
&RQWDFW>@FD QHZ&RQWDFW>@
ZKLOH [ ^PDNHFRQWDFWREMHFWV
FD>[@ QHZ&RQWDFW 
[ [
`
GRFRPSOLFDWHG&RQWDFWOLVWXSGDWLQJVWXIIZLWKFD

7DZQ\,NQRZZHUHWLJKWRQPHPRU\EXW\RXUVSHFVDLGWKDWZHKDGWREHDEOHWRDFFHVV
LQGLYLGXDOFRQWDFWLQIRUPDWLRQIRUDOOWHQDOORZDEOHFRQWDFWVWKLVZDVWKHEHVWVFKHPH,FRXOG
FRRNXSVDLG%RE.HQWZDVQH[WDOUHDG\LPDJLQLQJFRFRQXWFRFNWDLOVZLWK7DZQ\%RE
KHVDLG\RXUVROXWLRQVDELWNOXGJ\GRQW\RXWKLQN".HQWVPLUNHG7DNHDORRNDWWKLV
EDE\
&RQWDFWUHIF
ZKLOH [ ^PDNHFRQWDFWREMHFWV
UHIF QHZ&RQWDFW 
[ [
`
GRFRPSOLFDWHG&RQWDFWOLVWXSGDWLQJVWXIIZLWKUHIF

,VDYHGDEXQFKRIUHIHUHQFHYDULDEOHVZRUWKRIPHPRU\%RERULQRVRSXWDZD\\RXU
VXQVFUHHQPRFNHG.HQW1RWVRIDVW.HQWVDLG7DZQ\\RXYHVDYHGDOLWWOHPHPRU\EXW
%REVFRPLQJZLWKPH

:K\GLG7DZQ\FKRRVH%REVPHWKRGRYHU.HQWVZKHQ.HQWVXVHGOHVVPHPRU\"
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

([HUFLVH6ROXWLRQV

&RGH0DJQHWV
FODVV7HVW$UUD\V^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW>@LQGH[ QHZLQW>@
LQGH[>@ 
LQGH[>@ 
LQGH[>@ 
LQGH[>@ 
6WULQJ>@LVODQGV QHZ6WULQJ>@
LVODQGV>@ %HUPXGD
LVODQGV>@ )LML
LVODQGV>@ $]RUHV
LVODQGV>@ &R]XPHO

FODVV%RRNV^
6WULQJWLWOH
6WULQJDXWKRU
`
FODVV%RRNV7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%RRNV>@P\%RRNV QHZ%RRNV>@
LQW[ 
$ P\%RRNV>@ QHZ%RRNV 5HPHPEHU:HKDYHWR
P\%RRNV>@ QHZ%RRNV DFWXDOO\PDNHWKH%RRNV
P\%RRNV>@ QHZ%RRNV REMHFWV
P\%RRNV>@WLWOH 7KH*UDSHVRI-DYD
P\%RRNV>@WLWOH 7KH-DYD*DWVE\
P\%RRNV>@WLWOH 7KH-DYD&RRNERRN
P\%RRNV>@DXWKRU ERE
P\%RRNV>@DXWKRU VXH
P\%RRNV>@DXWKRU LDQ
ZKLOH [ ^
6\VWHPRXWSULQW P\%RRNV>[@WLWOH 
6\VWHPRXWSULQW E\ 
6\VWHPRXWSULQWOQ P\%RRNV>[@DXWKRU 
[ [
`
`
`

LQW\ 
LQWUHI
ZKLOH \ ^
UHI LQGH[>\@
6\VWHPRXWSULQW LVODQG  
6\VWHPRXWSULQWOQ LVODQGV>UHI@ 
\ \
`
`
`

)LOH(GLW:LQGRZ+HOS%LNLQL

MDYD7HVW$UUD\V
LVODQG )LML
LVODQG &R]XPHO
LVODQG %HUPXGD
LVODQG $]RUHV



FODVV+REELWV^
6WULQJQDPH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
+REELWV>@K QHZ+REELWV>@
LQW] 5HPHPEHUDUUD\VVWDUWZLWK
ZKLOH ] ^HOHPHQW
] ]
K>]@ QHZ+REELWV 
%K>]@QDPH ELOER
LI ]  ^
K>]@QDPH IURGR
`
LI ]  ^
K>]@QDPH VDP
`
6\VWHPRXWSULQW K>]@QDPHLVD 
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^
GRXEOHDUHD
LQWKHLJKW
LQWOHQJWK
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQW[
LQW[ 
7ULDQJOH>@WD
7ULDQJOH>@WD QHZ7ULDQJOH>@
ZKLOH [ ^

WD>[@ QHZ7ULDQJOH 
WD>[@KHLJKW  [  
WD>[@OHQJWK [
WD>[@VHW$UHD 

4AWNYCOULDSEETHAT+ENTSMETHODHADASERIOUS
mAW)TSTRUETHATHEDIDNTUSEASMANYREFERENCE
VARIABLESAS"OB BUTTHEREWASNOWAYTOACCESSANY
BUTTHELASTOFTHE#ONTACTOBJECTSTHATHISMETHODCRE
ATED7ITHEACHTRIPTHROUGHTHELOOP HEWASASSIGN
INGANEWOBJECTTOTHEONEREFERENCEVARIABLE SOTHE
PREVIOUSLYREFERENCEDOBJECTWASABANDONEDONTHE
HEAPnUNREACHABLE7ITHOUTACCESSTONINEOFTHETEN
OBJECTSCREATED +ENTSMETHODWASUSELESS
7KHVRIWZDUHZDVDKXJHVXFFHVVDQGWKHFOLHQWJDYH7DZQ\DQG%REDQH[WUDZHHN
LQ+DZDLL:HGOLNHWRWHOO\RXWKDWE\ILQLVKLQJWKLVERRN\RXWRRZLOOJHWVWXIIOLNHWKDW

6\VWHPRXWSULQW WULDQJOH[DUHD 
6\VWHPRXWSULQWOQ  WD>[@DUHD 
[ [
`

2EFERENCE6ARIABLES

(EAP1UIZ/BJECTS

LQW\

LQW\ [
[ 
7ULDQJOHW WD>@
WD>@DUHD 

QL%
KT>@

6\VWHPRXWSULQW \ \ 
6\VWHPRXWSULQWOQ WDUHD WDUHD 

KT>@

`
YRLGVHW$UHD ^
DUHD
DUHD  KHLJKW OHQJWK 

QL%

KT>@

`
`

)LOH(GLW:LQGRZ+HOS%HUPXGD

MDYD7ULDQJOH
WULDQJOHDUHD 
WULDQJOHDUHD 
WULDQJOHDUHD 
WULDQJOHDUHD 
\ WDUHD 

KT>@

QL%
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 THATSTHEWHOLEPOINTOFANOBJECTITHASBEHAVIORTHATACTSONITSSTATE)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
WRITEACLASS YOUREDESCRIBINGHOWTHE*6-
SHOULDMAKEANOBJECTOFTHATTYPE9OUALREADY
KNOWTHATEVERYOBJECTOFTHATTYPECANHAVE
DIFFERENTINSTANCEVARIABLEVALUES"UTWHATABOUT
THEMETHODS

+IVM^MZaWJRMK\WN\PI\\aXMPI^MLQNNMZMV\
UM\PWLJMPI^QWZ'
7ELLSORTOF

6RQJ

QV[\IVKM
^IZQIJTM[

WLWOH
DUWLVW

SVW_[

VHW7LWOH
VHW$UWLVW
SOD\

LWM[

VWDWH

UM\PWL[
EHKDYLRU

WDQFHV
V
Q
L

H
Y
L
I
6RQJ
RIFODVV

Licensed by
Eduard Simons
104038

%VERYINSTANCEOFAPARTICULARCLASSHASTHESAME
METHODS BUTTHEMETHODSCANBEHAVEDIFFERENTLY
BASEDONTHEVALUEOFTHEINSTANCEVARIABLES

4HE3ONGCLASSHASTWOINSTANCEVARIABLES TITLE
ANDARTIST4HEPLAY METHODPLAYSASONG BUT
THEINSTANCEYOUCALLPLAY ONWILLPLAYTHESONG
REPRESENTEDBYTHEVALUEOFTHETITLEINSTANCE
VARIABLEFORTHATINSTANCE3O IFYOUCALLTHEPLAY
METHODONONEINSTANCEYOULLHEARTHESONG
h0OLITIKv WHILEANOTHERINSTANCEPLAYSh$ARKSTARv
4HEMETHODCODE HOWEVER ISTHESAME

3ROLWLN

0\:D\

&ROGSOD\

6LQDWUD

'DUNVWDU
*UDWHIXO
'HDG

0\:D\
6H[3LVWROV

6LQJ

7UDYLV

YRLGSOD\ ^
VRXQG3OD\HUSOD\6RXQG WLWOH 
`

k+
l*
6RQJW QHZ6RQJ 
WVHW$UWLVW 7UDYLV 
WVHW7LWOH 6LQJ 

H
LQVWDQF
LV
K
W

Q
R
\
SOD\ 
&DOOLQJ H6LQJWRSOD
V
ZLOOFDX

6RQJV QHZ6RQJ 
VVHW$UWLVW 6H[3LVWROV 
VVHW7LWOH 0\:D\ 

6RQJ
6RQJ

WSOD\ 

VSOD\ 

&DOOLQJSOD\ RQWKLVLQVWDQFH
ZLOOFDXVH0\:D\WRSOD\
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
6WULQJQDPH

VL]H
QDPH
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

RQHEDUN 
WZREDUN 
WKUHHEDUN 
`

MDYD'RJ7HVW'ULYH
:RRRI:RRRI
<LS<LS
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
DUJXPHQWWRWKHPHWKRG 

GEDUN  
DUJXPHQW




SDUDPHWHU








7KHELWVUHSUHVHQWLQJWKHLQW
YDOXHDUHGHOLYHUHGLQWRWKH
EDUNPHWKRG

7KHELWVODQGLQWKHQXP2I%DUNV
SDUDPHWHU DQLQWVL]HGYDULDEOH 

LQW

YRLGEDUN LQWQXP2I%DUNV ^

ZKLOH QXP2I%DUNV! ^
6\VWHPRXWSULQWOQ UXII 
QXP2I%DUNV QXP2I%DUNV
`
`


8VHWKHQXP2I%DUNV
SDUDPHWHUDVDYDULDEOHLQ
WKHPHWKRGFRGH

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
BACKTOTHECALLER SUCHAS

EXWQRWH[DFWO\ZKDW,
ZDVH[SHFWLQJ

LQWJLYH6HFUHW ^
UHWXUQ
`
)FYOUDECLAREAMETHODTORETURNAVALUE YOUMUST
RETURNAVALUEOFTHEDECLAREDTYPE/RAVALUE
THATISCOMPATIBLEWITHTHEDECLAREDTYPE7ELLGET
INTOTHATMOREWHENWETALKABOUTPOLYMORPHISM
INCHAPTERANDCHAPTER

:KDWHYHU\RXVD\
\RXOOJLYHEDFN\RX
EHWWHUJLYHEDFN

7KHFRPSLOHUZRQWOHW\RXUHWXUQWKHZURQJW\SHRIWKLQJ









LQW

LQWWKH6HFUHW OLIHJLYH6HFUHW 
W\SHV
7KHVHPDWFK
PXVW

LQWJLYH6HFUHW ^
UHWXUQ
WKLVPXVWILW
`
LQDQLQW

XUQHGIURP
W
H
U
H
U
D

UHVHQWLQJ
QWKH
7KHELWVUHSUHW PHWKRGDQGODQGL
WKHJLYH6HF HGWKH6HFUHW
YDULDEOHQDP

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LQ
PHWHUDQGVR
RQ

YRLGWDNH7ZR LQW[LQW\ ^
LQW] [\
6\VWHPRXWSULQWOQ 7RWDOLV] 
`

AW]KIVXI[[^IZQIJTM[QV\WIUM \PWLI[TWVOI[
\PM^IZQIJTM\ aXMUI\KPM[\PMXIZIUM \MZ\ aXM
YRLGJR ^
LQWIRR 
LQWEDU 
WWDNH7ZR IRREDU 
`

WKH
ODQGLQLWVLQ

U
D
E

G
HE
DQ
RIIRRHUV6RQRZWKIRR WKH
V
H
X
O
D
Y

7KH \SDUDPHW WKHELWVLQ DQGWKH
[DQG LGHQWLFDOWR HLQWHJHU WVLQEDU
[DUH WWHUQIRUWK FDOWRWKHEL
ELWSD \DUHLGHQWL
ELWVLQ

YRLGWDNH7ZR LQW[LQW\ ^
LQW] [\
6\VWHPRXWSULQWOQ 7RWDOLV] 
`


PH
]",WVWKHRVDR
I
R
H
OX
YD
H
K
W
I
:KDWV
HWLI\RXDGGHG
KHPLQWR
W
UHVXOW\RXGJWLP
HG
VV
XSD
R
\
H
H
K
W
W
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








LQW[ 

LQW

YRLGJR LQW] ^`

'HFODUHDPHWKRGZLWKDQLQW
SDUDPHWHUQDPHG]

 HFODUHDQLQWYDULDEOHDQGDVVLJQLW
'
WKHYDOXH7KHELWSDWWHUQIRU
JRHVLQWRWKHYDULDEOHQDPHG[

LQW

FRS\RI
[
















=

LQW

LQW

YRLGJR LQW] ^`

IRRJR [ 

[GRHVQ

DUHQW
HYHQLI]WGFKDQJH  [DQGHF]WHG
RHV 
FRQQ
;
LQW

&DOOWKHJR PHWKRGSDVVLQJ
WKHYDULDEOH[DVWKHDUJXPHQW
7KHELWVLQ[DUHFRSLHGDQG
WKHFRS\ODQGVLQ]








=
LQW

YRLGJR LQW] ^
] 
`

&KDQJHWKHYDOXHRI]LQVLGH
WKHPHWKRG7KHYDOXHRI[
GRHVQWFKDQJH7KHDUJXPHQW
SDVVHGWRWKH]SDUDPHWHUZDV
RQO\DFRS\RI[
7KHPHWKRGFDQWFKDQJHWKH
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:

5HPLQGHU-DYD
FDUHVDERXWW\SH

7HATHAPPENSIFTHEARGUMENTYOUWANTTO
PASSISANOBJECTINSTEADOFAPRIMITIVE

A:

<RXFDQWUHWXUQD*LUDIIHZKHQ
WKHUHWXUQW\SHLVGHFODUHG
DVD5DEELW6DPHWKLQJZLWK
SDUDPHWHUV<RXFDQWSDVVD
*LUDIIHLQWRDPHWKRGWKDW
WDNHVD5DEELW

9OULLLEARNMOREABOUTTHISINLATERCHAPTERS
BUTYOUALREADYKNOWTHEANSWER*AVAPASSES
EVERYTHINGBYVALUE%VERYTHING"UTVALUEMEANS
BITSINSIDETHEVARIABLE!NDREMEMBER YOUDONT
STUFFOBJECTSINTOVARIABLESTHEVARIABLEISAREMOTE
CONTROLAREFERENCETOANOBJECT3OIFYOUPASSA
REFERENCETOANOBJECTINTOAMETHOD YOUREPASSING
ACOPYOFTHEREMOTECONTROL3TAYTUNED THOUGH WELL
HAVELOTSMORETOSAYABOUTTHIS

Q:

#ANAMETHODDECLAREMULTIPLERETURNVALUES
/RISTHERESOMEWAYTORETURNMORETHANONE
VALUE

A:

3ORTOF!METHODCANDECLAREONLYONERETURN
VALUE"54IFYOUWANTTORETURN SAY THREEINTVALUES
THENTHEDECLAREDRETURNTYPECANBEANINTARRAY
3TUFFTHOSEINTSINTOTHEARRAY ANDPASSITONBACK)TS
ALITTLEMOREINVOLVEDTORETURNMULTIPLEVALUESWITH
DIFFERENTTYPESWELLBETALKINGABOUTTHATINALATER
CHAPTERWHENWETALKABOUT!RRAY,IST

Q:
A:

$O)HAVETORETURNTHEEXACTTYPE)DECLARED

9OUCANRETURNANYTHINGTHATCANBEIMPLICITLY
PROMOTEDTOTHATTYPE3O YOUCANPASSABYTEWHERE
ANINTISEXPECTED4HECALLERWONTCARE BECAUSETHE
BYTEFITSJUSTFINEINTOTHEINTTHECALLERWILLUSEFOR
ASSIGNINGTHERESULT9OUMUSTUSEANEXPLICITCAST
WHENTHEDECLAREDTYPEISSMALLERTHANWHATYOURE
TRYINGTORETURN

:MDD=LHGAFLK

 &ODVVHVGHILQHZKDWDQREMHFWNQRZVDQGZKDWDQ
REMHFWGRHV

 7KLQJVDQREMHFWNQRZVDUHLWVLQVWDQFHYDULDEOHV
VWDWH 

 7KLQJVDQREMHFWGRHVDUHLWVPHWKRGV EHKDYLRU 
 0HWKRGVFDQXVHLQVWDQFHYDULDEOHVVRWKDWREMHFWV
RIWKHVDPHW\SHFDQEHKDYHGLIIHUHQWO\

 $PHWKRGFDQKDYHSDUDPHWHUVZKLFKPHDQV\RX
FDQSDVVRQHRUPRUHYDOXHVLQWRWKHPHWKRG

 7KHQXPEHUDQGW\SHRIYDOXHV\RXSDVVLQPXVW
PDWFKWKHRUGHUDQGW\SHRIWKHSDUDPHWHUV
GHFODUHGE\WKHPHWKRG

 9DOXHVSDVVHGLQDQGRXWRIPHWKRGVFDQEH
LPSOLFLWO\SURPRWHGWRDODUJHUW\SHRUH[SOLFLWO\FDVW
WRDVPDOOHUW\SH

 7KHYDOXH\RXSDVVDVDQDUJXPHQWWRDPHWKRG
FDQEHDOLWHUDOYDOXH FHWF RUDYDULDEOHRI
WKHGHFODUHGSDUDPHWHUW\SH IRUH[DPSOH[ZKHUH
[LVDQLQWYDULDEOH  7KHUHDUHRWKHUWKLQJV\RX
FDQSDVVDVDUJXPHQWVEXWZHUHQRWWKHUH\HW

Q:

$O)HAVETODOSOMETHINGWITHTHERETURN
VALUEOFAMETHOD#AN)JUSTIGNOREIT

A:

*AVADOESNTREQUIREYOUTOACKNOWLEDGEA
RETURNVALUE9OUMIGHTWANTTOCALLAMETHODWITH
ANON VOIDRETURNTYPE EVENTHOUGHYOUDONTCARE
ABOUTTHERETURNVALUE)NTHISCASE YOURECALLING
THEMETHODFORTHEWORKITDOESINSIDETHEMETHOD
RATHERTHANFORWHATTHEMETHODGIVESRETURNS)N
*AVA YOUDONTHAVETOASSIGNORUSETHERETURNVALUE



 $PHWKRGPXVWGHFODUHDUHWXUQW\SH$YRLGUHWXUQ
W\SHPHDQVWKHPHWKRGGRHVQWUHWXUQDQ\WKLQJ

 ,IDPHWKRGGHFODUHVDQRQYRLGUHWXUQW\SHLWPXVW
UHWXUQDYDOXHFRPSDWLEOHZLWKWKHGHFODUHGUHWXUQ
W\SH

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
TIMETOPUTTHEMTOGOODUSE'ETTERSAND3ETTERS)FYOUREINTO
BEINGALLFORMALABOUTIT YOUMIGHTPREFERTOCALLTHEM!CCESSORS
AND-UTATORS"UTTHATSAWASTEOFPERFECTLYGOODSYLLABLES
"ESIDES 'ETTERSAND3ETTERSlTSTHE*AVANAMINGCONVENTION SO
THATSWHATWELLCALLTHEM
'ETTERSAND3ETTERSLETYOU WELL GETANDSETTHINGS)NSTANCEVARI
ABLEVALUES USUALLY!'ETTERSSOLEPURPOSEINLIFEISTOSENDBACK
ASARETURNVALUE THEVALUEOFWHATEVERITISTHATPARTICULAR'ETTER
ISSUPPOSEDTOBE'ETTING!NDBYNOW ITSPROBABLYNOSURPRISE
THATA3ETTERLIVESANDBREATHESFORTHECHANCETOTAKEANARGU
MENTVALUEANDUSEITTOSETTHEVALUEOFANINSTANCEVARIABLE

(OHFWULF*XLWDU
EUDQG
QXP2I3LFNXSV
URFN6WDU8VHV,W

JHW%UDQG
VHW%UDQG
JHW1XP2I3LFNXSV
VHW1XP2I3LFNXSV

WKHVH
1RWH8VLQJ QWLRQV
QDPLQJFRQYH H
PHDQV\RXOOE
IROORZLQJDQDYD
LPSRUWDQWVWDQGDUG

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\RXUH
ZHOOHQFDSVXODWHG

5NTILTHISMOSTIMPORTANTMOMENT WEVE
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
ERG\WRFDOODDWIURP
U\
YH
H
QJ
FL
RU
I
%\
QSURWHFWWKHF
PHWKRGZHFDVL]HFKDQJHV
XQDFFHSWDEOH

DQW
\LNHV:HF SSHQ
WKH&DWKHLJKW  OHWWKLVKD
4HISWOULDBEA"AD4HING7ENEEDTO
BUILDSETTERMETHODSFORALLTHEINSTANCE
VARIABLES ANDlNDAWAYTOFORCEOTHER
CODETOCALLTHESETTERSRATHERTHANACCESS
THEDATADIRECTLY

SXEOLFYRLGVHW+HLJKW LQWKW ^
LI KW! ^
KHLJKW KW
`
`



:HSXWLQ
WRJXDUDQWFKHFNV
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

7KLVZHHNVLQWHUYLHZ
9ESITISTHATSIMPLETOGOFROM
$Q2EMHFWJHWVFDQGLGDERXWHQFDSVXODWLRQ
ANIMPLEMENTATIONTHATSJUST
BEGGINGFORBADDATATOONE
+HDG)LUVW?PI\[\PMJQOLMITIJW]\MVKIX[]TI\QWV'
THATPROTECTSYOURDATAAND
PROTECTSYOURRIGHTTOMODIFY 2EMHFW73aW]SVW_\PI\LZMIU_PMZMaW]ZMOQ^QVOI\ITS\WXMWXTM_PMVaW]
[]LLMVTaZMITQbMaW]ZMVISML'
YOURIMPLEMENTATIONLATER
/+ SOHOWEXACTLYDOYOU
HIDETHEDATA7ITHTHE
SXEOLFANDSULYDWH
ACCESSMODIlERS9OURE
FAMILIARWITHSXEOLFnWEUSE
ITWITHEVERYMAINMETHOD
(ERESANENCAPSULATION
STARTERRULEOFTHUMBALLSTAN
DARDDISCLAIMERSABOUTRULES
OFTHUMBAREINEFFECT MARK
YOURINSTANCEVARIABLESPRIVATE
ANDPROVIDEPUBLICGETTERS
ANDSETTERSFORACCESSCONTROL
7HENYOUHAVEMOREDESIGN
ANDCODINGSAVVYIN*AVA YOU
WILLPROBABLYDOTHINGSALITTLE
DIFFERENTLY BUTFORNOW THIS
APPROACHWILLKEEPYOUSAFE

0DUNLQVWDQFH
YDULDEOHVSULYDWH

0DUNJHWWHUVDQG
VHWWHUVSXEOLF

6DGO\%LOOIRUJRWWR
HQFDSVXODWHKLV&DWFODVVDQG
HQGHGXSZLWKDIODWFDW
RYHUKHDUGDWWKHZDWHUFRROHU 

+HDG)LUVWAMIP_M^MPIL\PI\WVM1\[ZQOP\]X\PMZM_Q\P\PMWVMIJW]\\PM8QTI\M[
UIKPQVMIVLVW_M_WV\OW\PMZM73[WaW]NMMTVISML*]\W\PMZ\PIVJMQVOITQ\\TM
M`XW[MLQ[\PMZMIVaLIVOMZ'
2EMHFW1[\PMZMIVaLIVOMZ'1[\PMZMIVaLIVOMZ'C[\IZ\[TI]OPQVOE0MaLQLITTaW]W\PMZ
QV[\IVKM[PMIZ\PI\1[\PMZMIVaLIVOMZ'PMI[S['CNITT[WV\PMWWZTI]OPQVOE
+HDG)LUVW?PI\[N]VVaIJW]\\PI\';MMU[TQSMIZMI[WVIJTMY]M[\QWV
2EMHFW731TTM`XTIQVQ\1\[CJ]Z[\[W]\TI]OPQVOIOIQV]VKWV\ZWTTIJTaE
+HDG)LUVW+IV1OM\aW]IVa\PQVO'?I\MZ'
2EMHFW?PM_ 7PJWa6W1UVMZMITTa1TTJM[MZQW][,MMXJZMI\P73OWWV
+HDG)LUVW;W_PI\LWM[MVKIX[]TI\QWVXZW\MK\aW]NZWU'
2EMHFW-VKIX[]TI\QWVX]\[INWZKMMTLIZW]VLUaQV[\IVKM^IZQIJTM[[WVWJWLaKIV[M\
\PMU\WTM\[[Ia[WUM\PQVOQVIXXZWXZQI\M
+HDG)LUVW+IVaW]OQ^MUMIVM`IUXTM'
2EMHFW,WM[V\\ISMI8P,PMZM5W[\QV[\IVKM^IZQIJTM^IT]M[IZMKWLML_Q\PKMZ\IQV
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[QVIVWNKM>MTWKQ\aWN 
IVIQZXTIVM*QZ\PLIa[*IZJMTT_MQOP\+MTTXPWVMV]UJMZ[5QKZW_I^MW^MVXW_MZ
+HDG)LUVW1[MM_PI\aW]UMIV;WPW_LWM[MVKIX[]TI\QWVTM\aW][M\JW]VLIZQM['
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
NWZIKZMLQ\KIZLIXXTQKI\QWVWZUIaJM\PMUM\PWL_QTTZW]VL\PMXIZIUM\MZ[MV\QV\W
\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\'
2EMHFW<PMXWQV\\W[M\\MZ[IVLOM\\MZ[\WWQ[\PI\aW]KIVKPIVOMaW]ZUQVLTI\MZ
_Q\PW]\JZMISQVOIVaJWLaMT[M[KWLM 1UIOQVMQN PITN \PMXMWXTMQVaW]ZKWU
XIVa][MLaW]ZKTI[[_Q\PX]JTQKQV[\IVKM^IZQIJTM[IVLWVMLIaaW][]LLMVTaZMITQbML
7WX[\PMZM[[WUM\PQVO1LQLV\XTIVNWZ_Q\P\PI\^IT]M1UOWQVO\WPI^M\W[_Q\KP\WI
[M\\MZUM\PWLAW]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]TLZIZMTaQN M^MZJM_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

-VKIX[]TI\QVO\PM
/WWL,WOKTI[[

FH
LQVWDQ
H
K
W

H
0DN SULYDWH
H
YDULDEO

QG
JHWWHUD
0DNHWKHHWKRGVSXEOLF
VHWWHUP

FODVV*RRG'RJ^


*RRG'RJ

SULYDWHLQWVL]H

VL]H
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H

JHW6L]H 

`

VHW6L]H 

EDUN 

SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
`

Licensed by
Eduard Simons
104038
YRLGEDUN ^

RQWUHDOO\
(YHQWKRXJKWKHPHWKRGVGFR
ROWKLQJ
DGGQHZIXQFWLRQDOLW\WKHXUPLQG
\R
LVWKDW\RXFDQFKDQJH DQGPDNHD
ODWHU\RXFDQFRPHEDFN WHU
PHWKRGVDIHUIDVWHUEHW

LI VL]H! ^

6\VWHPRXWSULQWOQ :RRRI:RRRI 
`HOVHLI VL]H! ^

6\VWHPRXWSULQWOQ 5XII5XII 
`HOVH^

6\VWHPRXWSULQWOQ <LS<LS 
`
`

$Q\SODFHZKHUHD
SDUWLFXODUYDOXHFDQ
EHXVHGDPHWKRG
FDOOWKDWUHWXUQVWKDW
W\SHFDQEHXVHG

FODVV*RRG'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
*RRG'RJRQH QHZ*RRG'RJ 
RQHVHW6L]H  

LQVWHDGRI
LQW[ 

*RRG'RJWZR QHZ*RRG'RJ 
WZRVHW6L]H  
6\VWHPRXWSULQWOQ 'RJRQHRQHJHW6L]H 

\RXFDQVD\

6\VWHPRXWSULQWOQ 'RJWZRWZRJHW6L]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
DQGDVVLJQWKHPWRWKHUVW
WZRDUUD\HOHPHQWV

J2EMHFW
'R


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

VL]H

J2EMHFW
'R


VL]H

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

SHWV
'RJ>@

'RJDUUD\REMHFW '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
DOZD\VJHWD
LQWVL]H
GHIDXOWYDOXH,I
6WULQJQDPH
\RXGRQWH[SOLFLWO\
!NDYOUKNOWTHATYOUCANINITIALIZEASSIGNAVALUE TOTHE
DVVLJQDYDOXH
VARIABLEATTHESAMETIME
WRDQLQVWDQFH
LQWVL]H 
YDULDEOHRU\RX
6WULQJQDPH 'RQQ\
GRQWFDOODVHWWHU
"UTWHENYOUDONTINITIALIZEANINSTANCEVARIABLE WHATHAPPENS
PHWKRGWKH
WHENYOUCALLAGETTERMETHOD)NOTHERWORDS WHATISTHEVALUEOF
ANINSTANCEVARIABLEBEFOREYOUINITIALIZEIT
LQVWDQFHYDULDEOH
EOHV VWLOOKDVDYDOXH
FODVV3RRU'RJ^
QVWDQFHYDULD
9OUALREADYKNOWTHATAVARIABLEDECLARATIONNEEDSATLEASTANAME
ANDATYPE

GHFODUHWZDRLVVLJQDYDOXH
EXWGRQW

SULYDWHLQWVL]H
SULYDWH6WULQJQDPH

SXEOLFLQWJHW6L]H ^
UHWXUQVL]H
`
SXEOLF6WULQJJHW1DPH ^
UHWXUQQDPH
`

:KDWZLOOWKHVHUHWXUQ""

LQWHJHUV

IORDWLQJSRLQWV



ERROHDQV

IDOVH

UHIHUHQFHV

QXOO

":LOO

N
SXEOLFFODVV3RRU'RJ7HVW'ULYH^
\RXWKLOLQH"

R
G

W
D
:K YHQFRPS
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WKLVH
3RRU'RJRQH QHZ3RRU'RJ 
6\VWHPRXWSULQWOQ 'RJVL]HLVRQHJHW6L]H 
6\VWHPRXWSULQWOQ 'RJQDPHLVRQHJHW1DPH 
`

`
HLQVWDQFHYDULDEOHV
)LOH(GLW:LQGRZ+HOS&DOO9HW

MDYD3RRU'RJ7HVW'ULYH
'RJVL]HLV
'RJQDPHLVQXOO


LWLDOL]
<RXGRQWKDYHOZWRD\LQVKDYHDGHIDXOWYDOXH1XPWEHIDUOVH
EHFDXVHWKH\DFOXGLQJFKDU JHWERROHDQVJH
SULPLWLYHV LQ HUHQFHYDULDEOHVJHWQXOO
DQGREMHFWUHI
RQWUROWKDW
WPHDQVDUHPRRWHDQF\WKLQJ$
XV
OM
XO
Q
U
EH
HP
HP
5
SURJUDPPHGW
LVQWFRQWUROOLQJQ
WXDOREMHFW
R
UHIHUHQFHEXW DF

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
FODVV+RUVH^
SULYDWHGRXEOHKHLJKW 
SULYDWH6WULQJEUHHG
PRUHFRGH
`

 /RFDOYDULDEOHVDUHGHFODUHGZLWKLQDPHWKRG
FODVV$GG7KLQJ^
LQWD
LQWE 

WKHUH DUH QR

SXEOLFLQWDGG ^
LQWWRWDO DE
UHWXUQWRWDO
`
`


 /RFDOYDULDEOHV0867EHLQLWLDOL]HGEHIRUHXVH
FODVV)RR^
SXEOLFYRLGJR ^
LQW[
LQW] [
`
`


/RFDOYDULDEOHVGR
127JHWDGHIDXOW
YDOXH7KHFRPSLOHU
FRPSODLQVLI\RX
WU\WRXVHDORFDO
YDULDEOHEHIRUH
WKHYDULDEOHLV
LQLWLDOL]HG

FDQ
:RQWFRPSLOHRX<WRXDYDOXH
WK
ZL
[
GHFODUH
WU\
EXWDVVRRQDVKH\FRXRP
SLOHU
W
LW
WR86(
IUHDNVRXW

)LOH(GLW:LQGRZ+HOS<LNHV

MDYDF)RRMDYD
)RRMDYDYDULDEOH[PLJKW
QRWKDYHEHHQLQLWLDOL]HG
LQW] [
HUURUA

'XPE 4XHVWLRQV

Q:

7HATABOUTMETHODPARAMETERS
(OWDOTHERULESABOUTLOCALVARIABLES
APPLYTOTHEM

A:

-ETHODPARAMETERSAREVIRTUALLYTHE
SAMEASLOCALVARIABLESTHEYREDECLARED
INSIDETHEMETHODWELL TECHNICALLYTHEYRE
DECLAREDINTHEARGUMENTLISTOFTHEMETHOD
RATHERTHANWITHINTHEBODYOFTHEMETHOD
BUTTHEYRESTILLLOCALVARIABLESASOPPOSEDTO
INSTANCEVARIABLES "UTMETHODPARAMETERS
WILLNEVERBEUNINITIALIZED SOYOULLNEVERGET
ACOMPILERERRORTELLINGYOUTHATAPARAMETER
VARIABLEMIGHTNOTHAVEBEENINITIALIZED
"UTTHATSBECAUSETHECOMPILERWILLGIVE
YOUANERRORIFYOUTRYTOINVOKEAMETHOD
WITHOUTSENDINGARGUMENTSTHATTHEMETHOD
NEEDS3OPARAMETERSARE!,7!93INITIALIZED
BECAUSETHECOMPILERGUARANTEESTHAT
METHODSAREALWAYSCALLEDWITHARGUMENTS
THATMATCHTHEPARAMETERSDECLAREDFORTHE
METHOD ANDTHEARGUMENTSAREASSIGNED
AUTOMATICALLY TOTHEPARAMETERS

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
REFERENCEVARIABLESREFERTOASINGLEOBJECTONTHEHEAP%ASYASWELL JUSTUSE
THEOPERATOR"UTSOMETIMESYOUWANTTOKNOWIFTWOOBJECTSAREEQUAL
!NDFORTHAT YOUNEEDTHEEQUALS METHOD4HEIDEAOFEQUALITYFOR
OBJECTSDEPENDSONTHETYPEOFOBJECT&OREXAMPLE IFTWODIFFERENT3TRING
OBJECTSHAVETHESAMECHARACTERSSAY hEXPEDITIOUSv THEYAREMEANINGFULLY
EQUIVALENT REGARDLESSOFWHETHERTHEYARETWODISTINCTOBJECTSONTHEHEAP
"UTWHATABOUTA$OG$OYOUWANTTOTREATTWO$OGSASBEINGEQUALIFTHEY
HAPPENTOHAVETHESAMESIZEANDWEIGHT0ROBABLYNOT3OWHETHERTWO
DIFFERENTOBJECTSSHOULDBETREATEDASEQUALDEPENDSONWHATMAKESSENSEFOR
THATPARTICULAROBJECTTYPE7ELLEXPLORETHENOTIONOFOBJECTEQUALITYAGAIN
INLATERCHAPTERSANDAPPENDIX" BUTFORNOW WENEEDTOUNDERSTANDTHAT
THEOPERATORISUSEDONLYTOCOMPARETHEBITSINTWOVARIABLES7HATTHOSE
BITSREPRESENTDOESNTMATTER4HEBITSAREEITHERTHESAME ORTHEYRENOT
7RFRPSDUHWZRSULPLWLYHVXVHWKH

8VH WRFRPSDUH
WZRSULPLWLYHV
RUWRVHHLIWZR
UHIHUHQFHVUHIHUWR
WKHVDPHREMHFW
8VHWKHHTXDOV 
PHWKRGWRVHH
LIWZRGLIIHUHQW
REMHFWVDUHHTXDO
6XFKDVWZRGLIIHUHQW
6WULQJREMHFWVWKDWERWK
UHSUHVHQWWKHFKDUDFWHUV
LQ)UHG

RSHUDWRU

WKHELW
VDPHVRSWDWWHUQVDUHWKH
HTXDOXVLQ KHVHWZRDUH 
J

4HEOPERATORCANBEUSEDTOCOMPARETWOVARIABLESOFANYKIND ANDIT
SIMPLYCOMPARESTHEBITS
IFAB []LOOKSATTHEBITSINAANDBANDRETURNSTRUEIFTHEBITPATTERN
ISTHESAMEALTHOUGHITDOESNTCAREABOUTTHESIZEOFTHEVARIABLE SOALLTHE
EXTRAZEROESONTHELEFTENDDONTMATTER 
RHVRQ
LQWD 
E\WHE 
LI D

E ^WUXH`

U

HPRUH]H
WKHUHDWUVLGHRIWKHLQRXWW
I
WKHOH GRQWFDUHDE
EXWZH HUH
WKDWK











LQW

E\WH




7RVHHLIWZRUHIHUHQFHVDUHWKHVDPH ZKLFKPHDQVWKH\
UHIHUWRWKHVDPHREMHFWRQWKHKHDS XVHWKH RSHUDWRU

WKHELW
VDPHIRUSDWWHUQVDUHWKH
DUHHTXDO DDQGFVRWKH 
\
XVLQJ

2EMEMBER THEOPERATORCARESONLYABOUTTHEPATTERNOFBITSINTHE
VARIABLE4HERULESARETHESAMEWHETHERTHEVARIABLEISAREFERENCEOR
PRIMITIVE3OTHEOPERATORRETURNSTRUEIFTWOREFERENCEVARIABLESREFERTO
THESAMEOBJECT)NTHATCASE WEDONTKNOWWHATTHEBITPATTERNISBECAUSE
ITSDEPENDENTONTHE*6- ANDHIDDENFROMUS BUTWEDOKNOWTHATWHATEVER
ITLOOKSLIKE ITWILLBETHESAMEFORTWOREFERENCESTOASINGLEOBJECT
)RRD QHZ)RR 
)RRE QHZ)RR 

)RRF D
LI D

E ^IDOVH`

LI D

F ^WUXH`

LI E

F ^IDOVH`



D
D

FLVWUXH
ELVIDOVH

)RR

Z
)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

SULY
DWH

6KDUSHQ \RXU SHQFLO

LFN
0DNH LWRE6DW

2OSESARE

ISCHOPPY
THISPOEM
E
YVALU
PASSINGB
BYCOPY
ISPASSING

R
EPLACEOU
R4RYIT2
DOBETTE
RYET
E
AN
TT
C
E
U
"
O
N
Y
W
/H LIKE
S
ITHYOURO
WNWORD
NDLINEW
ITHYOURO
DUMBSECO
W
G
IN
H
T
OLE
H
W
E
H
T
REPLACE
ETIT
NEVERFORG
ANDYOULL

:KDWVOHJDO"
*LYHQWKHPHWKRGEHORZZKLFK
RIWKHPHWKRGFDOOVOLVWHGRQWKH
ULJKWDUHOHJDO"
3XWDFKHFNPDUNQH[WWRWKH
RQHVWKDWDUHOHJDO 6RPH
VWDWHPHQWVDUHWKHUHWRDVVLJQ
YDOXHVXVHGLQWKHPHWKRGFDOOV 

LQWD FDOF$UHD  


VKRUWF 
FDOF$UHD F 
LQWG FDOF$UHD  
FDOF$UHD  
ORQJW 
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

"%THECOMPILER

1dQ^OU_Q

(DFKRIWKH-DYDILOHVRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFHILOH
<RXUMRELVWRSOD\FRPSLOHUDQG
GHWHUPLQHZKHWKHUHDFKRIWKHVHILOHV
ZLOOFRPSLOH,IWKH\ZRQW
FRPSLOHKRZZRXOG\RX
IL[WKHPDQGLIWKH\GR
FRPSLOHZKDWZRXOGEH
WKHLURXWSXW"

$

FODVV;&RS\^

%

FODVV&ORFN^
6WULQJWLPH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQWRULJ 
;&RS\[ QHZ;&RS\ 
LQW\ [JR RULJ 
6\VWHPRXWSULQWOQ RULJ\ 
`

YRLGVHW7LPH 6WULQJW ^
WLPH W
`
YRLGJHW7LPH ^
UHWXUQWLPH
`
`

LQWJR LQWDUJ ^
DUJ DUJ 

UHWXUQDUJ
`
`



FODVV&ORFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
&ORFNF QHZ&ORFN 
FVHW7LPH  
6WULQJWRG FJHW7LPH 
6\VWHPRXWSULQWOQ WLPHWRG 
`
`

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

!BUNCHOF*AVACOMPONENTS INFULLCOSTUME AREPLAYINGAPARTY


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

1dQ^OU_Q

,"

P
D

R

:K

4ONIGHTSATTENDEES

INSTANCEVARIABLE ARGUMENT RETURN GETTER SETTER


ENCAPSULATION PUBLIC PRIVATE PASSBYVALUE METHOD

$FODVVFDQKDYHDQ\QXPEHURI WKHVH
$PHWKRGFDQKDYHRQO\RQHRI WKHVH
7KLVFDQEHLPSOLFLWO\SURPRWHG
,SUHIHUP\LQVWDQFHYDULDEOHVSULYDWH
,WUHDOO\PHDQVPDNHDFRS\
2QO\VHWWHUVVKRXOGXSGDWHWKHVH
$PHWKRGFDQKDYHPDQ\RI WKHVH
,UHWXUQVRPHWKLQJE\GHILQLWLRQ
,VKRXOGQWEHXVHGZLWKLQVWDQFHYDULDEOHV
,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
4WOBLOCKSOFTHEPROGRAMAREMISSING
9OURCHALLENGEISTOMATCHTHECANDIDATE
BLOCKSOFCODEBELOW WITHTHEOUTPUT
THATYOUDSEEIFTHEBLOCKSWEREINSERTED
.OTALLTHELINESOFOUTPUTWILLBEUSED AND
SOMEOFTHELINESOFOUTPUTMIGHTBEUSED
MORETHANONCE$RAWLINESCONNECTING
THECANDIDATEBLOCKSOFCODEWITHTHEIR
MATCHINGCOMMAND LINEOUTPUT

#ANDIDATES

[
LQGH[

0OSSIBLEOUTPUT




[



LQGH[



[



LQGH[



[



LQGH[





SXEOLFFODVV0L[^
LQWFRXQWHU 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQWFRXQW 
0L[>@PD QHZ0L[>@
LQW[ 
ZKLOH  ^
PD>[@ QHZ0L[ 
PD>[@FRXQWHU PD>[@FRXQWHU
FRXQW FRXQW
FRXQW FRXQWPD>[@PD\EH1HZ [ 
[ [
`
6\VWHPRXWSULQWOQ FRXQW
PD>@FRXQWHU 
`

SXEOLFLQWPD\EH1HZ LQWLQGH[ ^
LI  ^
0L[P QHZ0L[ 

PFRXQWHU PFRXQWHU
UHWXUQ
`
UHWXUQ
`
`

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

3RRO3X]]OH
9OURJOBISTOTAKECODESNIPPETSFROMTHE
POOLANDPLACETHEMINTOTHEBLANKLINES
INTHECODE9OUMAYNOTUSETHESAME
SNIPPETMORETHANONCE ANDYOUWONT
NEEDTOUSEALLTHESNIPPETS9OURGOAL
ISTOMAKEACLASSTHATWILLCOMPILEAND
RUNANDPRODUCETHEOUTPUTLISTED

/UTPUT
)LOH(GLW:LQGRZ+HOS%HOO\)ORS

MDYD3X]]OH
UHVXOW

LQW\ 
LQW[ 
LQWUHVXOW 
ZKLOH [ ^
BBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBB
\ \ 
BBBBBBBBBBBBBBBBB
`
[ 
ZKLOH [! ^
BBBBBBBBBBBBBBBBB
UHVXOW UHVXOWBBBBBBBBBBBBBBBBBBB
`
6\VWHPRXWSULQWOQ UHVXOWUHVXOW 
`
`
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
IVAR
 FACTOR 
OBS;X=IVARX
IVAR
0UZZLEB
INT
IVAR
 FACTOR 
OBS;X=IVARY
FACTOR
0UZZLEB
SHORT
IVAR
FACTOR
PUBLIC
0UZZLE;=OBSNEW0UZZLE;=
OBS;X=NEW0UZZLEBX 
XX 
0UZZLEB;=OBSNEW0UZZLEB;= PRIVATE
OBS;=NEW0UZZLEB 
XX 
0UZZLEB;=OBSNEW0UZZLE;=
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-DLVVLGH-DLIUR]H-DLNQHZWKDW%XFKDQDQ
ZDVDVVWXSLGDVKHZDVXJO\DQGKHGLGQWZDQWWRVSRRNWKHELJJX\%XFKDQDQRUGHUHG-DL
LQWRKLVERVVVRIFHEXW-DLGGRQHQRWKLQJZURQJ ODWHO\ VRKHJXUHGDOLWWOHFKDWZLWK
%XFKDQDQVERVV/HYHOHUFRXOGQWEHWRREDG+HGEHHQPRYLQJORWVRIQHXUDOVWLPPHUVLQ
WKHZHVWVLGHODWHO\DQGKHJXUHG/HYHOHUZRXOGEHSOHDVHG%ODFNPDUNHWVWLPPHUVZHUHQW
WKHEHVWPRQH\SXPSDURXQGEXWWKH\ZHUHSUHWW\KDUPOHVV0RVWRIWKHVWLPMXQNLHVKHG
VHHQWDSSHGRXWDIWHUDZKLOHDQGJRWEDFNWROLIHPD\EHMXVWDOLWWOHOHVVIRFXVHGWKDQEHIRUH

)LYH0LQXWH
0\VWHU\

/HYHOHUVRIFHZDVDVNXQJ\ORRNLQJVNLPPHUEXWRQFH%XFKDQDQVKRYHGKLPLQ-DL
FRXOGVHHWKDWLWGEHHQPRGLHGWRSURYLGHDOOWKHH[WUDVSHHGDQGDUPRUWKDWDORFDOERVVOLNH
/HYHOHUFRXOGKRSHIRU-DLP\ER\KLVVHG/HYHOHUSOHDVXUHWRVHH\RXDJDLQ/LNHZLVH
,PVXUHVDLG-DLVHQVLQJWKHPDOLFHEHKLQG/HYHOHUVJUHHWLQJ:HVKRXOGEHVTXDUH
/HYHOHUKDYH,PLVVHGVRPHWKLQJ"+D<RXUHPDNLQJLWORRNSUHWW\JRRG-DL\RXUYROXPH
LVXSEXW,YHEHHQH[SHULHQFLQJVKDOOZHVD\DOLWWOHEUHDFKODWHO\VDLG/HYHOHU

Licensed by
Eduard Simons
104038

-DLZLQFHGLQYROXQWDULO\KHGEHHQDWRSGUDZHUMDFNKDFNHULQKLVGD\$Q\WLPHVRPHRQH
JXUHGRXWKRZWREUHDNDVWUHHWMDFNVVHFXULW\XQZDQWHGDWWHQWLRQWXUQHGWRZDUG-DL1R
ZD\LWVPHPDQVDLG-DLQRWZRUWKWKHGRZQVLGH,PUHWLUHGIURPKDFNLQJ,MXVWPRYH
P\VWXIIDQGPLQGP\RZQEXVLQHVV<HDK\HDKODXJKHG/HYHOHU,PVXUH\RXUH
FOHDQRQWKLVRQHEXW,OOEHORVLQJELJPDUJLQVXQWLOWKLVQHZMDFNKDFNHULVVKXW
RXW:HOOEHVWRIOXFN/HYHOHUPD\EH\RXFRXOGMXVWGURSPHKHUHDQG,OOJR
PRYHDIHZPRUHXQLWVIRU\RXEHIRUH,ZUDSXSWRGD\VDLG-DL

,PDIUDLGLWVQRWWKDWHDV\-DL%XFKDQDQKHUHWHOOVPHWKDWZRUGLV\RXUH
FXUUHQWRQ-1(LQVLQXDWHG/HYHOHU1HXUDO(GLWLRQ"VXUH,SOD\DURXQGDELWVR
ZKDW"-DLUHVSRQGHGIHHOLQJDOLWWOHTXHDV\1HXUDOHGLWLRQVKRZ,OHWWKHVWLPMXQNLHV
NQRZZKHUHWKHQH[WGURSZLOOEHH[SODLQHG/HYHOHU7URXEOHLVVRPHVWLPMXQNLHVVWD\HG
VWUDLJKWORQJHQRXJKWRJXUHRXWKRZWRKDFNLQWRP\:DUH+RXVLQJGDWDEDVH,QHHGD
TXLFNWKLQNHUOLNH\RXUVHOI-DLWRWDNHDORRNDWP\6WLP'URS-1(FODVVPHWKRGVLQVWDQFH
YDULDEOHVWKHZKROHHQFKLODGDDQGJXUHRXWKRZWKH\UHJHWWLQJLQ,WVKRXOG+(<
H[FODLPHG%XFKDQDQ,GRQWZDQWQRVFXPKDFNHUOLNH-DLQRVLQDURXQGP\FRGH(DV\
ELJJX\-DLVDZKLVFKDQFH,PVXUH\RXGLGDWRSUDWHMREZLWK\RXUDFFHVVPRGL'RQW
WHOOPHELWWZLGGOHUVKRXWHG%XFKDQDQ,OHIWDOORIWKRVHMXQNLHOHYHOPHWKRGVSXEOLF
VRWKH\FRXOGDFFHVVWKHGURSVLWHGDWDEXW,PDUNHGDOOWKHFULWLFDO:DUH+RXVLQJPHWKRGV
SULYDWH1RERG\RQWKHRXWVLGHFDQDFFHVVWKRVHPHWKRGVEXGG\QRERG\
,WKLQN,FDQVSRW\RXUOHDN/HYHOHUZKDWVD\ZHGURS%XFKDQDQKHUHRIIDWWKHFRUQHU
DQGWDNHDFUXLVHDURXQGWKHEORFNVXJJHVWHG-DL%XFKDQDQUHDFKHGIRUKLVWZLWFKJXQEXW
/HYHOHUVVWXQQHUZDVDOUHDG\RQ%XFKDQDQVQHFN/HWLWJR%XFKDQDQVQHHUHG/HYHOHU
'URSWKHWZLWFKHUDQGVWHSRXWVLGH,WKLQN-DLDQG,KDYHVRPHSODQVWRPDNH

:KDWGLG-DLVXVSHFW"
:LOOKHJHWRXWRI/HYHOHUVVNLPPHUZLWKDOOKLVERQHVLQWDFW"


FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

([HUFLVH6ROXWLRQV
%

FODVV&ORFN^
6WULQJWLPH
YRLGVHW7LPH 6WULQJW ^
WLPH W
`
6WULQJJHW7LPH ^
UHWXUQWLPH
`
`
FODVV&ORFN7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
&ORFNF QHZ&ORFN 
FVHW7LPH  
6WULQJWRG FJHW7LPH 
6\VWHPRXWSULQWOQ WLPHWRG 
`
`1RWH*HWWHUPHWKRGVKDYHDUHWXUQ

$&ODVV;&RS\FRPSLOHVDQGUXQVDVLWVWDQGV7KH

W\SHE\GHQLWLRQ

RXWSXWLV5HPHPEHU-DYDLVSDVVE\YDOXH ZKLFK
PHDQVSDVVE\FRS\ WKHYDULDEOHRULJLVQRWFKDQJHGE\WKH
JR  PHWKRG

$FODVVFDQKDYHDQ\QXPEHURIWKHVH

LQVWDQFHYDULDEOHVJHWWHUVHWWHUPHWKRG

$PHWKRGFDQKDYHRQO\RQHRIWKHVH

UHWXUQ

7KLVFDQEHLPSOLFLWO\SURPRWHG

UHWXUQDUJXPHQW

,SUHIHUP\LQVWDQFHYDULDEOHVSULYDWH

HQFDSVXODWLRQ

,WUHDOO\PHDQVPDNHDFRS\

SDVVE\YDOXH

2QO\VHWWHUVVKRXOGXSGDWHWKHVH

LQVWDQFHYDULDEOHV

$PHWKRGFDQKDYHPDQ\RIWKHVH

DUJXPHQW

,UHWXUQVRPHWKLQJE\GHQLWLRQ

JHWWHU

,VKRXOGQWEHXVHGZLWKLQVWDQFHYDULDEOHV

SXEOLF

,FDQKDYHPDQ\DUJXPHQWV

PHWKRG

%\GHQLWLRQ,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^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
3X]]OHE>@REV QHZ3X]]OHE>@
LQW\ 
LQW[ 
LQWUHVXOW 
ZKLOH [ ^
REV>[@ QHZ3X]]OHE  
REV>[@LYDU \

-DLNQHZWKDW%XFKDQDQZDVQWWKHVKDUSHVW
SHQFLOLQWKHER[:KHQ-DLKHDUG%XFKDQDQ
WDONDERXWKLVFRGH%XFKDQDQQHYHUPHQWLRQHG
KLVLQVWDQFHYDULDEOHV-DLVXVSHFWHGWKDW
ZKLOH%XFKDQDQGLGLQIDFWKDQGOHKLVPHWKRGV
FRUUHFWO\KHIDLOHGWRPDUNKLVLQVWDQFHYDULDEOHV
SULYDWH7KDWVOLSXSFRXOGKDYHHDVLO\FRVW
/HYHOHUWKRXVDQGV

\ \ 


[ [
`
[ 
ZKLOH [! ^
[ [
UHVXOW UHVXOWREV>[@GR6WXII [ 
`
6\VWHPRXWSULQWOQ UHVXOWUHVXOW 
`
`

#ANDIDATES

[
LQGH[

FODVV3X]]OHE^

0OSSIBLEOUTPUT




LQWLYDU
SXEOLFLQWGR6WXII LQWIDFWRU ^

[



LQGH[



[



LQGH[



[



LQGH[



LI LYDU! ^
UHWXUQLYDU IDFWRU
`HOVH^
UHWXUQLYDU  IDFWRU 
/UTPUT
`
)LOH(GLW:LQGRZ+HOS%HOO\)ORS
`
`
MDYD3X]]OH

UHVXOW



FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

/HWVSXWVRPHPXVFOHLQRXUPHWKRGV7EDABBLEDWITHVARIABLES 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
OFYOUROWN)NSTEAD YOURJOBISTOSINKTHECOMPUTERS
SHIPSINTHEFEWESTNUMBEROFGUESSES

<RXUHJRLQJWREXLOGWKH
6LQND'RW&RPJDPHZLWK
D[JULGDQGWKUHH
'RW&RPV(DFK'RW&RP
WDNHVXSWKUHHFHOOV

/H ANDWEARENTSINKINGSHIPS7EREKILLING$OT
#OMS4HUSESTABLISHINGBUSINESSRELEVANCYSOYOUCAN
EXPENSETHECOSTOFTHISBOOK 
'OAL3INKALLOFTHECOMPUTERS$OT#OMSINTHEFEWEST
NUMBEROFGUESSES9OUREGIVENARATINGORLEVEL BASED
ONHOWWELLYOUPERFORM
3ETUP7HENTHEGAMEPROGRAMISLAUNCHED THE
COMPUTERPLACESTHREE$OT#OMSONAVIRTUALX
GRID7HENTHATSCOMPLETE THEGAMEASKSFORYOURlRST
GUESS
(OWYOUPLAY7EHAVENTLEARNEDTOBUILDA'5)YET SO
THISVERSIONWORKSATTHECOMMAND LINE4HECOMPUTER
WILLPROMPTYOUTOENTERAGUESSACELL THATYOULLTYPE
ATTHECOMMAND LINEASh!v h#v ETC )NRESPONSE
TOYOURGUESS YOULLSEEARESULTATTHECOMMAND
LINE EITHERh(ITv h-ISSv ORh9OUSUNK0ETSCOMvOR
WHATEVERTHELUCKY$OT#OMOFTHEDAYIS 7HEN
YOUVESENTALLTHREE$OT#OMSTOTHATBIGINTHE
SKY THEGAMEENDSBYPRINTINGOUTYOURRATING

HDFKER[
LVDFHOO

;JULG
!

#
$

)LOH(GLW:LQGRZ+HOS6HOO

MDYD'RW&RP%XVW
(QWHUDJXHVV$
PLVV
(QWHUDJXHVV%
PLVV
(QWHUDJXHVV&
PLVV
(QWHUDJXHVV'
KLW
(QWHUDJXHVV'
KLW
(QWHUDJXHVV'
2XFK<RXVXQN3HWVFRP 

'OCOM

"

XIZ\WNIOIUMQV\MZIK\QWV

NLOO
(QWHUDJXHVV%

0ETSCOM

PLVV

(QWHUDJXHVV*

&

KLW

'


VWDUWVDW]HUROLNH-DYDDUUD\V


(QWHUDJXHVV*

!SK-ECOM

FKDSWHU

KLW

(QWHUDJXHVV*
2XFK<RXVXQN$VN0HFRP 
NLOO
(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
HDQV
$FLUFOHPILQLVK
VWDUWRU

7EKNOWWELLNEEDCLASSESANDMETHODS BUTWHAT
SHOULDTHEYBE4OANSWERTHAT WENEEDMORE
INFORMATIONABOUTWHATTHEGAMESHOULDDO
&IRST WENEEDTOlGUREOUTTHEGENERALmOWOFTHE
GAME(ERESTHEBASICIDEA

OHLV
$UHFWDQUJHSUHVHQW
XVHGWR Q
DQDFWLR

6WDUW

8VHUVWDUWVWKHJDPH
*DPHVHWXS

*DPHFUHDWHVWKUHH'RW&RPV

*DPHSODFHVWKHWKUHH'RW
&RPVRQWRDYLUWXDOJULG

*DPHSOD\EHJLQV

*HWXVHU
JXHVV

PLVV

5HSHDWWKHIROORZLQJXQWLOWKHUHDUH
QRPRUH'RW&RPV

&KHFN
JXHVV

KLW

UHPRYHORFD
WLRQFHOO

3URPSWXVHUIRUDJXHVV
$&HWF

NLOO

UHPRYH
'RW&RP

&KHFNWKHXVHUJXHVVDJDLQVW
DOO'RW&RPVWRORRNIRUDKLW
PLVVRUNLOO7DNHDSSURSUL
DWHDFWLRQLIDKLWGHOHWHFHOO
$'HWF ,IDNLOOGHOHWH
'RW&RP

\HV

*DPHQLVKHV
*LYHWKHXVHUDUDWLQJEDVHGRQ
WKHQXPEHURIJXHVVHV

VWLOOVRPH
'RW&RPV
DOLYH"

$GLDPRQG
UHSUHVHQWVD
GHFLVLRQSRLQW

QR

.OWWEHAVEANIDEAOFTHEKINDSOFTHINGSTHE
PROGRAMNEEDSTODO4HENEXTSTEPISlGURING
OUTWHATKINDOFOBJECTSWELLNEEDTODOTHE
WORK2EMEMBER THINKLIKE"RADRATHERTHAN
,ARRYFOCUSlRSTONTHETHINGSINTHEPROGRAM
RATHERTHANTHEPROCEDURES

GLVSOD\XVHU
VFRUHUDWLQJ

JDPH
RYHU

:KRD$UHDORZFKDUW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
)TLOOKSLIKEWEREGONNANEEDATLEASTTWOCLASSES A
'AMECLASSANDA$OT#OMCLASS"UTBEFOREWEBUILD
THEFULLMONTY3INKA$OT#OMGAME WELLSTARTWITH
ASTRIPPED DOWN SIMPLIlEDVERSION 3IMPLE$OT#OM
'AME7ELLBUILDTHESIMPLEVERSIONINTHISCHAPTER
FOLLOWEDBYTHEDELUXEVERSIONTHATWEBUILDINTHE
NEXTCHAPTER
%VERYTHINGISSIMPLERINTHISGAME)NSTEADOFA $
GRID WEHIDETHE$OT#OMINJUSTASINGLEROW!ND
INSTEADOFTHREE$OT#OMS WEUSEONE

*DPHVWDUWVDQGFUHDWHV21('RW&RP
DQGJLYHVLWDORFDWLRQRQWKUHHFHOOVLQ
WKHVLQJOHURZRIVHYHQFHOOV

,QVWHDGRI$&DQGVRRQWKH
ORFDWLRQVDUHMXVWLQWHJHUV IRUH[DPSOH
DUHWKHFHOOORFDWLRQVLQWKLV
SLFWXUH

4HEGOALISTHESAME THOUGH SOTHEGAMESTILLNEEDS


TOMAKEA$OT#OMINSTANCE ASSIGNITALOCATION
SOMEWHEREINTHEROW GETUSERINPUT ANDWHENALL
OFTHE$OT#OMSCELLSHAVEBEENHIT THEGAMEISOVER
4HISSIMPLIlEDVERSIONOFTHE
GAMEGIVESUSABIGHEADSTART
6LPSOH'RW&RP*DPH
ONBUILDINGTHEFULLGAME

)FWECANGETTHISSMALLONE
6LPSOH'RW&RP
WORKING WECANSCALEITUPTO
LQW>@ORFDWLRQ&HOOV
THEMORECOMPLEXONELATER
YRLGPDLQ LQWQXP2I+LWV

)NTHISSIMPLEVERSION THE
GAMECLASSHASNOINSTANCE
6WULQJFKHFN<RXUVHOI 6WU
VARIABLES ANDALLTHEGAME
LQJJXHVV
CODEISINTHEMAIN METHOD
YRLGVHW/RFDWLRQ&HOOV LQ
W>@ORF
)NOTHERWORDS WHENTHE
PROGRAMISLAUNCHEDAND
MAIN BEGINSTORUN ITWILL
MAKETHEONEANDONLY$OT#OM
INSTANCE PICKALOCATIONFORITTHREE
CONSECUTIVECELLSONTHESINGLEVIRTUAL
SEVEN CELLROW ASKTHEUSERFORAGUESS CHECKTHE
GUESS ANDREPEATUNTILALLTHREECELLSHAVEBEENHIT
+EEPINMINDTHATTHEVIRTUALROWISVIRTUAL)NOTHER
WORDS ITDOESNTEXISTANYWHEREINTHEPROGRAM!S
LONGASBOTHTHEGAMEANDTHEUSERKNOWTHATTHE
$OT#OMISHIDDENINTHREECONSECUTIVECELLSOUTOFA
POSSIBLESEVENSTARTINGATZERO THEROWITSELFDOESNT
HAVETOBEREPRESENTEDINCODE9OUMIGHTBETEMPTED
TOBUILDANARRAYOFSEVENINTSANDTHENASSIGNTHE
$OT#OMTOTHREEOFTHESEVENELEMENTSINTHEARRAY
BUTYOUDONTNEEDTO!LLWENEEDISANARRAYTHAT
HOLDSJUSTTHETHREECELLSTHE$OT#OMOCCUPIES


*DPHSOD\EHJLQV3URPSWXVHUIRU
DJXHVVWKHQFKHFNWRVHHLILWKLW
DQ\RIWKH'RW&RPVWKUHHFHOOV
,IDKLWLQFUHPHQWWKHQXP2I+LWV
YDULDEOH

*DPHQLVKHVZKHQDOOWKUHHFHOOVKDYH
EHHQKLW WKHQXP2I+LWVYDULDEOHYDO
XHLV DQGWHOOVWKHXVHUKRZPDQ\
JXHVVHVLWWRRNWRVLQNWKH'RW&RP

)KWUXTM\MOIUMQV\MZIK\QWV
)LOH(GLW:LQGRZ+HOS'HVWUR\

MDYD6LPSOH'RW&RP*DPH
HQWHUDQXPEHU
KLW
HQWHUDQXPEHU
KLW
HQWHUDQXPEHU
PLVV
HQWHUDQXPEHU
NLOO
<RXWRRNJXHVVHV

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

<PM\PZMM\PQVO[_MTT_ZQ\MNWZ
MIKPKTI[["

,M^MTWXQVOI+TI[[
!SAPROGRAMMER YOUPROBABLYHAVEAMETHODOLOGY
PROCESSAPPROACHTOWRITINGCODE7ELL SODOWE/UR
SEQUENCEISDESIGNEDTOHELPYOUSEEANDLEARN WHAT
WERETHINKINGASWEWORKTHROUGHCODINGACLASS)T
ISNTNECESSARILYTHEWAYWEORYOU WRITECODEINTHE
2EAL7ORLD)NTHE2EAL7ORLD OFCOURSE YOULLFOLLOW
THEAPPROACHYOURPERSONALPREFERENCES PROJECT OR
EMPLOYERDICTATE7E HOWEVER CANDOPRETTYMUCH
WHATEVERWEWANT!NDWHENWECREATEA*AVACLASSASA
hLEARNINGEXPERIENCEv WEUSUALLYDOITLIKETHIS

SUHSFRGH WHVWFRGH UHDOFRGH


4HISBARISDISPLAYEDONTHENEXTSETOFPAGESTOTELL
YOUWHICHPARTYOUREWORKINGON&OREXAMPLE IFYOU
SEETHISPICTUREATTHETOPOFAPAGE ITMEANSYOURE
WORKINGONPREPCODEFORTHE3IMPLE$OT#OMCLASS
6LPSOH'RW&RPFODVV
SUHSFRGH WHVWFRGH

 &IGUREOUTWHATTHECLASSISSUPPOSEDTODO
 ,ISTTHEINSTANCEVARIABLESANDMETHODS

SUHSFRGH

 7RITEPREPCODEFORTHEMETHODS9OULLSEE
THISINJUSTAMOMENT

$IRUPRISVHXGRFRGHWRKHOS\RXIRFXVRQ
WKHORJLFZLWKRXWVWUHVVLQJDERXWV\QWD[

 7RITETESTCODEFORTHEMETHODS

WHVWFRGH

 )MPLEMENTTHECLASS

$FODVVRUPHWKRGVWKDWZLOOWHVWWKHUHDOFRGH
DQGYDOLGDWHWKDWLWVGRLQJWKHULJKWWKLQJ

 4ESTTHEMETHODS

UHDOFRGH

 $EBUGANDREIMPLEMENTASNEEDED
 %XPRESSGRATITUDETHATWEDONTHAVETOTEST

OURSO CALLEDLEARNINGEXPERIENCEAPPON
ACTUALLIVEUSERS

7KHDFWXDOLPSOHPHQWDWLRQRIWKHFODVV7KLVLV
ZKHUHZHZULWHUHDO-DYDFRGH

<W,W"
6LPSOH'R

W&RPFOD

ZULWH
ZULW

YiX`e
gfn\i
&LEXTHOSEDENDRITES
(OWWOULDYOUDECIDEWHICHCLASSORCLASSES
TOBUILDlRST WHENYOUREWRITINGAPROGRAM
!SSUMINGTHATALLBUTTHETINIESTPROGRAMS
NEEDMORETHANONECLASSIFYOUREFOLLOWING
GOOD//PRINCIPLESANDNOTHAVINGONECLASS
DOMANYDIFFERENTJOBS WHEREDOYOUSTART

UHDOFRGH

VV

SUHSFRGH

HWHVWFRGH

ZULW

HQDO-DYD

6LPSOH'R
FODVV
ZULW
Z

FRGH

W&RP*DP

HSUHSFRG

ULWHWHVWFRG

ZULW

H

H>QR@

HQDO-DYD

FRGH

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

6LPSOH'RW&RP

LQW>@ORFDWLRQ&HOOV
LQWQXP2I+LWV
6WULQJFKHFN<RXUVHOI 6WULQJJXHVV
YRLGVHW/RFDWLRQ&HOOV LQW>@ORF

9OULLGETTHEIDEAOFHOWPREPCODEOURVERSIONOFPSEUDOCODE WORKSASYOU
READTHROUGHTHISEXAMPLE)TSSORTOFHALF WAYBETWEENREAL*AVACODEANDAPLAIN
%NGLISHDESCRIPTIONOFTHECLASS-OSTPREPCODEINCLUDESTHREEPARTSINSTANCE
VARIABLEDECLARATIONS METHODDECLARATIONS METHODLOGIC4HEMOSTIMPORTANT
PARTOFPREPCODEISTHEMETHODLOGIC BECAUSEITDElNESWHATHASTOHAPPEN
WHICHWELATERTRANSLATEINTOHOW WHENWEACTUALLYWRITETHEMETHODCODE
()'0%6)ERMRXEVVE]XSLSPHXLIPSGEXMSRGIPPW'EPPMXPSGEXMSR'IPPW
()'0%6)ERMRXXSLSPHXLIRYQFIVSJLMXW'EPPMXRYQ3J,MXWERH7)8MXXS
()'0%6)EGLIGO=SYVWIPJ QIXLSHXLEXXEOIWE7XVMRKJSVXLIYWIVWKYIWW IXG 
GLIGOWMXERHVIXYVRWEVIWYPXVITVIWIRXMRKELMXQMWWSVOMPP
()'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)8962OMPPEWXLIVIWYPX
        )07)MX[EWRSXEOMPPWS6)8962LMX
        )2(-*
      )07)XLIYWIVKYIWWHMHRSXQEXGLWS6)8962QMWW
      )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
ZHUHQWJRQQDZULWH\RXU
WHVWFRGHUVW:KRR
'RQWVFDUHPHOLNHWKDW

TM\[_ZQ\M\PMZMIT
UM\PWLKWLMVW_IVLOM\
\PQ[X]XXa_WZSQVO
"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
DEVELOPMENTMETHODOLOGYWORLD#ONSIDEREDBYMANY
TOBEhTHEWAYPROGRAMMERSREALLYWANTTOWORKv 80
EMERGEDINTHELATESANDHASBEENADOPTEDBY
COMPANIESRANGINGFROMTHETWO PERSONGARAGESHOP
TOTHE&ORD-OTOR#OMPANY4HETHRUSTOF80ISTHATTHE
CUSTOMERGETSWHATHEWANTS WHENHEWANTSIT EVEN
WHENTHESPECCHANGESLATEINTHEGAME

$ONTPUTINANYTHINGTHATSNOTINTHESPECNOMATTER
HOWTEMPTEDYOUARETOPUTINFUNCTIONALITYhFORTHE
FUTUREv 

80ISBASEDONASETOFPROVENPRACTICESTHATAREALL
DESIGNEDTOWORKTOGETHER ALTHOUGHMANYFOLKSDOPICK
ANDCHOOSE ANDADOPTONLYAPORTIONOF80SRULES4HESE
PRACTICESINCLUDETHINGSLIKE

$ONTRELEASEANYTHINGUNTILITPASSESALLTHETESTS

-AKESMALL BUTFREQUENT RELEASES

0ROGRAMINPAIRS ANDMOVEPEOPLEAROUNDSOTHAT
EVERYBODYKNOWSPRETTYMUCHEVERYTHINGABOUTTHECODE

$EVELOPINITERATIONCYCLES

7RITETHETESTCODEFIRST
.OKILLERSCHEDULESWORKREGULARHOURS
2EFACTORIMPROVETHECODE WHENEVERANDWHEREVERYOU
NOTICETHEOPPORTUNITY
3ETREALISTICSCHEDULES BASEDAROUNDSMALLRELEASES
+EEPITSIMPLE

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WANTAMOREROBUST@SETTERMETHOD WHICHWEWOULDWANTTOTEST 

Licensed by
Eduard Simons

104038

4HENASKYOURSELF h)FTHECHECK9OURSELF METHODWERE


IMPLEMENTED WHATTESTCODECOULD)WRITETHATWOULDPROVETOME
THEMETHODISWORKINGCORRECTLYv

*I[MLWV\PQ[ XZMXKWLM"
 

0MZM[_PI\_M[PW]TL\M[\"

  1)8,3(7XVMRKGLIGO=SYVWIPJ 7XVMRKYWIV+YIWW 

 ,QVWDQWLDWHD6LPSOH'RW&RPREMHFW

  +)8XLIYWIVKYIWWEWE7XVMRKTEVEQIXIV

 $VVLJQLWDORFDWLRQ DQDUUD\RILQWVOLNH


^` 

  '32:)68XLIYWIVKYIWWXSERMRX
  6)4)%8[MXLIEGLSJXLIPSGEXMSRGIPPWMRXLIMRXEVVE]
    '314%6)XLIYWIVKYIWWXSXLIPSGEXMSRGIPP
    -*XLIYWIVKYIWWQEXGLIW
      -2'6)1)28XLIRYQFIVSJLMXW
      *-2(398MJMX[EWXLIPEWXPSGEXMSRGIPP

 &UHDWHD6WULQJWRUHSUHVHQWDXVHUJXHVV
HWF 
 ,QYRNHWKHFKHFN<RXUVHOI PHWKRGSDVV
LQJLWWKHIDNHXVHUJXHVV
 3ULQWRXWWKHUHVXOWWRVHHLILWVFRUUHFW
SDVVHGRUIDLOHG 

      -*RYQFIVSJLMXWMW6)8962/MPPEWXLIVIWYPX
      )07)MX[EWRSXEOMPPWS6)8962,MX
      )2(-*
    )07)XLIYWIVKYIWWHMHRSXQEXGLWS6)89621MWW
    )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

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

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

-AYBE)MMISSINGSOME
THINGHERE BUTHOWEXACTLYDO
YOURUNATESTONSOMETHING
THATDOESNTYETEXIST

A:

9OUDONT7ENEVERSAID
YOUSTARTBYRUNNINGTHETEST
YOUSTARTBYWRITINGTHETEST!T
THETIMEYOUWRITETHETESTCODE
YOUWONTHAVEANYTHINGTORUN
ITAGAINST SOYOUPROBABLYWONT
BEABLETOCOMPILEITUNTILYOU
WRITE@STUBCODETHATCANCOM
PILE BUTTHATWILLALWAYSCAUSE
THETESTTOFAILLIKE RETURNNULL

Q:

4HEN)STILLDONTSEETHE
POINT7HYNOTWAITUNTILTHE
CODEISWRITTEN ANDTHENWHIP
OUTTHETESTCODE

A:

4HEACTOFTHINKINGTHROUGH
ANDWRITING THETESTCODEHELPS
CLARIFYYOURTHOUGHTSABOUTWHAT
THEMETHODITSELFNEEDSTODO
!SSOONASYOURIMPLEMENTATION
CODEISDONE YOUALREADYHAVE
TESTCODEJUSTWAITINGTOVALIDATE
IT"ESIDES YOUKNOWIFYOUDONT
DOITNOW YOULLNEVERDOIT
4HERESALWAYSSOMETHINGMORE
INTERESTINGTODO
)DEALLY WRITEALITTLETESTCODE
THENWRITEONLYTHEIMPLEMENTA
TIONCODEYOUNEEDINORDERTO
PASSTHATTEST4HENWRITEALITTLE
MORETESTCODEANDWRITEONLY
THENEWIMPLEMENTATIONCODE
NEEDEDTOPASSTHATNEWTEST!T
EACHTESTITERATION YOURUNALL
THEPREVIOUSLY WRITTENTESTS SO
THATYOUALWAYSPROVETHATYOUR
LATESTCODEADDITIONSDONTBREAK
PREVIOUSLY TESTEDCODE

SXEOLFFODVV6LPSOH'RW&RP7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

HD
LQVWDQWLDRWW&RP
6LPSOH'
REMHFW

6LPSOH'RW&RPGRW QHZ6LPSOH'RW&RP 

IRU
WDUUDW\KHGRW
LQ

Q
D

H
N

PD FDWLRQRI LQWV
WKHORFRQVHFXWLYH 
FRP DSRVVLEOH
RXWRI

LQW>@ORFDWLRQV ^`
GRWVHW/RFDWLRQ&HOOV ORFDWLRQV 

6WULQJXVHU*XHVV 

PDNHDIDNH
XVHUJXHVV

LQYRNHWK
PHWKRGRQHVHWWHU
WKHGRWF
RP

6WULQJUHVXOW GRWFKHFN<RXUVHOI XVHU*XHVV 


6WULQJWHVW5HVXOW IDLOHG
LI UHVXOWHTXDOV KLW  ^
WHVW5HVXOW SDVVHG
`

LQYRNHWKHF FN<
RXUVHOI 
PHWKRGRQWKH
KH
G
RW
FRP
REMHFWDQGS
IDNHJXHVV DVVLWWKH

V  JLYHV
LIWKHIDNHJXHVVZ
RUNLQJ
LW
EDFNDKLW

6\VWHPRXWSULQWOQ WHVW5HVXOW 


`

SULQWRXWWKH
SDVVHGRUIDLOHWHGVW UHVXOW

6KDUSHQ \RXU SHQFLO


)NTHENEXTCOUPLEOFPAGESWEIMPLEMENTTHE3IMPLE$OT#OMCLASS
ANDTHENLATERWERETURNTOTHETESTCLASS,OOKINGATOURTESTCODE
ABOVE WHATELSESHOULDBEADDED7HATAREWENOTTESTINGINTHIS
CODE THATWESHOULDBETESTINGFOR7RITEYOURIDEASORLINESOF
CODE BELOW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
KYIWW
'32:)68
XLIYWIVKYIWWXS
ERMRX

6)4)%8[MXL
IEGLGIPPMRXLIMRX
EVVE]
-*XLIYWIVKYIWW
QEXGLIW

SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJ
VWULQJ*XHVV ^


LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 

PDNHDYDULDEOHWRKROG
UHWXUQSXWPLVVLQDV WKHUHVXOWZHOO
LHZHDVVXPHDPLVV WKHGHIDXOW

6WULQJUHVXOW PLVV

UHSHDWZLWKH
DUUD\ HDFKF DFKFHOOLQWKHORFDWLRQ
&H
HOOORFDWLRQR
IWKHREMHFW OOV
FRPSDUHWKHX

HOHPHQW FHOO  VHUJXHVVWRWKLV
LQWKHDUUD\
ZHJRWDKLW

IRU LQWFHOOORFDWLRQ&HOOV ^
LI JXHVV

FHOO ^

UHVXOW KLW
-2'6)1)28
XLIRYQFIVSJ
LMXW

FRQYHUWWKH6WULQJ
WRDQLQW

QXP2I+LWV


EUHDN
`HQGLI

JHWRXWRIWKHO
WRWHVWWKHRWKHRRSQRQHHG
UFHOOV

`HQGIRU
*-2(398MJ
MX[EWXLIPEWXGIPP
-*RYQFIVSJLMXW
MW
6)8962OMPP
EWXLIVIWYPX
)07)MX[EW
RSXEOMPPWS
6)8962LMX
)07)
6)8962
QMWW

LI QXP2I+LWV

ORFDWLRQ&HOOVOHQJWK ^

ZHUHRXWRIWKHORRSEXWOHWV
QRZGHDG KLWWLPHV DQGFK VHHLIZHUH
DQJHWKH
UHVXOW6WULQJWR.LOO

UHVXOW NLOO
`HQGLI
6\VWHPRXWSULQWOQ UHVXOW 
UHWXUQUHVXOW
`HQGPHWKRG

GLVSOD\WKHUHVXOWIRUWKHXVHU
0LVVXQOHVVLWZDVFKDQJHGWR+LWRU.LOO

UHWXUQWKHUHVXOWEDFNW
R
WKHFDOOLQJPHWKRG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
RESTOFTHEDETAILSAREATTHEENDOF
THECHAPTER4HISISJUSTENOUGHTOLET
YOUKEEPGOING




&RQYHUWLQJD
6WULQJWRDQLQW

KDW
$FODVVLWWK-DYD
Z
VKLSV

$PHWKRGLQWKH
,QWHJHUFODVVWKDW
NQRZVKRZWRSDUVH
D6WULQJLQWRWKHLQW
LWUHSUHVHQWV

7KHIRUORRS

7KHSRVWLQFUHPHQW
RSHUDWRU

J

7KHFROR
 PHDQVLQ
ZKROHWKLQQ
VR
YDOXH,1ORFJPHDQVIRUHDFKWLKH
QW
DWLRQ&HOOV

NWZQV\KMTT"TWKI\QWV+MTT[ce

'HFODUHDYDULDEOHWKDWZLOOK
IURPWKHDUUD\(DFKWLPHWKROGRQHHOHPHQW
WKLVYDULDEOH LQWKLVFDVHDQLQURXJKWKHORRS
FHOO ZLOOKROGDGLIIHUHQW WYDULDEOHQDPHG
DUUD\XQWLOWKHUHDUHQRPRUHHOHPHQWIURPWKH
FRGHGRHVDEUHDNVHHHOHPHQWV RUWKH
EHORZ 

6WULQ

1V\MOMZXIZ[M1V\

UDWLRQDVUHSHDW
5HDGWKLVIRUORRSGHFODOR
FDWLRQ&HOOV
IRUHDFKHOHPHQWLQWKH HQW
WKHDUUD\
HOHP
DUUD\WDNHWKHQH[W YDULDLQ
FH
EOH OO
DQGDVVLJQLWWRWKHLQW



7DNHV
D

V]U7N0Q\[

RS
LQWKHQORH[W
U
H
Y
R

H
W
D
R
ORRSWKH
\WRLWHU
7KHDUULPD HWKURXJKWKHZLOOEHDVVLJQHGWWWKH
W
D
\


D
K
(DF WLQWKHDUU RUHRQWKLV
HOHPHQ ULDEOHFHOO 0
WKHYD WKLVFKDSWHU
HQGRI

7KHPHDQVDGGWR
ZKDWHYHUVWKHUH LQRWKHU
ZRUGVLQFUHPHQWE\ 

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

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

7HATHAPPENSIN
)NTEGERPARSE)NT IFTHETHINGYOU
PASSISNTANUMBER!NDDOESIT
RECOGNIZESPELLED OUTNUMBERS
LIKEhTHREEv

.QVITKWLMNWZ;QUXTM,W\+WUIVL;QUXTM,W\+WU<M[\MZ
SXEOLFFODVV6LPSOH'RW&RP7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6LPSOH'RW&RPGRW QHZ6LPSOH'RW&RP 
LQW>@ORFDWLRQV ^`
GRWVHW/RFDWLRQ&HOOV ORFDWLRQV 

A:

)NTEGERPARSE)NT WORKSONLY
ON3TRINGSTHATREPRESENTTHEASCII
VALUESFORDIGITS          
)FYOUTRYTOPARSESOMETHINGLIKE
hTWOvORhBLURPv THECODEWILLBLOW
UPATRUNTIME"YBLOWUP WE
ACTUALLYMEANTHROWANEXCEPTION
BUTWEDONTTALKABOUTEXCEPTIONS
UNTILTHE%XCEPTIONSCHAPTER3OFOR
NOW BLOWUPISCLOSEENOUGH

Q:

)NTHEBEGINNINGOFTHE
BOOK THEREWASANEXAMPLEOFA
FORLOOPTHATWASREALLYDIFFERENT
FROMTHISONEARETHERETWO
DIFFERENTSTYLESOFFORLOOPS

A:

9ES&ROMTHEFIRSTVERSIONOF
*AVATHEREHASBEENASINGLEKIND
OFFORLOOPEXPLAINEDLATERINTHIS
CHAPTER THATLOOKSLIKETHIS
FORINTIII [
DOSOMETHINGTIMES
]
9OUCANUSETHISFORMATFORANY
KINDOFLOOPYOUNEED"UT
BEGINNINGWITH*AVA4IGER
YOUCANALSOUSETHEENHANCEDFOR
LOOPTHATSTHEOFFICIALDESCRIPTION
WHENYOURLOOPNEEDSTOITERATE
OVERTHEELEMENTSINANARRAYOR
ANOTHERKINDOFCOLLECTION ASYOULL
SEEINTHENEXTCHAPTER 9OUCAN
ALWAYSUSETHEPLAINOLDFORLOOP
TOITERATEOVERANARRAY BUTTHE
ENHANCEDFORLOOPMAKESITEASIER

6WULQJXVHU*XHVV 
6WULQJUHVXOW GRWFKHFN<RXUVHOI XVHU*XHVV 
`
`

SXEOLFFODVV6LPSOH'RW&RP^
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 ^
UHVXOW KLW
QXP2I+LWV
EUHDN
7HATSHOULDWESEE
`
WHENWERUNTHISCODE
`RXWRIWKHORRS
4HETESTCODEMAKESA
LI QXP2I+LWV
3IMPLE$OT#OMOBJECT
ORFDWLRQ&HOOVOHQJWK ^
ANDGIVESITALOCATIONAT
UHVXOW NLOO
  4HENITSENDSAFAKE
`
USERGUESSOFhvINTOTHE
6\VWHPRXWSULQWOQ UHVXOW 
CHECK9OUSELF METHOD
UHWXUQUHVXOW
)FTHECODEISWORKING
`FORVHPHWKRG
CORRECTLY WESHOULDSEETHE
`FORVHFODVV
RESULTPRINTOUT

7KHUHVDOLWWOHEXJOXUNLQJKHUH,WFRPSLOHVDQG
UXQVEXWVRPHWLPHVGRQWZRUU\DERXWLWIRUQRZ
EXWZHZLOOKDYHWRIDFHLWDOLWWOHODWHU

MDYD6LPSOH'RW&RP7HVW'ULYH
KLW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
YOUAFEWLINESHEREANDTHERETOGETYOUSTARTED4HEACTUALGAMECODEISONTHE
NEXTPAGE SODONTTURNTHEPAGEUNTILYOUDOTHISEXERCISE
9OUSHOULDHAVESOMEWHEREBETWEENANDLINESINCLUDINGTHEONESWEWROTE
BUTNOTINCLUDINGLINESTHATHAVEONLYACURLYBRACE 

4HE3IMPLE$OT#OM'AME
NEEDSTODOTHIS
-AKETHESINGLE
3IMPLE$OT#OM/BJECT

  ()'0%6)ERMRXZEVMEFPIXSLSPHXLIRYQFIVSJYWIVKYIWWIWREQIHRYQ3J+YIWWIW

-AKEALOCATIONFORITTHREE
CONSECUTIVECELLSONASINGLE
ROWOFSEVENVIRTUALCELLS 

 

!SKTHEUSERFORAGUESS

1)8,3(TYFPMGWXEXMGZSMHQEMR 7XVMRK?AEVKW

#HECKTHEGUESS
2EPEATUNTILTHEDOTCOMIS
DEAD
4ELLTHEUSERHOWMANY
GUESSESITTOOK
  '31498)EVERHSQRYQFIVFIX[IIRERHXLEX[MPPFIXLIWXEVXMRKPSGEXMSRGIPPTSWMXMSR

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

MDYD6LPSOH'RW&RP*DPH

  ;,-0)XLIHSXGSQMWWXMPPEPMZI
      +)8YWIVMRTYXJVSQXLIGSQQERHPMRI
  

HQWHUDQXPEHU
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
    -*VIWYPXMWOMPP
      7)8MW%PMZIXSJEPWI [LMGLQIERW[I[SRXIRXIVXLIPSSTEKEMR
     46-28XLIRYQFIVSJYWIVKYIWWIW
    )2(-*
  )2(;,-0)
)2(1)8,3(

METACOGNITIVETIP
'RQWZRUNRQHSDUWRIWKHEUDLQIRUWRRORQJDVWUHWFKDWRQHWLPH
: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
NQRZKRZPDQ\WLPHV\RXZDQWWRUHSHDWWKH
ORRSFRGH

OHYHOGHVLJQ

 7\SLFDOO\\RXOOZULWHWKUHHWKLQJVZKHQ\RX
FUHDWHDQHZFODVV


SUHSFRGH

WHVWFRGH

UHDO -DYD FRGH

 8VHWKHSUHSRVWLQFUHPHQWRSHUDWRUWRDGG
WRDYDULDEOH [

 8VHWKHSUHSRVWGHFUHPHQWWRVXEWUDFWIURP
DYDULDEOH [

 3UHSFRGHVKRXOGGHVFULEHZKDWWRGRQRWKRZ
WRGRLW,PSOHPHQWDWLRQFRPHVODWHU

 8VHWKHSUHSFRGHWRKHOSGHVLJQWKHWHVW
FRGH

 :ULWHWHVWFRGHEHIRUH\RXLPSOHPHQWWKH

 8VH,QWHJHUSDUVH,QW WRJHWWKHLQW
YDOXHRID6WULQJ

6WULQJUHSUHVHQWVDGLJLW HWF

 8VHEUHDNWROHDYHDORRSHDUO\ LHHYHQLI
WKHERROHDQWHVWFRQGLWLRQLVVWLOOWUXH 

PHWKRGV

+RZPDQ\
KLWVGLG\RXJHW
ODVWPRQWK"

,QWHJHUSDUVH,QW ZRUNVRQO\LIWKH

,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 ^
LQWQXP2I*XHVVHV 
()'0%6)EZEVM
EFPIXSLSPHYWIV
KYIWWGSYRXWIXMX
*DPH+HOSHUKHOSHU QHZ*DPH+HOSHU 
XS


OHWRWUDFNKHVRZ
PDNHDYDULDE
DN
KHXVHUP
PDQ\JXHVVHVW
WKLVLVDVSHFLDOFODVVZHZURWHWKDWKDV
WKHPHWKRGIRUJHWWLQJXVHULQSXWIRU
QRZSUHWHQGLWVSDUWRI-DYD

1%/)E7MQTPI(SX
6LPSOH'RW&RPWKH'RW&RP QHZ6LPSOH'RW&RP 
'SQSFNIGX

'31498)ELQWUDQGRP1XP  LQW  0DWKUDQGRP   
VERHSQRYQFIV
FIX[IIRERH

PDNHWKHGRWFRPREMHFW
PDNHDUDQGRPQXPEHUIRUWKHILUVW

FHOODQGXVHLWWRPDNHWKHFHOO
ORFDWLRQVDUUD\

1%/)ERMRXEVVE]
LQW>@ORFDWLRQV ^UDQGRP1XPUDQGRP1XPUDQGRP1XP`
[MXLXLIGIPPPSGE
XMSRWERH

WKH'RW&RPVHW/RFDWLRQ&HOOV ORFDWLRQV 

-2:3/)WIX0SGE
XMSR'IPPWSRXLIHSX
ERROHDQLV$OLYH WUXH
GSQSFNIGX

PDNHDERROHDQYDULDEOHWRWUDFNZKHWKHUWKHJDPH
LVVWLOODOLYHWRXVHLQWKHZKLOHORRSWHVWUHSHDW
ZKLOHJDPHLVVWLOODOLYH
SXW6WULQJ
JHWXVHULQ

()'0%6)EFSSP
IERMW%PMZI
;,-0)XLIHSX
ZKLOH LV$OLYH
GSQMWWXMPPEPMZI

QV WKHDUUD\
JLYHWKHGRWFRPLWVORFDWLR

WUXH ^


+)8YWIVMRTYX 6WULQJJXHVV KHOSHUJHW8VHU,QSXW HQWHUDQXPEHU 
',)'/MX 6WULQJUHVXOW WKH'RW&RPFKHFN<RXUVHOI JXHVV 
-2:3/)GLIGO=S
YVWIPJ SRHSXGSQ
QXP2I*XHVVHV

LQFUHPHQWJXHVVFRXQW

-2'6)1)28
RYQ3J+YIWWIW LI UHVXOWHTXDOV NLOO ^
-*VIWYPXMWOMPP

LV$OLYH IDOVH

DVNWKHGRWF
WKHJXHVVVDYHRPWRFKHFN
UHVXOWLQD6WULWKHUHWXUQHG
QJ

ZDVLWDNLOO"LIVRVHWLV$OLYH IDOV
H VRZHZRQW
UHHQWHUWKHORRS DQGSULQWXVHWR
UJXHVVFRXQW

7)8KEQI%PMZIXS
JEPWI
6\VWHPRXWSULQWOQ <RXWRRNQXP2I*XHVVHVJXHVVHV 
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
EXPLAINING AREONTHISPAGE4HISIS
JUSTAQUICKLOOKTOKEEPYOUGOING
MOREDETAILSONTHE'AME(ELPER
CLASSAREATTHEENDOFTHISCHAPTER


 0DNHDUDQGRP

7KLVLVDFDVWDQ WIRUF
HVWKHWKLQJ
LPPHGLDWHO\DIWHULGLWW
RE
HFR
W\SHRIWKHFDVW LHWKHW PHWKH
\SHLQWKH
SDUHQV 0DWKUDQGRP
UH
WX
UQV
VRZHKDYHWRFDVWLWWREH DGRXEOH
DQLQW ZH
ZDQWDQLFHZKROHQXP
EHU
EH
DQG ,QWKLVFDV WKHF WZHHQ
DVWORSVRII
WKHIUDFWLRQDOSDUWHRI
WKHGRXEOH

G
7KH0DWKUDQGRPPHWKR
P]HURWR
UHWXUQVDQXPEHUIURRW
UPXOD
MXVWOHVVWKDQRQH6 UQVKLVDIR
EHU
QXP
ZLWKWKHFDVW UHWX
H
 L

IURPWR
FDVWWRDQLQW

QXPEHU

QV\ZIVLWU6]U%QV\5I\PZIVLWU
:HGHFODUHDQLQWYDULDEOHWRKROG
WKHUDQGRPQXPEHUZHJHWEDFN




*HWWLQJXVHULQSXW
XVLQJWKH*DPH+HOSHU
FODVV

$FODVVWKDWFRPHV
ZLWK-DYD

$QLQVWDQFHZHPDGHHDUOLHU
RIDFODVVWKDWZHEXLOWWR
KHOSZLWKWKHJDPH,WVFDOOHG
*DPH+HOSHUDQG\RXKDYHQW
VHHQLW\HW \RXZLOO 

$PHWKRGRIWKH
0DWKFODVV

7KLVP
DUJXPHQHWWKRGWDNHVD6WULQ
WKHXVHUD WKDWLWXVHVWRS J
:KDWHY WWKHFRPPDQ URPSW
GLVSOD\HGHULQ\RXSDVVLQKHUGH OLQH
EHIRUH WKHWHUPLQD JHWV
ORRNLQJIWRKUHPHWKRGVWDUWOVMXVW
XVHULQSXW


;\ZQVOO]M[[%PMTXMZOM\=[MZ1VX]\MV\MZIV]UJMZ#
:HGHFODUHD6WULQJYDULDEOH
WR
KROGWKHXVHULQSXW6W
ULQJZH
JHWEDFN HWF


$PHWKRGRIWKH*DPH+HOSHUFODVV
WKDWDVNVWKHXVHUIRUFRPPDQG
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
7EMADETHEGAMECLASS
!LLTHATSLEFTISTHEHELPERCLASSTHEONEWITHTHE
GET5SER)NPUT METHOD4HECODETOGETCOMMAND
LINEINPUTISMORETHANWEWANTTOEXPLAINRIGHTNOW
)TOPENSUPWAYTOOMANYTOPICSBESTLEFTFORLATER
,ATER ASINCHAPTER

*USTCOPY
THECODEBELOWANDCOMPILEITINTO
ACLASSNAMED'AME(ELPER$ROPALLTHREE
CLASSES3IMPLE$OT#OM 3IMPLE$OT#OM'AME
'AME(ELPER INTOTHESAMEDIRECTORY ANDMAKEIT
YOURWORKINGDIRECTORY
4GCF[DCMG
%QFG
7HENEVERYOUSEETHE
LOGO YOURESEE
INGCODETHATYOUHAVETOTYPEAS ISANDTAKEONFAITH
4RUSTIT9OULLLEARNHOWTHATCODEWORKSLATER

Licensed by
Eduard Simons
4GCF[DCMG
%QFG
104038
,SUHFRRNHG
VRPHFRGHVR\RX
GRQWKDYHWRPDNH
LW\RXUVHOI

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([FHSWLRQH 
`
UHWXUQLQSXW/LQH
`
`
:HNQRZKRZPXFK\RXHQMR\W\SLQJEXWIRUWKRVHUDUH
PRPHQWVZKHQ\RXGUDWKHUGRVRPHWKLQJHOVHZHYHPDGH
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

?PI\[\PQ[')J]O '

4M\[XTIa

*DVS
+HUHVZKDWKDSSHQVZKHQZH
UXQLWDQGHQWHUWKHQXPEHUV
/RRNLQJRRG

+HUHVZKDWKDSSHQVZKHQZH
HQWHU

)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

6KDUSHQ \RXU SHQFLO

HQWHUDQXPEHU
NLOO

)TSACLIFF HANGER

<RXWRRNJXHVVHV

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[
SRVWLQFUHPHQWRSHUDWRU

WKHFRG
R
UHSHDWJHRW
H
V
WKHERG\ KHUH

NWZQV\Q%#Q$#Qce
LQLWLDOL]DWLRQ

ERROHDQWHVW

ZMXMI\NWZZMX["

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 









GRQH

`
6\VWHPRXWSULQWOQ GRQH 
GHFODUHLQWL
VHWLWR

LVL"
WKHERROHDQ
WHVW

WUXH

IDOVH

SULQWGRQH

HQWHUORRS
ERG\

SULQWWKHYDOXH
RIL

MXPSEHORZORRS


0REAND0OST)NCREMENT$ECREMENT/PERATOR
4HESHORTCUTFORADDINGORSUBTRACTINGFROMAVARIABLE
[

LQFUHPHQWL

ISTHESAMEAS

WKHLWHUDWLRQ
H[SUHVVLRQ

[

[

4HEYBOTHMEANTHESAMETHINGINTHISCONTEXT

,QNNMZMVKMJM\ _MMVNWZIVL_PQTM
!WHILELOOPHASONLYTHEBOOLEANTESTITDOESNTHAVE
ABUILT ININITIALIZATIONORITERATIONEXPRESSION!WHILE
LOOPISGOODWHENYOUDONTKNOWHOWMANYTIMESTO
LOOPANDJUSTWANTTOKEEPGOINGWHILESOMECONDI
TIONISTRUE"UTIFYOUKNOWHOWMANYTIMESTOLOOP
EGTHELENGTHOFANARRAY TIMES ETC AFORLOOPIS
CLEANER(ERESTHELOOPABOVEREWRITTENUSINGWHILE

LQWL 
ZKLOH L ^

ZHKDYHWRGHF
ODUHDQG
LQLWLDOL]HWKH
FRXQWHU

6\VWHPRXWSULQWOQ L 
L
`

ZHKDYH
WKHFRXQWWHRLQFUHPHQW
U

6\VWHPRXWSULQWOQ GRQH 

hADDTOTHECURRENTVALUEOFXvORhINCREMENTXBYv
!ND

[
ISTHESAMEAS
[

[

/FCOURSETHATSNEVERTHEWHOLESTORY4HEPLACEMENTOFTHE
OPERATOREITHERBEFOREORAFTERTHEVARIABLE CANAFFECTTHERE
SULT0UTTINGTHEOPERATORBEFORETHEVARIABLEFOREXAMPLE X
MEANS hlRST INCREMENTXBY ANDTHENUSETHISNEWVALUEOFXv
4HISONLYMATTERSWHENTHE XISPARTOFSOMELARGEREXPRES
SIONRATHERTHANJUSTINASINGLESTATEMENT
LQW[ LQW] [
PRODUCESXIS ZIS
"UTPUTTINGTHE AFTERTHEXGIVEYOUADIFFERENTRESULT
LQW[ LQW] [
PRODUCESXIS BUTZISZGETSTHEVALUEOFXANDTHENXIS
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 4HATSREALLYALLTHATTHEENHANCEDFORGIVESYOUASIMPLERWAYTOWALK
THROUGHALLTHEELEMENTSINTHECOLLECTION BUTSINCEITSTHEMOSTCOMMONUSEOFA
FORLOOP ITWASWORTHADDINGITTOTHELANGUAGE7ELLREVISITTHEENHANCEDFORLOOPIN
THENEXTCHAPTER WHENWETALKABOUTCOLLECTIONSTHATARENTARRAYS

OH
'HFODUHDQLWHUDWLRQYDULDEHQW

OHP
HH
LQJO
DV
ROG
WKDWZLOOK
LQWKHDUUD\

7KHFROR
PHDQV,1Q   

7KHFRG
UHSHDWJRHHWVR
WKHERG\ KHUH


NWZ;\ZQVOVIUM"VIUM)ZZIace
7KHHOHPHQWVLQWKH
DUUD\0867EH
FRPSDWLEOHZLWKWKH
GHFODUHGYDULDEOHW\S H


:LWKHDFKLWHUDWLRQ
W
HQ
HP
HO
QW
UH
IH
DGLI
LQWKHDUUD\ZLOO H
EHDVVLJQHGWRWK
YDULDEOHQDPH

DWHRYHU
DW\RXZDQWWRGLWHU
WK
V
QW
PH
HOH
I
R
RQ
7KHFROOHFWL RPHZKHUHHDUOLHUWKHFRGHVDL
,PDJLQHWKDWV
E`
)UHG0DU\%R
^

D\
UU
H$
DP
Q
>@
6WULQJ
HYDOXHRI
YDULDEOHKDVWK
PH
QD
H
WK
Q
LR
DU\HWF
DW
HU
:LWKWKHILUVWLWLWKWKHVHFRQGLWHUDWLRQDYDOXHRI0
)UHGDQGZ

7HATITMEANSINPLAIN%NGLISHh&OREACHELEMENTINNAME!RRAY ASSIGNTHE
ELEMENTTOTHE@NAMEVARIABLE ANDRUNTHEBODYOFTHELOOPv
(OWTHECOMPILERSEESIT

 #REATEA3TRINGVARIABLECALLEDNAMEANDSETITTONULL
!SSIGNTHEFIRSTVALUEINNAME!RRAYTONAME

 2UNTHEBODYOFTHELOOPTHECODEBLOCKBOUNDEDBYCURLYBRACES 
!SSIGNTHENEXTVALUEINNAME!RRAYTONAME

 2EPEATWHILETHEREARESTILLELEMENTSINTHEARRAY

1RWHGHSHQGLQJRQWKH
SURJUDPPLQJODQJXDJHWK
H\YH
XVHGLQWKHSDVWVRP HRS
OH
UHIHUWRWKHHQKDQFHGHSIR
UD
WKHIRUHDFKRUWKHIRU V
LQORRSEHFDXVHWKDWV ZLW
UHDGVIRU($&+WKLQJKR
,1WKH
FROOHFWLRQ

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

0ART4WOTHEACTUALCOLLECTION
4HISMUSTBEAREFERENCETOANARRAYOROTHERCOLLECTION!GAIN DONTWORRYABOUTTHE
OTHERNON ARRAYKINDSOFCOLLECTIONSYETYOULLSEETHEMINTHENEXTCHAPTER

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 

+I[\QVO
XZQUQ\Q^M[

4HEUSERTYPESHISGUESSATTHECOMMAND
LINE WHENTHEGAMEPROMPTSHIM4HAT
GUESSCOMESINASA3TRINGhv hv ETC
ANDTHEGAMEPASSESTHAT3TRINGINTOTHE
CHECK9OURSELF METHOD
"UTTHECELLLOCATIONSARESIMPLYINTSINAN
ARRAY ANDYOUCANTCOMPAREANINTTOA
3TRING
&OREXAMPLE THISWONTWORK

ORQJ

3TRINGNUMhv
INTX



IFXNUM HORRIBLEEXPLOSION





4RYINGTOCOMPILETHATMAKESTHECOMPILER
LAUGHANDMOCKYOU
RSHUDWRU FDQQRWEHDSSOLHGWR


LQWMDYDODQJ6WULQJ
LI [

QXP ^`

A

DWVKLSV
DFODVVDWYKD
ZLWK-

WDNHVD6WULQJ

1V\MOMZXIZ[M1V\
DPHWKRGLQWKH,QWHJHU
FODVVWKDWNQRZVKRZWR
SDUVHD6WULQJLQWRWKH
LQWLWUHSUHVHQWV

EXW\RXPLJKW
ORVHVRPHWKLQJ

VKRUW



ELWVRQ
VLGHZHUHWKHOHIW
FXWRII

,QFKDSWHUZHWDONHGDERXWWKHVL]HVRIWKHYDULRXVSULPLWLYHVDQGKRZ\RX
FDQWVKRYHDELJWKLQJGLUHFWO\LQWRDVPDOOWKLQJ 



O
 RQJ\ 


3OTOGETAROUNDTHEWHOLEAPPLESAND
ORANGESTHING WEHAVETOMAKETHE3TRING
hvINTOTHEINT"UILTINTOTHE*AVACLASS
LIBRARYISACLASSCALLED)NTEGERTHATSRIGHT
AN)NTEGERCLASS NOTTHEINTPRIMITIVE
ANDONEOFITSJOBSISTOTAKE3TRINGSTHAT
REPRESENTNUMBERSANDCONVERTTHEMINTO
ACTUALNUMBERS

FDQEHFDVWWR

LQW[ \ZRQWFRPSLOH


$ORQJLVELJJHUWKDQDQLQWDQGWKHFRPSLOHUFDQWEHVXUHZKHUHWKDWORQJKDV
EHHQ,WPLJKWKDYHEHHQRXWGULQNLQJZLWKWKHRWKHUORQJVDQGWDNLQJRQUHDOO\
ELJYDOXHV7RIRUFHWKHFRPSLOHUWRMDPWKHYDOXHRIDELJJHUSULPLWLYHYDULDEOH
LQWRDVPDOOHURQH\RXFDQXVHWKHFDVWRSHUDWRU,WORRNVOLNHWKLV


O
 RQJ\ VRIDUVRJRRG

LQW[  LQW \[ FRRO




3XWWLQJLQWKHFDVWWHOOVWKHFRPSLOHUWRWDNHWKHYDOXHRI\FKRSLWGRZQWRLQW
VL]HDQGVHW[HTXDOWRZKDWHYHULVOHIW,IWKHYDOXHRI\ZDVELJJHUWKDQWKH
PD[LPXPYDOXHRI[WKHQZKDWVOHIWZLOOEHDZHLUG EXWFDOFXODEOH QXPEHU


O
 RQJ\ 

H[FHHGVWKHELWOLPLWRIDVKRUW


VKRUW[  VKRUW \[QRZHTXDOV






6WLOOWKHSRLQWLVWKDWWKHFRPSLOHUOHWV\RXGRLW$QGOHWVVD\\RXKDYHDIORDW
LQJSRLQWQXPEHUDQG\RXMXVWZDQWWRJHWDWWKHZKROHQXPEHU LQW SDUWRILW


RDWI I


LQW[  LQW I[ZLOOHTXDO




$QGGRQWHYHQWKLQNDERXWFDVWLQJDQ\WKLQJWRDERROHDQRUYLFHYHUVDMXVW
ZDONDZD\
 ,WLQYROYHVVLJQELWVELQDU\WZRVFRPSOHPHQWDQGRWKHUJHHNHU\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*67KH-DYDILOHRQWKLVSDJH
UHSUHVHQWVDFRPSOHWHVRXUFH
ILOH<RXUMRELVWRSOD\-90
DQGGHWHUPLQHZKDWZRXOGEH
WKHRXWSXWZKHQWKH
SURJUDPUXQV"

)LOH(GLW:LQGRZ+HOS20

MDYD2XWSXW


FODVV2XWSXW^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
2XWSXWR QHZ2XWSXW 

RU

RJR 
`

)LOH(GLW:LQGRZ+HOS,QFHQVH

MDYD2XWSXW
[ 

YRLGJR ^
LQW\ 
IRU LQW[ [[ ^
\
LI [! ^

RU

6\VWHPRXWSULQW \ 
`
LI \! ^
6\VWHPRXWSULQWOQ [ [ 
EUHDN
`
`

)LOH(GLW:LQGRZ+HOS%HOLHYH
)LOH(GLW:LQGRZ+HOS6OHHS

MDYD2XWSXW
MDYD7HVW$UUD\V
[)LML

LVODQG
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

)LOH(GLW:LQGRZ+HOS5DLG

LQ 6WUL

QJ>@D
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








$OWN

!CROSS
!UTOMATICTOOLKIT

)NCREMENTTYPE

!SIF

,OOKSLIKEAPRIMITIVE
BUT

#LASSSWORKHORSE

!DDAFTER

-ULTI PARTLOOP

0REISATYPEOF?????

0IHOUSE

4ESTlRST

5N CASTABLE

&ORSITERATION??????

#OMPILEITAND????

BITS

-ATHMETHOD

%STABLISHlRSTVALUE

 QUANTITY

-ETHODSANSWER

#ONVERTERMETHOD

0REPCODE ESQUE

,EAVEEARLY

&ANCYCOMPUTERWORD
FORBUILD

7HILEOR&OR
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
OFTHELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE$RAWLINES
CONNECTINGTHECANDIDATEBLOCKSOFCODEWITHTHEIRMATCHING
COMMAND LINEOUTPUT

-IXED

-ESSAGES

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

FDQGLGD

WH
\ \
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 
RJR 
`

IRU LQW[ [[ ^

Licensed by
Eduard Simons
104038


IRU LQW\ \!\ ^

YRLGJR ^
LQW\ 

6\VWHPRXWSULQWOQ [\ 
`

IRU LQW[ [[ ^


\

LI [! ^

LI [

`EHIRUHWKH\IRUORRS"

6\VWHPRXWSULQW \ 

`

`

`

LI \! ^

 ^:KDWZRXOGKDSSHQ

[LIWKLVFRGHEORFNFDPH

)LOH(GLW:LQGRZ+HOS0RQRSROH

6\VWHPRXWSULQWOQ [ [ 


EUHDN
`
`
`

MDYD0XOWL)RU







`'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\
6RLWVWUXH"
,FDQOLIW
:HGRQWKDYHWR
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_\PMJ]OTWWS[

0W_Q\[[]XXW[ML\WTWWS
+HUHVZKDWKDSSHQVZKHQZH
UXQLWDQGHQWHUWKHQXPEHUV
/RRNLQJRRG

+HUHVZKDWKDSSHQVZKHQZH
HQWHU

)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
NLOO
<RXWRRNJXHVVHV

1V\PMK]ZZMV\^MZ[QWVWVKM
aW]OM\IPQ\aW]KIV[QUXTa
ZMXMI\\PI\PQ\\ _WUWZM
\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 ^

&RQYHUWWKH6WULQJ
WRDQLQW
0DNHDYDULDEOHWRKROG
UHWXUQ3XWPLVVLQDV WKHUHVXOWZHOO
LHZHDVVXPHDPLVV  WKHGHIDXOW

LQWJXHVV ,QWHJHUSDUVH,QW VWULQJ*XHVV 


6WULQJUHVXOW PLVV

IRU LQWFHOOORFDWLRQ&HOOV ^

+HUHVZKHUHLW
LI JXHVV FHOO ^
JRHVZURQJ:H
FRXQWHGDKLWHYHU\ UHVXOW KLW
WLPHWKHXVHU
ZHJRWDKLW
JXHVVHGDFHOO
QXP2I+LWV
ORFDWLRQHYHQLI
WKDWORFDWLRQKDG EUHDN
*HWRXWRIWKH
DOUHDG\EHHQKLW
WRWHVWWKH ORRSQRQHHG

RWKHUFHOOV

`HQGLI

:HQHHGDZD\WR
NQRZWKDWZKHQ
DXVHUPDNHV
DKLWKHKDVQW
SUHYLRXVO\KLWWKDW
FHOO,IKHKDVWKHQ
ZHGRQWZDQWWR
FRXQWLWDVDKLW

5HSHDWZ
WKLQJLQW LWKHDFK
KHDUUD\
&RPSDUHWKHXVHU
JXHVVWRWKLVHOHPHQW
FHOO LQWKHDUUD\

`HQGIRU
LI QXP2I+LWV

ORFDWLRQ&HOOVOHQJWK ^

UHVXOW NLOO
`HQGLI
6\VWHPRXWSULQWOQ UHVXOW 
UHWXUQUHVXOW
`HQGPHWKRG

:HUHRXWRIWKHORRSEXW
OHWVVHHLIZHUHQRZGHDG
KLWWLPHV DQGFKDQJHWKH
UHVXOW6WULQJWRNLOO

'LVSOD\WKHUHVXOWIRUWKHXVHU
PLVVXQOHVVLWZDVFKDQJHGWRKLWRUNLOO 

5HWXUQWKHUHVXOWEDFN
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/HWVUXQ
WKURXJKVRPHSRVVLELOLWLHVEXWUVWZHOOORRNDWZKDWZHNQRZVRIDU
:HKDYHDYLUWXDOURZRIFHOOVDQGD'RW&RPZLOORFFXS\WKUHH
FRQVHFXWLYHFHOOVVRPHZKHUHLQWKDWURZ7KLVYLUWXDOURZVKRZVD
'RW&RPSODFHGDWFHOOORFDWLRQVDQG

7KHYLU
FHOOORWFDXWDOURZZLWKWKH
'RW&RPRE LRQVIRUWKH
MHFW

7KH'RW&RPKDVDQLQVWDQFHYDULDEOHDQLQWDUUD\WKDWKROGVWKDW
'RW&RPREMHFWVFHOOORFDWLRQV


ORFDWLRQ&HOOV
LQVWDQFHYDULDEOHRI
WKH'RW&RP

7KHDUUD\ QVW
DQFHYDULDEOHW
KROGVWKH'LRW
KDW
7KLV'RW&RPK&RPVFHOOORFDWLRQV
RO
G
V
WKH
DQG7
KRVHDUHWKHYQDOXHVRI
WKHXVHUQHHG
XPEHUV
VWRJXHVV

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

FALSE

FALSE
KLW&HOOVDUUD\
WKLVZRXOGEHD
QHZERROHDQDUUD\
LQVWDQFHYDULDEOHRI
WKH'RW&RP

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

7KLVDUUD\KR
WKHVWDWHRIOGHDVFKWKUHHYDOXHVUHSUHVHQWLQJ
ORFDWLRQFHOOVDUUD\FHOOLQWKH'RW&RPV
)RUH[DPSOHLIWK
FHOODWLQGH[
H
WKHKLW&HOOVDULVUDKLWWKHQVHWLQGH[LQ
\WRWUXH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\RXGH[SHFW,WPHDQVWKDWHDFK
WLPHWKHXVHUPDNHVDKLW\RXKDYHWRFKDQJHWKHVWDWHRIWKHVHFRQG
DUUD\ WKHKLW&HOOVDUUD\ RKEXWUVW\RXKDYHWR&+(&.WKHKLW&HOOV
DUUD\WRVHHLIWKDWFHOOKDVDOUHDG\EHHQKLWDQ\ZD\,WZRXOGZRUNEXW
WKHUHVJRWWREHVRPHWKLQJEHWWHU

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


ORFDWLRQ&HOOV
LQVWDQFHYDULDEOHRI
WKH'RW&RP

DDWDSDUW
FHOOORFDWLRQPHDQVW
KDVDOUHDG\EHHQLFXKODU
KDWWKH
QHJDWLYHQXPEHUVLQLWWVRZHUHRQO\ORRNLQJIRUQRQFHOO
KHDUUD\

7X\QWV\ _WQ[ITQ\\TMJM\\MZJ]\
[\QTTXZM\\ aKT]VSa
2SWLRQWZRLVDOLWWOHOHVVFOXQN\WKDQRSWLRQRQHEXWLWVQRWYHU\HIFLHQW<RXG
VWLOOKDYHWRORRSWKURXJKDOOWKUHHVORWV LQGH[SRVLWLRQV LQWKHDUUD\HYHQLI
RQHRUPRUHDUHDOUHDG\LQYDOLGEHFDXVHWKH\YHEHHQKLW 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\VFDQWFKDQJHWKHLUVL]HVRZHKDYHWRPDNHD
QHZDUUD\DQGFRS\WKHUHPDLQLQJFHOOVIURPWKHROGDUUD\LQWRWKHQHZ
VPDOOHUDUUD\


ORFDWLRQ&HOOVDUUD\
%()25(DQ\FHOOV
KDYHEHHQKLW

ORFDWLRQ&HOOVDUUD\
$)7(5FHOOZKLFK
ZDVDWLQGH[LQWKH
DUUD\KDVEHHQKLW

7KHDUUD\VWDU
RIDQGZHORRWVSRWKXWURZLWKDVL]H
XJKDOOFHOOV
SRVLWLRQVLQWK
DPDWFKEHWZHHHQDUWKUDH\ WRORRNIRU
WKHFHOOYDOXH  XVHUJXHVVDQG

:KHQFHOOLVK
HPDNHDQHZ
VPDOOHUDUUD\ZLWLWKZ
O\WKHUHPDLQ
LQJFHOOORFDWLRQVDQRQ
DVVLJQLWWRWKH
RULJLQDOORFDWLRQ&HOOVG
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
KPMKSAW]Z[MTNUM\PWL"

4QNM_W]TLJMOWWLQNWVTa_MKW]TL
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)8962OMPP

        -*XLIEVVE]MWRS[IQTX]6)8962OMPP

        )07)MX[EWRSXEOMPPWS6)8962LMX

        )07)MX[EWRSXEOMPPWS6)8962LMX

        )2(-*

        )2(-*

      )07)YWIVKYIWWHMHRSXQEXGLWS6)8962QMWW       )07)YWIVKYIWWHMHRSXQEXGLWS6)8962QMWW
      )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\,FRXOGQGDQDUUD\
WKDWFRXOGVKULQNZKHQ\RXUHPRYH
VRPHWKLQJ$QGRQHWKDW\RXGLGQWKDYH
WRORRSWKURXJKWRFKHFNHDFKHOHPHQWEXW
LQVWHDG\RXFRXOGMXVWDVNLWLILWFRQWDLQV
ZKDW\RXUHORRNLQJIRU$QGLWZRXOGOHW\RX
JHWWKLQJVRXWRILWZLWKRXWKDYLQJWRNQRZ
H[DFWO\ZKLFKVORWWKHWKLQJVDUHLQ
7KDWZRXOGEHGUHDP\%XW,NQRZLWV
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\VDUHQWHQRXJK

?ISM]XIVL[UMTT\PMTQJZIZa
$VLIE\PDJLFWKHUHUHDOO\LVVXFKDWKLQJ
%XWLWVQRWDQDUUD\LWVDQ$UUD\/LVW
$FODVVLQWKHFRUH-DYDOLEUDU\ WKH$3, 
4HE*AVA3TANDARD%DITIONWHICHISWHATYOUHAVEUNLESSYOUREWORK
INGONTHE-ICRO%DITIONFORSMALLDEVICESANDBELIEVEME YOUDKNOW
SHIPSWITHHUNDREDSOFPRE BUILTCLASSES*USTLIKEOUR2EADY "AKECODE
EXCEPTTHATTHESEBUILT INCLASSESAREALREADYCOMPILED

Licensed by
Eduard Simons
104038

4HATMEANSNOTYPING
*USTUSE@EM

2QHRIDJD]LOOLRQFODVVHVLQ
WKH-DYDOLEUDU\
<RXFDQXVHLWLQ\RXUFRGH
DVLI\RXZURWHLW\RXUVHOI

!RRAY,IS

IST
CTELEM
RTOTHEL
ADD/BJESTHEOBJECTPARAMETE
!D D


METER
NTINDEX CTATTHEINDEXPARA
JE
REMOVEI
OB
2EMOVES

THE

M
AY,IST 
BJECTELE
INTHE!RR
REMOVE/VESTHISOBJECTIFIT S
2EMO
ARAMETER
CTELEM ATCHFORTHEOBJECTP
JE
B
/
S
CONTAIN
THERESAM
2ETURNS@T

IS%MPTY

RUEIF

LIS
RUEIFTHE
2ETURNS@T

THASNOE

LEMENTS

TER OR 
TELEM FTHEOBJECTPARAME
C
JE
B
/
F
DEXO
INDEX/
HERTHEIN
2ETURNSE

SIZE

1RWHWKHDGG 2EMHFWHOHP PHWKRG


DFWXDOO\ORRNVDOLWWOHVWUDQJHUWKDQWKH
RQHZHYHVKRZQKHUHZHOOJHWWRWKH
UHDORQHODWHULQWKHERRN)RUQRZMXVW
WKLQNRILWDVDQDGG PHWKRGWKDW
WDNHVWKHREMHFW\RXZDQWWRDGG

IT

2ETURNSTH

ENUMB

ENTSCU
EROFELEM

RRENTLYIN

THELIST

NDEXPARA
DEX
N
YATTHEI
I
T
TL
N
N
E
I
RR
T
U
E
C
G
EOBJEC T
ETURNSTH

METER

SOHRI620(RI
7KLVLVMXVWDVDP UUD\/LVW
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[\


0DNHRQH

V\QWD[
QHZ(JJ!DQJOHEUDFNHW
'RQWZRUU\DERXWWKDQLVVPDNHWKLVDOLVWRI(JJREMHFWV
ULJKWQRZLWMXVWPH

$UUD\/LVW(JJ!P\/LVW QHZ$UUD\/LVW(JJ! 


3XWVRPHWKLQJLQLW

(JJV QHZ(JJ 

V
/LVWREMHFWL
$QHZ$UUQDW\ KHKHDS,WVOLWWOH
FUHDWHGRWVHPSW\
EHFDXVHL

JURZVDER[
1RZWKH$UUD\/LVWMHF
W
RE
JJ
(
WRKROGWKH

P\/LVWDGG V 

V


3XWDQRWKHUWKLQJLQLW

7KH$UUD\/LVW
JURZVDJ
WKHVHFRQG(
JJREMHFW DLQWRKROG

(JJE QHZ(JJ 
P\/LVWDGG E 

V


)LQGRXWKRZPDQ\WKLQJVDUHLQLW

LQWWKH6L]H P\/LVWVL]H 

ROGLQJREMHFWVVR
7KH$UUD\/LVWLVKUH
V
WKHVL]H PHWKRG WXUQ

)LQGRXWLILWFRQWDLQVVRPHWKLQJ

ERROHDQLV,Q P\/LVWFRQWDLQV V 

)LQGRXWZKHUHVRPHWKLQJLV LHLWVLQGH[
LQWLG[ P\/LVWLQGH[2I E 

)LQGRXWLILWVHPSW\

ERROHDQHPSW\ P\/LVWLV(PSW\ 

DLQWKH(JJREMHFW
7KH$UUD\/LVW'2(6FRQW UHWXUQVWUXH
UHIHUHQFHGE\VVRFRQWDLQV
DQVILUVWLQGH[LV 
$UUD\/LVWLV]HUREDVHG PHFHGE\EZDVWKH
DQGVLQFHWKHREMHFWUHIHUHQ[2I UHWXUQV
VHFRQGWKLQJLQWKHOLVWLQGH

LWVGHILQLWHO\127HPSW
\VRLV(PSW\ 
UHWXUQVIDOVH
+H\ORRNLWVKUDQN

5HPRYHVRPHWKLQJIURPLW

P\/LVWUHPRYH 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.

ZKHQDUUD\VDUHQWHQRXJK

6KDUSHQ \RXU SHQFLO



&ILLINTHERESTOFTHETABLEBELOWBYLOOKINGATTHE!RRAY,ISTCODE
ONTHELEFTANDPUTTINGINWHATYOUTHINKTHECODEMIGHTBEIFIT
WEREUSINGAREGULARARRAYINSTEAD7EDONTEXPECTYOUTOGETALL
OFTHEMEXACTLYRIGHT SOJUSTMAKEYOURBESTGUESS

ZMO]TIZIZZIa

)ZZIa4Q[\

$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

Q:

3O!RRAY,ISTISCOOL BUT
HOWWOULD)KNOWITEXISTS

A:

4HEQUESTIONISREALLY
h(OWDO)KNOWWHATSINTHE
!0)vANDTHATSTHEKEYTOYOUR
SUCCESSASA*AVAPROGRAMMER
.OTTOMENTIONYOURKEYTO
BEINGASLAZYASPOSSIBLEWHILE
STILLMANAGINGTOBUILDSOFTWARE
9OUMIGHTBEAMAZEDATHOW
MUCHTIMEYOUCANSAVEWHEN
SOMEBODYELSEHASALREADYDONE
MOSTOFTHEHEAVYLIFTING AND
ALLYOUHAVETODOISSTEPINAND
CREATETHEFUNPART
"UTWEDIGRESSTHESHORT
ANSWERISTHATYOUSPENDSOME
TIMELEARNINGWHATSINTHECORE
!0)4HELONGANSWERISATTHE
ENDOFTHISCHAPTER WHEREYOULL
LEARNHOWTODOTHAT

Q:

"UTTHATSAPRETTYBIG
ISSUE.OTONLYDO)NEEDTO
KNOWTHATTHE*AVALIBRARY
COMESWITH!RRAY,IST BUTMORE
IMPORTANTLY)HAVETOKNOW
THAT!RRAY,ISTISTHETHINGTHAT
CANDOWHAT)WANT3OHOW
DO)GOFROMANEED TO DO
SOMETHINGTOA WAY TO DO IT
USINGTHE!0)

A:

.OWYOUREREALLYATTHE
HEARTOFIT"YTHETIMEYOUVE
FINISHEDTHISBOOK YOULLHAVE
AGOODGRASPOFTHELANGUAGE
ANDTHERESTOFYOURLEARNING
CURVEREALLYISABOUTKNOWING
HOWTOGETFROMAPROBLEMTO
ASOLUTION WITHYOUWRITINGTHE
LEASTAMOUNTOFCODE)FYOUCAN
BEPATIENTFORAFEWMOREPAGES
WESTARTTALKINGABOUTITATTHE
ENDOFTHISCHAPTER

,CXC'ZRQUGF
7KLVZHHNVLQWHUYLHZ

$UUD\/LVWRQDUUD\V
+HDG)LUVW;W)ZZIa4Q[\[IZMTQSMIZZIa[ZQOP\'
$UUD\/LVW1V\PMQZLZMIU[ 1IUIVWJRMK\\PIVSaW]^MZaU]KP
+HDG)LUVW1N 1UVW\UQ[\ISMVIZZIa[IZMWJRMK\[\WW<PMaTQ^MWV\PMPMIXZQOP\
\PMZM_Q\PITT\PMW\PMZWJRMK\[
$UUD\/LVW;]ZMIZZIa[OWWV\PMPMIXL]PJ]\IVIZZIaQ[[\QTTI_IVVIJM
)ZZIa4Q[\)XW[MZ7JRMK\[PI^M[\I\MIVLJMPI^QWZZQOP\'?MZMKTMIZWV\PI\*]\
PI^MaW]IK\]ITTa\ZQMLKITTQVOIUM\PWLWVIVIZZIa'
+HDG)LUVW6W_\PI\aW]UMV\QWVQ\KIV\[Ia1PI^M*]\_PI\UM\PWL_W]TL1
KITTIVa_Ia'1WVTaKIZMIJW]\KITTQVOUM\PWL[WV\PM[\]NN 1X]\QV\PMIZZIaVW\
\PMIZZIaQ\[MTN)VL1KIV][MIZZIa[aV\I`_PMV1_IV\\WX]\\PQVO[QVIVL\ISM
\PQVO[W]\WN \PMIZZIa
$UUD\/LVW1[\PI\[W'AW]UMIV\W\MTTUMaW]IK\]ITTaZMUW^ML[WUM\PQVONZWUIV
IZZIa';PMM[P_PMZMLW\PMa\ZIQVaW]O]a['5K2I^I['
+HDG)LUVW7N KW]Z[M1\ISM[WUM\PQVOW]\WN \PMIZZIa1[Ia,WOL%LWO)ZZIaCE
IVL1OM\\PM,WOWJRMK\I\QVLM`W]\WN \PMIZZIa
$UUD\/LVW)TTZQOP\1TT\Za\W[XMIS[TW_Ta[WaW]KIVNWTTW_ITWVOAW]_MZMVW\
1ZMXMI\VW\ZMUW^QVO\PI\,WONZWU\PMIZZIa)TTaW]LQL_I[UISMIKWXaWN \PM
ZMNMZMVKM\W\PM,WOIVLI[[QOVQ\\WIVW\PMZ,WO^IZQIJTM
+HDG)LUVW7P1[MM_PI\aW]ZM[IaQVO6W1LQLV\IK\]ITTaZMUW^M\PM,WO
WJRMK\NZWU\PMIZZIa1\[[\QTT\PMZM*]\1KIVR][\[M\Q\[ZMNMZMVKM\WV]TT1O]M[[
$UUD\/LVW*]\1UIZ[\KTI[[WJRMK\[W1PI^MUM\PWL[IVL1KIVIK\]ITTaaW]
SVW_LW\PQVO[TQSMZMUW^M\PM,WO[ZMNMZMVKMNZWUUa[MTNVW\R][\[M\Q\\WV]TT
)VL1KIVKPIVOMUa[QbMLaVIUQKITTaTWWSQ\]X2][\\Za\WOM\IVIZZIa\WLW\PI\
+HDG)LUVW/MMPI\M\WJZQVO\PQ[]XJ]\\PMZ]UWZQ[\PI\aW]ZMVW\PQVOUWZM
\PIVIOTWZQMLJ]\TM[[MNKQMV\IZZIa<PI\QVNIK\aW]ZMR][\I_ZIXXMZNWZIV
IZZIaILLQVOM`\ZIUM\PWL[NWZ\PQVO[TQSMZM[QbQVO\PI\1_W]TLPI^MPIL\W_ZQ\M
Ua[MTN)VL_PQTM_MZMI\Q\aW]KIV\M^MVPWTLXZQUQ\Q^M[ 1[V\\PI\IJQOTQUQ\I\QWV'
$UUD\/LVW1KIV\JMTQM^MaW]J]aQV\W\PI\]ZJIVTMOMVL6W1IUVW\R][\ITM[[
MNKQMV\IZZIa1_QTTILUQ\\PI\\PMZMIZMINM_M`\ZMUMTaZIZM[Q\]I\QWV[_PMZMIV
IZZIaUQOP\JMR][\I\IL1ZMXMI\\ILJQ\NI[\MZNWZKMZ\IQV\PQVO[*]\Q[Q\_WZ\P\PM
UQVQ[K]TMXMZNWZUIVKMOIQV\WOQ^M]XITT\PQ[XW_MZ;\QTTTWWSI\ITT\PQ[M`QJQTQ\a)VL
I[NWZ\PMXZQUQ\Q^M[WN KW]Z[MaW]KIVX]\IXZQU\Q^MQVIV)ZZIa4Q[\I[TWVOI[Q\[
_ZIXXMLQVIXZQUQ\Q^M_ZIXXMZKTI[[aW]TT[MMITW\UWZMWV\PI\QVKPIX\MZ
)VLI[WN 2I^I\PI\_ZIXXQVOIVL]V_ZIXXQVO_PMVaW]\ISM\PMXZQUQ\Q^MW]\
IOIQVPIXXMV[I]\WUI\QKITTa)VLITTZQOP\1TTIKSVW_TMLOM\PI\aM[QN aW]ZM][QVOIV
)ZZIa4Q[\WN XZQUQ\Q^M[Q\XZWJIJTaQ[NI[\MZ_Q\PIVIZZIaJMKI][MWN ITT\PM_ZIXXQVO
IVL]V_ZIXXQVOJ]\[\QTT_PWZMITTa][M[XZQUQ\Q^M[\PM[MLIa['
7PTWWSI\\PM\QUM 1UTI\MNWZ8QTI\M[?MTTPI^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
ZMO]TIZIZZIa

)ZZIa4Q[\

$UUD\/LVW6WULQJ!P\/LVW QHZ
$UUD\/LVW6WULQJ! 

6WULQJ>@P\/LVW QHZ6WULQJ>@

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

2EMHFWR P\/LVWJHW  

6WULQJR P\/LVW>@

P\/LVWUHPRYH  

P\/LVW>@ QXOO

ERROHDQLV,Q P\/LVWFRQWDLQV E 

ERROHDQLV,Q IDOVH

UHLW
+HUHVZKH ORRN
VWDUWVWR IHUHQW
UHDOO\GLI

IRU 6WULQJLWHPP\/LVW ^
LI EHTXDOV LWHP ^
LV,Q WUXH
EUHDN
`
`

.OTICEHOWWITH!RRAY,IST YOUREWORKING
WITHANOBJECTOFTYPE!RRAY,IST SOYOUREJUST
INVOKINGREGULAROLDMETHODSONAREGULAROLD
OBJECT USINGTHEREGULAROLDDOTOPERATOR

7ITHANARRAY YOUUSESPECIALARRAYSYNTAXLIKE
MY,IST;=FOO THATYOUWONTUSEANYWHERE
ELSEEXCEPTWITHARRAYS%VENTHOUGHAN
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
VL]HDWWKHWLPHLWVFUHDWHG
"UTFOR!RRAY,IST YOUJUSTMAKEANOBJECTOF
TYPE!RRAY,IST%VERYTIME)TNEVERNEEDSTO
KNOWHOWBIGITSHOULDBE BECAUSEITGROWS
ANDSHRINKSASOBJECTSAREADDEDORREMOVED

1HHGVDVL]H

QHZ6WULQJ>@

QHZ$UUD\/LVW6WULQJ!

$UUD\VXVHDUUD\V\QWD[WKDWVQRW
XVHGDQ\ZKHUHHOVHLQ-DYD
"UT!RRAY,ISTSAREPLAINOLD*AVAOBJECTS SO
THEYHAVENOSPECIALSYNTAX
P\/LVW>@

HVSHFLDO
7KHDUUD\EUDFNHWV>@UUDU
V
D\
UD
IR
V\QWD[XVHGRQO\

1RVL]HUHTXLUHG DOWKRXJK\RXFDQ
JLYHLWDVL]HLI\RXZDQWWR 


7RSXWDQREMHFWLQDUHJXODUDUUD\
\RXPXVWDVVLJQLWWRDVSHFLF
ORFDWLRQ

7EJUSTSAIDTHATUNLIKEARRAYS !RRAY,ISTS
HAVENOSPECIALSYNTAX"UTTHEYDOUSE
SOMETHINGSPECIALTHATWASADDEDTO*AVA
4IGERPARAMETERIZEDTYPES

$QLQGH[IURPWRRQHOHVVWKDQWKHOHQJWKRI
WKHDUUD\ 
P\/LVW>@ E

1HHGVDQLQGH[
)FTHATINDEXISOUTSIDETHEBOUNDARIESOFTHE
ARRAYLIKE THEARRAYWASDECLAREDWITHASIZEOF
 ANDNOWYOURETRYINGTOASSIGNSOMETHING
TOINDEX ITBLOWSUPATRUNTIME
7ITH!RRAY,IST YOUCANSPECIFYANINDEXUS
INGTHEADDAN)NT AN/BJECT METHOD ORYOU
CANJUSTKEEPSAYINGADDAN/BJECT ANDTHE
!RRAY,ISTWILLKEEPGROWINGTOMAKEROOMFOR
THENEWTHING

$UUD\/LVWVLQ-DYDDUH
SDUDPHWHUL]HG

$UUD\/LVW6WULQJ!

7KH6WULQJ!LQDQJOHEUDFNHWVLVDW\SH
SDUDPHWHU$UUD\/LVW6WULQJ!PHDQVVLPSO\D
OLVWRI6WULQJVDVRSSRVHGWR$UUD\/LVW'RJ!
ZKLFKPHDQVDOLVWRI'RJV

P\/LVWDGG E 

1RLQGH[

0RIORTO*AVA THEREWASNOWAYTODECLARE
THETYPEOFTHINGSTHATWOULDGOINTHE
!RRAY,IST SOTOTHECOMPILER ALL!RRAY,ISTS
WERESIMPLYHETEROGENOUSCOLLECTIONSOF
OBJECTS"UTNOW USINGTHETYPE'OES(ERE
SYNTAX WECANDECLAREANDCREATEAN
!RRAY,ISTTHATKNOWSANDRESTRICTS THE
TYPESOFOBJECTSITCANHOLD7ELLLOOKATTHE
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
SXEOLFFODVV'RW&RP^

HDGRI
FODVV'RW&RPQRFHZG LQYHVWUVLRQEXWWKLV
:HYHUHQDPHGWKH
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 ^
UHVXOW KLW
QXP2I+LWV

EUHDN
`
`RXWRIWKHORRS

:KHUHLW
FRXQWHGHDDFOOZHQWZURQJ:H
ZLWKRXWFKHFKJXHVVDVDKLW
KDGDOUHDG\ENLQJZKHWKHUWKDWF
HOO
HHQKLW

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[[

LPSRUWMDYDXWLO$UUD\/LVW
SXEOLFFODVV'RW&RP^

,JQRUHWK
QRZZHWDLVONOLQHIRU
LWDWWKHHQ DERXW
FKDSWHU GRIWKH

SULYDWH$UUD\/LVW6WULQJ!ORFDWLRQ&HOOV
SULYDWHLQWQXP2I+LWV
6WULQJV
D\/LVWWKDWKROGV
UU
$
Q
D
WR
GRQWQHHGWKDWQRZ
\
UD
DU
J
6WULQ

&KDQJHWKH

SXEOLFYRLGVHW/RFDWLRQ&HOOV $UUD\/LVW6WULQJ!ORF ^
WQDPH
ORFDWLRQ&HOOV ORF
DUJXPHQ
G
H
Y
R
U
S
LP
`
1HZDQG


UJXHVVLVLQWKH
SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJXVHU,QSXW ^
)LQGRXWLIW\KHDVXNLVHQJIRULWVLQGH[

$UUD\/LVWE WKHOLVWWKHQLQGH[2I 
6WULQJUHVXOW PLVV
,ILWVQRWLQ

UHWXUQVD 

LQWLQGH[ ORFDWLRQ&HOOVLQGH[2I XVHU,QSXW 



LI LQGH[!  ^
,ILQGH[L


ORFDWLRQ&HOOVUHPRYH LQGH[ 


LI ORFDWLRQ&HOOVLV(PSW\ ^
UHVXOW NLOO
`HOVH^
UHVXOW KLW
`FORVHLI

`FORVHRXWHULI

UHWXUQUHVXOW
`FORVHPHWKRG
`FORVHFODVV

V
]HURWKHXVHJUUHDJXWHUWKDQRUHTXDOWR
OLVWVRUHPRYHLW HVVLVGHILQLWHO\LQWKH

KLV
,IWKHOLVWLVHPSW\W

RZ
EO
ZDVWKHNLOOLQJ

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
USEAGRID!NDINSTEADOFONE$OT#OM WELLUSE
THREE

<RXUHJRLQJWREXLOGWKH
6LQND'RW&RPJDPHZLWK
D[JULGDQGWKUHH
'RW&RPV(DFK'RW&RP
WDNHVXSWKUHHFHOOV

'OAL3INKALLOFTHECOMPUTERS$OT#OMSINTHE
FEWESTNUMBEROFGUESSES9OUREGIVENARATINGLEVEL
BASEDONHOWWELLYOUPERFORM
3ETUP7HENTHEGAMEPROGRAMISLAUNCHED THE
COMPUTERPLACESTHREE$OT#OMS RANDOMLY ONTHE
VIRTUALXGRID7HENTHATSCOMPLETE THEGAME
ASKSFORYOURlRSTGUESS
(OWYOUPLAY7EHAVENTLEARNEDTOBUILDA'5)
YET SOTHISVERSIONWORKSATTHECOMMAND LINE4HE
COMPUTERWILLPROMPTYOUTOENTERAGUESSACELL
WHICHYOULLTYPEATTHECOMMAND LINEASh!v h#v
ETC )NRESPONSETOYOURGUESS YOULLSEEARESULTAT
THECOMMAND LINE EITHERhHITv hMISSv ORh9OUSUNK
0ETSCOMvORWHATEVERTHELUCKY$OT#OMOFTHEDAY
IS 7HENYOUVESENTALLTHREE$OT#OMSTOTHATBIG
INTHESKY THEGAMEENDSBYPRINTINGOUTYOUR
RATING

HDFKER[
LVDFHOO

;JULG

(QWHUDJXHVV$
PLVV
(QWHUDJXHVV%
PLVV
(QWHUDJXHVV&
PLVV
(QWHUDJXHVV'
KLW
KLW

'OCOM

)LOH(GLW:LQGRZ+HOS6HOO

MDYD'RW&RP%XVW

(QWHUDJXHVV'

!
"

XIZ\WNIOIUMQV\MZIK\QWV

(QWHUDJXHVV'
2XFK<RXVXQN3HWVFRP 
NLOO

0ETSCOM

(QWHUDJXHVV%

PLVV

&

(QWHUDJXHVV*

'

KLW

!SK-ECOM


VWDUWVDW]HUROLNH-DYDDUUD\V

(QWHUDJXHVV*
KLW
(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
$OT#OMCLASSWHICHISNOWCALLED$OT#OMINSTEADOF
3IMPLE$OT#OM THEGAMECLASS$OT#OM"UST ANDTHE
GAMEHELPERCLASSWHICHWEWONTWORRYABOUTNOW 

~ 0UTTHE$OT#OMSONAGRIDRATHERTHAN
JUSTASINGLEROW ANDDOITFORALLTHREE
$OT#OMS
4HISSTEPISNOWWAYMORECOMPLEXTHAN
BEFORE IFWEREGOINGTOPLACETHE$OT#OMS
RANDOMLY3INCEWERENOTHERETOMESS
WITHTHEMATH WEPUTTHEALGORITHMFOR
GIVINGTHE$OT#OMSALOCATIONINTOTHE
'AME(ELPER2EADY BAKE CLASS

) 'RW&RPFODVV
~ !DDANAMEVARIABLE
TOHOLDTHENAMEOFTHE$OT#OM
h0ETSCOMv h'OCOMv ETC SOEACH$OT
#OMCANPRINTITSNAMEWHENITSKILLEDSEE
THEOUTPUTSCREENONTHEOPPOSITEPAGE 

~ #HECKEACHUSERGUESSWITHALLTHREE
$OT#OMS INSTEADOFJUSTONE

* 'RW&RP%XVWFODVV WKHJDPH

~ +EEPPLAYINGTHEGAMEIEACCEPTING
USERGUESSESANDCHECKINGTHEMWITHTHE
REMAINING$OT#OMS UNTILTHEREARENOMORE
LIVE$OT#OMS

~ #REATETHREE$OT#OMSINSTEADOFONE
~ 'IVEEACHOFTHETHREE$OT#OMSANAME
#ALLASETTERMETHODONEACH$OT#OM
INSTANCE SOTHATTHE$OT#OMCANASSIGNTHE
NAMETOITSNAMEINSTANCEVARIABLE

&ODVVHV

U
IR

HU
SOD\

LQS X

~ 'ETOUTOFMAIN7EKEPTTHESIMPLEONEIN
MAINJUSTTOKEEPITSIMPLE"UTTHATSNOT
WHATWEWANTFORTHEREALGAME

W DQ GW R

 PD N H  ' R W

HV
G  SOD \V Z L W K
X V U HD W H V DQ
F

&RP

O R F

DW

LR

QV

'RW&RP%XVW

'RW&RP

*DPH+HOSHU

7KHJDPHFODVV

7KHDFWXDO
'RW&RPREMHFWV

7KHKHOSHUFODVV
5HDG\%DNH 

0DNHV'RW&RPV
JHWVXVHULQSXW
SOD\VXQWLODOO'RW
&RPVDUHGHDG

'RW&RPVNQRZWKHLU
QDPHORFDWLRQDQG
KRZWRFKHFNDXVHU
JXHVVIRUDPDWFK

,WNQRZVKRZWR
DFFHSWXVHUFRP
PDQGOLQHLQSXW
DQGPDNH'RW&RP
ORFDWLRQV

3OXV
$UUD\/LVWVIRU
WKH'RW&RP%XVW
DQGIRUHDFK
RIWKH'RW&RP
REMHFWV

2EMHFWV

'RW&RP%XVW

'RW&RP
'RW&RP
'RW&RP

*DPH+HOSHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

7KHJDPH
FODVV

LQVWDQWLDWHV

'RW&RP%XVW
REMHFW

7KHPDLQ PHWKRG
LQWKH'RW&RP%XVW
FODVVLQVWDQWLDWHVWKH
'RW&RP%XVWREMHFWWKDW
GRHVDOOWKHJDPHVWXII

Licensed by
Eduard Simons
104038
LQVWDQWLDWHV

`]dh]j

*DPH+HOSHU
REMHFW

'RW&RP%XVW
REMHFW


`]dh]j \gl;gekDakl

*DPH+HOSHU
REMHFW

7KH'RW&RP%XVW JDPH 
REMHFWLQVWDQWLDWHVDQ
LQVWDQFHRI*DPH+HOSHU
WKHREMHFWWKDWZLOOKHOS
WKHJDPHGRLWVZRUN

7KH'RW&RP%XVWREMHFW
LQVWDQWLDWHVDQ$UUD\/LVW
WKDWZLOOKROGWKH'RW&RP
REMHFWV

'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,


[]ddk

*DPH+HOSHU
REMHFW

`]dh]j \gl;gekDakl

[]ddk
\gl;ge
\gl;ge
\gl;ge
( ) *

'RW&RP%XVW
REMHFW

[]ddk

$UUD\/LVWREMHFWWR
KROG'RW&RPREMHFWV

OR F D

WLRQ

KHUH

'RW&RP
REMHFWV

7KH'RW&RP%XVWREMHFWJLYHVHDFKRIWKH'RW
&RPREMHFWVDORFDWLRQ ZKLFKWKH'RW&RP%XVW
JRWIURPWKHKHOSHUREMHFW OLNH$%
HWF(DFK'RW&RPREMHFWSXWVKLVRZQWKUHH
ORFDWLRQFHOOVLQDQ$UUD\/LVW

7KH'RW&RP%XVWREMHFWDVNVWKH
KHOSHUREMHFWIRUDORFDWLRQIRUD
'RW&RP GRHVWKLVWLPHVRQHIRU
HDFK'RW&RP
NH
PD

7KH'RW&RP%XVWREMHFW
FUHDWHVWKUHH'RW&RP
REMHFWV DQGSXWVWKHPLQ
WKH$UUD\/LVW

LWLV

$UUD\/LVWREMHFW

*DPH+HOSHU
REMHFW

`]dh]j \gl;gekDakl

[]ddk

[]dd []dd []dd


( ) *

WRKROG'RW&RP
FHOOORFDWLRQV

[]ddk

'RW&RP%XVW
REMHFW

[]dd []dd []dd


( ) *

\gl;ge
\gl;ge
\gl;ge
( ) *

[]ddk

$UUD\/LVWREMHFWWR
KROG'RW&RPREMHFWV
7KH'RW&RP%XVWREMHFWDVNVWKHKHOSHU
REMHFWIRUDXVHUJXHVV WKHKHOSHU
SURPSWVWKHXVHUDQGJHWVLQSXWIURP
WKHFRPPDQGOLQH
V
WXV

H U  JXH

LWLV

`]dh]j \gl;gekDakl

VV

XH
*DPH+HOSHU
L VJ
W K
N
REMHFW
F
KH
KLW

$UUD\/LVWREMHFW
[]ddk

[]dd []dd []dd


( ) *

WRKROG'RW&RP
FHOOORFDWLRQV

[]ddk

'RW&RP%XVW
REMHFW
$QGVRWKHJDPHFRQWLQXHVJHW
WLQJXVHULQSXWDVNLQJHDFK'RW&RP
WRFKHFNIRUDPDWFKDQGFRQWLQXLQJ
XQWLODOO'RW&RPVDUHGHDG

$UUD\/LVW
REMHFW

7KH'RW&RP%XVWREMHFWORRSVWKURXJKWKHOLVW
RI'RW&RPVDQGDVNVHDFKRQHWRFKHFNWKHXVHU
JXHVVIRUDPDWFK7KH'RW&RPFKHFNVLWVORFDWLRQV
$UUD\/LVWDQGUHWXUQVDUHVXOW KLWPLVVHWF

KHUH

'RW&RP
REMHFWV

[]dd []dd []dd


( ) *

JH

$UUD\/LVW
REMHFW

\gl;ge
\gl;ge
\gl;ge
( ) *

$UUD\/LVWREMHFWWR
KROG'RW&RPREMHFWV

[]dd []dd []dd


( ) *

$UUD\/LVW
REMHFW

[]ddk

'RW&RP
REMHFWV

[]dd []dd []dd


( ) *

$UUD\/LVW
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.

WKH'RW&RP%XVWFODVV WKHJDPH
SUHSFRGH WHVWFRGH

UHDOFRGH

'RW&RP%XVW

*DPH+HOSHUKHOSHU
$UUD\/LVWGRW&RPV/LVW
LQWQXP2I*XHVVHV
VHW8S*DPH
VWDUW3OD\LQJ
FKHFN8VHU*XHVV

8ZMXKWLMNWZ\PMZMIT,W\+WU*][\KTI[[
4HE$OT#OM"USTCLASSHASTHREEMAINJOBSSETUPTHEGAME PLAYTHEGAME
UNTILTHE$OT#OMSAREDEAD ANDENDTHEGAME!LTHOUGHWECOULDMAP
THOSETHREEJOBSDIRECTLYINTOTHREEMETHODS WESPLITTHEMIDDLEJOBPLAYTHE
GAME INTOTWOMETHODS TOKEEPTHEGRANULARITYSMALLER3MALLERMETHODS
MEANINGSMALLERCHUNKSOFFUNCTIONALITY HELPUSTEST DEBUG ANDMODIFY
THECODEMOREEASILY

ILQLVK*DPH

()'0%6)ERHMRWXERXMEXIXLI+EQI,IPTIVMRWXERGIZEVMEFPIREQIHLIPTIV

9DULDEOH
'HFODUDWLRQV

()'0%6)ERHMRWXERXMEXIER%VVE]0MWXXSLSPHXLIPMWXSJ(SX'SQW MRMXMEPP]XLVII 'EPPMX


HSX'SQW0MWX
()'0%6)ERMRXZEVMEFPIXSLSPHXLIRYQFIVSJYWIVKYIWWIW WSXLEX[IGERKMZIXLIYWIVE
WGSVIEXXLIIRHSJXLIKEQI 2EQIMXRYQ3J+YIWWIWERHWIXMXXS
()'0%6)EWIX9T+EQI QIXLSHXSGVIEXIERHMRMXMEPM^IXLI(SX'SQSFNIGXW[MXLREQIW
ERHPSGEXMSRW(MWTPE]FVMIJMRWXVYGXMSRWXSXLIYWIV

0HWKRG
'HFODUDWLRQV

()'0%6)EWXEVX4PE]MRK QIXLSHXLEXEWOWXLITPE]IVJSVKYIWWIWERHGEPPWXLI
GLIGO9WIV+YIWW QIXLSHYRXMPEPPXLI(SX'SQSFNIGXWEVIVIQSZIHJVSQTPE]
()'0%6)EGLIGO9WIV+YIWW QIXLSHXLEXPSSTWXLVSYKLEPPVIQEMRMRK(SX'SQSFNIGXWERH
GEPPWIEGL(SX'SQSFNIGXWGLIGO=SYVWIPJ QIXLSH
()'0%6)ERMWL+EQI QIXLSHXLEXTVMRXWEQIWWEKIEFSYXXLIYWIVWTIVJSVQERGIFEWIH
SRLS[QER]KYIWWIWMXXSSOXSWMROEPPSJXLI(SX'SQSFNIGXW

1)8,3(ZSMHWIX9T+EQI
  QEOIXLVII(SX'SQSFNIGXWERHREQIXLIQ

0HWKRG
,PSOHPHQWDWLRQV

  '6)%8)XLVII(SX'SQSFNIGXW
  7)8EREQIJSVIEGL(SX'SQ
  %((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)XLIYWIVWKYIWWF]GLIGO9WIV+YIWW QIXLSH
  )2(6)4)%8
)2(1)8,3(
1)8,3(ZSMHGLIGO9WIV+YIWW 7XVMRKYWIV+YIWW
  RHSYXMJXLIVIWELMX ERHOMPP SRER](SX'SQ
  -2'6)1)28XLIRYQFIVSJYWIVKYIWWIWMRXLIRYQ3J+YIWWIWZEVMEFPI

7)8XLIPSGEPVIWYPXZEVMEFPI E7XVMRK XSQMWWEWWYQMRKXLEXXLIYWIVWKYIWW[MPPFIEQMWW


  6)4)%8[MXLIEGLSJXLI(SX3FNIGXWMRXLIHSX'SQW0MWXEVVE]
   ):%09%8)XLIYWIVWKYIWWF]GEPPMRKXLI(SX'SQSFNIGXWGLIGO=SYVWIPJ QIXLSH
   7)8XLIVIWYPXZEVMEFPIXSLMXSVOMPPMJETTVSTVMEXI
   -*XLIVIWYPXMWOMPP6)13:)XLI(SX'SQJVSQXLIHSX'SQW0MWX
  )2(6)4)%8
  (-740%=XLIVIWYPXZEPYIXSXLIYWIV
)2(1)8,3(
1)8,3(ZSMHRMWL+EQI
  (-740%=EKIRIVMGKEQISZIVQIWWEKIXLIR
    -*RYQFIVSJYWIVKYIWWIWMWWQEPP
     (-740%=EGSRKVEXYPEXMSRWQIWWEKI
    )07)
    (-740%=ERMRWYPXMRKSRI
  )2(-*
)2(1)8,3(

6KDUSHQ \RXU SHQFLO


(OWSHOULDWEGOFROMPREPCODETOTHE
FINALCODE&IRSTWESTARTWITHTESTCODE AND
THENTESTANDBUILDUPOURMETHODSBITBY
BIT7EWONTKEEPSHOWINGYOUTESTCODE
INTHISBOOK SONOWITSUPTOYOUTOTHINK
ABOUTWHATYOUDNEEDTOKNOWTOTESTTHESE

METHODS!NDWHICHMETHODDOYOUTEST
ANDWRITEFIRST3EEIFYOUCANWORKOUTSOME
PREPCODEFORASETOFTESTS0REPCODEOR
EVENBULLETPOINTSAREGOODENOUGHFORTHIS
EXERCISE BUTIFYOUWANTTOTRYTOWRITETHE
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 
SXEOLFFODVV'RW&RP%XVW^

$QQRWDWHWKHFRGH
\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
ZLWKWKHQXPEHUV
SULYDWHYRLGVHW8S*DPH ^
LQWKHFRGH:ULWH
UVWPDNHVRPHGRWFRPVDQGJLYHWKHPORFDWLRQV
WKHQXPEHULQWKH
'RW&RPRQH QHZ'RW&RP 
VORWLQIURQWRIWKH
RQHVHW1DPH 3HWVFRP 
FRUUHVSRQGLQJ
'RW&RPWZR QHZ'RW&RP 
DQQRWDWLRQ
WZRVHW1DPH H7R\VFRP 

<RXOOXVHHDFK
'RW&RPWKUHH QHZ'RW&RP 
DQQRWDWLRQMXVWRQFH
WKUHHVHW1DPH *RFRP 
DQG\RXOOQHHGDOORI
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
UHSHDWZLWKHDFK'RW&RPLQWKHOLVW

JHWXVHULQSXW
QLWLDOL]H
GHFODUHDQEGOHLVZHOOQHHG
FDOOWKHVHWWHUPHW
WKHYDULD
WR
JLYHLWWKHORFDWLKRGRQWKLV'RW&RP
LHI
SULQWEU
IU
RPWKHKHOSHU RQ\RXMXVWJRW
LQVWUXFWLRQVIRU
XVHU

PREMHFWVJLYHHP
PDNHWKUHH'RW&R
LVW
\/
UD
$U
H
WK
FDOORXURZQILQLVK*DPHPHWKRG
QDPHVDQGVWLFNHPLQ

FDOORXURZQFKHFN8

VHU*XHVVPHWKRG

DVORQJDVWKH'RW&RP
OLVWLV127HPSW\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ^


QXP2I*XHVVHV

6WULQJUHVXOW PLVV 

:KDWHYHU\RXGR
'217WXUQWKH
SDJH
1RWXQWLO\RXYH
QLVKHGWKLV
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


SULYDWHYRLGQLVK*DPH ^
6\VWHPRXWSULQWOQ $OO'RW&RPVDUHGHDG<RXUVWRFNLVQRZZRUWKOHVV 
LI QXP2I*XHVVHV  ^
6\VWHPRXWSULQWOQ ,WRQO\WRRN\RXQXP2I*XHVVHVJXHVVHV 

6\VWHPRXWSULQWOQ <RXJRWRXWEHIRUH\RXURSWLRQVVDQN 
`HOVH^
6\VWHPRXWSULQWOQ 7RRN\RXORQJHQRXJKQXP2I*XHVVHVJXHVVHV 
6\VWHPRXWSULQWOQ )LVKDUHGDQFLQJZLWK\RXURSWLRQV 
`
`FORVHPHWKRG


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

JDPHVWDUW3OD\LQJ 

`FORVHPHWKRG
`



UHSHDWZLWKDOO'RW&RPVLQWKHOLVW
SULQWWKH
SULQWDPHVVDJHWHOOLQJWKH
UHVXOWIRU
WKLVJX\VGHDGVRWDNHKLPRXWRIW
XVHUKRZKHGLGLQWKHJDPH
WKHXVHU
'RW&RPVOLVWWKHQJHWRXWRIWKH KH
ORRS
WHOOWKHJDPHREMHFW
VHUKDVPDGH
KHX
WRVHWXSWKHJDPH
HVW
XHVV
IJ
HUR
XPE
KHQ
QWW
HPH
LQFU
LVH
HUZ
RWK
WROG
HVV
XQO
LVV
DP
LWV
PH
DVVX
WHOOWKHJDPH

R
E
MH
F
W
WRVWDUWWK
JHWRXWRIWKHORRS
JDPHSOD\ORR
DVNWKH'RW&RPWRFKHFNWKHXVHUJXHVV
H
P
S
LOO
D

LQ
NHHSV LQJI
HDUO\QRSRLQWLQWHVWLQJ LQSXWDQGF
ORRNLQJIRUDKLW RUN
RUXVHU
KHFNLQJWKHDVN
WKHRWKHUV
JXHVV
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

LPSRUWMDYDXWLO 
SXEOLFFODVV'RW&RP%XVW^

LQLWLDOL]H
'HFODUHDEQOHG VZHOOQHHG
WKHYDULD

SULYDWH*DPH+HOSHUKHOSHU QHZ*DPH+HOSHU 
I
SULYDWH$UUD\/LVW'RW&RP!GRW&RPV/LVW QHZ$UUD\/LVW'RW&RP! 0DNHDQ$UUD\/LVWR
KHU
RW
LQ
V
FW
MH
RE
P
SULYDWHLQWQXP2I*XHVVHV 
'RW&R
KROG
SULYDWHYRLGVHW8S*DPH ^
UVWPDNHVRPHGRWFRPVDQGJLYHWKHPORFDWLRQV
'RW&RPRQH QHZ'RW&RP 
RQHVHW1DPH 3HWVFRP 
PREMHFWV
'RW&RPWZR QHZ'RW&RP 
0DNHWKUHH'RW&R
VW
QG LFNHP
JLYHHPQDPHVD
WZRVHW1DPH H7R\VFRP 

LVW
\/
LQWKH$UUD
'RW&RPWKUHH QHZ'RW&RP 
WKUHHVHW1DPH *RFRP 
GRW&RPV/LVWDGG RQH 
GRW&RPV/LVWDGG WZR 
GRW&RPV/LVWDGG WKUHH 

ZRUGVDOLVWWKDWREZMHLOO
V
21/<'RW&RP @ZRFWXOG
P>
MXVWDV'RW&R RI'RW&RP
PHDQDQDUUD\
REMHFWV 

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  

GRW&RP7R6HWVHW/RFDWLRQ&HOOV QHZ/RFDWLRQ 

`FORVHIRUORRS
`FORVHVHW8SJDPHPHWKRG

'RW&RPORFDWLRQ DQ
$UUD\/LVWRI6WULQJV 

&DOOWKHVHWWH PHW
KRGRQWKLV
'RW&RPWRJLYHULW
MXVWJRWIURPWKH WKHORFDWLRQ\RX
KHOSHU

SULYDWHYRLGVWDUW3OD\LQJ ^

V127HPSW\ WKHPHDQV127LWV
$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
&DOORXURZQILQLVK*DPHPHWKRG
QLVK*DPH 
`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
DVVXPHLWVDPLVVXQOHVVWROGRWKHUZLVH
IRU 'RW&RPGRW&RP7R7HVWGRW&RPV/LVW ^

UHSHDWZLWKDOO'RW&RPVLQWKHOLVW

XVHU
UHVXOW GRW&RP7R7HVWFKHFN<RXUVHOI XVHU*XHVV 
DVNWKH'RW&RPWRFKHFNWKH

NLOO

 RU
KLW
JXHVVORRNLQJIRUD
LI UHVXOWHTXDOV KLW ^

JHWRXWRIWKHORRSHDUO\QRSRLQW
EUHDN
LQWHVWLQJWKHRWKHUV
`
LI UHVXOWHTXDOV NLOO ^

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

SULQ

WWKHUHVXOWIRUWKHXVHU
6\VWHPRXWSULQWOQ UHVXOW 
SULQWDPHVVDJHWHOOLQJWKH
`FORVHPHWKRG
XVHUKRZKHGLGLQWKHJDPH


SULYDWHYRLGQLVK*DPH ^
6\VWHPRXWSULQWOQ $OO'RW&RPVDUHGHDG<RXUVWRFNLVQRZZRUWKOHVV 
LI QXP2I*XHVVHV  ^
6\VWHPRXWSULQWOQ ,WRQO\WRRN\RXQXP2I*XHVVHVJXHVVHV 

6\VWHPRXWSULQWOQ <RXJRWRXWEHIRUH\RXURSWLRQVVDQN 
`HOVH^
6\VWHPRXWSULQWOQ 7RRN\RXORQJHQRXJKQXP2I*XHVVHVJXHVVHV 
6\VWHPRXWSULQWOQ )LVKDUHGDQFLQJZLWK\RXURSWLRQV 
`
`FORVHPHWKRG


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'RW&RP%XVWJDPH QHZ'RW&RP%XVW 
FUHDWHWKHJ
DPHREMHFW
JDPHVHW8S*DPH 
WHOOWKHJDPH
JDPHVWDUW3OD\LQJ 
REMHFWWRVHW
`FORVHPHWKRG
XSWKHJDPH
WHOOWKHJDPH
`
REMHFWW
R
JDPHSOD\O R
S NHHSVDVNVLQWDUWWKHPDLQ
LQSXWDQGFKRHF
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 

'RW&RPVLQVWDQFHYDULDEOHV
DQ$UUD\/LVWRIFHOOORFDWLRQV
WKH'RW&RPVQDPH

SXEOLFFODVV'RW&RP^
SULYDWH$UUD\/LVW6WULQJ!ORFDWLRQ&HOOV
SULYDWH6WULQJQDPH

$VHWWHUPHWKRGWKDWXSGDWHV
WKH'RW&RPVORFDWLRQ \
5DQGRPORFDWLRQSURYLGHGERP  
WKH*DPH+HOSHUSODFH'RW&
PHWKRG

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

<RXUEDVLFVHWWHUPHWKRG

SXEOLFYRLGVHW1DPH 6WULQJQ ^
QDPH Q

WKRGLQ
7KH$UUD\/LVWLQGH[2I  PHQHR
IWKH
LVR
XHVV
HUJ
HXV
WK
,I
DFWLRQ

I 
H[2
LQG
/LVW
HQWULHVLQWKH$UUD\

,I
WLRQ
ORFD
LVW
D\/
$UU
LWV
XUQ
ZLOOUHW

Q
WXU
QRWLQGH[2I  ZLOOUH

`
SXEOLF6WULQJFKHFN<RXUVHOI 6WULQJXVHU,QSXW ^
6WULQJUHVXOW PLVV
LQWLQGH[ ORFDWLRQ&HOOVLQGH[2I XVHU,QSXW 
LI LQGH[!  ^

8VLQJ$UUD\/LVWVUHPRYH  PHWKRGWRGHOHWHDQHQWU\

ORFDWLRQ&HOOVUHPRYH LQGH[ 


8VLQJWKHLV(PSW\  PHWKRGWRVHHLIDOO
RIWKHORFDWLRQVKDYHEHHQJXHVVHG

LI ORFDWLRQ&HOOVLV(PSW\ ^
UHVXOW NLOO

6\VWHPRXWSULQWOQ 2XFK<RXVXQNQDPH  
`HOVH^
UHVXOW KLW
`FORVHLI

7HOOWKHXVHUZKHQ

D'RW&RPKDVEHH

QVXQN

`FORVHLI
UHWXUQUHVXOW

5HWXUQPLVVRU
`FORVHPHWKRG

KLWRUNLOO

`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
LITESTS THEYVEBEENPRETTYSIMPLE7EWILLBEUSINGMORE
POWERFULBOOLEANEXPRESSIONSINSOMEOFTHE2EADY "AKECODE
YOUREABOUTTOSEE ANDEVENTHOUGHWEKNOWYOUWOULDNT
PEEK WETHOUGHTTHISWOULDBEAGOODTIMETODISCUSSHOWTO
ENERGIZEYOUREXPRESSIONS

$QGDQG2U2SHUDWRUV  __ 
,ETSSAYYOUREWRITINGACHOOSE#AMERA METHOD WITHLOTSOFRULES
ABOUTWHICHCAMERATOSELECT-AYBEYOUCANCHOOSECAMERAS
RANGINGFROMTO BUTINSOMECASESYOUWANTTOLIMITTHE
PRICERANGEMOREPRECISELY9OUWANTTOSAYSOMETHINGLIKE
@)FTHEPRICERANGEISBETWEENANDTHENCHOOSE8
LI SULFH!  SULFH ^
FDPHUD ;
`
,ETSSAYTHATOFTHETENCAMERABRANDSAVAILABLE YOUHAVESOME
LOGICTHATAPPLIESTOONLYAFEWOFTHELIST
LI EUDQGHTXDOV $ __EUDQGHTXDOV %  ^
GRVWXIIIRUONLYEUDQG$OREUDQG%

`
"OOLEANEXPRESSIONSCANGETREALLYBIGANDCOMPLICATED
LI ]RRP7\SHHTXDOV RSWLFDO 
 ]RRP'HJUHH!  ]RRP'HJUHH  __
 ]RRP7\SHHTXDOV GLJLWDO 
 ]RRP'HJUHH!  ]RRP'HJUHH  ^

1RWHTXDOV  DQG
,ETSSAYTHATYOUHAVEALOGICLIKE hOFTHETENAVAILABLE
CAMERAMODELS ACERTAINTHINGISTRUEFORALLBUTONEh
LI PRGHO  ^
GRQRQPRGHOVWXII
`
ORFORCOMPARINGOBJECTSLIKESTRINGS
LI EUDQGHTXDOV ; ^
GRQRQEUDQG;VWXII
`

6KRUW&LUFXLW2SHUDWRUV  __
4HEOPERATORSWEVELOOKEDATSOFAR AND\\ ARE
KNOWNASSHORTCIRCUITOPERATORS)NTHECASEOF
THEEXPRESSIONWILLBETRUEONLYIFBOTHSIDESOFTHE
ARETRUE3OIFTHE*6-SEESTHATTHELEFTSIDEOFA
EXPRESSIONISFALSE ITSTOPSRIGHTTHERE$OESNTEVEN
BOTHERTOLOOKATTHERIGHTSIDE
3IMILARLY WITH\\ THEEXPRESSIONWILLBETRUEIFEITHERSIDEIS
TRUE SOIFTHE*6-SEESTHATTHELEFTSIDEISTRUE ITDECLARES
THEENTIRESTATEMENTTOBETRUEANDDOESNTBOTHERTO
CHECKTHERIGHTSIDE
7HYISTHISGREAT,ETSSAYTHATYOUHAVEAREFERENCE
VARIABLEANDYOURENOTSUREWHETHERITSBEENASSIGNED
TOANOBJECT)FYOUTRYTOCALLAMETHODUSINGTHISNULL
REFERENCEVARIABLEIENOOBJECTHASBEENASSIGNED YOULL
GETA.ULL0OINTER%XCEPTION3O TRYTHIS
LI UHI9DU QXOO 
UHI9DULV9DOLG7\SH  ^
GRJRWDYDOLGW\SHVWXII
`

GRDSSURSULDWH]RRPVWXII

1RQ6KRUW&LUFXLW2SHUDWRUV  _

7HENUSEDINBOOLEANEXPRESSIONS THEAND\OPERATORS
ACTLIKETHEIRAND\\COUNTERPARTS EXCEPTTHAT
THEYFORCETHE*6-TOALWAYSCHECKBOTHSIDESOFTHE
EXPRESSION4YPICALLY AND\AREUSEDINANOTHERCONTEXT
FORMANIPULATINGBITS

)FYOUWANTTOGETREALLYTECHNICAL YOUMIGHTWONDERABOUTTHE
PRECEDENCEOFTHESEOPERATORS)NSTEADOFBECOMINGANEXPERT
INTHEARCANEWORLDOFPRECEDENCE WERECOMMENDTHATYOUUSE
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

4GCF[DCMG
%QFG
LPSRUWMDYDLR 
LPSRUWMDYDXWLO 

7KLVLVWKHKHOSHUFODVVIRUWKHJDPH%HVLGHVWKHXVHULQSXWPHWKRG
WKDWSURPSWVWKHXVHUDQGUHDGVLQSXWIURPWKHFRPPDQGOLQH WKH
KHOSHUV%LJ6HUYLFHLVWRFUHDWHWKHFHOOORFDWLRQVIRUWKH'RW&RPV
,IZHZHUH\RXZHGMXVWEDFNDZD\VORZO\IURPWKLVFRGHH[FHSW
WRW\SHLWLQDQGFRPSLOHLW:HWULHGWRNHHSLWIDLUO\VPDOOWR\RX
ZRXOGQWKDYHWRW\SHVRPXFKEXWWKDWPHDQVLWLVQWWKHPRVW
UHDGDEOHFRGH$QGUHPHPEHU\RXZRQWEHDEOHWRFRPSLOHWKH
'RW&RP%XVWJDPHFODVVXQWLO\RXKDYHWKLVFODVV

SXEOLFFODVV*DPH+HOSHU^
SULYDWHVWDWLFQDO6WULQJDOSKDEHW DEFGHIJ
SULYDWHLQWJULG/HQJWK 
SULYDWHLQWJULG6L]H 
SULYDWHLQW>@JULG QHZLQW>JULG6L]H@
SULYDWHLQWFRP&RXQW 

1RWH)RUH[WUDFUHGLW\RXPLJKW
WU\XQFRPPHQWLQJWKH
6\VWHPRXWSULQW OQ VLQWKH
SODFH'RW&RP  PHWKRGMXVW
WRZDWFKLWZRUN7KHVHSULQW
VWDWHPHQWVZLOOOHW\RXFKHDW
E\JLYLQJ\RXWKHORFDWLRQRIWKH
'RW&RPVEXWLWZLOOKHOS\RXWHVWLW

Licensed by
Eduard Simons
104038

SXEOLF6WULQJJHW8VHU,QSXW 6WULQJSURPSW ^
6WULQJ
LQSXW/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([FHSWLRQH 
`
UHWXUQLQSXW/LQHWR/RZHU&DVH 
`

SXEOLF$UUD\/LVW6WULQJ!SODFH'RW&RP LQWFRP6L]H ^
$UUD\/LVW6WULQJ!DOSKD&HOOV QHZ$UUD\/LVW6WULQJ! 
6WULQJ>@DOSKDFRRUGV QHZ6WULQJ>FRP6L]H@KROGVIW\SHFRRUGV
6WULQJWHPS QXOOWHPSRUDU\6WULQJIRUFRQFDW
LQW>@FRRUGV QHZLQW>FRP6L]H@FXUUHQWFDQGLGDWHFRRUGV
LQWDWWHPSWV FXUUHQWDWWHPSWVFRXQWHU
ERROHDQVXFFHVV IDOVHDJ 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
%QFG

/IUM0MTXMZKTI[[KWLMKWV\QV]ML

FRRUGV>[@ ORFDWLRQVDYHORFDWLRQ
ORFDWLRQ LQFUWU\QH[WDGMDFHQW
LI ORFDWLRQ! JULG6L]H ^RXWRIERXQGVERWWRP
VXFFHVV IDOVHIDLOXUH
`
LI [!  ORFDWLRQJULG/HQJWK  ^RXWRIERXQGVULJKWHGJH
VXFFHVV IDOVHIDLOXUH
`
`HOVH^IRXQGDOUHDG\XVHGORFDWLRQ
6\VWHPRXWSULQW XVHGORFDWLRQ 
VXFFHVV IDOVHIDLOXUH
`
`
`HQGZKLOH

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

DOSKD&HOOVDGG WHPSFRQFDW ,QWHJHUWR6WULQJ URZ 
PHQWWKDW
[
VWKHVWDWHZKHUHWKH
L
LV
K
7
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,

WKHUH DUH QR

<RXKDYHWRNQRZWKHIXOOQDPH 
RIWKHFODVV\RXZDQWWRXVHLQ
\RXUFRGH

Q:

!RRAY,ISTISNOTTHEFULLNAMEOF!RRAY,IST JUSTAS@+ATHY
ISNTAFULLNAMEUNLESSITSLIKE-ADONNAOR#HER BUTWE
WONTGOTHERE 4HEFULLNAMEOF!RRAY,ISTISACTUALLY

A:

MDYDXWLO$UUD\/LVW

SDFNDJHQDPH

FODVVQDPH

<RXKDYHWRWHOO-DYDZKLFK$UUD\/LVW\RX
ZDQWWRXVH<RXKDYHWZRRSWLRQV

,03257
3XWDQLPSRUWVWDWHPHQWDWWKHWRSRI\RXUVRXUFHFRGHOH

LPSRUWMDYDXWLO$UUD\/LVW
SXEOLFFODVV0\&ODVV^`
25

7<3(
7\SHWKHIXOOQDPHHYHU\ZKHUHLQ\RXUFRGH(DFKWLPH
\RXXVHLW$Q\ZKHUH\RXXVHLW

'XPE 4XHVWLRQV
7HYDOESTHEREHAVETO
BEAFULLNAME)STHATTHEONLY
PURPOSEOFAPACKAGE

0ACKAGESAREIMPORTANT
FORTHREEMAINREASONS&IRST THEY
HELPTHEOVERALLORGANIZATIONOFA
PROJECTORLIBRARY2ATHERTHANJUST
HAVINGONEHORRENDOUSLYLARGE
PILEOFCLASSES THEYREALLGROUPED
INTOPACKAGESFORSPECIFICKINDS
OFFUNCTIONALITYLIKE'5) ORDATA
STRUCTURES ORDATABASESTUFF ETC
3ECOND PACKAGESGIVEYOUANAME
SCOPING TOHELPPREVENTCOLLISIONS
IFYOUANDOTHERPROGRAMMERS
INYOURCOMPANYALLDECIDETO
MAKEACLASSWITHTHESAMENAME
)FYOUHAVEACLASSNAMED3ETAND
SOMEONEELSEINCLUDINGTHE*AVA
!0) HASACLASSNAMED3ET YOU
NEEDSOMEWAYTOTELLTHE*6-
WHICH3ETCLASSYOURETRYINGTOUSE
4HIRD PACKAGESPROVIDEALEVELOF
SECURITY BECAUSEYOUCANRESTRICT
THECODEYOUWRITESOTHATONLY
OTHERCLASSESINTHESAMEPACKAGE
CANACCESSIT9OULLLEARNALLABOUT
THATINCHAPTER

Q:

/+ BACKTOTHENAME
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 ^`

:KHQ\RXXVHLWDVDUHWXUQW\SH

A:

*AVAHASANAMINGCONVENTION
THATUSUALLYPREVENTSTHISFROM
HAPPENING ASLONGASDEVELOPERS
ADHERETOIT7ELLGETINTOTHATIN
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\VDUHQWHQRXJK

:MDD=LHGAFLK

 $UUD\/LVWLVDFODVVLQWKH-DYD$3,
:KHUHGWKDW[FRPHIURP"
RUZKDWGRHVLWPHDQZKHQ
DSDFNDJHVWDUWVZLWKMDYD["
)NTHEFIRSTANDSECONDVERSIONSOF*AVA
AND ALLCLASSESTHATSHIPPEDWITH*AVAIN
OTHERWORDS THESTANDARDLIBRARY WEREINPACKAGES
THATBEGANWITHJAVA4HEREWASALWAYSJAVALANG OFCOURSE
THEONEYOUDONTHAVETOIMPORT!NDTHEREWASJAVANET
JAVAIO JAVAUTILALTHOUGHTHEREWASNOSUCHTHINGAS!RRAY,IST
WAYBACKTHEN ANDAFEWOTHERS INCLUDINGTHEJAVAAWT
PACKAGETHATHELD'5) RELATEDCLASSES
,OOMINGONTHEHORIZON THOUGH WEREOTHERPACKAGESNOT
INCLUDEDINTHESTANDARDLIBRARY4HESECLASSESWEREKNOWNAS
EXTENSIONS ANDCAMEINTWOMAINFLAVORSSTANDARD ANDNOT
STANDARD3TANDARDEXTENSIONSWERETHOSETHAT3UNCONSIDERED
OFFICIAL ASOPPOSEDTOEXPERIMENTAL EARLYACCESS ORBETA
PACKAGESTHATMIGHTORMIGHTNOTEVERSEETHELIGHTOFDAY
3TANDARDEXTENSIONS BYCONVENTION ALLBEGANWITHAN@X
APPENDEDTOTHEREGULARJAVAPACKAGESTARTER4HEMOTHEROFALL
STANDARDEXTENSIONSWASTHE3WINGLIBRARY)TINCLUDEDSEVERAL
PACKAGES ALLOFWHICHBEGANWITHJAVAXSWING
"UTSTANDARDEXTENSIONSCANGETPROMOTEDTOFIRST CLASS SHIPS
WITH *AVA STANDARD OUT OF THE BOXLIBRARYPACKAGES!NDTHATS
WHATHAPPENEDTO3WING BEGINNINGWITHVERSIONWHICH
EVENTUALLYBECAMETHEFIRSTVERSIONDUBBED@*AVA 
h#OOLv EVERYONETHOUGHTINCLUDINGUS h.OWEVERYONEWHOHAS
*AVAWILLHAVETHE3WINGCLASSES ANDWEWONTHAVETOFIGURE
OUTHOWTOGETTHOSECLASSESINSTALLEDWITHOUREND USERSv
4ROUBLEWASLURKINGBENEATHTHESURFACE HOWEVER BECAUSE
WHENPACKAGESGETPROMOTED WELLOF#/523%THEYHAVETO
STARTWITHJAVA NOTJAVAX%VERYONE+./73THATPACKAGESIN
THESTANDARDLIBRARYDONTHAVETHAThXv ANDTHATONLYEXTENSIONS
HAVETHEhXv3O JUSTANDWEMEANJUST BEFOREVERSION
WENTFINAL 3UNCHANGEDTHEPACKAGENAMESANDDELETEDTHE
hXvAMONGOTHERCHANGES "OOKSWEREPRINTEDANDINSTORES
FEATURING3WINGCODEWITHTHENEWNAMES.AMINGCONVENTIONS
WEREINTACT!LLWASRIGHTWITHTHE*AVAWORLD
%XCEPTTHE ORSOSCREAMINGDEVELOPERSWHOREALIZED
THATWITHTHATSIMPLENAMECHANGECAMEDISASTER!LLOFTHEIR
3WING USINGCODEHADTOBECHANGED4HEHORROR4HINKOFALL
THOSEIMPORTSTATEMENTSTHATSTARTEDWITHJAVAX
!NDINTHEFINALHOUR DESPERATE ASTHEIRHOPESGREWTHIN THE
DEVELOPERSCONVINCED3UNTOhSCREWTHECONVENTION SAVEOUR
CODEv4HERESTISHISTORY3OWHENYOUSEEAPACKAGEINTHE
LIBRARYTHATBEGINSWITHJAVAX YOUKNOWITSTARTEDLIFEASAN
EXTENSION ANDTHENGOTAPROMOTION

 7RSXWVRPHWKLQJLQWRDQ$UUD\/LVWXVHDGG 
 7RUHPRYHVRPHWKLQJIURPDQ$UUD\/LVWXVH
UHPRYH 

 7RILQGRXWZKHUHVRPHWKLQJLV DQGLILWLV LQDQ


$UUD\/LVWXVHLQGH[2I 

 7RILQGRXWLIDQ$UUD\/LVWLVHPSW\XVH
LV(PSW\ 

 7RJHWWKHVL]H QXPEHURIHOHPHQWV LQDQ


$UUD\/LVWXVHWKHVL]H PHWKRG

 7RJHWWKHOHQJWK QXPEHURIHOHPHQWV LQD


UHJXODUROGDUUD\UHPHPEHU\RXXVHWKHOHQJWK
YDULDEOH

 $Q$UUD\/LVWUHVL]HVG\QDPLFDOO\WRZKDW
HYHUVL]HLVQHHGHG,WJURZVZKHQREMHFWV
DUHDGGHGDQGLWVKULQNVZKHQREMHFWVDUH
UHPRYHG

 <RXGHFODUHWKHW\SHRIWKHDUUD\XVLQJDW\SH
SDUDPHWHUZKLFKLVDW\SHQDPHLQDQJOH
EUDFNHWV([DPSOH$UUD\/LVW%XWWRQ!PHDQV
WKH$UUD\/LVWZLOOEHDEOHWRKROGRQO\REMHFWVRI
W\SH%XWWRQ RUVXEFODVVHVRI%XWWRQDV\RXOO
OHDUQLQWKHQH[WFRXSOHRIFKDSWHUV 

 $OWKRXJKDQ$UUD\/LVWKROGVREMHFWVDQGQRW
SULPLWLYHVWKHFRPSLOHUZLOODXWRPDWLFDOO\ZUDS
DQGXQZUDSZKHQ\RXWDNHLWRXW DSULPL
WLYHLQWRDQ2EMHFWDQGSODFHWKDWREMHFWLQWKH
$UUD\/LVWLQVWHDGRIWKHSULPLWLYH 0RUHRQWKLV
IHDWXUHODWHULQWKHERRN

 &ODVVHVDUHJURXSHGLQWRSDFNDJHV
 $FODVVKDVDIXOOQDPHZKLFKLVDFRPELQD
WLRQRIWKHSDFNDJHQDPHDQGWKHFODVVQDPH
&ODVV$UUD\/LVWLVUHDOO\MDYDXWLO$UUD\/LVW

 7RXVHDFODVVLQDSDFNDJHRWKHUWKDQMDYD
ODQJ\RXPXVWWHOO-DYDWKHIXOOQDPHRIWKH
FODVV

 <RXXVHHLWKHUDQLPSRUWVWDWHPHQWDWWKHWRSRI
\RXUVRXUFHFRGHRU\RXFDQW\SHWKHIXOOQDPH
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

A:

0ERHAPSYOUREA#PRO
GRAMMER!NLPSRUWISNOTTHE
SAMEASANLQFOXGH3OTHE
ANSWERISNOANDNO2EPEATAFTER
MEhANLPSRUWSTATEMENTSAVES
YOUFROMTYPINGv4HATSREALLYIT
9OUDONTHAVETOWORRYABOUT
YOURCODEBECOMINGBLOATED OR
SLOWER FROMTOOMANYIMPORTS
!NLPSRUWISSIMPLYTHEWAYYOU
GIVE*AVATHEFULLNAMEOFACLASS

0DNH LW 6WLFN

2OSESARERE
D
APPLESARER
IPE
IFYOUDONTI
MPORT
YOULLJUSTH
AVETOT YPE
9OUMUSTT
ELL*AVATHE
FULLNAMEO
YOUUSE UN
FEVERYCLA
LESSTHATCLA
SS
SSISINTHE
PACKAGE!
JAVALANG
NLPSRUW
STATEMENT
ORPACKAGE
FORTHECLAS
ATTHETOPO
S
FYOURSOURC
EASYWAY/
ECO
THER WISE YO
UHAVETOTYP DEISTHE
NAMEOFTH
ETHEFULL
ECLASS EVE
RYWHEREYO
UUSEIT

Q:

/+ HOWCOME)NEVERHAD
TOIMPORTTHE3TRINGCLASS/R
3YSTEM

A:

2QHPRUHWLPHLQWKHXQOLNHO\
HYHQWWKDW\RXGRQWDOUHDG\
KDYHWKLVGRZQ

2EMEMBER YOUGETTHE
JAVALANGPACKAGESORTOFhPRE
IMPORTEDvFORFREE"ECAUSE
THECLASSESINJAVALANGARESO
FUNDAMENTAL YOUDONTHAVETO
USETHEFULLNAME4HEREISONLY
ONEJAVALANG3TRINGCLASS ANDONE
JAVALANG3YSTEMCLASS AND*AVA
DARNWELLKNOWSWHERETOFIND
THEM

LPSRUW
RU

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\RXQGDFODVVKRZGR
\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\WRQGRXW
ZKDWVLQWKH-DYD
OLEUDU\<RXFDQHDVLO\
VWXPEOHRQDFODVVWKDW
ORRNVXVHIXOMXVWE\
EURZVLQJSDJHV

FODVVQDPH

SDFNDJHQDPH
LRQ
FODVVGHVFULSW

PHWKRGV DQGRWKH
ZHOOWDONDERXWODWUWKLQJV
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
CALLED STRANGELY THE*AVA!0)4HEYREPARTOF
ALARGERSETCALLEDTHE*AVA3TANDARD%DITION
$OCUMENTATIONWHICH DEPENDINGONWHAT
DAYOFTHEWEEKYOULOOK 3UNMAYBEREFER
RINGTOASh*AVA3TANDARD%DITIONv AND
YOUHAVETODOWNLOADTHEDOCSSEPARATELY
THEYDONTCOMESHRINK WRAPPEDWITHTHE*AVA
DOWNLOAD)FYOUHAVEAHIGH SPEEDINTERNET
CONNECTION ORTONSOFPATIENCE YOUCANALSO
BROWSETHEMATJAVASUNCOM4RUSTUS YOU
PROBABLYWANTTHESEONYOURHARDDRIVE
4HE!0)DOCSARETHEBESTREFERENCEFORGET
TINGMOREDETAILSABOUTACLASSANDITSMETHODS
,ETSSAYYOUWEREBROWSINGTHROUGHTHEREFER
ENCEBOOKANDFOUNDACLASSCALLED#ALENDAR
INJAVAUTIL4HEBOOKTELLSYOUALITTLEABOUTIT
ENOUGHTOKNOWTHATTHISISINDEEDWHATYOU
WANTTOUSE BUTYOUSTILLNEEDTOKNOWMORE
ABOUTTHEMETHODS

4HEREFERENCEBOOK FOREXAMPLE TELLSYOU


WHATTHEMETHODSTAKE ASARGUMENTS ANDWHAT
THEYRETURN,OOKAT!RRAY,IST FOREXAMPLE
)NTHEREFERENCEBOOK YOULLlNDTHEMETHOD
INDEX/F THATWEUSEDINTHE$OT#OMCLASS
"UTIFALLYOUKNEWISTHATTHEREISAMETHOD
CALLEDINDEX/F THATTAKESANOBJECTANDRE
TURNSTHEINDEXANINT OFTHATOBJECT YOUSTILL
NEEDTOKNOWONECRUCIALTHINGWHATHAPPENS
IFTHEOBJECTISNOTINTHE!RRAY,IST,OOKING
ATTHEMETHODSIGNATUREALONEWONTTELLYOU
HOWTHATWORKS"UTTHE!0)DOCSWILLMOSTOF
THETIME ANYWAY 4HE!0)DOCSTELLYOUTHAT
THEINDEX/F METHODRETURNSA IFTHEOBJECT
PARAMETERISNOTINTHE!RRAY,IST4HATSHOW
WEKNEWWECOULDUSEITBOTHASAWAYTOCHECK
IFANOBJECTISEVENINTHE!RRAY,IST ANDTOGET
ITSINDEXATTHESAMETIME IFTHEOBJECTWAS
THERE"UTWITHOUTTHE!0)DOCS WEMIGHTHAVE
THOUGHTTHATTHEINDEX/F METHODWOULD
BLOWUPIFTHEOBJECTWASNTINTHE!RRAY,IST

6FUROOWKURXJKWKH
DQGVHOHFWRQH FOLF SDFNDJHV
WRUHVWULFWWKHOLV NLW 
ORZHUIUDPHWRRQOWLQWKH
IURPWKDWSDFNDJH\FODVVHV

HV
WKHFODVV WR
K
J
X
R
U
K
W

6FUROO RQH FOLFNLW LOO
DQGVHOHFWHFODVVWKDWZLOOI
FKRRVHWK EURZVHUIUDPH
WKHPDLQ


UHDOOWKH
7KLVLVZKH LV<RXFDQ
JRRGVWXIIXJKWKH
VFUROOWKUR RUDEULHI
PHWKRGVI UFOLFNRQ
VXPPDU\RWRJHWIXOO
DPHWKRG
GHWDLOV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

DUHPRYH  

#ANYOURECONSTRUCTTHECODESNIPPETSTOMAKEA
WORKING*AVAPROGRAMTHATPRODUCESTHEOUTPUT
LISTEDBELOW./4%4ODOTHISEXERCISE YOUNEED
ONE.%7PIECEOFINFOIFYOULOOKINTHE!0)FOR
!RRAY,IST YOULLFINDASECONDADDMETHODTHATTAKES
TWOARGUMENTS
ADDINTINDEX /BJECTO

SULQW$/ D 
SULQW$/ D 

DDGG 
]HUR

DDGG 
RQH


W6WULQJ!DO ^
SXEOLFVWDWLFYRLGSULQW$/ $UUD\/LV

)TLETSYOUSPECIFYTOTHE
!RRAY,ISTWHERETOPUTTHEOBJECTYOUREADDING

LI DFRQ
WDLQV WZ
R ^
DDGG
 
`
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
)LOH(GLW:LQGRZ+HOS'DQFH

MDYD$UUD\/LVW0DJQHW
]HURRQHWZRWKUHH
]HURRQHWKUHHIRXU
]HURRQHWKUHHIRXU
]HURRQHWKUHHIRXU

IRU 6WULQ
JHOHPHQW
DO ^

KUHH 
DDGG W

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
Eduard Simons
104038




!CROSS
)CANTBEHAVE









/R INTHECOURTROOM
7HEREITSATBABY
!FORKSORIGIN

$OWN

'ROWAN!RRAY,IST

7HERETHE*AVAACTIONIS

7HOLLYMASSIVE

!DDRESSABLEUNIT

6ALUECOPY

NDSMALLEST

.OTANOBJECT

&RACTIONALDEFAULT

!NARRAYONSTEROIDS

,IBRARYSGRANDEST

%XTENT

-USTBELOWDENSITY

SCOUNTERPART

(ESINTHERESOMEWHERE

3PANISHGEEKSNACKS.OTE4HISHAS
NOTHINGTODOWITH*AVA

!SIF

&ORLAZYlNGERS
7HEREPACKAGESROAM

DEARTHMETHOD
7HATSHOPPINGANDARRAYSHAVEINCOMMON
,IBRARYACRONYM
7HATGOESAROUND

-ORE(INTS
!CROSS



VARIETIES


4HINK!RRAY,IST


#OMMONPRIMITIVE

!RRAYSEXTENT


.OTABOUT*AVA 3PANISHAPPETIZERS

$OWN
7HATSOVERRIDABLE
4HINK!RRAY,IST
0RIMITIVE
4HINK!RRAY,IST
(ESMAKINGA??????

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

%XERCISE3OLUTIONS

SXEOLFFODVV$UUD\/LVW0DJQHW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$UUD\/LVW6WULQJ!D QHZ$UUD\/LVW6WULQJ! 
DDGG ]HUR 
DDGG RQH 

)LOH(GLW:LQGRZ+HOS'DQFH

MDYD$UUD\/LVW0DJQHW
]HURRQHWZRWKUHH
]HURRQHWKUHHIRXU
]HURRQHWKUHHIRXU
]HURRQHWKUHHIRXU

DDGG WZR 
DDGG WKUHH 
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

-DYD&URVV
DQVZHUV

35,0,7,9(6

'(/+


2%-(&7,1'(;2)
8+05




%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


!CROSS

7RITEYOUR/7.SETOFCLUES,OOKATEACHWORD ANDTRYTO
WRITEYOUROWNCLUES4RYMAKINGTHEMEASIER ORHARDER OR
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

%HWWHU/LYLQJLQ
2EMHFWYLOOH

:HZHUHXQGHUSDLG
RYHUZRUNHGFRGHUVWLOOZH
WULHGWKH3RO\PRUSKLVP3ODQ%XW
WKDQNVWRWKH3ODQRXUIXWXUHLV
EULJKW<RXUVFDQEHWRR

3ODQ\RXUSURJUDPVZLWKWKHIXWXUHLQPLQG)FTHEREWEREAWAYTOWRITE
*AVACODESUCHTHATYOUCOULDTAKEMOREVACATIONS HOWMUCHWOULDITBEWORTHTOYOU7HAT
IFYOUCOULDWRITECODETHATSOMEONEELSECOULDEXTEND EASILY!NDIFYOUCOULDWRITECODE
THATWASFLEXIBLE FORTHOSEPESKYLAST MINUTESPECCHANGES WOULDTHATBESOMETHINGYOURE
INTERESTEDIN4HENTHISISYOURLUCKYDAY&ORJUSTTHREEEASYPAYMENTSOFMINUTESTIME YOU
CANHAVEALLTHIS7HENYOUGETONTHE0OLYMORPHISM0LAN YOULLLEARNTHESTEPSTOBETTERCLASS
DESIGN THETRICKSTOPOLYMORPHISM THEWAYSTOMAKEFLEXIBLECODE ANDIFYOUACTNOWA
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
URWDWH
SOD\6RXQG

&LUFOH
URWDWH
SOD\6RXQG

7ULDQJOH

$PRHED

URWDWH
SOD\6RXQG

URWDWH
SOD\6RXQG

1 TWWSML I\ _PI\ ITT NW]Z


KTI[[M[ PI^M QV KWUUWV


<PMaZM ;PIXM[ IVL \PMa ITT ZW\I\M IVL
XTIa;W]VL ;W 1 IJ[\ZIK\ML W]\ \PM
KWUUWV NMI\]ZM[ IVL X]\ \PMU QV\W I
VM_ KTI[[ KITTML ;PIXM

6KDSH
URWDWH
SOD\6RXQG


[]XMZKTI[[

<RXFDQUHDGWKLVDV6TXDUHLQKHULWVIURP6KDSH
&LUFOHLQKHULWVIURP6KDSHDQGVRRQ,UHPRYHG
URWDWH DQGSOD\6RXQG IURPWKHRWKHUVKDSHVVRQRZ
WKHUHVRQO\RQHFRS\WRPDLQWDLQ
7KH6KDSHFODVVLVFDOOHGWKHVXSHUFODVVRIWKHRWKHUIRXU
FODVVHV7KHRWKHUIRXUDUHWKHVXEFODVVHVRI6KDSH7KH
VXEFODVVHVLQKHULWWKHPHWKRGVRIWKHVXSHUFODVV,QRWKHU
ZRUGVLIWKH6KDSHFODVVKDVWKHIXQFWLRQDOLW\WKHQWKH
VXEFODVVHVDXWRPDWLFDOO\JHWWKDWVDPHIXQFWLRQDOLW\

<PMV1TQVSML\PMW\PMZ
NW]Z[PIXMKTI[[M[\W
\PMVM_;PIXMKTI[[
QVIZMTI\QWV[PQXKITTML
QVPMZQ\IVKM

6KDSH
URWDWH
SOD\6RXQG

[]JKTI[[M[
6TXDUH

&LUFOH

7ULDQJOH

$PRHED

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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'
,!2297ASNTTHATTHEWHOLEPROBLEMHERETHATTHEAMOEBASHAPE
HADACOMPLETELYDIFFERENTROTATEANDPLAY3OUNDPROCEDURE
2

(OWCANAMOEBADOSOMETHINGDIFFERENTIFITINHERITSITS
FUNCTIONALITYFROMTHE3HAPECLASS

$V

"2!$4HATSTHELASTSTEP4HE!MOEBACLASSOVERRIDESTHE
METHODSOFTHE3HAPECLASS4HENATRUNTIME THE*6-KNOWS
EXACTLYWHICHROTATE METHODTORUNWHENSOMEONETELLSTHE
!MOEBATOROTATE

[]XMZKTI[[

UULGH 1RZ
YH
N 0H +R

6KDSH

UWZM IJ[\ZIK\

URWDWH
SOD\6RXQG

[]JKTI[[M[
UWZM [XMKQNQK
6TXDUH

&LUFOH

7ULDQJOH

$PRHED

URWDWH

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
R][\UMIV[\PI\I[]JKTI[[ZMLMNQVM[
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[
JMPI^QWZWN\PI\UM\PWL
\W KPIVOM WZ M`\MVL \PM JMPI^QWZ
WN \PI\ UM\PWL

 DPRHEDVSHFLILF
 URWDWH FRGH

SOD\6RXQG

7^MZZQLQVO UM\PWL[

 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
6XSHU+HUR

[]XMZKTI[[
UWZM IJ[\ZIK\

VXLW
WLJKWV
VSHFLDO3RZHU

QV[\IVKM ^IZQIJTM[

XVH6SHFLDO3RZHU
SXW2Q6XLW

UM\PWL[

[\I\M I\\ZQJ]\M[
JMPI^QWZ

[]JKTI[[M[
UWZM [XMKQNQK
)ULHG(JJ0DQ

3DQWKHU0DQ

XVH6SHFLDO3RZHU

7^MZZQLQVO
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\
SURFHGXUHVVR,GLGQW
ERWKHUZLWKPHGLFDOVFKRRO
5HOD[WKLVZRQWKXUWDELW
QRZZKHUHGLG,SXWWKDW
SRZHUVDZ

SXEOLFFODVV'RFWRU^
ERROHDQZRUNV$W+RVSLWDO
YRLGWUHDW3DWLHQW ^
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
ZRUNV$W+RVSLWDO

WVM QV[\IVKM ^IZQIJTM

WUHDW3DWLHQW

WVM UM\PWL

+RZPDQ\LQVWDQFHYDULDEOHVGRHV
6XUJHRQKDYH"
+RZPDQ\LQVWDQFHYDULDEOHVGRHV
)DPLO\'RFWRUKDYH"
+RZPDQ\PHWKRGVGRHV'RFWRUKDYH"

[]JKTI[[M[
6XUJHRQ
2YHUULGHV WKH LQKHULWHG
WUHDW3DWLHQW
WUHDW3DWLHQW PHWKRG
$GGV RQH QHZ PHWKRG

PDNH,QFLVLRQ

+RZPDQ\PHWKRGVGRHV6XUJHRQKDYH"
)DPLO\'RFWRU
PDNHV+RXVH&DOOV

$GGV RQH QHZ


LQVWDQFH YDULDEOH

JLYH$GYLFH

$GGV RQH QHZ PHWKRG

+RZPDQ\PHWKRGVGRHV)DPLO\'RFWRU
KDYH"
&DQD)DPLO\'RFWRUGRWUHDW3DWLHQW "
&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\RXWRGHQHWKHLQKHULWDQFH
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
WKHFRPPRQVWDWHDQGEHKDYLRU

FOODnTHETYPEOFFOODTHISANIMALEATS2IGHTNOW THERE
CANBEONLYTWOVALUESMEATORGRASS

7KHVHREMHFWVDUHDOODQLPDOVVR
ZHOOPDNHDFRPPRQVXSHUFODVV
FDOOHG$QLPDO

HUNGERnANINTREPRESENTINGTHEHUNGERLEVELOFTHEANIMAL
)TCHANGESDEPENDINGONWHENANDHOWMUCH THE
ANIMALEATS

:HOOSXWLQPHWKRGVDQGLQVWDQFH
YDULDEOHVWKDWDOODQLPDOVPLJKW
QHHG

BOUNDARIESnVALUESREPRESENTINGTHEHEIGHTANDWIDTHOF
THE@SPACEFOREXAMPLE X THATTHEANIMALSWILL
ROAMAROUNDIN
LOCATIONnTHE8AND9COORDINATESFORWHERETHEANIMALIS
INTHESPACE

$QLPDO
SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ

7EHAVEFOURMETHODS
MAKE.OISE nBEHAVIORFORWHENTHEANIMALISSUPPOSEDTO
MAKENOISE
EAT nBEHAVIORFORWHENTHEANIMALENCOUNTERSITS
PREFERREDFOODSOURCE MEATORGRASS

PDNH1RLVH
HDW
VOHHS
URDP

SLEEP nBEHAVIORFORWHENTHEANIMALISCONSIDEREDASLEEP
ROAM nBEHAVIORFORWHENTHEANIMALISNOTEATINGOR
SLEEPINGPROBABLYJUSTWANDERINGAROUNDWAITINGTOBUMP
INTOAFOODSOURCEORABOUNDARY 
/LRQ

VL]H
SLFWXUH
IRRG
SUH\

:ROI

&DW
+LSSR

VL]H
SLFWXUH
IRRG
SUH\

7LJHU

VL]H
SLFWXUH
IRRG
SUH\

'RJ

VL]H
SLFWXUH
IRRG
SUH\

VL]H
SLFWXUH
IRRG
SUH\

VL]H
SLFWXUH
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
BUTHELLSTILLHAVETHESAMEVARIABLESTHATTHEOTHER
!NIMALTYPESHAVE3AMEWITHDOG TIGER ANDSOON
"UTWHATABOUTBEHAVIOR

?PQKPUM\PWL[[PW]TL_MW^MZZQLM'

'HFLGHLIDVXEFODVV
QHHGVEHKDYLRUV PHWKRG
LPSOHPHQWDWLRQV WKDWDUHVSHFLF
WRWKDWSDUWLFXODUVXEFODVVW\SH
/RRNLQJDWWKH$QLPDOFODVV
ZHGHFLGHWKDWHDW DQG
PDNH1RLVH VKRXOGEHRYHUULGGHQ
E\WKHLQGLYLGXDOVXEFODVVHV

Licensed by
Eduard Simons
104038

$OESALIONMAKETHESAMENOISEASADOG$OES
ACATEATLIKEAHIPPO-AYBEINYOURVERSION BUT
INOURS EATINGANDMAKINGNOISEARE!NIMAL TYPE
SPECIlC7ECANTlGUREOUTHOWTOCODETHOSE
METHODSINSUCHAWAYTHATTHEYDWORKFORANY
ANIMAL/+ THATSNOTTRUE7ECOULDWRITETHE
MAKE.OISE METHOD FOREXAMPLE SOTHATALLITDOES
ISPLAYASOUNDlLEDElNEDINANINSTANCEVARIABLE
FORTHATTYPE BUTTHATSNOTVERYSPECIALIZED3OME
ANIMALSMIGHTMAKEDIFFERENTNOISES
FORDIFFERENTSITUATIONSLIKEONE
,PRQHEDG VV
FOREATING ANDANOTHERWHEN
BUMPINGINTOANENEMY ETC
SODQWHDWHU
3OJUSTASWITHTHE!MOEBA
OVERRIDINGTHE3HAPECLASSROTATE
METHOD TOGETMOREAMOEBA SPECIlCIN
OTHERWORDS UNIQUE BEHAVIOR WELLHAVE
TODOTHESAMEFOROUR!NIMALSUBCLASSES

,QWKHGRJ
FRPPXQLW\EDUNLQJLVDQ
LPSRUWDQWSDUWRIRXUFXOWXUDO
LGHQWLW\:HKDYHDXQLTXHVRXQG
DQGZHZDQWWKDWGLYHUVLW\WR
EHUHFRJQL]HGDQGUHVSHFWHG

$QLPDO
SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ
PDNH1RLVH
HDW
VOHHS
URDP


WKHVHWZRPHWKRGV\SHDHFW DQ
:HEHWWHURYHUULGHRW
OW
LPD
DQ
DFK
WH
DQGPDNH1RLVH V LILKD
HKDYLRUIRUHDWLQJDQGG
GHILQHLWVRZQVSHFRZFE
ORRNVOLNHVOHHS DQ
PDNLQJQRLVH)RUQQHULW
URDP FDQVWD\JH LF

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
HAVEEACHSUBCLASSOVERRIDETHEMAKE.OISE AND
EAT METHODS SOTHATTHERESNOMISTAKINGA$OG
BARKFROMA#ATMEOWQUITEINSULTINGTOBOTH
PARTIES !NDA(IPPOWONTEATLIKEA,ION
"UTPERHAPSTHERESMOREWECANDO7EHAVETO
LOOKATTHESUBCLASSESOF!NIMAL ANDSEEIFTWO
ORMORECANBEGROUPEDTOGETHERINSOMEWAY
ANDGIVENCODETHATSCOMMONTOONLYTHATNEW
GROUP7OLFAND$OGHAVESIMILARITIES3ODO
,ION 4IGER AND#AT


/RRNIRUPRUHRSSRUWXQLWLHVWRXVH
DEVWUDFWLRQE\QGLQJWZRRUPRUH
VXEFODVVHVWKDWPLJKWQHHGFRPPRQ
EHKDYLRU
:HORRNDWRXUFODVVHVDQGVHH
WKDW:ROIDQG'RJPLJKWKDYHVRPH
EHKDYLRULQFRPPRQDQGWKHVDPHJRHV
IRU/LRQ7LJHUDQG&DW

$QLPDO
SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ

Q
LI/LRKDYH
U
H
G
Q
R
XOG
,Z
+PPPUDQG&DWZPR RQ
P
H
7LJ WKLQJLQFR
VRPH

PDNH1RLVH
HDW
VOHHS
URDP

:ROIDQG R
JDUHERWKF
PD\EHWKH'
DQLQ
%27+FODVVUHHVVRPHWKLQJWKDWHV
VFRXOGXVH

/LRQ

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

:ROI

&DW
+LSSR

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

7LJHU

VL]H
'RJ
SLFWXUH
IRRG
PDNH1RLVH VL]H
SUH\
SLFWXUH
HDW
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
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
KLHUDUFK\ WKHZKROHNLQJGRPJHQXVSK\OXP
WKLQJ ZHFDQXVHWKHOHYHOWKDWPDNHVWKHPRVW
VHQVHIRUFODVVGHVLJQ:HOOXVHWKHELRORJLFDO
IDPLOLHVWRRUJDQL]HWKHDQLPDOVE\PDNLQJD
)HOLQHFODVVDQGD&DQLQHFODVV

$QLPDO

:HGHFLGHWKDW&DQLQHVFRXOGXVHDFRPPRQ
URDP PHWKRGEHFDXVHWKH\WHQGWRPRYHLQ
SDFNV:HDOVRVHHWKDW)HOLQHVFRXOGXVHD
FRPPRQURDP PHWKRGEHFDXVHWKH\WHQGWR
DYRLGRWKHUVRIWKHLURZQNLQG:HOOOHW+LSSR
FRQWLQXHWRXVHLWVLQKHULWHGURDP PHWKRG
WKHJHQHULFRQHLWJHWVIURP$QLPDO

SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ
PDNH1RLVH
HDW
VOHHS
URDP

6RZHUHGRQHZLWKWKHGHVLJQIRUQRZZHOO
FRPHEDFNWRLWODWHULQWKHFKDSWHU
)HOLQH

&DQLQH

URDP
+LSSR

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

URDP

/LRQ

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

'RJ
&DW
7LJHU

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

:ROI

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
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
FOURMETHODS"UTWHICHVERSIONOFTHOSE
METHODSGETSCALLED

PDNHDQHZ:ROIREMHFW

:ROIZ QHZ:ROI 

FDOOVWKHYHUVLRQLQ:ROI

ZPDNH1RLVH 

FDOOVWKHYHUVLRQLQ&DQLQH

ZURDP 

FDOOVWKHYHUVLRQLQ:ROI

ZHDW 

FDOOVWKHYHUVLRQLQ$QLPDO

ZVOHHS 

$QLPDO

PDNH1RLVH
HDW
VOHHS
URDP

&DQLQH
URDP

7HENYOUCALLAMETHODONANOBJECT
REFERENCE YOURECALLINGTHEMOSTSPECIlC
VERSIONOFTHEMETHODFORTHATOBJECTTYPE
)NOTHERWORDS THELOWESTONEWINS

:ROI

VL]H
PDNH1RLVH
SLFWXUH
HDW
IRRG
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
WALKINGUPTHEINHERITANCETREE
STARTINGATTHECLASSTYPEYOUINVOKED
THEMETHODONLIKETHE7OLFEXAMPLE
ONTHEPREVIOUSPAGE "UTWHAT
HAPPENSIFTHE*6-DOESNTEVERlND
AMATCH

A:

'OODQUESTION"UTYOUDONT
HAVETOWORRYABOUTTHAT4HECOMPILER
GUARANTEESTHATAPARTICULARMETHOD
ISCALLABLEFORASPECIFICREFERENCETYPE
BUTITDOESNTSAYORCARE FROMWHICH
CLASSTHATMETHODACTUALLYCOMESFROM
ATRUNTIME7ITHTHE7OLFEXAMPLE THE
COMPILERCHECKSFORASLEEP METHOD
BUTDOESNTCARETHATSLEEP ISACTUALLY
DEFINEDINANDINHERITEDFROM CLASS
!NIMAL2EMEMBERTHATIFACLASS
INHERITSAMETHOD ITHASTHEMETHOD

7HERETHEINHERITEDMETHODISDEFINED
INOTHERWORDS INWHICHSUPERCLASS
ITISDEFINED MAKESNODIFFERENCETO
THECOMPILER"UTATRUNTIME THE*6-
WILLALWAYSPICKTHERIGHTONE!ND
THERIGHTONEMEANS THEMOSTSPECIFIC
VERSIONFORTHATPARTICULAROBJECT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
%DWKURRP,6$7XE":HOOLWGRHVQWWR

3URGEON)3 !$OCTOR STILLGOOD

PH7KHUHODWLRQVKLSEHWZHHQP\7XE

4UBEXTENDS"ATHROOM SOUNDS
REASONABLE
5NTILYOUAPPLYTHE)3 !TEST

DQGP\%DWKURRPLV+$6$%DWKURRP
+$6$7XE7KDWPHDQV%DWKURRP
K D VD7XELQVWDQFHYDULDEOH

4OKNOWIFYOUVEDESIGNEDYOURTYPES
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
%DWKURRP

LQWVL]H
%XEEOHVE

7XEEDWKWXE
6LQNWKH6LQN

%XEEOHV
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
:ROIH[WHQGV&DQLQH
:ROIH[WHQGV$QLPDO

$QLPDO

PDNH1RLVH
HDW
VOHHS
URDP

&DQLQH,6$$QLPDO
:ROI,6$&DQLQH
:ROI,6$$QLPDO

&DQLQH
URDP

7ITHANINHERITANCETREELIKETHE
ONESHOWNHERE YOUREALWAYS
ALLOWEDTOSAYh7OLFEXTENDS
!NIMALvORh7OLF)3 !!NIMALv
)TMAKESNODIFFERENCEIF!NIMAL
ISTHESUPERCLASSOFTHESUPERCLASS
OF7OLF)NFACT ASLONGAS!NIMAL
ISSOMEWHEREINTHEINHERITANCE
HIERARCHYABOVE7OLF 7OLF)3 !
!NIMALWILLALWAYSBETRUE
4HESTRUCTUREOFTHE!NIMAL
INHERITANCETREESAYSTOTHEWORLD
h7OLF)3 !#ANINE SO7OLFCANDO
ANYTHINGA#ANINECANDO!ND
7OLF)3 !!NIMAL SO7OLFCANDO
ANYTHINGAN!NIMALCANDOv

:ROI

VL]H
PDNH1RLVH
SLFWXUH
HDW
IRRG
SUH\

)TMAKESNODIFFERENCEIF7OLF
OVERRIDESSOMEOFTHEMETHODS
IN!NIMALOR#ANINE!SFARAS
THEWORLDOFOTHERCODE IS
CONCERNED A7OLFCANDOTHOSE
FOURMETHODS(OWHEDOESTHEM
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

0DNH LW 6W
0W_LWaW]SVW_QNaW]^MOW\
aW]ZQVPMZQ\IVKMZQOP\'
4HERESOBVIOUSLYMORETOITTHANWHATWEVE
COVEREDSOFAR BUTWELLLOOKATALOTMORE//
ISSUESINTHENEXTCHAPTERWHEREWEEVENTUALLY
RElNEANDIMPROVEONSOMEOFTHEDESIGNWORK
WEDIDINTHISCHAPTER 

LFN

E
TSAREBLU
RUE
RED VIOLE HEREVERSEISNTT
RE
A
S
SE
T
2O
E
P
A
H
S A3
3QUAREI
AR
TSAREDE
BEER
ED VIOLE
R
RE
A
RINKSARE
S
2OSE
NOTALLD
T
U
B
K
N
$RI
HEONE
"EERIS A
TSHOWST MBER IF
A
H
T
E
N
ME
KEO
TURN-A
NSHIP2E
/+ YOUR FTHE)3 !RELATIO KESENSE
A
O
S
M
ST
WAY NES
!9MU
DS9 8)3
8EX TEN

&ORNOW THOUGH AGOODGUIDELINEISTOUSETHE


)3 !TEST)Fh8)3 !9vMAKESSENSE BOTHCLASSES
8AND9 SHOULDPROBABLYLIVEINTHESAME
INHERITANCEHIERARCHY#HANCESARE THEYHAVE
THESAMEOROVERLAPPINGBEHAVIORS

.HHSLQPLQGWKDWWKH
LQKHULWDQFH,6$UHODWLRQVKLS
ZRUNVLQRQO\RQHGLUHFWLRQ
4RIANGLE)3 !3HAPEMAKESSENSE SOYOUCAN
HAVE4RIANGLEEXTEND3HAPE
"UTTHEREVERSE3HAPE)3 !4RIANGLEDOES
NOTMAKESENSE SO3HAPESHOULDNOTEXTEND
4RIANGLE2EMEMBERTHATTHE)3 !RELATIONSHIP
IMPLIESTHATIF8)3 !9 THEN8CANDOANYTHING
A9CANDOANDPOSSIBLYMORE 

<QJ[YNW bX^[ YNWLRU


3XW D FKHFN QH[W WR WKH UHODWLRQVKLSV WKDW
PDNH VHQVH

2YHQ H[WHQGV .LWFKHQ


*XLWDU H[WHQGV ,QVWUXPHQW
3HUVRQ H[WHQGV (PSOR\HH
)HUUDUL H[WHQGV (QJLQH
)ULHG(JJ H[WHQGV )RRG
%HDJOH H[WHQGV 3HW
&RQWDLQHU H[WHQGV -DU
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
TOINHERITASUPERCLASSMETHOD BUT
WHATIFTHESUPERCLASSWANTSTOUSE
THESUBCLASSVERSIONOFTHEMETHOD

A:

!SUPERCLASSWONTNECESSARILY
KNOWABOUTANYOFITSSUBCLASSES
9OUMIGHTWRITEACLASSANDMUCH
LATERSOMEONEELSECOMESALONGAND
EXTENDSIT"UTEVENIFTHESUPERCLASS
CREATORDOESKNOWABOUTANDWANTS
TOUSE ASUBCLASSVERSIONOFAMETHOD
THERESNOSORTOFREVERSEORBACKWARDS
INHERITANCE4HINKABOUTIT CHILDREN
INHERITFROMPARENTS NOTTHEOTHERWAY
AROUND

Q:

)NASUBCLASS WHATIF)WANTTO
USE"/4(THESUPERCLASSVERSIONAND
MYOVERRIDINGSUBCLASSVERSIONOFA
METHOD)NOTHERWORDS )DONTWANT
TOCOMPLETELYREPLACETHESUPERCLASS
VERSION )JUSTWANTTOADDMORESTUFF
TOIT

A:

9OUCANDOTHIS!NDITSAN
IMPORTANTDESIGNFEATURE4HINKOFTHE
WORDhEXTENDSvASMEANING h)WANT
TOEXTENDTHEFUNCTIONALITYOFTHE
SUPERCLASSv
SXEOLFYRLGURDP ^
VXSHUURDP 
P\RZQURDPVWXII
`

?PW OM\[ \PM 8WZ[KPM _PW OM\[ \PM XWZKMTIQV'


PW_
\W SVW_ _PI\ I []JKTI[[ KIV
PW_\WSVW__PI\I[]JKTI[[KIV
QVPMZQ\NZWUQ\[[]XMZKTI[[
QVPMZQ\
NZWU Q\[ []XMZKTI[[
) []JKTI[[ QVPMZQ\[ UMUJMZ[ WN \PM
[]XMZKTI[[ 5MUJMZ[ QVKT]LM QV[\IVKM
^IZQIJTM[ IVL UM\PWL[ IT\PW]OP TI\MZ QV
\PQ[ JWWS _MTT TWWS I\ W\PMZ QVPMZQ\ML UMUJMZ[ )
[]XMZKTI[[ KIV KPWW[M _PM\PMZ WZ VW\ Q\ _IV\[ I
[]JKTI[[ \W QVPMZQ\ I XIZ\QK]TIZ UMUJMZ Ja \PM TM^MT WN
IKKM[[ \PM XIZ\QK]TIZ UMUJMZ Q[ OQ^MV
<PMZM IZM NW]Z IKKM[[ TM^MT[ \PI\ _MTT KW^MZ QV \PQ[ JWWS
5W^QVO NZWU UW[\ ZM[\ZQK\Q^M \W TMI[\ \PM NW]Z IKKM[[
TM^MT[ IZM"
SULYDWH

GHIDXOW

SURWHFWHG

SXEOLF

9OUCANDESIGNYOURSUPERCLASS
METHODSINSUCHAWAYTHATTHEY
CONTAINMETHODIMPLEMENTATIONS
THATWILLWORKFORANYSUBCLASS EVEN
THOUGHTHESUBCLASSESMAYSTILLNEED
TO@APPENDMORECODE)NYOURSUBCLASS
OVERRIDINGMETHOD YOUCANCALLTHE
SUPERCLASSVERSIONUSINGTHEKEYWORD
VXSHU)TSLIKESAYING hFIRSTGORUNTHE
SUPERCLASSVERSION THENCOMEBACKAND
FINISHWITHMYOWNCODEv

RI
WKLVFDOOVWKHLQKHULWHGYHUVLRQ
GR
WR
DFN
URDP WKHQFRPHVE
\RXURZQVXEFODVVVSHFLILFFRGH

)KKM[[ TM^MT[ KWV\ZWT _PW [MM[ _PI\ IVL IZM KZ]KQIT


\W PI^QVO _MTTLM[QOVML ZWJ][\ 2I^I KWLM .WZ VW_ _MTT
NWK][ R][\ WV X]JTQK IVL XZQ^I\M <PM Z]TM[ IZM [QUXTM NWZ
\PW[M \_W"
SXEOLF PHPEHUV DUH LQKHULWHG
SULYDWH PHPEHUV DUH QRW LQKHULWHG

?PMV I []JKTI[[ QVPMZQ\[ I UMUJMZ Q\ Q[ I[ QN \PM


[]JKTI[[ LMNQVML \PM UMUJMZ Q\[MTN 1V \PM ;PIXM
M`IUXTM ;Y]IZM QVPMZQ\ML \PM   IVL

  UM\PWL[ IVL \W \PM W]\[QLM _WZTL W\PMZ


KWLM \PM ;Y]IZM KTI[[ [QUXTa PI[ I   IVL

  UM\PWL


<PM UMUJMZ[ WN I KTI[[ QVKT]LM \PM ^IZQIJTM[ IVL
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
IMPLEMENTEDCODE THATSHOULDBESHAREDAMONG
MULTIPLECLASSESOFTHESAMEGENERALTYPE%XAMPLE
3QUARE #IRCLE AND4RIANGLEALLNEEDTOROTATEANDPLAY
SOUND SOPUTTINGTHATFUNCTIONALITYINASUPERCLASS3HAPE
MIGHTMAKESENSE ANDMAKESFOREASIERMAINTENANCEAND
EXTENSIBILITY"EAWARE HOWEVER THATWHILEINHERITANCEIS
ONEOFTHEKEYFEATURESOFOBJECT ORIENTEDPROGRAMMING
ITSNOTNECESSARILYTHEBESTWAYTOACHIEVEBEHAVIORREUSE
)TLLGETYOUSTARTED ANDOFTENITSTHERIGHTDESIGNCHOICE
BUTDESIGNPATTERNSWILLHELPYOUSEEOTHERMORESUBTLE
ANDmEXIBLEOPTIONS)FYOUDONTKNOWABOUTDESIGN
PATTERNS AGOODFOLLOW ONTOTHISBOOKWOULDBE(EAD&IRST
$ESIGN0ATTERNS

:MDD=LHGAFLK

 $VXEFODVVH[WHQGVDVXSHUFODVV
 $VXEFODVVLQKHULWVDOOSXEOLFLQVWDQFH
YDULDEOHVDQGPHWKRGVRIWKHVXSHUFODVVEXW
GRHVQRWLQKHULWWKHSULYDWHLQVWDQFHYDULDEOHV
DQGPHWKRGVRIWKHVXSHUFODVV

 ,QKHULWHGPHWKRGVFDQEHRYHUULGGHQLQVWDQFH
YDULDEOHVFDQQRWEHRYHUULGGHQ DOWKRXJKWKH\
FDQEHUHGHILQHGLQWKHVXEFODVVEXWWKDWV
QRWWKHVDPHWKLQJDQGWKHUHVDOPRVWQHYHUD
QHHGWRGRLW

 8VHWKH,6$WHVWWRYHULI\WKDW\RXU
LQKHULWDQFHKLHUDUFK\LVYDOLG,I;H[WHQGV<
WKHQ;,6$<PXVWPDNHVHQVH

'2127USEINHERITANCEJUSTSOTHATYOUCANREUSE
CODEFROMANOTHERCLASS IFTHERELATIONSHIPBETWEENTHE
SUPERCLASSANDSUBCLASSVIOLATEEITHEROFTHEABOVETWO
RULES&OREXAMPLE IMAGINEYOUWROTESPECIALPRINTING
CODEINTHE!LARMCLASSANDNOWYOUNEEDPRINTINGCODE
INTHE0IANOCLASS SOYOUHAVE0IANOEXTEND!LARMSOTHAT
0IANOINHERITSTHEPRINTINGCODE4HATMAKESNOSENSE!
0IANOISNOTAMORESPECIlCTYPEOF!LARM3OTHEPRINTING
CODESHOULDBEINA0RINTERCLASS THATALLPRINTABLEOBJECTS
CANTAKEADVANTAGEOFVIAA(!3 !RELATIONSHIP

 7KH,6$UHODWLRQVKLSZRUNVLQRQO\RQH
GLUHFWLRQ$+LSSRLVDQ$QLPDOEXWQRWDOO
$QLPDOVDUH+LSSRV

 :KHQDPHWKRGLVRYHUULGGHQLQDVXEFODVV
DQGWKDWPHWKRGLVLQYRNHGRQDQLQVWDQFHRI
WKHVXEFODVVWKHRYHUULGGHQYHUVLRQRIWKH
PHWKRGLVFDOOHG 7KHORZHVWRQHZLQV

 ,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
INASUPERCLASS4HATWAY WHENYOUNEEDTO
MODIFYIT YOUHAVEONLYONEPLACETOUPDATE
ANDTHECHANGEISMAGICALLYREmECTEDINALLTHE
CLASSESTHATINHERITTHATBEHAVIOR7ELL THERES
NOMAGICINVOLVED BUTITISPRETTYSIMPLE
MAKETHECHANGEANDCOMPILETHECLASS
AGAIN4HATSIT9OUDONTHAVETOTOUCHTHE
SUBCLASSES

<RXDYRLGGXSOLFDWH
FRGH
3XWFRPPRQFRGHLQRQHSODFHDQGOHW
WKHVXEFODVVHVLQKHULWWKDWFRGHIURPD
VXSHUFODVV:KHQ\RXZDQWWRFKDQJHWKDW

Licensed by
Eduard Simons
104038

*USTDELIVERTHENEWLY CHANGEDSUPERCLASS AND


ALLCLASSESTHATEXTENDITWILLAUTOMATICALLYUSE
THENEWVERSION

EHKDYLRU\RXKDYHWRPRGLI\LWLQRQO\
RQHSODFHDQGHYHU\ERG\HOVH LHDOOWKH
VXEFODVVHV VHHWKHFKDQJH

!*AVAPROGRAMISNOTHINGBUTAPILEOFCLASSES
SOTHESUBCLASSESDONTHAVETOBERECOMPILED
INORDERTOUSETHENEWVERSIONOFTHE
SUPERCLASS!SLONGASTHESUPERCLASSDOESNT
BREAKANYTHINGFORTHESUBCLASS EVERYTHINGS
lNE7ELLDISCUSSWHATTHEWORD@BREAK
MEANSINTHISCONTEXT LATERINTHEBOOK&OR
NOW THINKOFITASMODIFYINGSOMETHINGIN
THESUPERCLASSTHATTHESUBCLASSISDEPENDING
ON LIKEAPARTICULARMETHODSARGUMENTSOR
RETURNTYPE ORMETHODNAME ETC

<RXGHQHDFRPPRQ
SURWRFROIRUDJURXSRI
FODVVHV
8PZKDW
WKHKHFNGRHV
7+$7PHDQ"

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
[M\WNKTI[[M[ZMTI\ML\PZW]OPQVPMZQ\IVKM
7HENYOUDElNEMETHODSINASUPERCLASS THATCANBE
INHERITEDBYSUBCLASSES YOUREANNOUNCINGAKINDOF
PROTOCOLTOOTHERCODETHATSAYS h!LLMYSUBTYPESIE
SUBCLASSES CANDOTHESETHINGS WITHTHESEMETHODS
THATLOOKLIKETHISv
)NOTHERWORDS YOUESTABLISHACONTRACT
#LASS!NIMALESTABLISHESACOMMONPROTOCOLFORALL
!NIMALSUBTYPES
$QLPDO

PDNH1RLVH
HDW
VOHHS
URDP

RUOGWKDW
<RXUHWHOOLQJWKHZ HVHIRXU
DQ\$QLPDOFDQGRWKWKHPHWKRG
WKLQJV7KDWLQFOXGHVQW\SHV
DUJXPHQWVDQGUHWXU

!NDREMEMBER WHENWESAYANY!NIMAL WEMEAN


!NIMALANDANYCLASSTHATEXTENDSFROM!NIMAL7HICH
AGAINMEANS ANYCLASSTHATHAS!NIMALSOMEWHEREABOVEIT
INTHEINHERITANCEHIERARCHY
"UTWERENOTEVENATTHEREALLYCOOLPARTYET BECAUSE
WESAVEDTHEBESTPOLYMORPHISMFORLAST
7HENYOUDElNEASUPERTYPEFORAGROUPOFCLASSES
ANYSUBCLASSOFTHATSUPERTYPECANBESUBSTITUTEDWHERETHE
SUPERTYPEISEXPECTED
3AY WHAT

$QG,FDUHEHFDXVH
"ECAUSEYOUGETTOTAKEADVANTAGEOF
POLYMORPHISM

:KLFKPDWWHUVWRPH
EHFDXVH
"ECAUSEY OUGETTOREFERTOASUBCLASS
OBJECTUSINGAREFERENCEDECLAREDASTHE
SUPERTYPE

$QGWKDWPHDQVWRPH
9OUGETTOWRITEREALLYmEXIBLECODE
#ODETHATSCLEANERMOREEFlCIENT
SIMPLER #ODETHATSNOTJUSTEASIERTO
DEVELOP BUTALSOMUCH MUCHEASIERTO
EXTEND INWAYSYOUNEVERIMAGINEDAT
THETIMEYOUORIGINALLYWROTEYOURCODE
4HATMEANSYOUCANTAKETHATTROPICAL
VACATIONWHILEYOURCO WORKERSUPDATE
THEPROGRAM ANDYOURCO WORKERSMIGHT
NOTEVENNEEDYOURSOURCECODE
9OULLSEEHOWITWORKSONTHENEXTPAGE
7EDONTKNOWABOUTYOU BUT
PERSONALLY WElNDTHEWHOLE
TROPICALVACATIONTHING
PARTICULARLYMOTIVATING

$ONTWORRY WERENOWHERENEARDONEEXPLAININGIT
4WOPAGESFROMNOW YOULLBEANEXPERT

:KHQZHVD\DOOWKHPHWKRGVZHPHDQDOOWKHLQKHULWDEOHPHWKRGVZKLFK
IRUQRZDFWXDOO\PHDQVDOOWKHSXEOLFPHWKRGVDOWKRXJKODWHUZHOOUHILQHWKDW
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
DQGORRNDWWKHZD\ZH
QRUPDOO\GHFODUHDUHIHUHQFH
DQGFUHDWHDQREMHFW

'RJP\'RJ QHZ'RJ 

'HFODUHDUHIHUHQFH
YDULDEOH

'RJP\'RJ QHZ'RJ 
4ELLSTHE*6-TOALLOCATESPACEFORA
REFERENCEVARIABLE4HEREFERENCEVARIABLE
IS FOREVER OFTYPE$OG)NOTHERWORDS
AREMOTECONTROLTHATHASBUTTONSTO
CONTROLA$OG BUTNOTA#ATORA"UTTON
ORA3OCKET

eq<g_
'RJ

&UHDWHDQREMHFW

'RJP\'RJ

QHZ'RJ 

4ELLSTHE*6-TOALLOCATESPACEFOR
ANEW$OGOBJECTONTHEGARBAGE
COLLECTIBLEHEAP

'RJREMHFW


'RJP\'RJ

/LQNWKHREMHFW
DQGWKHUHIHUHQFH

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
6WLOOQRWJHWWLQLW

7HENYOUDECLAREAREFERENCEVARIABLE
ANYOBJECTTHATPASSESTHE)3 !TESTFORTHE
DECLAREDTYPEOFTHEREFERENCEVARIABLE
CANBEASSIGNEDTOTHATREFERENCE)N
OTHERWORDS ANYTHINGTHATEXTENDSTHE
DECLAREDREFERENCEVARIABLETYPECAN
BEASSIGNEDTOTHEREFERENCE
VARIABLE4HISLETSYOUDO
THINGSLIKEMAKEPOLYMORPHIC
ARRAYS

2.2.PD\EHDQH[DPSOHZLOOKHOS

GV
RWKHUZRDUO

,Q

O
D
LP
Q
$QLP
W\SH$
DUUD\RIKROGREMHFWVRIW\SH
Q
D

H
U
OD
F
H
'
KDWZLOO
DQDUUD\W

$QLPDO>@DQLPDOV QHZ$QLPDO>@
DQLPDOV>@ QHZ'RJ 

%XWORRNZKDW\RXJHWWRGR\RXFDQSXW$1<
VXEFODVVRI$QLPDOLQWKH$QLPDODUUD\

DQLPDOV>@ QHZ&DW 
DQLPDOV>@ QHZ:ROI 
DQLPDOV>@ QHZ+LSSR 
DQLPDOV>@ QHZ/LRQ 

IRU LQWL LDQLPDOVOHQJWKL ^




$QGKHUHVW
UDLVRQGrWU KHEHVWSRO\PRUSKLFSD
JHWWRORRSWHIRUWKHZKROHH[DPSOHUW WKH
RIWKH$QLP KURXJKWKHDUUD\DQG \RX
REMHFWGRHV DOFODVVPHWKRGVDQGHFDOORQH
WKHULJKWWK
YHU\
LQJ

DQLPDOV>L@HDW 

DQLPDOV>L@URDP 
`

:KHQLLVD'RJLVDWLQGH[LQWKHDUUD\VR
\RXJHWWKH'RJVHDW PHWKRG:KHQLLV\RX
JHWWKH&DWVHDW 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

%XWZDLW7KHUHVPRUH
<RXFDQKDYHSRO\PRUSKLF
DUJXPHQWVDQGUHWXUQW\SHV
)FYOUCANDECLAREAREFERENCEVARIABLE
OFASUPERTYPE SAY !NIMAL ANDASSIGNA
SUBCLASSOBJECTTOIT SAY $OG THINKOFHOW
THATMIGHTWORKWHENTHEREFERENCEISAN
ARGUMENTTOAMETHOD

FODVV9HW^

SXEOLFYRLGJLYH6KRW $QLPDOD ^
GRKRUULEOHWKLQJVWRWKH$QLPDODW
WKHRWKHUHQGRIWKHDSDUDPHWHU
DPDNH1RLVH 
`

7KH$QLPDOSDU
$QLPDOW\SHDVWDPKHHWHUFDQWDNH$1<
WKH9HWLVGRQHJL DUJXPHQW$QGZKHQ
$QLPDOWRPDNH1RLYLQJWKHVKRWLWWHOOVWKH
LVUHDOO\RXWWKHUH VH DQGZKDWHYHU$QLPDO
RQWKHKHDSWKDW
ZKRVHPDNH1RLVH P
HWKRGZLOOUXQ V

FODVV3HW2ZQHU^
SXEOLFYRLGVWDUW ^

9HWY

QHZ9HW 

'RJG QHZ'RJ 

KRGFDQWDNHDQ\
7KH9HWVJLYH6KRW PHWQJDVWKHREMHFW
$QLPDO\RXJLYHLW$VORPHQWLVDVXEFODVVRI
\RXSDVVLQDVWKHDUJX
$QLPDOLWZLOOZRUN

+LSSRK QHZ+LSSR 
YJLYH6KRW G 
YJLYH6KRW K 

'RJVPDNH1RLVH UXQV

+LSSRVPDNH1RLVH 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
ONTHELEVELSOFSUBCLASSING(OW
DEEPCANYOUGO

#ANYOUEXTENDANYCLASS/R
ISITLIKECLASSMEMBERSWHEREIFTHE
CLASSISPRIVATEYOUCANTINHERITIT

Q:

Q:

A:

A:

A:

)FYOULOOKINTHE*AVA!0)
YOULLSEETHATMOSTINHERITANCE
HIERARCHIESAREWIDEBUTNOTDEEP
-OSTARENOMORETHANONEORTWO
LEVELSDEEP ALTHOUGHTHEREARE
EXCEPTIONSESPECIALLYINTHE'5)
CLASSES 9OULLCOMETOREALIZETHAT
ITUSUALLYMAKESMORESENSETOKEEP
YOURINHERITANCETREESSHALLOW BUT
THEREISNTAHARDLIMITWELL NOTONE
THATYOUDEVERRUNINTO 

Q:

(EY )JUSTTHOUGHTOF
SOMETHINGIFYOUDONTHAVE
ACCESSTOTHESOURCECODEFORACLASS
BUTYOUWANTTOCHANGETHEWAYA
METHODOFTHATCLASSWORKS COULD
YOUUSESUBCLASSINGTODOTHAT4O
EXTENDTHEhBADvCLASSANDOVERRIDE
THEMETHODWITHYOUROWNBETTER
CODE

A:

9EP4HATSONECOOLFEATURE
OF// ANDSOMETIMESITSAVESYOU
FROMHAVINGTOREWRITETHECLASS
FROMSCRATCH ORTRACKDOWNTHE
PROGRAMMERWHOHIDTHESOURCECODE

4HERESNOSUCHTHINGASA
PRIVATECLASS EXCEPTINAVERYSPECIAL
CASECALLEDANINNERCLASS THATWE
HAVENTLOOKEDATYET"UTTHEREARE
THREETHINGSTHATCANPREVENTACLASS
FROMBEINGSUBCLASSED
4HEFIRSTISACCESSCONTROL%VENTHOUGH
ACLASSCANTBEMARKEDSULYDWH A
CLASSCANBENON PUBLICWHATYOU
GETIFYOUDONTDECLARETHECLASSAS
SXEOLF !NON PUBLICCLASSCANBE
SUBCLASSEDONLYBYCLASSESINTHE
SAMEPACKAGEASTHECLASS#LASSESIN
ADIFFERENTPACKAGEWONTBEABLETO
SUBCLASSOREVENUSE FORTHATMATTER
THENON PUBLICCLASS
4HESECONDTHINGTHATSTOPSACLASS
FROMBEINGSUBCLASSEDISTHEKEYWORD
MODIFIERQDO!FINALCLASSMEANS
THATITSTHEENDOFTHEINHERITANCE
LINE.OBODY EVER CANEXTENDAFINAL
CLASS
4HETHIRDISSUEISTHATIFACLASSHAS
ONLYSULYDWHCONSTRUCTORSWELL
LOOKATCONSTRUCTORSINCHAPTER IT
CANTBESUBCLASSED

7HYWOULDYOUEVERWANTTO
MAKEAlNALCLASS7HATADVANTAGE
WOULDTHEREBEINPREVENTINGACLASS
FROMBEINGSUBCLASSED

4YPICALLY YOUWONTMAKEYOUR
CLASSESFINAL"UTIFYOUNEEDSECURITY
THESECURITYOFKNOWINGTHATTHE
METHODSWILLALWAYSWORKTHEWAY
THATYOUWROTETHEMBECAUSETHEY
CANTBEOVERRIDDEN AFINALCLASS
WILLGIVEYOUTHAT!LOTOFCLASSESIN
THE*AVA!0)AREFINALFORTHATREASON
4HE3TRINGCLASS FOREXAMPLE ISFINAL
BECAUSE WELL IMAGINETHEHAVOCIF
SOMEBODYCAMEALONGANDCHANGED
THEWAY3TRINGSBEHAVE

Q:

#ANYOUMAKEAMETHODlNAL
WITHOUTMAKINGTHEWHOLECLASS
lNAL

A:

)FYOUWANTTOPROTECTASPECIFIC
METHODFROMBEINGOVERRIDDEN MARK
THEMETHODWITHTHEQDOMODIFIER
-ARKTHEWHOLECLASSASFINALIFYOU
WANTTOGUARANTEETHATNONEOFTHE
METHODSINTHATCLASSWILLEVERBE
OVERRIDDEN

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
ANDRETURNTYPESOFYOUROVERRIDINGMETHODMUSTLOOKTOTHEOUTSIDE
WORLDEXACTLYLIKETHEOVERRIDDENMETHODINTHESUPERCLASS

ERROHDQWXUQ2Q

4HEMETHODSARETHECONTRACT

ERROHDQWXUQ2II

$SSOLDQFH

)FPOLYMORPHISMISGOINGTOWORK THE4
OASTERSVERSIONOFTHE
OVERRIDDENMETHODFROM!PPLIANCEHASTOWORKATRUNTIME
2EMEMBER THECOMPILERLOOKSATTHEREFERENCETYPETODECIDE
WHETHERYOUCANCALLAPARTICULARMETHODONTHATREFERENCE7ITH
AN!PPLIANCEREFERENCETOA4OASTER THECOMPILERCARESONLYIFCLASS
!PPLIANCEHASTHEMETHODYOUREINVOKINGONAN!PPLIANCEREFERENCE
7RDVWHU
"UTATRUNTIME THE*6-LOOKSNOTATTHEREFERENCETYPE!PPLIANCE BUT
ATTHEACTUAL4OASTEROBJECTONTHEHEAP3OIFTHECOMPILERHASALREADY
ERROHDQWXUQ2Q LQWOHYHO
DQ
APPROVEDTHEMETHODCALL THEONLYWAYITCANWORKISIFTHEOVERRIDING

7
2
1

LV

7KLV H 
METHODHASTHESAMEARGUMENTSANDRETURNTYPES/THERWISE
RYHUULG
SOMEONEWITHAN!PPLIANCEREFERENCEWILLCALLTURN/N ASANO
JHWKH
ARGMETHOD EVENTHOUGHTHERESAVERSIONIN4OASTERTHATTAKESAN
&DQWFQKWDVQ LQDQ
DUJXPH LQJPHWKRG
INT7HICHONEISCALLEDATRUNTIME4HEONEIN!PPLIANCE)NOTHER
7KLVLVDFWXDOO\DOHJDO
RYHUULG
WORDS THETURN/NINTLEVEL METHODIN4OASTERISNOTANOVERRIDE


$UJXPHQWVPXVWEHWKHVDPHDQGUHWXUQ
W\SHVPXVWEHFRPSDWLEOH
7KHFRQWUDFWRIVXSHUFODVVGHQHVKRZRWKHUFRGHFDQXVHDPHWKRG
:KDWHYHUWKHVXSHUFODVVWDNHVDVDQDUJXPHQWWKHVXEFODVVRYHU
ULGLQJWKHPHWKRGPXVWXVHWKDWVDPHDUJXPHQW$QGZKDWHYHUWKH
VXSHUFODVVGHFODUHVDVDUHWXUQW\SHWKHRYHUULGLQJPHWKRGPXVWGH
FODUHHLWKHUWKHVDPHW\SHRUDVXEFODVVW\SH5HPHPEHUDVXEFODVV
REMHFWLVJXDUDQWHHGWREHDEOHWRGRDQ\WKLQJLWVVXSHUFODVVGHFODUHV
VRLWVVDIHWRUHWXUQDVXEFODVVZKHUHWKHVXSHUFODVVLVH[SHFWHG

RYHU/2$'EXWQRWD
Q
RYHU5,'(

$SSOLDQFH

SXEOLFERROHDQWXUQ2Q
SXEOLFERROHDQWXUQ2Q

7KHPHWKRGFDQWEHOHVVDFFHVVLEOH
7KDWPHDQVWKHDFFHVVOHYHOPXVWEHWKHVDPHRUIULHQGOLHU7KDW
PHDQV\RXFDQWIRUH[DPSOHRYHUULGHDSXEOLFPHWKRGDQGPDNH
LWSULYDWH:KDWDVKRFNWKDWZRXOGEHWRWKHFRGHLQYRNLQJZKDWLW
WKLQNV DWFRPSLOHWLPH LVDSXEOLFPHWKRGLIVXGGHQO\DWUXQWLPH
WKH-90VODPPHGWKHGRRUVKXWEHFDXVHWKHRYHUULGLQJYHUVLRQ
FDOOHGDWUXQWLPHLVSULYDWH
6RIDUZHYHOHDUQHGDERXWWZRDFFHVVOHYHOVSULYDWHDQGSXEOLF
7KHRWKHUWZRDUHLQWKHGHSOR\PHQWFKDSWHU 5HOHDVH\RXU&RGH 
DQGDSSHQGL[%7KHUHVDOVRDQRWKHUUXOHDERXWRYHUULGLQJUHODWHG
WRH[FHSWLRQKDQGOLQJEXWZHOOZDLWXQWLOWKHFKDSWHURQH[FHSWLRQV
5LVN\%HKDYLRU WRFRYHUWKDW


127/(*$/
7RDVWHU
DO
J
H
O
D
W
R
Q
V
,W
FDXVH\RXVV
RYHUULGHEGHW
KHDFFH SULYDWHERROHDQWXUQ2Q
UHVWULFWH LVLWDOHJDO
OHYHO1RU'EHFDXVH
RYHU/2$WFKDQJH
\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
MXVWDGLIIHUHQWPHWKRGWKDW
KDSSHQVWRKDYHWKHVDPH
PHWKRGQDPH,WKDVQRWKLQJ
WRGRZLWKLQKHULWDQFHDQG
SRO\PRUSKLVP$QRYHUORDGHG
PHWKRGLV127WKHVDPHDV
DQRYHUULGGHQPHWKRG

/VERLOADINGLETSYOUMAKEMULTIPLEVERSIONS
OFAMETHOD WITHDIFFERENTARGUMENTLISTS FOR
CONVENIENCETOTHECALLERS&OREXAMPLE IFYOU
HAVEAMETHODTHATTAKESONLYANINT THECALLING
CODEHASTOCONVERT SAY ADOUBLEINTOANINT
BEFORECALLINGYOURMETHOD"UTIFYOUOVERLOADED
THEMETHODWITHANOTHERVERSIONTHATTAKESA
DOUBLE THENYOUVEMADETHINGSEASIERFORTHE
CALLER9OULLSEEMOREOFTHISWHENWELOOKINTO
CONSTRUCTORSINTHEOBJECTLIFECYCLECHAPTER
3INCEANOVERLOADINGMETHODISNTTRYINGTO
FULlLLTHEPOLYMORPHISMCONTRACTDElNEDBYITS
SUPERCLASS OVERLOADEDMETHODSHAVEMUCHMORE
mEXIBILITY


7KHUHWXUQW\SHVFDQEH
GLIIHUHQW

/HJDOH[DPSOHVRIPHWKRG
RYHUORDGLQJ

<RXUHIUHHWRFKDQJHWKHUHWXUQW\SHVLQ
RYHUORDGHGPHWKRGVDVORQJDVWKHDUJXPHQWOLVWV
DUHGLIIHUHQW

SXEOLFFODVV2YHUORDGV^

<RXFDQWFKDQJH21/<WKH
UHWXUQW\SH

SXEOLFLQWDGG1XPV LQWDLQWE ^
UHWXUQDE
`

,IRQO\WKHUHWXUQW\SHLVGLIIHUHQWLWVQRWD
YDOLGRYHUORDGWKHFRPSLOHUZLOODVVXPH
\RXUHWU\LQJWRRYHUULGHWKHPHWKRG$QGHYHQ
WKDWZRQWEHOHJDOXQOHVVWKHUHWXUQW\SHLV
DVXEW\SHRIWKHUHWXUQW\SHGHFODUHGLQWKH
VXSHUFODVV7RRYHUORDGDPHWKRG\RX0867
FKDQJHWKHDUJXPHQWOLVWDOWKRXJK\RXFDQ
FKDQJHWKHUHWXUQW\SHWRDQ\WKLQJ

<RXFDQYDU\WKHDFFHVV
OHYHOVLQDQ\GLUHFWLRQ
<RXUHIUHHWRRYHUORDGDPHWKRGZLWKDPHWKRG
WKDWVPRUHUHVWULFWLYH,WGRHVQWPDWWHUVLQFHWKH
QHZPHWKRGLVQWREOLJDWHGWRIXOOOWKHFRQWUDFWRI
WKHRYHUORDGHGPHWKRG

6WULQJXQLTXH,'

SXEOLFGRXEOHDGG1XPV GRXEOHDGRXEOHE ^
UHWXUQDE
`
SXEOLFYRLGVHW8QLTXH,' 6WULQJWKH,' ^
ORWVRIYDOLGDWLRQFRGHDQGWKHQ
XQLTXH,' WKH,'
`
SXEOLFYRLGVHW8QLTXH,' LQWVV1XPEHU ^
6WULQJQXP6WULQJ VV1XPEHU
VHW8QLTXH,' QXP6WULQJ 
`
`

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
THEPROGRAMISMISSING9OURCHALLENGEISTOMATCH
THECANDIDATEBLOCKOFCODEONTHELEFT WITHTHE
OUTPUTTHATYOUDSEEIFTHEBLOCKWEREINSERTED
.OTALLTHELINESOFOUTPUTWILLBEUSED ANDSOMEOF
THELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE
$RAWLINESCONNECTINGTHECANDIDATEBLOCKSOF
CODEWITHTHEIRMATCHINGCOMMAND LINEOUTPUT

8Q[HG
MInZAJM[
1dQ^OU_Q

D  


E  
D  

\PMXZWOZIU"
FODVV$^
LQWLYDU 
YRLGP ^
6\VWHPRXWSULQW $VP 
`
YRLGP ^
6\VWHPRXWSULQW $VP 
`
YRLGP ^
6\VWHPRXWSULQW $VP 
`
`

FODVV&H[WHQGV%^
YRLGP ^
6\VWHPRXWSULQW &VP LYDU 
`
`

Licensed by
Eduard Simons
104038

FODVV%H[WHQGV$^
YRLGP ^
6\VWHPRXWSULQW %VP 
`
`

KWLM
KIVLQLI\M["

EP 
FP 
DP 

`
`
`
`

FP 
FP 
FP 
DP 
EP 
FP 

DP 
DP 
DP 

SXEOLFFODVV0L[HG^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$D QHZ$ 
%E QHZ% 
&F QHZ& 
$D QHZ& 
KIVLQLI\MKWLM

OWM[PMZM
\PZMMTQVM[

`
`

W]\X]\"
$VP$VP&VP
%VP$VP$VP
$VP%VP$VP
%VP$VP&VP
%VP&VP$VP
%VP$VP&VP
$VP$VP&VP

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LQVHUWHGLQWRWKHFODVVHVRQWKHOHIWZRXOGFRPSLOHDQG
SURGXFHWKHRXWSXWVKRZQ" 7KH$PHWKRGLQVHUWHGLQWR
FODVV0RQVWHUWKH%PHWKRGLQVHUWHGLQWRFODVV9DPSLUH

1dQ^OU_Q
SXEOLFFODVV0RQVWHU7HVW'ULYH^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

ERROHDQIULJKWHQ LQWG ^


)

0RQVWHU>@PD QHZ0RQVWHU>@

6\VWHPRXWSULQWOQ DUUUJK 
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[ ^

FODVV'UDJRQH[WHQGV0RQVWHU^
ERROHDQIULJKWHQ LQWGHJUHH ^

6\VWHPRXWSULQWOQ DELWH" 
UHWXUQWUXH
`

6\VWHPRXWSULQWOQ EUHDWKUH 
UHWXUQWUXH
`
`

)LOH(GLW:LQGRZ+HOS6DYH<RXUVHOI
)LOH(GLW:LQGRZ+HOS6OHHS

MDYD0RQVWHU7HVW'ULYH
MDYD7HVW$UUD\V
DELWH" )LML
LVODQG
EUHDWKILUH
LVODQG
&R]XPHO
DUUUJK %HUPXGD
LVODQG
LVODQG $]RUHV

ERROHDQIULJKWHQ LQW] ^


)

6\VWHPRXWSULQWOQ DUUUJK 
UHWXUQWUXH
`
ERROHDQIULJKWHQ E\WHE ^

6\VWHPRXWSULQWOQ DELWH" 
UHWXUQWUXH
`

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

SXEOLFFODVVBBBBBBBB^

EVHW/HQJWK  

SULYDWHLQWBBBBBBBBBB

EBBBBBBBBBB 

BBBBBBBYRLGBBBBBBBBB BBBBBB ^

EBBBBBBBBBB 

OHQJWK OHQ

BBBBBBBPRYH 

`
SXEOLFLQWJHW/HQJWK ^

`
`

BBBBBBBBBBBBBBBBB

SXEOLFFODVVBBBBBBBBBBBBBBBBBB%RDW^

`

SXEOLFBBBBBBBBBBBBBBBB ^

SXEOLFBBBBBBBBBBBPRYH ^

6\VWHPRXWSULQW BBBBBBBBBBB 

6\VWHPRXWSULQW BBBBBBBBBBB 

`
`

5RZERDWBBBBBBBB QHZ5RZERDW 

`
`

/54054



2OWBOAT
3AILBOAT
"OAT
RETURN
CONTINUE
BREAK
B
B B LENGTH
LEN

4ESTBOATS

GULIWGULIWKRLVWVDLO

SUBCLASSES
EXTENDS

DRIFT HOISTSAIL
STROKENATASHA
ROW4HE"OAT
INTLENGTH 3TRING
MOVE
INTB
SET,ENGTH
VOID
INTB
PUBLIC
INTB
INT STATIC
GET,ENGTH
PRIVATE
INTB
INTLEN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

%XERCISE

6HWZLOOQRWFRPSLOHEHFDXVHRI9DPSLUHVUHWXUQ
W\SH LQW 

3OLUTIONS

7KH9DPSLUHVIULJKWHQ PHWKRG % LVQRWDOHJDO


RYHUULGH25RYHUORDGRI0RQVWHUVIULJKWHQ PHWKRG
&KDQJLQJ21/<WKHUHWXUQW\SHLVQRWHQRXJK
WRPDNHDYDOLGRYHUORDGDQGVLQFHDQLQWLVQRW
FRPSDWLEOHZLWKDERROHDQWKHPHWKRGLVQRWDYDOLG
RYHUULGH 5HPHPEHULI\RXFKDQJH21/<WKHUHWXUQ
W\SHLWPXVWEHWRDUHWXUQW\SHWKDWLVFRPSDWLEOH
ZLWKWKHVXSHUFODVVYHUVLRQVUHWXUQW\SHDQGWKHQLWV
DQRYHUULGH
6HWVDQGZLOOFRPSLOHEXWSURGXFH
DUUUJK
EUHDWKUH
DUUUJK
5HPHPEHUFODVV9DPSLUHGLGQRWRYHUULGHFODVV
0RQVWHUVIULJKWHQ PHWKRG 7KHIULJKWHQ PHWKRG
LQ9DPSLUHVVHWWDNHVDE\WHQRWDQLQW

KWLM
KIVLQLI\M["

8Q[HG
MInZAJM[

EP 
FP 
DP 

`
`

W]\X]\"

FP 
FP 
FP 

$VP$VP&VP
%VP$VP$VP
$VP%VP$VP
%VP$VP&VP

DP 
EP 
FP 

DP 
DP 
DP 

%VP&VP$VP
%VP$VP&VP
$VP$VP&VP

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
ITSOTHATDUPLICATECODEISKEPTTOAMINIMUM
ANDWEVEOVERRIDDENTHEMETHODSTHATWETHINK
SHOULDHAVESUBCLASS SPECIlCIMPLEMENTATIONS
7EVEMADEITNICEANDmEXIBLEFROMA
POLYMORPHICPERSPECTIVE BECAUSEWECANDESIGN
!NIMAL USINGPROGRAMSWITH!NIMALARGUMENTS
ANDARRAYDECLARATIONS SOTHATANY!NIMAL
SUBTYPEINCLUDINGTHOSEWENEVERIMAGINEDATTHE
TIMEWEWROTEOURCODECANBEPASSEDINANDUSED
ATRUNTIME7EVEPUTTHECOMMONPROTOCOLFOR
ALL!NIMALSTHEFOURMETHODSTHATWEWANTTHE
WORLDTOKNOWALL!NIMALSHAVE INTHE!NIMAL
SUPERCLASS ANDWEREREADYTOSTARTMAKINGNEW
,IONSAND4IGERSAND(IPPOS

SLFWXUH
IRRG
KXQJHU
ERXQGDULHV
ORFDWLRQ
PDNH1RLVH
HDW
VOHHS
URDP

)HOLQH
&DQLQH

URDP
+LSSR

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

URDP

/LRQ

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW
'RJ
&DW
7LJHU

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

:ROI

VL]H
SLFWXUH
IRRG
PDNH1RLVH
SUH\
HDW

VL]H
SLFWXUH
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.

LQWHUIDFHVDQGSRO\PRUSKLVP

:HNQRZZHFDQVD\
:ROID:ROI QHZ:ROI 

YOgd^

:

$:ROIUHIHUHQFHWRD
:ROIREMHFW
:ROI

ROIREMHFW

7KHVHWZRDUHWKHVDPHW\SH

$QGZHNQRZZHFDQVD\
$QLPDOD+LSSR QHZ+LSSR 

$QLPDOUHIHUHQFHWR
D+LSSRREMHFW

Y@ahhg

$QLPDO

+L
SSR

W
REMHF

7KHVHWZRDUH127WKHVDPHW\SH

%XWKHUHVZKHUHLWJHWVZHLUG
$QLPDODQLP QHZ$QLPDO 

"

Yfae

$Q
$QLPDO

LPDO EMHFW
R

$QLPDOUHIHUHQFHWR
DQ$QLPDOREMHFW

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
OBJECTORA4IGEROBJECT BUTWHATEXACTLYISAN
!NIMALOBJECT7HATSHAPEISIT7HATCOLOR SIZE
NUMBEROFLEGS
4RYINGTOCREATEANOBJECTOFTYPE!NIMALISLIKEA
NIGHTMARE3TAR4REKTRANSPORTERACCIDENT4HE
ONEWHERESOMEWHEREINTHEBEAM ME UPPROCESS
SOMETHINGBADHAPPENEDTOTHEBUFFER
"UTHOWDOWEDEALWITHTHIS7ENEEDAN!NIMAL
CLASS FORINHERITANCEANDPOLYMORPHISM"UTWE
WANTPROGRAMMERSTOINSTANTIATEONLYTHELESS
ABSTRACTSUBCLASSESOFCLASS!NIMAL NOT!NIMALITSELF
7EWANT4IGEROBJECTSAND,IONOBJECTS NOT!NIMAL
OBJECTS
&ORTUNATELY THERESASIMPLEWAYTOPREVENTACLASS
FROMEVERBEINGINSTANTIATED)NOTHERWORDS TOSTOP
ANYONEFROMSAYINGhQHZvONTHATTYPE"YMARKING
THECLASSASDEVWUDFW THECOMPILERWILLSTOPANY
CODE ANYWHERE FROMEVERCREATINGANINSTANCEOF
THATTYPE

9OUCANSTILLUSETHATABSTRACTTYPEASAREFERENCETYPE
)NFACT THATSABIGPARTOFWHYYOUHAVETHATA BSTRACT
CLASSINTHElRSTPLACETOUSEITASAPOLYMORPHIC
ARGUMENTORRETURNTYPE ORTOMAKEAPOLYMORPHIC
ARRAY 
7HENYOUREDESIGNINGYOURCLASSINHERITANCE
STRUCTURE YOUHAVETODECIDEWHICHCLASSESARE
ABSTRACTANDWHICHARECONCRETE#ONCRETECLASSESARE
THOSETHATARESPECIlCENOUGHTOBEINSTANTIATED!
CONCRETECLASSJUSTMEANSTHATITS/+TOMAKEOBJECTS
OFTHATTYPE
-AKINGACLASSABSTRACTISEASYPUTTHEKEYWORD
DEVWUDFWBEFORETHECLASSDECLARATION
DEVWUDFWFODVV&DQLQHH[WHQGV$QLPDO^
SXEOLFYRLGURDP ^`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ^`
`
SXEOLFFODVV0DNH&DQLQH^
SXEOLFYRLGJR ^
&DQLQHF
F QHZ'RJ 
F QHZ&DQLQH 
FURDP 
`
`

LJQ
QDOZD\VDVVUHQFH
D
F

X
R
\

VH
X
D
EHF
HIH
7KLVLV2.EMHFWWRDVXSHUFODVVU
R
W

DVXEFODVV VXSHUFODVVLVDEVWUDF
HYHQLIWKH

FODVV&DQLQH
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[FHSWLRQWRWKLVDQDEVWUDFWFODVVFDQ
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
ACONCRETECLASS)NTHE!NIMAL
INHERITANCETREE IFWEMAKE
!NIMAL #ANINE AND&ELINE
ABSTRACT THATLEAVES(IPPO 7OLF
$OG 4IGER ,ION AND#ATASTHE
CONCRETESUBCLASSES

$QLPDO

&LIPTHROUGHTHE*AVA!0)AND
YOULLlNDALOTOFABSTRACTCLASSES
ESPECIALLYINTHE'5)LIBRARY7HAT
DOESA'5)#OMPONENTLOOK
LIKE4HE#OMPONENTCLASSISTHE
SUPERCLASSOF'5) RELATEDCLASSES
FORTHINGSLIKEBUTTONS TEXTAREAS
SCROLLBARS DIALOGBOXES YOUNAME
IT9OUDONTMAKEANINSTANCEOF
AGENERIC#OMPONENTANDPUTITON
THESCREEN YOUMAKEA*"UTTON)N
OTHERWORDS YOUINSTANTIATEONLYA
CONCRETESUBCLASSOF#OMPONENT BUT
NEVER#OMPONENTITSELF

DEVWUDFW
&DQLQH

FRQFUHWH
+LSSR

DEVWUDFW
FRQFUHWH

)HOLQH

Licensed by
Eduard Simons
104038
FRQFUHWH

FRQFUHWH

&DW

FRQFUHWH

/LRQ

'RJ

:ROI

FRQFUHWH
7LJHU

YiX`e
gfn\i

DEVWUDFWRUFRQFUHWH"
(OWDOYOUKNOWWHENACLASSSHOULDBE
ABSTRACT7INEISPROBABLYABSTRACT"UTWHAT

+PPPPGR,

+PPPPWKH&DPHORW

IHHOOLNHUHGRU

9LQH\DUGV3LQRW

ZKLWHWRQLJKW"

ABOUT2EDAND7HITE!GAINPROBABLYABSTRACT

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
BEHAVIORSINANABSTRACTCLASSDONTMAKEANYSENSEUNLESSTHEYRE
IMPLEMENTEDBYAMORESPECIlCSUBCLASS)NOTHERWORDS YOUCANT
THINKOFANYGENERICMETHODIMPLEMENTATIONTHATCOULDPOSSIBLYBE
USEFULFORSUBCLASSES7HATWOULDAGENERICEAT METHODLOOKLIKE

,WUHDOO\VXFNVWR
EHDQDEVWUDFWPHWKRG
<RXGRQWKDYHDERG\

$QDEVWUDFWPHWKRGKDVQRERG\
"ECAUSEYOUVEALREADYDECIDEDTHEREISNTANYCODETHATWOULDMAKE
SENSEINTHEABSTRACTMETHOD YOUWONTPUTINAMETHODBODY3ONO
CURLYBRACESJUSTENDTHEDECLARATIONWITHASEMICOLON

SXEOLFDEVWUDFWYRLGHDW 

1RPHWKRGERDG\VHPLFRORQ
K
(QGLWZLW
,I\RXGHFODUHDQDEVWUDFWPHWKRG\RX0867
PDUNWKHFODVVDEVWUDFWDVZHOO<RXFDQWKDYH
DQDEVWUDFWPHWKRGLQDQRQDEVWUDFWFODVV
)FYOUPUTEVENASINGLEABSTRACTMETHODINACLASS YOUHAVETO
MAKETHECLASSABSTRACT"UTYOUCANMIXBOTHABSTRACTANDNON
ABSTRACTMETHODSINTHEABSTRACTCLASS

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

7HATISTHEPOINTOFANABSTRACTMETHOD)THOUGHT
THEWHOLEPOINTOFANABSTRACTCLASSWASTOHAVECOMMON
CODETHATCOULDBEINHERITEDBYSUBCLASSES

A:

)NHERITABLEMETHODIMPLEMENTATIONSINOTHERWORDS
METHODSWITHACTUALBODIES ARE!'OOD4HINGTOPUTINA
SUPERCLASS7HENITMAKESSENSE!NDINANABSTRACTCLASS IT
OFTENDOESNTMAKESENSE BECAUSEYOUCANTCOMEUPWITH
ANYGENERICCODETHATSUBCLASSESWOULDFINDUSEFUL4HE
POINTOFANABSTRACTMETHODISTHATEVENTHOUGHYOUHAVENT
PUTINANYACTUALMETHODCODE YOUVESTILLDEFINEDPARTOF
THEPROTOCOLFORAGROUPOFSUBTYPESSUBCLASSES 

Q:
A:

7HICHISGOODBECAUSE

0OLYMORPHISM2EMEMBER WHATYOUWANTISTHE
ABILITYTOUSEASUPERCLASSTYPEOFTENABSTRACT ASAMETHOD
ARGUMENT RETURNTYPE ORARRAYTYPE4HATWAY YOUGETTO
ADDNEWSUBTYPESLIKEANEW!NIMALSUBCLASS TOYOUR
PROGRAMWITHOUTHAVINGTOREWRITEORADD NEWMETHODS
TODEALWITHTHOSENEWTYPES)MAGINEHOWYOUDHAVETO
CHANGETHE6ETCLASS IFITDIDNTUSE!NIMALASITSARGUMENT
TYPEFORMETHODS9OUDHAVETOHAVEASEPARATEMETHOD
FOREVERYSINGLE!NIMALSUBCLASS/NETHATTAKESA,ION ONE
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-RHQDOO\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

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

?????????????????????

OWTNKW]Z[M[QU]TI\QWV

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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'RJVSHFLFOLVW

E RSI O

3HUKDSVWKHZRUOGVZRUVWDWWHPSWDWPDNLQJRXU
RZQ$UUD\/LVWNLQGRI FODVVIURPVFUDWFK

0\'RJ/LVW
'RJ>@GRJV
LQWQH[W,QGH[
DGG 'RJG

SXEOLFFODVV0\'RJ/LVW^
SULYDWH'RJ>@GRJV QHZ'RJ>@
SULYDWHLQWQH[W,QGH[ 


K
:HOOLQFUHPHQWWKLVHGGDFHG
D
LV
WLPHDQHZ'RJ

SXEOLFYRLGDGG 'RJG ^
LI QH[W,QGH[GRJVOHQJWK ^
GRJV>QH[W,QGH[@ G

'RJDUUD\
8VHDSODLQRVFOGHQHV
EHKLQGWKH

WKHOLPLW
,IZHUHQRWDOUHDG\DGGWWKH'RJ
RIWKHGRJVDUUD\D
DQGSULQWDPHVVDJH

6\VWHPRXWSULQWOQ 'RJDGGHGDWQH[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$QLPDOVSHFLFOLVW

SXEOLFFODVV0\$QLPDO/LVW^
E RSI O

0\$QLPDO/LVW
$QLPDO>@DQLPDOV
LQWQH[W,QGH[
DGG $QLPDOD

D
UHQRWPDNLQNJLQJD
H
:

LF
Q
D
S
W
'RQ
MHFWZHUHPD
QHZ$QLPDOREEMHFWRIW\SH$QLPDO
QHZDUUD\R \RXFDQQRWPDNHDQHZ
5HPHPEHUDQDEVWUDFWW\SHEXW
LQVWDQFHRI DNHDQDUUD\REMHFW
\RX&$1P +2/'WKDWW\SH
GHFODUHGWR

SULYDWH$QLPDO>@DQLPDOV QHZ$QLPDO>@
SULYDWHLQWQH[W,QGH[ 

SXEOLFYRLGDGG $QLPDOD ^
LI QH[W,QGH[DQLPDOVOHQJWK ^
DQLPDOV>QH[W,QGH[@ D
6\VWHPRXWSULQWOQ $QLPDODGGHGDWQH[W,QGH[ 
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'
V

4HENAGAIN MAYBEWEDO
2EMEMBERTHOSEMETHODSOF!RRAY,IST
,OOKHOWTHEREMOVE CONTAINS AND
INDEX/FMETHODALLUSEANOBJECTOFTYPE
/BJECT

(YHU\FODVVLQ-DYDH[WHQGV
FODVV2EMHFW
#LASS/BJECTISTHEMOTHEROFALLCLASSESITS
THESUPERCLASSOFEVERYTHING
%VENIFYOUTAKEADVANTAGEOFPOLYMORPHISM
YOUSTILLHAVETOCREATEACLASSWITHMETHODS
THATTAKEANDR ETURNYOURPOLYMORPHICTYPE
7ITHOUTACOMMONSUPERCLASSFOREVERYTHING
IN*AVA THEREDBENOWAYFORTHEDEVELOPERS
OF*AVATOCREATECLASSESWITHMETHODSTHAT
COULDTAKEYOURCUSTOMTYPESTYPESTHEYNEVER
KNEWABOUTWHENTHEYWROTETHE!RRAY,ISTCLASS

3OYOUWEREMAKINGSUBCLASSESOFCLASS/BJECT
FROMTHEVERYBEGINNINGANDYOUDIDNTEVEN
KNOWIT%VERYCLASSYOUWRITEEXTENDS/BJECT
WITHOUTYOUREVERHAVINGTOSAYIT"UTYOUCAN
THINKOFITASTHOUGHACLASSYOUWRITELOOKSLIKE
THIS

DIHZRIWKH
7KHVHDUHMXVWD\/LVWWKHUH
PHWKRGVLQ$UU 
DUHPDQ\PRUH

E RSI O

9OUKNOWWHERETHISISHEADING7EWANTTOCHANGETHE
TYPEOFTHEARRAY ALONGWITHTHEADD METHODARGUMENT TO
SOMETHINGABOVE!NIMAL3OMETHINGEVENMOREGENERIC MORE
ABSTRACTTHAN!NIMAL"UTHOWCANWEDOIT7EDONTHAVEA
SUPERCLASSFOR!NIMAL

!RRAY,IST
LEM
VE/BJECTE
O
ER2ETURNS
M
E
R
N
A
LE
O
DEXPARAMET
BO
JECTATTHEIN
OB
2EMOVESTHE
THELIST
LEMENTWASIN
@TRUEIFTHEE

BOOLEANCON

TAINS/BJECT

ELEM

IFTHERESAM
2ETURNS@TRUE

BOOLEANIS%

MPTY

IFTHE
2ETURNS@TRUE

ATCHFORTHEO

LISTHASNOEL

BJEC TPARAM

ETER

EMENTS


AMETER OR 
/BJECTELEM
INTINDEX/F ERTHEINDEXOFTHEOBJECTPAR
2ETURNSEITH
TINDEX
THELIST
/BJECTGETIN
SPOSITIONIN
2ETURNSTHE

BOOLEANADD

ELEMENTATT

HI


/BJECTELEM RETURNS@TRUE 
TTOTHELIST

!DDSTHEELEM

EN

MORE

SXEOLFFODVV'RJH[WHQGV2EMHFW^`
"UTWAITAMINUTE $OGALREADYEXTENDSSOMETHING #ANINE
4HATS/+4HECOMPILERWILLMAKE#ANINEEXTEND/BJECT
INSTEAD%XCEPT#ANINEEXTENDS!NIMAL.OPROBLEM THENTHE
COMPILERWILLJUSTMAKE!NIMALEXTEND/BJECT
$Q\FODVVWKDWGRHVQWH[SOLFLWO\H[WHQGDQRWKHU
FODVVLPSOLFLWO\H[WHQGV2EMHFW
3O SINCE$OGEXTENDS#ANINE ITDOESNTDIRECTLYEXTEND/BJECT
ALTHOUGHITDOESEXTENDITINDIRECTLY ANDTHESAMEISTRUE
FOR#ANINE BUT!NIMALDOESDIRECTLYEXTEND/BJECT


LVWPHWKRGVXVHWKH
/
D\
UU
$
KH
W
RI
\
FH
0DQ
LFW\SH2EMHFW6LQ
XOWLPDWHSRO\PRUSK LVDVXEFODVVRI2EMHFW
HYHU\FODVVLQ-DYDHWKRGVFDQWDNHDQ\WKLQJ 
WKHVH$UUD\/LVWP
KHJHW DQGDGG 
W


D
DY
RI
V
D

1RWH
RNDOLWWOHGLIIHUHQW
PHWKRGVDFWXDOO\ORQKHUHEXWIRUQRZWKLV
WKDQWKHRQHVVKRZ DERXWLW:HOOJHWLQWR
LVWKHZD\WRWKLQNWOHODWHU
WKHIXOOVWRU\DOLW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
METHODTHATLETSYOUlNDOUTIFONEOBJECTISEQUAL
TOANOTHEROBJECT7HATABOUTAMETHODTHATCAN
TELLYOUTHEACTUALCLASSTYPEOFTHATOBJECT-AYBEA
METHODTHATGIVESYOUAHASHCODEFORTHEOBJECT SO
YOUCANUSETHEOBJECTINHASHTABLESWELLTALKABOUT
*AVASHASHTABLESINCHAPTERANDAPPENDIX" 
/H HERESAGOODONEAMETHODTHATPRINTSOUTA
3TRINGMESSAGEFORTHATOBJECT
!NDWHATDOYOUKNOW!SIFBYMAGIC CLASS/BJECT
DOESINDEEDHAVEMETHODSFORTHOSEFOURTHINGS
4HATSNOTALL THOUGH BUTTHESEARETHEONESWE
REALLYCAREABOUT
 HTXDOV 2EMHFWR
'RJD QHZ'RJ 
&DWF QHZ&DW 

LI DHTXDOV F ^
6\VWHPRXWSULQWOQ WUXH 
`HOVH^
6\VWHPRXWSULQWOQ IDOVH 
`

2EMHFW
ERROHDQHTXDOV
&ODVVJHW&ODVV
LQWKDVK&RGH
6WULQJWR6WULQJ

<RXU&ODVV+HUH

WKHPHWKRGV
-XVW620(RI 
RIFODVV2EMHFW

(YHU\FODVV\RXZULWHLQKHULWVDOOWKH
PHWKRGVRIFODVV2EMHFW7KHFODVVHV
\RXYHZULWWHQLQKHULWHGPHWKRGV\RX
GLGQWHYHQN QRZ\RXKDG

 KDVK&RGH
&DWF QHZ&DW 
6\VWHPRXWSULQWOQ FKDVK&RGH 
)LOH(GLW:LQGRZ+HOS'URS

MDYD7HVW2EMHFW


)LOH(GLW:LQGRZ+HOS6WRS

MDYD7HVW2EMHFW
IDOVH

7HOOV\RXLIWZRREMHFWVDUH
FRQVLGHUHGHTXDO ZHOOWDON
DERXWZKDWHTXDOUHDOO\
PHDQVLQDSSHQGL[% 

KFRGH
3ULQWVRXWDKDV IRU
IRUWKHREMHFW WDVD
QRZWKLQNRIL
XQLTXH,' 

 WR6WULQJ
&DWF QHZ&DW 
6\VWHPRXWSULQWOQ FWR6WULQJ 
)LOH(GLW:LQGRZ+HOS/DSVH,QWR&RPD

MDYD7HVW2EMHFW

 JHW&ODVV
&DWF QHZ&DW 
6\VWHPRXWSULQWOQ FJHW&ODVV 
)LOH(GLW:LQGRZ+HOS)DLQW

MDYD7HVW2EMHFW
FODVV&DW

*LYHV\RXEDFNWKH
FODVVWKDWREMHFWZDV
LQVWDQWLDWHGIURP

&DW#GI

ULQJPHVVDJH
3ULQWVRXWD6WRIWKHFODVV
ZLWKWKHQDPH QXPEHUZH
DQGVRPHRWKHU W
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:
A:

)SCLASS/BJECTABSTRACT

.O7ELL NOTINTHEFORMAL
*AVASENSEANYWAY/BJECTISA
NON ABSTRACTCLASSBECAUSEITS
GOTMETHODIMPLEMENTATION
CODETHATALLCLASSESCANINHERIT
ANDUSEOUT OF THE BOX WITHOUT
HAVINGTOOVERRIDETHEMETHODS

Q:

4HENCANYOUOVERRIDE
THEMETHODSIN/BJECT

A:

3OMEOFTHEM"UTSOMEOF
THEMAREMARKEDQDO WHICH
MEANSYOUCANTOVERRIDETHEM
9OUREENCOURAGEDSTRONGLY TO
OVERRIDEHASH#ODE EQUALS
ANDTO3TRING INYOUROWN
CLASSES ANDYOULLLEARNHOWTO
DOTHATALITTLELATERINTHEBOOK
"UTSOMEOFTHEMETHODS LIKE
GET#LASS DOTHINGSTHATMUST
WORKINASPECIFIC GUARANTEED
WAY

Q:

)F!RRAY,ISTMETHODSARE
GENERICENOUGHTOUSE/BJECT
THENWHATDOESITMEANTOSAY
!RRAY,IST$OT#OM)THOUGHT
)WASRESTRICTINGTHE!RRAY,ISTTO
HOLDONLY$OT#OMOBJECTS

A:

9OUWERERESTRICTINGIT
0RIORTO*AVA !RRAY,ISTS
COULDNTBERESTRICTED4HEY
WEREALLESSENTIALLYWHATYOU
GETIN*AVATODAYIFYOUWRITE
!RRAY,IST/BJECT)NOTHER
WORDS AN!RRAY,ISTRESTRICTED
TOANYTHINGTHATSAN/BJECT
WHICHMEANSANYOBJECTIN*AVA
INSTANTIATEDFROMANYCLASSTYPE
7ELLCOVERTHEDETAILSOFTHISNEW
TYPESYNTAXLATERINTHEBOOK

Q:

/+ BACKTOCLASS/BJECT
BEINGNON ABSTRACTSO)GUESS
THATMEANSITSCONCRETE (/7
CANYOULETSOMEBODYMAKEAN
/BJECTOBJECT)SNTTHATJUST
ASWEIRDASMAKINGAN!NIMAL
OBJECT

A:

'OODQUESTION7HYIS
ITACCEPTABLETOMAKEANEW
/BJECTINSTANCE"ECAUSE
SOMETIMESYOUJUSTWANTA
GENERICOBJECTTOUSEAS WELL AS
ANOBJECT!LIGHTWEIGHTOBJECT
"YFAR THEMOSTCOMMONUSEOF
ANINSTANCEOFTYPE/BJECTISFOR
THREADSYNCHRONIZATIONWHICH
YOULLLEARNABOUTINCHAPTER 
&ORNOW JUSTSTICKTHATONTHE
BACKBURNERANDASSUMETHAT
YOUWILLRARELYMAKEOBJECTSOF
TYPE/BJECT EVENTHOUGHYOU
CAN

Q:

3OISITFAIRTOSAYTHATTHE
MAINPURPOSEFORTYPE/BJECT
ISSOTHATYOUCANUSEITFORA
POLYMORPHICARGUMENTAND
RETURNTYPE,IKEIN!RRAY,IST

A:

4HE/BJECTCLASSSERVES
TWOMAINPURPOSESTOACTASA
POLYMORPHICTYPEFORMETHODS
THATNEEDTOWORKONANYCLASS
THATYOUORANYONEELSEMAKES
ANDTOPROVIDEREALMETHODCODE
THATALLOBJECTSIN*AVANEEDAT
RUNTIMEANDPUTTINGTHEMIN
CLASS/BJECTMEANSALLOTHER
CLASSESINHERITTHEM 3OMEOF
THEMOSTIMPORTANTMETHODSIN
/BJECTARERELATEDTOTHREADS
ANDWELLSEETHOSELATERINTHE
BOOK

Q:

)FITSSOGOODTOUSE
POLYMORPHICTYPES WHY
DONTYOUJUSTMAKE!,,YOUR
METHODSTAKEANDRETURNTYPE
/BJECT

A:

!HHHHTHINKABOUTWHAT
WOULDHAPPEN&ORONETHING
YOUWOULDDEFEATTHEWHOLE
POINTOF@TYPE SAFETY ONE
OF*AVASGREATESTPROTECTION
MECHANISMSFORYOURCODE7ITH
TYPE SAFETY *AVAGUARANTEESTHAT
YOUWONTASKTHEWRONGOBJECT
TODOSOMETHINGYOUMEANTTO
ASKOFANOTHEROBJECTTYPE,IKE
ASKA&ERRARIWHICHYOUTHINKISA
4OASTER TOCOOKITSELF
"UTTHETRUTHIS YOUDONTHAVE
TOWORRYABOUTTHATFIERY&ERRARI
SCENARIO EVENIFYOUDOUSE
/BJECTREFERENCESFOREVERYTHING
"ECAUSEWHENOBJECTSARE
REFERREDTOBYAN/BJECT
REFERENCETYPE *AVATHINKSITS
REFERRINGTOANINSTANCEOFTYPE
/BJECT!NDTHATMEANSTHE
ONLYMETHODSYOUREALLOWEDTO
CALLONTHATOBJECTARETHEONES
DECLAREDINCLASS/BJECT3OIF
YOUWERETOSAY

2EMHFWR QHZ)HUUDUL 
RJR)DVW 1RWOHJDO
9OUWOULDNTEVENMAKEITPAST
THECOMPILER
"ECAUSE*AVAISASTRONGLY TYPED
LANGUAGE THECOMPILERCHECKS
TOMAKESURETHATYOURECALLING
AMETHODONANOBJECTTHATS
ACTUALLYCAPABLEOFRESPONDING
)NOTHERWORDS YOUCANCALLA
METHODONANOBJECTREFERENCE
ONLYIFTHECLASSOFTHEREFERENCE
TYPEACTUALLYHASTHEMETHOD
7ELLCOVERTHISINMUCHGREATER
DETAILALITTLELATER SODONTWORRY
IFTHEPICTUREISNTCRYSTALCLEAR

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
$UUD\/LVW'RJ!P\'RJ$UUD\/LVW QHZ$UUD\/LVW'RJ! 

G
0DNHDQ$UUD\/LVWGHFODUH
V
WRKROG'RJREMHFW

0DNHD'RJ
ULDEOH
$GGWKH'RJWRWKHOLVW
P\'RJ$UUD\/LVWDGG D'RJ 
WRDQHZ'RJUHIHUHQFHYD UHWXUQ
RJ
$VVLJQWKH'RJIURPWKHOLVW
'
VD
DUH
JHW PHWKRGGHFO
'RJG P\'RJ$UUD\/LVWJHW  
7KLQNRILWDVWKRXJKWKH \/LVW'RJ!
UUD
$
W\SHEHFDXVH\RXXVHG
'RJD'RJ QHZ'RJ 

"UTWHATHAPPENSWHENYOUDECLAREITAS!RRAY,IST/BJECT)FYOUWANTTOMAKEAN!RRAY,IST
THATWILLLITERALLYTAKEANYKINDOF/BJECT YOUDECLAREITLIKETHIS

G
0DNHDQ$UUD\/LVWGHFODUH
FW
EMH
I2
HR
W\S
Q\
WRKROGD
7KHVHWZRVWHSVDUHWKHVDPH

$UUD\/LVW2EMHFW!P\'RJ$UUD\/LVW QHZ$UUD\/LVW2EMHFW! 
'RJD'RJ QHZ'RJ 
P\'RJ$UUD\/LVWDGG D'RJ 

0DNHD'RJ
$GGWKH'RJWRWKHOLVW

"UTWHATHAPPENSWHENYOUTRYTOGETTHE$OGOBJECTANDASSIGNITTOA$OGREFERENCE
'RJG
G P\'RJ$UUD\/LVWJHW  
P\'
P
P

12:RQWFRPSLOH:KHQ\RXXVH$UUD\/LVW2EMHFW!WKHJHW PHWKRG
UHWXUQVW\SH2EMHFW7KH&RPSLOHUNQRZVRQO\WKDWWKHREMHFWLQKHULWVIURP
2EMHFW VRPHZKHUHLQLWVLQKHULWDQFHWUHH EXWLWGRHVQWNQRZLWVD'RJ 

%VERYTHINGCOMESOUTOFAN!RRAY,IST/BJECTASAREFERENCEOFTYPE/BJECT REGARDLESSOFWHATTHE
ACTUALOBJECTIS ORWHATTHEREFERENCETYPEWASWHENYOUADDEDTHEOBJECTTOTHELIST

7KHREMHFWVJR,1
DV6RFFHU%DOO
)LVK*XLWDUDQG
&DU

2EMHFWVFRPHRXWRI
DQ$UUD\/LVW2EMHFW!
DFWLQJOLNHWKH\UH
JHQHULFLQVWDQFHV
RIFODVV2EMHFW7KH
&RPSLOHUFDQQRW
DVVXPHWKHREMHFW
WKDWFRPHVRXWLVRI
DQ\W\SHRWKHUWKDQ
2EMHFW

$UUD\/LVW2EMHFW!
%XWWKH\FRPH
287DVWKRXJK
WKH\ZHUHRIW\SH
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
4HEPROBLEMWITHHAVINGEVERYTHINGTREATED
POLYMORPHICALLYASAN/BJECTISTHATTHEOBJECTS
APPEARTOLOSEBUTNOTPERMANENTLY THEIR
TRUEESSENCE4HE$OGAPPEARSTOLOSEITSDOGNESS
,ETSSEEWHATHAPPENSWHENWEPASSA$OGTO
AMETHODTHATRETURNSAREFERENCETOTHESAME
$OGOBJECT BUTDECLARESTHERETURNTYPEASTYPE
/BJECTRATHERTHAN$OG

,GRQWNQRZZKDW\RXUH
WDONLQJDERXW6LW"6WD\"
EDUN"+PPPP,GRQW
UHFDOONQRZLQJWKRVH

KHPHWKRGKH
W
K
J
X
R
K
W
Q
YH
RJW
SXEOLFYRLGJR ^
QWZRUN(
HU\VDPH'
7KLVOLQHZRUHIHUHQFHWRWKHYHWXUQW\SH2EMHFW UQHG
'RJD'RJ QHZ'RJ 
%$' 'RJVDPH'RJ
UHWXUQHGDUHIHUUHGWRWKHU \RXDVVLJQWKHUHWX
JHW2EMHFW D'RJ 
J J

DUJXPHQW FRPSLOHUZRQWOHW EMHFW
/ `
PHDQVWKH WRDQ\WKLQJEXW2
UHIHUHQFH
SXEOLF2EMHFWJHW2EMHFW 2EMHFWR ^
DVD
UHWXUQR
QFHWRWKHVDPH'RJEXW
:HUHUHWXUQLQJDUHIHUH7KLVSDUWLVSHUIHFWO\OHJDO1RWH
`
UHWXUQW\SHRI2EMHFW JHW PHWKRGZRUNVZKHQ\RXKDYH
WKLVLVVLPLODUWRKRZWKH WKHUWKDQDQ$UUD\/LVW'RJ!
DQ$UUD\/LVW2EMHFW!UD

Licensed by
Eduard Simons
104038

)LOH(GLW:LQGRZ+HOS5HPHPEHU

'RJ3RO\7HVWMDYDLQFRPSDWLEOHW\SHV
IRXQGMDYDODQJ2EMHFW
UHTXLUHG'RJ

'RJVDPH'RJ WDNH2EMHFWV D'RJ 


HUURUA

*22'
-

SXEOLFYRLGJR ^
'RJD'RJ QHZ'RJ 
2EMHFWVDPH'RJ JHW2EMHFW D'RJ 
`
SXEOLF2EMHFWJHW2EMHFW 2EMHFWR ^
UHWXUQR

7KHFRPSLOHUGRHVQWNQRZWKDWWKH
WKLQJUHWXUQHGIURPWKHPHWKRGLV
DFWXDOO\D'RJVRLWZRQWOHW\RX
DVVLJQLWWRD'RJUHIHUHQFH <RXOO
VHHZK\RQWKHQH[WSDJH

7KLVZRUNV DOWKRXJKLWPD\QRWEHYHU\
XVHIXODV\RXOOVHHLQDPRPHQW EHFDXVH\RX
FDQDVVLJQ$1<7+,1*WRDUHIHUHQFHRIW\SH
2EMHFWVLQFHHYHU\FODVVSDVVHVWKH,6 $WHVW
IRU2EMHFW(YHU\REMHFWLQ-DYDLVDQLQVWDQFH
RIW\SH2EMHFWEHFDXVHHYHU\FODVVLQ-DYDKDV
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
DECLAREDWITHTHEACTUALOBJECTSTYPE
!NDWEKNOWTHATTHISCANHAPPENWHEN
ARETURNTYPEORARGUMENTISDECLARED
ASTYPE/BJECT ASWOULDBETHECASE
FOREXAMPLE WHENTHEOBJECTISPUT
INTOAN!RRAY,ISTOFTYPE/BJECTUSING
!RRAY,IST/BJECT"UTWHATARETHE
IMPLICATIONSOFTHIS)SITAPROBLEMTO
HAVETOUSEAN/BJECTREFERENCEVARIABLE
TOREFERTOA$OGOBJECT,ETSTRYTOCALL
$OGMETHODSONOUR$OG 4HAT #OMPILER
4HINKS )S !N /BJECT

g

LQWL RKDVK&RGH 
REDUN 
RED
RE

7KHFRPSLOHUGHFLGHVZKHWKHU
\RXFDQFDOODPHWKRGEDVHG
RQWKHUHIHUHQFHW\SHQRWWKH
DFWXDOREMHFWW\SH
%VENIFYOUKNOWTHEOBJECTISCAPABLE
hBUTITREALLYISA$OG HONESTv THE
COMPILERSEESITONLYASAGENERIC/BJECT
&ORALLTHECOMPILERKNOWS YOUPUTA
"UTTONOBJECTOUTTHERE/RA-ICROWAVE
OBJECT/RSOMEOTHERTHINGTHATREALLY
DOESNTKNOWHOWTOBARK
4HECOMPILERCHECKSTHECLASSOFTHE
REFERENCETYPENOTTHEOBJECTTYPETO
SEEIFYOUCANCALLAMETHODUSINGTHAT
REFERENCE

W
REMHF

:KHQ\RXJHWDQREMHFWUHIHUHQFHIURP
DQ$UUD\/LVW2EMHFW! RUDQ\PHWKRG
WKDWGHFODUHV2EMHFWDVWKHUHWXUQW\SH 
LWFRPHVEDFNDVDSRO\PRUSKLFUHIHUHQFH
W\SHRI2EMHFW6R\RXKDYHDQ2EMHFW
UHIHUHQFHWR LQWKLVFDVH D'RJLQVWDQFH

2EMHFWR DOJHW LQGH[ 

:RQWFRPSLOH


' RJ

2EMHFW

DVD
2EMHFWK FDQFDOO
VV
OD
&

H
LQ

7KLVLVI PHWKRGVR\RX WLQ-DYD
KDVK&RGH KRGRQ$1<REMHF
WKDWPHW

&DQWGRWKLV7KH2EMHFWFODVVKDVQRLGHDZKDW
LWPHDQVWREDUN (YHQWKRXJK<28NQRZLWV
UHDOO\D'RJDWWKDWLQGH[WKHFRPSLOHUGRHVQW
KDVK&RG
H

g

2EMHFW
2EMHFW
HTXDOV
JHW&ODVV
KDVK&RGH
WR6WULQJ


' RJ

REMHF

7KHPHWKRG\RXUHFDOOLQJRQD
UHIHUHQFH0867EHLQWKHFODVVRI
WKDWUHIHUHQFHW\SH'RHVQWPDWWHU
ZKDWWKHDFWXDOREMHFWLV
RKDVK&RGH 

7KHRUHIHUHQFHZDVGHFODUHGDVW\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\KHGVHH
PHIRUZKDW,UHDOO\DP

/M\QV\W]KP_Q\Pa W]ZQVVMZ7JRMK\
!NOBJECTCONTAINSEVERYTHINGITINHERITSFROMEACHOFITS
SUPERCLASSES4HATMEANSEVERYOBJECTREGARDLESSOFITS
ACTUALCLASSTYPEISALSOANINSTANCEOFCLASS/BJECT4HAT
MEANSANYOBJECTIN*AVACANBETREATEDNOTJUSTASA$OG
"UTTON OR3NOWBOARD BUTALSOASAN/BJECT7HENYOU
SAYQHZ6QRZERDUG YOUGETASINGLEOBJECTONTHE
HEAPA3NOWBOARDOBJECTBUTTHAT3NOWBOARDWRAPS
ITSELFAROUNDANINNERCOREREPRESENTINGTHE/BJECT
CAPITALh/v PORTIONOFITSELF
2EMHFW

$VLQJOHREMHFW
RQWKHKHDS

G

JHW&

OD

URO

QW

W R6
W

$L


GH

2EMHFW

DO

JHW

HTXDOV
JHW&ODVV
KDVK&RGH
WR6WULQJ

6QRZERDUGLQKHULWVPHWKRGV
IURPVXSHUFODVV2EMHFWDQG
DGGVIRXUPRUH

HTX

6QRZERDUG

&R

WXUQ

KDVK
LQJ

VK
UH

HTXDOV
JHW&ODVV
KDVK&RGH
WR6WULQJ

ORVH&

6QRZERDUG

WXUQ
VKUHG
JHW$LU
ORVH&RQWURO

6Q

RZ E

RDUGRE

MHF

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

7KDWPHDQV\RXJHWDQ
2EMHFWUHPRWHFRQWURO

WXUQ

K
J DVK
ULQ

2EMHFW

DO

HTX
JH
W$

JHW&

LU


GH

W R6
W

&R

2EMHFWR V

OD

6QRZERDUGV QHZ6QRZERDUG 

URO

/FCOURSETHATSNOTALWAYSTRUEASUBCLASSMIGHT
NOTADDANYNEWMETHODS BUTSIMPLYOVERRIDE
THEMETHODSOFITSSUPERCLASS4HEKEYPOINTIS
THATEVENIFTHEOBJECTISOFTYPE3NOWBOARD AN
/BJECTREFERENCETOTHE3NOWBOARDOBJECTCANTSEE
THE3NOWBOARD SPECIlCMETHODS

:KHQ\RXJHWD
UHIHUHQFHIURPDQ
$UUD\/LVW2EMHFW!WKH
UHIHUHQFHLVDOZD\VRI
W\SH2EMHFW

QW

)FAREFERENCEISLIKEAREMOTECONTROL THE
REMOTECONTROLTAKESONMOREANDMOREBUTTONS
ASYOUMOVEDOWNTHEINHERITANCETREE!
REMOTECONTROLREFERENCE OFTYPE/BJECTHAS
ONLYAFEWBUTTONSTHEBUTTONSFORTHEEXPOSED
METHODSOFCLASS/BJECT"UTAREMOTECONTROL
OFTYPE3NOWBOARDINCLUDESALLTHEBUTTONSFROM
CLASS/BJECT PLUSANYNEWBUTTONSFORNEW
METHODS OFCLASS3NOWBOARD4HEMORESPECIlC
THECLASS THEMOREBUTTONSITMAYHAVE

<RXFDQWUHDWD6QRZERDUGDVD
6QRZERDUGRUDVDQ2EMHFW

:KHQ\RXSXW
DQREMHFWLQDQ
$UUD\/LVW2EMHFW!\RX
FDQWUHDWLWRQO\DVDQ
2EMHFWUHJDUGOHVVRI
WKHW\SHLWZDVZKHQ
\RXSXWLWLQ

VK
UH

3RO\PRUSKLVPPHDQV
PDQ\IRUPV

ORVH&

6QRZERDUG

7KH6QRZERDUGUHPRWHFRQWURO
UHIHUHQFH KDVPRUHEXWWRQVWKDQ
DQ2EMHFWUHPRWHFRQWURO7KH
6QRZERDUGUHPRWHFDQVHHWKHIXOO
6QRZERDUGQHVVRIWKH6QRZERDUG
REMHFW,WFDQDFFHVVDOOWKHPHWKRGV
LQ6QRZERDUGLQFOXGLQJERWKWKH
LQKHULWHG2EMHFWPHWKRGVDQGWKH
PHWKRGVIURPFODVV6QRZERDUG

IHZHUPHWKRGVKHUH

6Q

RZ E

RDUGRE

MHF

R
7KH2EMHFWUHIHUHQFHFDQVHHRQO\WKH
2EMHFWSDUWVRIWKH6QRZERDUGREMHFW
,WFDQDFFHVVRQO\WKHPHWKRGVRIFODVV
2EMHFW,WKDVIHZHUEXWWRQVWKDQWKH
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!DQGLWFDQWGR
DQ\'RJWKLQJV"7KHUHVJRWWDEHD

&DVWLQJDQREMHFWUHIHUHQFH
EDFNWRLWVUHDOW\SH

ZD\WRJHWWKH'RJEDFNWRDVWDWH
RI'RJQHVV

g


' RJ

2EMHFW
,KRSHLWGRHVQWKXUW
$QGZKDWVVRZURQJZLWK
VWD\LQJDQ2EMHFW"2.,FDQW
IHWFKVXUHEXW,FDQJLYH\RX
DUHDOQLFHKDVKFRGH

REMHF

)TSREALLYSTILLA$OGOBJECT BUTIFYOUWANTTOCALL
$OG SPECIlCMETHODS YOUNEEDAREFERENCEDECLARED
ASTYPE$OG)FYOURESURE
THEOBJECTISREALLYA
$OG YOUCANMAKEANEW$OGREFERENCETOITBY
COPYINGTHE/BJECTREFERENCE ANDFORCINGTHAT
COPYTOGOINTOA$OGREFERENCEVARIABLE USINGA
CAST$OG 9OUCANUSETHENEW$OGREFERENCETO
CALL$OGMETHODS

EMHFWEDFNUHWR
FDVWWKH2NQ
LVWKH
D'RJZH RZ

2EMHFWR DOJHW LQGH[ 

'RJG  'RJ R


GURDP 



g


' RJ

REMHF

2EMHFW

&DVWWKHVRFDOOHG2EMHFW EXW
ZHNQRZKHVDFWXDOO\D'RJ WR
W\SH'RJVRWKDW\RXFDQWUHDW
KLPOLNHWKH'RJKHUHDOO\LV

\
'RJ

)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\RXYHVHHQKRZPXFK-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
FUHGLW GRXEOHDPW
ANYWAY%ACHACCOUNTINSTANCEREPRESENTS
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
gfn\i

%VERYTHINGINCLASS#ANINEISPARTOFYOUR
CONTRACT
%VERYTHINGINCLASS!NIMALISPARTOFYOUR
CONTRACT

7KLQNDERXWZKDW<28ZRXOGGRLI<28ZHUH

%VERYTHINGINCLASS/BJECTISPARTOFYOUR
CONTRACT

WKH'RJFODVVSURJUDPPHUDQGQHHGHGWR

!CCORDINGTOTHE)3 !TEST YOUAREEACHOF


THOSETHINGS#ANINE !NIMAL AND/BJECT

WRR:HNQRZWKDWVLPSO\DGGLQJQHZ3HWEH

"UTWHATIFTHEPERSONWHODESIGNEDYOUR
CLASSHADINMINDTHE!NIMALSIMULATION
PROGRAM ANDNOWHEWANTSTOUSEYOUCLASS
$OG FORA3CIENCE&AIR4UTORIALON!NIMAL
OBJECTS

DQGZRQWEUHDNDQ\RQHHOVHVFRGH

4HATS/+ YOUREPROBABLYREUSABLEFORTHAT
"UTWHATIFLATERHEWANTSTOUSEYOUFORA
0ET3HOPPROGRAM9OUDONTHAVEANY0ET
BEHAVIORS!0ETNEEDSMETHODSLIKEBE&RIENDLY
ANDPLAY 
/+ NOWPRETENDYOURETHE$OGCLASS
PROGRAMMER.OPROBLEM RIGHT*USTADD
SOMEMOREMETHODSTOTHE$OGCLASS9OU
WONTBEBREAKINGANYONEELSESCODEBY
ADDINGMETHODS SINCEYOUARENTTOUCHING
THEEXISTINGMETHODSTHATSOMEONEELSESCODE
MIGHTBECALLINGON$OGOBJECTS

PRGLI\WKH'RJVRWKDWLWFRXOGGR3HWWKLQJV
KDYLRUV PHWKRGV WRWKH'RJFODVVZLOOZRUN

%XWWKLVLVD3HW6KRSSURJUDP,WKDVPRUH
WKDQMXVW'RJV$QGZKDWLIVRPHRQHZDQWV
WRXVH\RXU'RJFODVVIRUDSURJUDPWKDWKDV

ZLOG'RJV":KDWGR\RXWKLQN\RXURSWLRQV
PLJKWEHDQGZLWKRXWZRUU\LQJDERXWKRZ
-DYDKDQGOHVWKLQJVMXVWWU\WRLPDJLQHKRZ
\RXGOLNHWRVROYHWKHSUREOHPRIPRGLI\LQJ
VRPHRI\RXU$QLPDOFODVVHVWRLQFOXGH3HW
EHKDYLRUV
6WRSULJKWQRZDQGWKLQNDERXWLW
EHIRUH\RXORRNDWWKHQH[WSDJHZKHUHZH
EHJLQWRUHYHDOHYHU\WKLQJ
WKXVUHQGHULQJWKHZKROHH[HUFLVHFRPSOHWHO\XVHOHVVUREELQJ
\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


KHSHW SKHUH
W

O
O
D

SXW GFRGHX
PHWKR KHULWDQFH
IRULQ

8ZW["
$OOWKH$QLPDOVZLOOLQVWDQWO\LQKHULW
WKHSHWEHKDYLRUV:HZRQWKDYHWR
WRXFKWKHH[LVWLQJ$QLPDOVXEFODVVHV
DWDOODQGDQ\$QLPDOVXEFODVVHV
FUHDWHGLQWKHIXWXUHZLOODOVRJHWWR
WDNHDGYDQWDJHRILQKHULWLQJWKRVH
PHWKRGV7KDWZD\FODVV$QLPDOFDQ
EHXVHGDVWKHSRO\PRUSKLFW\SHLQ
DQ\SURJUDPWKDWZDQWVWRWUHDWWKH
$QLPDOVDVSHWV

$QLPDO

&DQLQH
+LSSR

+WV["
6RZKHQZDVWKHODVWWLPH\RX
VDZD+LSSRDWDSHWVKRS"/LRQ"
:ROI"&RXOGEHGDQJHURXVWRJLYH
QRQSHWVSHWPHWKRGV
$OVRZHDOPRVWFHUWDLQO\:,//
KDYHWRWRXFKWKHSHWFODVVHV
OLNH'RJDQG&DWEHFDXVH LQ
RXUKRXVHDQ\ZD\ 'RJV
DQG&DWVWHQGWRLPSOH
PHQWSHWEHKDYLRUV
9(5<GLIIHUHQWO\

)HOLQH
'RJ

&DW

:ROI

/LRQ

7LJHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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["


HWKRGV
P

W
H
S
KQR 
OWKH
SXWDHOUHEXWZLQWV0DNHDOO
XSK HPHQWDWLR DEVWUDFW
LPSO PHWKRGV
SHW

7KDWZRXOGJLYHXVDOOWKHEHQHWVRI2SWLRQ2QHEXWZLWK
RXWWKHGUDZEDFNRIKDYLQJQRQSHW$QLPDOVUXQQLQJDURXQG
ZLWKSHWPHWKRGV OLNHEH)ULHQGO\ $OO$QLPDOFODVVHV
ZRXOGKDYHWKHPHWKRG EHFDXVHLWVLQFODVV$QLPDO EXW
EHFDXVHLWVDEVWUDFWWKHQRQSHW$QLPDOFODVVHVZRQW
LQKHULWDQ\IXQFWLRQDOLW\$OOFODVVHV0867RYHUULGHWKH
PHWKRGVEXWWKH\FDQPDNHWKHPHWKRGVGRQRWKLQJV

$QLPDO

+WV["
%HFDXVHWKHSHWPHWKRGVLQWKH$QLPDOFODVVDUHDOO
DEVWUDFWWKHFRQFUHWH$QLPDOVXEFODVVHVDUHIRUFHGWR
LPSOHPHQWDOORIWKHP 5HPHPEHUDOODEVWUDFWPHWKRGV
0867EHLPSOHPHQWHGE\WKHUVWFRQFUHWHVXEFODVV
GRZQWKHLQKHULWDQFHWUHH :KDWDZDVWHRIWLPH
<RXKDYHWRVLWWKHUHDQGW\SHLQHDFKDQGHYHU\
SHWPHWKRGLQWRHDFKDQGHYHU\FRQFUHWHQRQ
SHWFODVVDQGDOOIXWXUHVXEFODVVHVDVZHOO
$QGZKLOHWKLVGRHVVROYHWKHSUREOHPRI
)HOLQH
QRQSHWVDFWXDOO\'2,1*SHWWKLQJV
DVWKH\ZRXOGLIWKH\LQKHULWHGSHW
IXQFWLRQDOLW\IURPFODVV$QLPDO WKH
FRQWUDFWLVEDG(YHU\QRQSHW
FODVVZRXOGEHDQQRXQFLQJWRWKH
ZRUOGWKDWLWWRRKDVWKRVH
&DW
SHWPHWKRGVHYHQWKRXJK
WKHPHWKRGVZRXOGQW
/LRQ
DFWXDOO\'2DQ\WKLQJ
ZKHQFDOOHG
7KLVDSSURDFKGRHVQW
ORRNJRRGDWDOO,WMXVW
VHHPVZURQJWRVWXII
HYHU\WKLQJLQWRFODVV$QLPDO
WKDWPRUHWKDQRQH$QLPDOW\SH
PLJKWQHHG81/(66LWDSSOLHVWR
$//$QLPDOVXEFODVVHV

&DQLQH
+LSSR

'RJ

:ROI

7LJHU

$VNPHWREHIULHQGO\
1RVHULRXVO\DVNPH
,KDYHWKHPHWKRG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LPSOHPHQWWKHPHWKRGVDQG&DWVFDQLPSOHPHQWWKH
PHWKRGVEXWQRERG\HOVHKDVWRNQRZDERXWWKHP

+WV["

LQWKH
WKRGV21E/H<SHWV
H
P
W
H
S
H
K
3XWW ODVVHVWKDWFDQ
$QLPDOF ILQ$QLPDO
LQVWHDGR

7ZR%LJ3UREOHPVZLWKWKLVDSSURDFK)LUVWRII\RXG
KDYHWRDJUHHWRDSURWRFRODQGDOOSURJUDPPHUVRI
SHW$QLPDOFODVVHVQRZDQGLQWKHIXWXUHZRXOGKDYH
WR.12:DERXWWKHSURWRFRO%\SURWRFROZHPHDQ
WKHH[DFWPHWKRGVWKDWZHYHGHFLGHGDOOSHWVVKRXOG
KDYH7KHSHWFRQWUDFWZLWKRXWDQ\WKLQJWREDFNLWXS
%XWZKDWLIRQHRIWKHSURJUDPPHUVJHWVLWMXVWDWLQ\
ELWZURQJ"/LNHDPHWKRGWDNHVD6WULQJZKHQLWZDV
VXSSRVHGWRWDNHDQLQW"2UWKH\QDPHGLWGR)ULHQGO\ 
LQVWHDGRIEH)ULHQGO\ "6LQFHLWLVQWLQDFRQWUDFW
WKHFRPSLOHUKDVQRZD\WRFKHFN\RXWRVHHLI\RXYH
LPSOHPHQWHGWKHPHWKRGVFRUUHFWO\6RPHRQH
FRXOGHDVLO\FRPHDORQJWRXVHWKHSHW$QLPDO
FODVVHVDQGQGWKDWQRWDOORIWKHPZRUN
)HOLQH
TXLWHULJKW

$QLPDO

&DQLQH
+LSSR

'RJ

$QGVHFRQG\RXGRQWJHWWRXVH
SRO\PRUSKLVPIRUWKHSHWPHWKRGV
(YHU\FODVVWKDWQHHGVWRXVH
SHWEHKDYLRUVZRXOGKDYHWR
NQRZDERXWHDFKDQGHYHU\
FODVV,QRWKHUZRUGV
/LRQ
\RXFDQWXVH$QLPDO
DVWKHSRO\PRUSKLF
W\SHQRZEHFDXVHWKH
FRPSLOHUZRQWOHW\RXFDOO
D3HWPHWKRGRQDQ$QLPDO
UHIHUHQFH HYHQLILWVUHDOO\D
'RJREMHFW EHFDXVHFODVV$QLPDO
GRHVQWKDYHWKHPHWKRG

&DW

:ROI

7LJHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
Eduard Simons
104038
,WORRNVOLNHZHQHHG7:2
VXSHUFODVVHVDWWKHWRS

UDFW 
W
V
E
D

HZ HWDQG
NHDQ
3
:HPD ODVVFDOOHG WPHWKRGV
F
H
U
S
VXSH DOOWKH
JLYHLW

$QLPDO

3HW

&DQLQH
+LSSR

)HOLQH
'RJ

&DW

HQGV
&DWQRZH[W QLPDO
IURPERWK$ LWJHWV
$1'3HWVR RIERWK
WKHPHWKRGV

/LRQ

:ROI

'RJH
3HWDQ[WHQGVERWK
G$QLP
DO

7LJHU

7KHQRQSHW$QLPDOV
GRQWKDYHDQ\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

7KHUHVMXVWRQHSUREOHPZLWKWKHWZRVXSHUFODVVHVDSSURDFK

,WVFDOOHGPXOWLSOHLQKHULWDQFH
DQGLWFDQEHD5HDOO\%DG7KLQJ
7KDWLVLILWZHUHSRVVLEOHWRGRLQ-DYD
%XWLWLVQWEHFDXVHPXOWLSOHLQKHULWDQFHKDVDSUREOHP
NQRZQDV7KH'HDGO\'LDPRQGRI'HDWK

'HDGO\'LDPRQGRI'HDWK

UQHUERWK
X
%
'
9
'

G
DQ
&'%XUQHU P'LJLWDO5HFRUGHU
R
U
I
LQKHULW YHUULGHWKHEXUQ 
DQGERWKRRWKLQKHULWWKHL
PHWKRG% ULDEOH
LQVWDQFHYD

'LJLWDO5HFRUGHU
LQWL
EXUQ

'9'%XUQHU

&'%XUQHU

EXUQ

EXUQ

&RPER'ULYH


LQVWDQFH XUQHU
L


H
K
W

%
'
KDW
,PDJLQHWLVXVHGE\ERWK&LIIHUHQW

G
YDULDEOH %XUQHUZLWK &RPER'ULYH
DQG'9'KDWKDSSHQVLI RIL"
YDOXHV: XVHERWKYDOXHV
QHHGVWR

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`"
HIZ[YHJ[]VPKWSH`"


QWHUIDFHDUH $
L
Q
D
LQ
V
G
R
K
W
,6
$OOPH
Q\FODVVWKDW
DEVWUDFWVRDPSOHPHQW LHRYHUULGH 
3HW0867L RI3HW
WKHPHWKRGV

7R'(),1(DQLQWHUIDFH

SXEOLFLQWHUIDFH3HW^`

8VHWKHNH
LQVWHDGRI\ZRUGLQWHUIDFH
FODVV
7R,03/(0(17DQLQWHUIDFH

SXEOLFFODVV'RJH[WHQGV&DQLQHLPSOHPHQWV3HW^`

ZHG
SOHPHQWVIROOR
LP

G
RU
Z
H\
N
KDW
8VHWKH
HQDPH1RWHW H\RX
DF
I
HU
QW
L
KH
W
\
DF
E
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
\PM8M\QV\MZNIKM

IDFHLQVWHDG
<RXVD\LQKWHUHUH
RIFODVV

LQWHUIDFHP
DUHLPSOLFLWO\SXE
DEVWUDFWVRHWW\KRSLGV
OLFDQG
LVRSWLRQDO LQIDFQJLQSXEOLFDQGDEVWUDFW
W
LW
V
QRWFR
VW\OHWRW\SHWKH
ZRUGVLQEXWQVZLGHHUHGJRRG
MXVWWRUHLQIRUF
GLGKHUH
EHHQVODYHVWRIDVHLWDQGEHFDXVHZHYHQHYHU

KLRQ

SXEOLFLQWHUIDFH3HW^
SXEOLFDEVWUDFWYRLGEH)ULHQGO\ 
SXEOLFDEVWUDFWYRLGSOD\ 


PHWKRGVDUH
$OOLQWHUIDFHWKH\0867HQGLQ
DEVWUDFWVR HPHPEHUWKH\KDYH
VHPLFRORQV5
QRERG\


<RXVD\LPSOHPKHHQQWVDPH
W
E\
IROORZHG DFH
KHLQWHUI
SXEOLFFODVV'RJH[WHQGV&DQLQHLPSOHPHQWV3HW^ RIW

QLPDO
'RJ,6$,$
$3HW

6
DQG'RJ

SXEOLFYRLGEH)ULHQGO\ ^`

<RX6$,'
LPSOHPHQWW\KRXDUHD3HWVR\RX0
FRQWUDFW R H3HWPHWKRGV,WV\ 867
RXU
WLFHWKHFXUO\
LQVWHDGRIV1HP
EUDFHV 
LFRORQV

SXEOLFYRLGSOD\ ^`

SXEOLFYRLGURDP ^`
SXEOLFYRLGHDW ^`
`

7KHVHDUHMXV
DO
RYHUULGLQJPHWWKRQRGVUP


WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

7AITAMINUTE INTERFACESDONT
REALLYGIVEYOUMULTIPLEINHERITANCE
BECAUSEYOUCANTPUTANY
IMPLEMENTATIONCODEINTHEM)FALL
THEMETHODSAREABSTRACT WHATDOES
ANINTERFACEREALLYBUYYOU

A:

0OLYMORPHISM POLYMORPHISM
POLYMORPHISM)NTERFACESARETHE
ULTIMATEINFLEXIBILITY BECAUSEIFYOU
USEINTERFACESINSTEADOFCONCRETE
SUBCLASSESOREVENABSTRACTSUPERCLASS
TYPES ASARGUMENTSANDRETURN

TYPES YOUCANPASSANYTHINGTHAT
IMPLEMENTSTHATINTERFACE!NDTHINK
ABOUTITWITHANINTERFACE ACLASS
DOESNTHAVETOCOMEFROMJUSTONE
INHERITANCETREE!CLASSCANEXTEND
ONECLASS ANDIMPLEMENTANINTERFACE
"UTANOTHERCLASSMIGHTIMPLEMENT
THESAMEINTERFACE YETCOMEFROMA
COMPLETELYDIFFERENTINHERITANCETREE
3OYOUGETTOTREATANOBJECTBYTHE
ROLEITPLAYS RATHERTHANBYTHECLASS
TYPEFROMWHICHITWASINSTANTIATED
)NFACT IFYOUWROTEYOURCODETOUSE
INTERFACES YOUWOULDNTEVENHAVETO
GIVEANYONEASUPERCLASSTHATTHEYHAD

TOEXTEND9OUCOULDJUSTGIVETHEM
THEINTERFACEANDSAY h(ERE )DONT
CAREWHATKINDOFCLASSINHERITANCE
STRUCTUREYOUCOMEFROM JUST
IMPLEMENTTHISINTERFACEANDYOULLBE
GOODTOGOv
4HEFACTTHATYOUCANTPUTIN
IMPLEMENTATIONCODETURNSOUTNOTTO
BEAPROBLEMFORMOSTGOODDESIGNS
BECAUSEMOSTINTERFACEMETHODS
WOULDNTMAKESENSEIFIMPLEMENTED
INAGENERICWAY)NOTHERWORDS MOST
INTERFACEMETHODSWOULDNEEDTO
BEOVERRIDDENEVENIFTHEMETHODS
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

$QLPDO

3HW

$JHQW

5RER'RJ

&DQLQH

&ODVV5RER' GRH
VQW
FRPHIURPWRJ
LQKHULWDQFHWUKHHH$EQLPDO
JHWVWREHD3HW  XWLWVWLOO

+LSSR

)HOLQH
'RJ

&DW

/LRQ

:ROI

7LJHU

7HENYOUUSEACLASSASAPOLYMORPHICTYPELIKEAN
ARRAYOFTYPE!NIMALORAMETHODTHATTAKESA#ANINE
ARGUMENT THEOBJECTSYOUCANSTICKINTHATTYPE
MUSTBEFROMTHESAMEINHERITANCETREE"UTNOTJUST
ANYWHEREINTHEINHERITANCETREETHEOBJECTSMUSTBE
FROMACLASSTHATISASUBCLASSOFTHEPOLYMORPHICTYPE
!NARGUMENTOFTYPE#ANINECANACCEPTA7OLFANDA
$OG BUTNOTA#ATORA(IPPO
"UTWHENYOUUSEANINTERFACEASAPOLYMORPHIC
TYPELIKEANARRAYOF0ETS THEOBJECTSCANBE
FROMANYWHEREINTHEINHERITANCETREE4HEONLY
REQUIREMENTISTHATTHEOBJECTSAREFROMACLASSTHAT
IMPLEMENTSTHEINTERFACE!LLOWINGCLASSESINDIFFERENT
INHERITANCETREESTOIMPLEMENTACOMMONINTERFACE
ISCRUCIALINTHE*AVA!0)$OYOUWANTANOBJECT
TOBEABLETOSAVEITSSTATETOAlLE)MPLEMENTTHE
3ERIALIZABLEINTERFACE$OYOUNEEDOBJECTSTORUN

THEIRMETHODSINASEPARATETHREADOFEXECUTION
)MPLEMENT2UNNABLE9OUGETTHEIDEA9OULL
LEARNMOREABOUT3ERIALIZABLEAND2UNNABLEINLATER
CHAPTERS BUTFORNOW REMEMBERTHATCLASSESFROM
ANYPLACEINTHEINHERITANCETREEMIGHTNEEDTO
IMPLEMENTTHOSEINTERFACES.EARLYANYCLASSMIGHT
WANTTOBESAVEABLEORRUNNABLE

%HWWHUVWLOODFODVVFDQLPSOHPHQW
PXOWLSOHLQWHUIDFHV
!$OGOBJECT)3 !#ANINE AND)3 !!NIMAL AND
)3 !/BJECT ALLTHROUGHINHERITANCE"UTA$OG)3 !
0ETTHROUGHINTERFACEIMPLEMENTATION ANDTHE$OG
MIGHTIMPLEMENTOTHERINTERFACESASWELL9OUCOULD
SAY
SXEOLFFODVV'RJH[WHQGV$QLPDOLPSOHPHQWV
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
0DNH LW 6

LFN

BLUE
LETSARE
TT WO
RED VIO
RE
A
S
E
PLEMEN
S
IM
2O
T
U
B

E
ONLYON
%X TEND
ALUES
VE
FAMILYV
N
O
N
I
CANHA
S
IGH
VACLASS TPARENT
A
*
*AVAWE
!

NLY
DTHA
ARENTS/
LASS AN
MPLE
3INGLE0 ARENTSUPERC "UTYOUCANI CES

P
E
R FA
RE
N
A
TE
O
U
N
I
O
LY
ON
HOY
HOSE
FINESW
S ANDT
CLASSDE IPLEINTER FACE

ULT
MENTM SYOUCANPLAY
OLE
R
E
DEFIN

+RZGR\RXNQRZZKHWKHUWRPDNHD
FODVVDVXEFODVVDQDEVWUDFWFODVVRU
DQLQWHUIDFH"






 0DNHDFODVVWKDWGRHVQWH[WHQGDQ\WKLQJ
RWKHUWKDQ2EMHFW ZKHQ\RXUQHZFODVVGRHVQW
SDVVWKH,6$WHVWIRUDQ\RWKHUW\SH
 0DNHDVXEFODVV LQRWKHUZRUGVH[WHQGDFODVV 
RQO\ZKHQ\RXQHHGWRPDNHDPRUHVSHFLF
YHUVLRQRIDFODVVDQGQHHGWRRYHUULGHRUDGG
QHZEHKDYLRUV
 8VHDQDEVWUDFWFODVVZKHQ\RXZDQWWRGHQH
DWHPSODWHIRUDJURXSRIVXEFODVVHVDQG\RX
KDYHDWOHDVWVRPHLPSOHPHQWDWLRQFRGHWKDWDOO
VXEFODVVHVFRXOGXVH0DNHWKHFODVVDEVWUDFW
ZKHQ\RXZDQWWRJXDUDQWHHWKDWQRERG\FDQ
PDNHREMHFWVRIWKDWW\SH
 8VHDQLQWHUIDFHZKHQ\RXZDQWWRGHQHDUROH
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

WKH 
YHUVLRQRI
VXSHUFODVVRHVLPSRUWDQWVWXII
PHWKRGGFODVVHVFRXOGXVH
WKDWVXE

,QYRNLQJWKHVXSHUFODVV
YHUVLRQRIDPHWKRG

Q:

7HATIFYOUMAKEACONCRETESUBCLASS
ANDYOUNEEDTOOVERRIDEAMETHOD BUTYOU
WANTTHEBEHAVIORINTHESUPERCLASSVERSIONOF
THEMETHOD)NOTHERWORDS WHATIFYOUDONT
NEEDTOREPLACETHEMETHODWITHANOVERRIDE
BUTYOUJUSTWANTTOADDTOITWITHSOME
ADDITIONALSPECIlCCODE

DEVWUDFWFODVV5HSRUW^
YRLGUXQ5HSRUW ^
VHWXSUHSRUW
`
YRLGSULQW5HSRUW ^
JHQHULFSULQWLQJ
`
`

A:

FODVV%X]]ZRUGV5HSRUWH[WHQGV5HSRUW^

UVLRQ
YRLGUXQ5HSRUW ^
XSHUFODVVYNHDQG
V
OO
D
F
VXSHUUXQ5HSRUW 
DF
WKHQFRPHXEEFODVV
EX]]ZRUG&RPSOLDQFH 
GRVRPHV WXII
SULQW5HSRUW 

!HHHTHINKABOUTTHEMEANINGOFTHE
WORD@EXTENDS/NEAREAOFGOOD//DESIGNLOOKS
ATHOWTODESIGNCONCRETECODETHATSMEANTTO
BEOVERRIDDEN)NOTHERWORDS YOUWRITEMETHOD
CODEIN SAY ANABSTRACTCLASS THATDOESWORK
THATSGENERICENOUGHTOSUPPORTTYPICALCONCRETE
IMPLEMENTATIONS"UT THECONCRETECODEISNT
ENOUGHTOHANDLEALLOFTHESUBCLASS SPECIFIC
WORK3OTHESUBCLASSOVERRIDESTHEMETHOD
ANDEXTENDSITBYADDINGTHERESTOFTHECODE
4HEKEYWORDSUPERLETSYOUINVOKEASUPERCLASS
VERSIONOFANOVERRIDDENMETHOD FROMWITHINTHE
SUBCLASS

VSHFLILFV

`
YRLGEX]]ZRUG&RPSOLDQFH ^`
`

,IPHWKRGFRGHLQVLGHD
%X]]ZRUG5HSRUWVXEFODVVVD\V

LGHV
RG RYHUU
K
W
H
P

V
V
VXEFOD UFODVVYHUVLRQ
WKHVXSH

VXSHUUXQ5HSRUW 

WKHUXQ5HSRUW PHWKRGLQVLGH
WKHVXSHUFODVV5HSRUWZLOOUXQ

UXQ5HSRUW
EX]]ZRUG&RPSOLDQFH
UXQ5HSRUW
SULQW5HSRUW

VXSHUFODVVPHWKRGV GGHQ
LQFOXGLQJWKHRYHUUL
UXQ5HSRUW

5HSRUW

VXSHUUXQ5HSRUW 
$UHIHUHQFHWRWKHVXEFODVVREMHFW
%X]]ZRUG5HSRUW ZLOODOZD\VFDOO
WKHVXEFODVVYHUVLRQRIDQRYHUULGGHQ
PHWKRG7KDWVSRO\PRUSKLVP
%XWWKHVXEFODVVFRGHFDQFDOO
VXSHUUXQ5HSRUW WRLQYRNHWKH
VXSHUFODVVYHUVLRQ

%X]]ZRUG5HSRUW

7KHVXSHUNH\ZRUGLVUHDOO\DUHIHUHQFH
WRWKHVXSHUFODVVSRUWLRQRIDQREMHFW
:KHQVXEFODVVFRGHXVHVVXSHUDVLQ
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



:KHQ\RXGRQWZDQWDFODVVWREHLQVWDQWLDWHG LQRWKHUZRUGV\RXGRQW
ZDQWDQ\RQHWRPDNHDQHZREMHFWRIWKDWFODVVW\SH PDUNWKHFODVVZLWKWKH
DEVWUDFWNH\ZRUG





$QDEVWUDFWFODVVFDQKDYHERWKDEVWUDFWDQGQRQDEVWUDFWPHWKRGV



$OODEVWUDFWPHWKRGVPXVWEHLPSOHPHQWHGLQWKHILUVWFRQFUHWHVXEFODVVLQWKH
LQKHULWDQFHWUHH



(YHU\FODVVLQ-DYDLVHLWKHUDGLUHFWRULQGLUHFWVXEFODVVRIFODVV2EMHFW MDYDODQJ
2EMHFW 




0HWKRGVFDQEHGHFODUHGZLWK2EMHFWDUJXPHQWVDQGRUUHWXUQW\SHV



$UHIHUHQFHYDULDEOHRIW\SH2EMHFWFDQWEHDVVLJQHGWRDQ\RWKHUUHIHUHQFHW\SH
ZLWKRXWDFDVW$FDVWFDQEHXVHGWRDVVLJQDUHIHUHQFHYDULDEOHRIRQHW\SHWRD
UHIHUHQFHYDULDEOHRIDVXEW\SHEXWDWUXQWLPHWKHFDVWZLOOIDLOLIWKHREMHFWRQWKH
KHDSLV127RIDW\SHFRPSDWLEOHZLWKWKHFDVW
([DPSOH'RJG  'RJ [JHW2EMHFW D'RJ 



$OOREMHFWVFRPHRXWRIDQ$UUD\/LVW2EMHFW!DVW\SH2EMHFW PHDQLQJWKH\FDQEH
UHIHUHQFHGRQO\E\DQ2EMHFWUHIHUHQFHYDULDEOHXQOHVV\RXXVHDFDVW 



0XOWLSOHLQKHULWDQFHLVQRWDOORZHGLQ-DYDEHFDXVHRIWKHSUREOHPVDVVRFLDWHGZLWK
WKH'HDGO\'LDPRQGRI'HDWK7KDWPHDQV\RXFDQH[WHQGRQO\RQHFODVV LH\RX
FDQKDYHRQO\RQHLPPHGLDWHVXSHUFODVV 





$QLQWHUIDFHLVOLNHDSXUHDEVWUDFWFODVV,WGHILQHVRQO\DEVWUDFWPHWKRGV




<RXUFODVVFDQLPSOHPHQWPXOWLSOHLQWHUIDFHV



,IDFODVVKDVHYHQRQHDEVWUDFWPHWKRGWKHFODVVPXVWEHPDUNHGDEVWUDFW
$QDEVWUDFWPHWKRGKDVQRERG\DQGWKHGHFODUDWLRQHQGVZLWKDVHPLFRORQ QR
FXUO\EUDFHV 

<RXFDQFDOOPHWKRGVRQDQREMHFWRQO\LIWKHPHWKRGVDUHLQWKHFODVV RULQWHUIDFH 
XVHGDVWKHUHIHUHQFHYDULDEOHW\SHUHJDUGOHVVRIWKHDFWXDOREMHFWW\SH6RD
UHIHUHQFHYDULDEOHRIW\SH2EMHFWFDQEHXVHGRQO\WRFDOOPHWKRGVGHILQHGLQFODVV
2EMHFWUHJDUGOHVVRIWKHW\SHRIWKHREMHFWWRZKLFKWKHUHIHUHQFHUHIHUV

&UHDWHDQLQWHUIDFHXVLQJWKHLQWHUIDFHNH\ZRUGLQVWHDGRIWKHZRUGFODVV
,PSOHPHQWDQLQWHUIDFHXVLQJWKHNH\ZRUGLPSOHPHQWV
([DPSOH'RJLPSOHPHQWV3HW

$FODVVWKDWLPSOHPHQWVDQLQWHUIDFHPXVWLPSOHPHQWDOOWKHPHWKRGVRIWKH
LQWHUIDFHVLQFHDOOLQWHUIDFHPHWKRGVDUHLPSOLFLWO\SXEOLFDQGDEVWUDFW
7RLQYRNHWKHVXSHUFODVVYHUVLRQRIDPHWKRGIURPDVXEFODVVWKDWVRYHUULGGHQWKH
PHWKRGXVHWKHVXSHUNH\ZRUG([DPSOHVXSHUUXQ5HSRUW 

Q:

4HERESSTILLSOMETHING
STRANGEHEREYOUNEVER
EXPLAINEDHOWITISTHAT
!RRAY,IST$OGGIVESBACK$OG
REFERENCESTHATDONTNEEDTOBE
CAST YETTHE!RRAY,ISTCLASSUSES
/BJECTINITSMETHODS NOT$OG
OR$OT#OMORANYTHINGELSE 
7HATSTHESPECIALTRICKGOINGON
WHENYOUSAY!RRAY,IST$OG

A:

9OURERIGHTFORCALLINGITA
SPECIALTRICK)NFACTITISASPECIAL
TRICKTHAT!RRAY,IST$OGGIVES
BACK$OGSWITHOUTYOUHAVING
TODOANYCAST SINCEITLOOKSLIKE
!RRAY,ISTMETHODSDONTKNOW
ANYTHINGABOUT$OGS ORANYTYPE
BESIDES/BJECT
4HESHORTANSWERISTHATTHE
COMPILERPUTSINTHECASTFORYOU
7HENYOUSAY!RRAY,IST$OG
THEREISNOSPECIALCLASSTHATHAS
METHODSTOTAKEANDRETURN$OG
OBJECTS BUTINSTEADTHE$OG
ISASIGNALTOTHECOMPILERTHAT
YOUWANTTHECOMPILERTOLET
YOUPUT/.,9$OGOBJECTSIN
ANDTOSTOPYOUIFYOUTRYTOADD
ANYOTHERTYPETOTHELIST!ND
SINCETHECOMPILERSTOPSYOU
FROMADDINGANYTHINGBUT$OGS
TOTHE!RRAY,IST THECOMPILER
ALSOKNOWSTHATITSSAFETOCAST
ANYTHINGTHATCOMESOUTOFTHAT
!RRAY,ISTDOA$OGREFERENCE)N
OTHERWORDS USING!RRAY,IST$OG
SAVESYOUFROMHAVINGTOCAST
THE$OGYOUGETBACK"UTITS
MUCHMOREIMPORTANTTHANTHAT
BECAUSEREMEMBER ACASTCAN
FAILATRUNTIME ANDWOULDNTYOU
RATHERHAVEYOURERRORSHAPPEN
ATCOMPILETIMERATHERTHAN SAY
WHENYOURCUSTOMERISUSINGITFOR
SOMETHINGCRITICAL
"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:KDWVWKH3LFWXUH"

1dQ^OU_Q

(ERESYOURCHANCETODEMONSTRATEYOURARTISTICABILITIES/NTHELEFTYOULL
lNDSETSOFCLASSANDINTERFACEDECLARATIONS9OURJOBISTODRAWTHEASSOCIATED
CLASSDIAGRAMSONTHERIGHT7EDIDTHElRSTONEFORYOU5SEADASHEDLINEFOR
hIMPLEMENTSvANDASOLIDLINEFORhEXTENDSv

/Q^MV"

?PI\[\PM8QK\]ZM'


 SXEOLFLQWHUIDFH)RR^`

LQWHUIDFH
)RR

SXEOLFFODVV%DULPSOHPHQWV)RR^`


 SXEOLFLQWHUIDFH9LQQ^`


%DU

SXEOLFDEVWUDFWFODVV9RXWLPSOHPHQWV9LQQ^`

 SXEOLFDEVWUDFWFODVV0XIHLPSOHPHQWV:KXIH^`
SXEOLFFODVV)OXIHH[WHQGV0XIH^`



SXEOLFLQWHUIDFH:KXIH^`

 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
THESEINTOVALID*AVADECLARATIONS7EDIDNUMBERFORYOU
ANDITWASATOUGHONE 

1dQ^OU_Q

?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

&ODFN

INTERFACE

&ODFN

ABSTRACTCLASS

'HOWD

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
PLACETHEMINTOTHEBLANKLINESINTHECODEANDOUT
PUT9OUMAYUSETHESAMESNIPPETMORETHANONCE
ANDYOUWONTNEEDTOUSEALLTHESNIPPETS9OUR
GOALISTOMAKEASETOFCLASSESTHATWILLCOMPILE
ANDRUNANDPRODUCETHEOUTPUTLISTED

3RRO
3X]]OH

BBBBBBBBBBBB1RVH^

SXEOLFBBBBBBBBBBBBBBBBBBBH[WHQGV&ORZQV^

BBBBBBBBBBBBBBBBBBBBBBBB
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

BBBBBBBBBBBBBBBBBBBBBBBBB
UHWXUQ

BBBBBBBBBBBBBBBBBBBBBBBBBBBB

Licensed by
Eduard Simons
104038

DEVWUDFWFODVV3LFDVVRLPSOHPHQWVBBBBBB^

L>@ QHZBBBBBBBBBB
L>@ QHZBBBBBBBBBB
L>@ QHZBBBBBBBBBB

`

IRU LQW[ [[ ^

6\VWHPRXWSULQWOQ BBBBBBBBBBBBBBBBBB

FODVVBBBBBBBBBBBBBBBBBBBBBBBBBBB^`

BBBBBBBJHW&ODVV   

`

FODVVBBBBBBBBBBBBBBBBBBBBBBBBBBB^

`

BBBBBBBBBBBBBBBBBBBBBBBBBBB

UHWXUQ

/UTPUT

)LOH(GLW:LQGRZ+HOS%H$IUDLG

MDYDBBBBBBBBBBBBBB
FODVV$FWV
FODVV&ORZQV
BBBBBBBB2I

`
`
.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE

!CTS 
.OSE 
/F 
#LOWNS 
0ICASSO 
/F;=INEW.OSE;=
/F;=I
.OSE;=INEW.OSE 
.OSE;=INEW.OSE;=

CLASS
EXTENDS
I
INTERFACE
I
IMPLEMENTS IX
I;X=
PUBLICINTI-ETHOD 
PUBLICINTI-ETHOD[]
PUBLICINTI-ETHOD [
PUBLICINTI-ETHOD []

CLASS
CLASS
CLASS
PUBLICCLASS
II-ETHODX
IX I-ETHOD;=
I;X=I-ETHOD
I;X=I-ETHOD;=

!CTS
.OSE
/F
#LOWNS
0ICASSO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

?PI\[\PM,MKTIZI\QWV'

9RXW
0XIILH

 SXEOLFDEVWUDFWFODVV7RS^`
SXEOLFFODVV7LSH[WHQGV7RS^`



)OXIILH

=RRS

 SXEOLFDEVWUDFWFODVV)HH^`
SXEOLFDEVWUDFWFODVV)LH[WHQGV)HH^`

%RRS


*RRS



LQWHUIDFH
(SVLORQ

'HOWD

LQWHUIDFH
%HWD

*DPPD

SXEOLFLQWHUIDFH)RR^`
SXEOLFFODVV%DULPSOHPHQWV)RR^`
SXEOLFFODVV%D]H[WHQGV%DU^`

 SXEOLFLQWHUIDFH=HWD^`
SXEOLFFODVV$OSKDLPSOHPHQWV=HWD^`
SXEOLFLQWHUIDFH%HWD^`
SXEOLFFODVV'HOWDH[WHQGV$OSKDLPSOHPHQWV%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  ^
UHWXUQ
`
`

L>@ QHZ&ORZQV  
L>@ QHZ2I  
IRU LQW[ [[ ^

FODVV&ORZQVH[WHQGV3LFDVVR^`

6\VWHPRXWSULQWOQ L>[@L0HWKRG  

FODVV$FWVH[WHQGV3LFDVVR^

`

SXEOLFLQWL0HWKRG  ^

`

UHWXUQ

L>[@JHW&ODVV   

`
`

/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
RIDQ2EMHFW

WKHQKHVDLG
,FDQWIHHOP\OHJVDQG
,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
RUNNING"UTUSUALLYYOUWONTHAVEANYTHINGTOSAY
ABOUTIT!NDWITHGOODPROGRAMMING YOUPROBABLY
WONTCAREMOREONTHATALITTLELATER 
7EKNOWTHATALLOBJECTSLIVEONTHEGARBAGE COLLECTIBLE
HEAP BUTWEHAVENTYETLOOKEDATWHEREVARIABLES
LIVE!NDWHEREAVARIABLELIVESDEPENDSONWHATKIND
OFVARIABLEITIS!NDBYhKINDv WEDONTMEANTYPE
IEPRIMITIVEOROBJECTREFERENCE 4HETWOKINDSOF
VARIABLESWHOSELIVESWECAREABOUTNOWAREINSTANCE
VARIABLESANDLOCALVARIABLES,OCALVARIABLESAREALSO
KNOWNASSTACKVARIABLES WHICHISABIGCLUEFORWHERE
THEYLIVE

<PM0MIX

7HEREMETHODINVOCATIONS
ANDLOCALVARIABLESLIVE

7HERE!,,OBJECTSLIVE

FNREMHF

%X

RZ
E

QDV
DOVRNQRZUEDJH
7KH*D OH+HDS
&ROOHFWLE

R DUG  R

FW

'X

6Q

JR
GR6WXII
PDLQ

W

<PM;\IKS

EM
HFW

"EFOREWECANUNDERSTANDWHATREALLYHAPPENSWHEN
YOUCREATEANOBJECT WEHAVETOSTEPBACKABIT7E
NEEDTOLEARNMOREABOUTWHEREEVERYTHINGLIVES
ANDFORHOWLONG IN*AVA4HATMEANSWENEEDTO
LEARNMOREABOUTTHE3TACKANDTHE(EAP)N*AVA WE
PROGRAMMERS CAREABOUTTWOAREASOFMEMORYTHE
ONEWHEREOBJECTSLIVETHEHEAP ANDTHEONE
WHEREMETHODINVOCATIONSANDLOCALVARIABLESLIVE
THESTACK 7HENA*6-STARTSUP ITGETSACHUNKOF
MEMORYFROMTHEUNDERLYING/3 ANDUSESITTORUN
YOUR*AVAPROGRAM(OWMUCHMEMORY ANDWHETHER
ORNOTYOUCANTWEAKIT ISDEPENDENTONWHICH
VERSIONOFTHE*6-ANDONWHICHPLATFORM YOURE

WWRQREMH

,QVWDQFH9DULDEOHV

/RFDO9DULDEOHV

)NSTANCEVARIABLESAREDECLAREDINSIDEACLASSBUTNOT

,OCALVARIABLESAREDECLAREDINSIDEAMETHOD INCLUDING

INSIDEAMETHOD4HEYREPRESENTTHEhlELDSvTHATEACH

METHODPARAMETERS4HEYRETEMPORARY ANDLIVEONLYAS

INDIVIDUALOBJECTHASWHICHCANBElLLEDWITHDIFFERENT

LONGASTHEMETHODISONTHESTACKINOTHERWORDS ASLONGAS

VALUESFOREACHINSTANCEOFTHECLASS )NSTANCEVARIABLES

THEMETHODHASNOTREACHEDTHECLOSINGCURLYBRACE 

LIVEINSIDETHEOBJECTTHEYBELONGTO

SXEOLFYRLGIRR LQW[ ^
SXEOLFFODVV'XFN^
LQWVL]H
`

H
NKDVDVL]
F
X
'

\
U
H
Y
(
ULDEOH
LQVWDQFHYD


HWHU[DQG
7KHSDUDP LDQGE
OHV
WUXHWKHYDULDE
OYDULDEOHV
DUHDOOORFD

LQWL [
ERROHDQE
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
THETOPOFACALLSTACK4HATNEWTHINGTHATS
ACTUALLYPUSHEDONTOTHESTACKISTHESTACK
FRAME ANDITHOLDSTHESTATEOFTHEMETHOD
INCLUDINGWHICHLINEOFCODEISEXECUTING AND
THEVALUESOFALLLOCALVARIABLES
4HEMETHODATTHETOPOFTHESTACKISALWAYS
THECURRENTLY RUNNINGMETHODFORTHATSTACK
FORNOW ASSUMETHERESONLYONESTACK BUTIN
CHAPTERWELLADDMORE !METHODSTAYSON
THESTACKUNTILTHEMETHODHITSITSCLOSINGCURLY
BRACEWHICHMEANSTHEMETHODSDONE )F
METHODFOO CALLSMETHODBAR METHODBAR IS
STACKEDONTOPOFMETHODFOO 

$FDOOVWDFNZLWKWZRPHWKRGV

DPHV

VWDFNIU

WRSRIWKHVWDFN

EDU
IRR

ERWWRPRIWKHVWDF

V
[

L E

ORFDOYDULDEOHV
LQFOXGLQJ
SDUDPHWHU[

7KHPHWKRGRQWKHWRSRIWKH
VWDFNLVDOZD\VWKHFXUUHQWO\
H[HFXWLQJPHWKRG

)[\IKS[KMVIZQW

SXEOLFYRLGGR6WXII ^
ERROHDQE WUXH
JR  
`
SXEOLFYRLGJR LQW[ ^
LQW] [
FUD]\ 
LPDJLQHPRUHFRGHKHUH
`

4HECODEONTHELEFTISASNIPPETWEDONTCAREWHATTHERESTOFTHE
CLASSLOOKSLIKE WITHTHREEMETHODS4HElRSTMETHODDO3TUFF CALLS
THESECONDMETHODGO ANDTHESECONDMETHODCALLSTHETHIRD
CRAZY %ACHMETHODDECLARESONELOCALVARIABLEWITHINTHEBODY
OFTHEMETHOD ANDMETHODGO ALSODECLARESAPARAMETERVARIABLE
WHICHMEANSGO HASTWOLOCALVARIABLES 

SXEOLFYRLGFUD]\ ^
FKDUF D
`

 &RGHIURPDQRWKHU

FODVVFDOOVGR6WXII 
DQGGR6WXII JRHV
LQWRDVWDFNIUDPH
DWWKHWRSRIWKH
VWDFN7KHERROHDQ
YDULDEOHQDPHGE
JRHVRQWKHGR6WXII 
VWDFNIUDPH

GR6WXII E

 GR6WXII FDOOVJR 

JR LVSXVKHGRQ
WRSRIWKHVWDFN
9DULDEOHV[DQG]
DUHLQWKHJR VWDFN
IUDPH

 JR FDOOVFUD]\ 

JR [ ]
GR6WXII E

FUD]\ LVQRZRQWKH
WRSRIWKHVWDFN
ZLWKYDULDEOHFLQ
WKHIUDPH

FUD]\ F
JR [ ]
GR6WXII E

 FUD]\ FRPSOHWHV

DQGLWVVWDFNIUDPHLV
SRSSHGRIIWKHVWDFN
([HFXWLRQJRHVEDFN
WRWKHJR PHWKRG
DQGSLFNVXSDWWKH
OLQHIROORZLQJWKHFDOO
WRFUD]\ 

JR [ ]
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
LIVEONTHEHEAP)TDOESNTMATTERWHERETHEYREDECLAREDOR
CREATED)FTHELOCALVARIABLEISAREFERENCETOANOBJECT ONLY
THEVARIABLETHEREFERENCEREMOTECONTROL GOESONTHESTACK

SXEOLFFODVV6WDFN5HI^
SXEOLFYRLGIRRI ^
EDUI 
`
SXEOLFYRLGEDUI ^
'XFNG QHZ'XFN  
`
`

QHZ
UHDWHVD LQFHLWV
F

G
Q
D

V
HFODUH
G V
EDUI G IHUHQFHYDULDEOH KRGLWVDORFDO
'XFNUH LQVLGHWKHPHW VWDFN
GHFODUHG DQGJRHVRQWKH
YDULDEOH

EDUI
IRRI

'X

W

4HEOBJECTITSELFSTILLGOESINTHEHEAP

FNREMHF

+HDS

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
$O)REALLYNEEDTOLEARNABOUTIT

A:

+NOWINGTHEFUNDAMENTALSOFTHE*AVA
3TACKAND(EAPISCRUCIALIFYOUWANTTOUNDERSTAND
VARIABLESCOPE OBJECTCREATIONISSUES MEMORY
MANAGEMENT THREADS ANDEXCEPTIONHANDLING
7ECOVERTHREADSANDEXCEPTIONHANDLINGINLATER
CHAPTERSBUTTHEOTHERSYOULLLEARNINTHISONE9OU
DONOTNEEDTOKNOWANYTHINGABOUTHOWTHE3TACK
AND(EAPAREIMPLEMENTEDINANYPARTICULAR*6-
ANDORPLATFORM%VERYTHINGYOUNEEDTOKNOW
ABOUTTHE3TACKAND(EAPISONTHISPAGEANDTHE
PREVIOUSONE)FYOUNAILTHESEPAGES ALLTHEOTHER
TOPICSTHATDEPENDONYOURKNOWINGTHISSTUFFWILL
GOMUCH MUCH MUCHEASIER/NCEAGAIN SOMEDAY
YOUWILL3/THANKUSFORSHOVING3TACKSAND(EAPS
DOWNYOURTHROAT

:MDD=LHGAFLK



-DYDKDVWZRDUHDVRIPHPRU\ZHFDUHDERXW
WKH6WDFNDQGWKH+HDS



,QVWDQFHYDULDEOHVDUHYDULDEOHVGHFODUHG
LQVLGHDFODVVEXWRXWVLGHDQ\PHWKRG



/RFDOYDULDEOHVDUHYDULDEOHVGHFODUHGLQVLGHD
PHWKRGRUPHWKRGSDUDPHWHU



$OOORFDOYDULDEOHVOLYHRQWKHVWDFNLQWKH
IUDPHFRUUHVSRQGLQJWRWKHPHWKRGZKHUHWKH
YDULDEOHVDUHGHFODUHG



2EMHFWUHIHUHQFHYDULDEOHVZRUNMXVWOLNHSULPL
WLYHYDULDEOHVLIWKHUHIHUHQFHLVGHFODUHGDVD
ORFDOYDULDEOHLWJRHVRQWKHVWDFN



$OOREMHFWVOLYHLQWKHKHDSUHJDUGOHVVRI
ZKHWKHUWKHUHIHUHQFHLVDORFDORULQVWDQFH
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
_PMZMLWQV[\IVKM^IZQIJTM[TQ^M'

&HOO3KRQHREMHFW

7HENYOUSAYNEW#ELL0HONE *AVAHASTOMAKE
SPACEONTHE(EAPFORTHAT#ELL0HONE"UTHOWMUCH
SPACE%NOUGHFORTHEOBJECT WHICHMEANSENOUGHTO
HOUSEALLOFTHEOBJECTSINSTANCEVARIABLES4HATSRIGHT
INSTANCEVARIABLESLIVEONTHE(EAP INSIDETHEOBJECT
THEYBELONGTO

LQW

&HOO3KRQHREMHFW

Yfl
$QWHQQD

"UTWHATIFTHEINSTANCEVARIABLESAREOBJECTS7HATIF
#ELL0HONE(!3 !!NTENNA)NOTHERWORDS #ELL0HONE
HASAREFERENCEVARIABLEOFTYPE!NTENNA

2EMHFWZLWKRQHQRQSULPLWLYHLQVWDQFHYDULDEOH
DUHIHUHQFHWRDQ$QWHQQDREMHFWEXWQRDFWXDO
$QWHQQDREMHFW7KLVLVZKDW\RXJHWLI\RX
GHFODUHWKHYDULDEOHEXWGRQWLQLWLDOL]HLWZLWK
DQDFWXDO$QWHQQDREMHFW

7HENTHENEWOBJECTHASINSTANCEVARIABLESTHATARE
OBJECTREFERENCESRATHERTHANPRIMITIVES THEREAL
QUESTIONISDOESTHEOBJECTNEEDSPACEFORALLOF
THEOBJECTSITHOLDSREFERENCESTO4HEANSWERIS NOT
EXACTLY.OMATTERWHAT *AVAHASTOMAKESPACEFORTHE
INSTANCEVARIABLEVALUES"UTREMEMBERTHATAREFERENCE
VARIABLEVALUEISNOTTHEWHOLEOBJECT BUTMERELYAREMOTE
CONTROLTOTHEOBJECT3OIF#ELL0HONEHASANINSTANCE
VARIABLEDECLAREDASTHENON PRIMITIVETYPE!NTENNA
*AVAMAKESSPACEWITHINTHE#ELL0HONEOBJECTONLYFOR
THE!NTENNASREMOTECONTROLIEREFERENCEVARIABLE BUT
NOTTHE!NTENNAOBJECT

SXEOLFFODVV&HOO3KRQH^
SULYDWH$QWHQQDDQW
`

&HOO3KRQHREMHFW

7ELLTHENWHENDOESTHE!NTENNAOBJECTGETSPACEON
THE(EAP&IRSTWEHAVETOlNDOUTWHENTHE!NTENNA
OBJECTITSELFISCREATED4HATDEPENDSONTHEINSTANCE
VARIABLEDECLARATION)FTHEINSTANCEVARIABLEISDECLARED
BUTNOOBJECTISASSIGNEDTOIT THENONLYTHESPACEFOR
THEREFERENCEVARIABLETHEREMOTECONTROL ISCREATED

$QWHQQDREMHFW

Yfl
$QWHQQD

2EMHFWZLWKRQHQRQSULPLWLYHLQVWDQFHYDULDEOH
DQGWKH$QWHQQDYDULDEOHLVDVVLJQHGDQHZ
$QWHQQDREMHFW

SULYDWH$QWHQQDDQW

SULYDWH$QWHQQDDQW QHZ$QWHQQD 

q
ORQJ

2EMHFWZLWKWZRSULPLWLYHLQVWDQFHYDULDEOHV
6SDFHIRUWKHYDULDEOHVOLYHVLQWKHREMHFW

2EMEMBERTHATTHEVALUESOFANOBJECTSINSTANCE
VARIABLESLIVEINSIDETHEOBJECT)FTHEINSTANCEVARIABLES
AREALLPRIMITIVES *AVAMAKESSPACEFORTHEINSTANCE
VARIABLESBASEDONTHEPRIMITIVETYPE!NINTNEEDS
BITS ALONGBITS ETC*AVADOESNTCAREABOUTTHE
VALUEINSIDEPRIMITIVEVARIABLESTHEBIT SIZEOFANINT
VARIABLEISTHESAMEBITS WHETHERTHEVALUEOFTHE
INTIS  OR

.OACTUAL!NTENNAOBJECTISMADEONTHEHEAPUNLESS
ORUNTILTHEREFERENCEVARIABLEISASSIGNEDANEW
!NTENNAOBJECT

SXEOLFFODVV&HOO3KRQH^
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 STEPTWOWHEREAMIRACLEOCCURSANDTHENEWOBJECT
IShBORNvHASREMAINEDA"IG-YSTERY0REPARETOLEARNTHEFACTSOF
OBJECTLIFE(OPEYOURENOTSQUEAMISH

5HYLHZWKHVWHSVRIREMHFW
GHFODUDWLRQFUHDWLRQDQGDVVLJQPHQW

 'HFODUHDUHIHUHQFH
YDULDEOH

H
UHIHUHQFU 'XFNP\'XFN

Z
H
Q

D

0DNH RIDFODVVR
YDULDEOH FHW\SH
LQWHUID

H
$PXLUUDVFKO HUH
RFF
KHQHZ
$VVLJQW RWKH
REMHFWW H
UHIHUHQF

eq<m[c
QHZ'XFN 
'XFNUHIHUHQFH

 &UHDWHDQREMHFW
'XFNP\'XFN QHZ'XFN 
'XFNREMHFW

 /LQNWKHREMHFWDQG
WKHUHIHUHQFH
'XFNP\'XFN

QHZ'XFN 
'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

'XFNP\'XFN

1R

HUHFDOOLQJ
Z

H
N
OL
V
N
R
OR

,W
DPHG'XFN
QHZ'XFN  DPHWKRGQ HSDUHQWKHVHV
WK
EHFDXVHRI

:HUHFDOOLQJWKH'XFNFRQVWUXFWRU
!CONSTRUCTORDOESLOOKANDFEELALOTLIKEAMETHOD BUTITSNOT
AMETHOD)TSGOTTHECODETHATRUNSWHENYOUSAYQHZ)NOTHER
WORDS THECODETHATRUNSWHENYOUINSTANTIATEANOBJECT
4HEONLYWAYTOINVOKEACONSTRUCTORISWITHTHEKEYWORDQHZ
FOLLOWEDBYTHECLASSNAME4HE*6-lNDSTHATCLASSANDINVOKES
THECONSTRUCTORINTHATCLASS/+ TECHNICALLYTHISISNTTHEONLY
WAYTOINVOKEACONSTRUCTOR"UTITSTHEONLYWAYTODOITFROM
OUTSIDEACONSTRUCTOR9OUCANCALLACONSTRUCTORFROMWITHIN
ANOTHERCONSTRUCTOR WITHRESTRICTIONS BUTWELLGETINTOALLTHAT
LATERINTHECHAPTER

%XWZKHUHLVWKHFRQVWUXFWRU"

)KWV[\Z]K\WZPI[\PM
KWLM\PI\Z]V[_PMVaW]
QV[\IV\QI\MIVWJRMK\1V
W\PMZ_WZL[\PMKWLM\PI\
Z]V[_PMVaW][IaQHZWV
IKTI[[\aXM
-^MZaKTI[[aW]KZMI\MPI[
IKWV[\Z]K\WZM^MVQNaW]
LWV\_ZQ\MQ\aW]Z[MTN

,IZHGLGQWZULWHLWZKRGLG"
9OUCANWRITEACONSTRUCTORFORYOURCLASSWEREABOUTTODO
THAT BUTIFYOUDONT THECOMPILERWRITESONEFORYOU
(ERESWHATTHECOMPILERSDEFAULTCONSTRUCTORLOOKSLIKE
SXEOLF'XFN ^

`

1RWLFHVRPHWKLQJPLVVLQJ"+RZLVWKLV
GLIIHUHQWIURPDPHWKRG"

WKH
WKHVDPHDVGDWRU\

LV

H
P
D
Q
V
,W
7KDWVPDQ
FODVVQDPH

:KHUHVWKHU
,IWKLVZHUHDHWXUQW\SH"
\RXGQHHGDU PHWKRG
EHWZHHQSXE HWXUQW\SH
'XFN  OLFDQG

SXEOLF'XFN ^
FRQVWUXFWRUFRGHJRHVKHUH
`

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
BEFORETHEOBJECTCANBEASSIGNEDTOAREFERENCE
4HATMEANSYOUGETACHANCETOSTEPINAND
DOTHINGSTOGETTHEOBJECTREADYFORUSE)N
OTHERWORDS BEFOREANYONECANUSETHEREMOTE
CONTROLFORANOBJECT THEOBJECTHASACHANCETO
HELPCONSTRUCTITSELF)NOUR$UCKCONSTRUCTOR
WERENOTDOINGANYTHINGUSEFUL BUTITSTILL
DEMONSTRATESTHESEQUENCEOFEVENTS

FRQVWUXFWRU

Licensed by
Eduard Simons
104038

SXEOLFFODVV'XFN^

SXEOLF'XFN ^
6\VWHPRXWSULQWOQ 4XDFN 
`
`
RUFRGH

&RQVWUXFW

7KHFRQVWUXFWRUJLYHV
\RXDFKDQFHWRVWHSLQWR
WKHPLGGOHRIQHZ

)LOH(GLW:LQGRZ+HOS4XDFN

SXEOLFFODVV8VH$'XFN^

MDYD8VH$'XFN

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'XFNG QHZ'XFN 
`
7KLVF
`
FRQVWU DOOVWKH'XFN

4XDFN

XFWRU

6KDUSHQ \RXU SHQFLO


!CONSTRUCTORLETSYOUJUMPINTOTHEMIDDLE
OFTHEOBJECTCREATIONSTEPINTOTHEMIDDLE
OFQHZ#ANYOUIMAGINECONDITIONSWHERE
THATWOULDBEUSEFUL7HICHOFTHESEMIGHT
BEUSEFULINA#ARCLASSCONSTRUCTOR IFTHE#AR
ISPARTOFA2ACING'AME#HECKOFFTHEONES
THATYOUCAMEUPWITHASCENARIOFOR

 ,QFUHPHQWDFRXQWHUWRWUDFNKRZPDQ\REMHFWVRIWKLVFODVVW\SH
KDYHEHHQPDGH

 $VVLJQUXQWLPHVSHFLILFVWDWH GDWDDERXWZKDWVKDSSHQLQJ12: 
 $VVLJQYDOXHVWRWKHREMHFWVLPSRUWDQWLQVWDQFHYDULDEOHV
 *HWDQGVDYHDUHIHUHQFHWRWKHREMHFWWKDWVFUHDWLQJWKHQHZREMHFW
 $GGWKHREMHFWWRDQ$UUD\/LVW
 &UHDWH+$6$REMHFWV
 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

WKHUH DUH QR

1VQ\QITQbQVO\PM[\I\MWNIVM_,]KS
-OSTPEOPLEUSECONSTRUCTORSTOINITIALIZETHESTATEOFANOBJECT
)NOTHERWORDS TOMAKEANDASSIGNVALUESTOTHEOBJECTS
INSTANCEVARIABLES
SXEOLF'XFN ^
VL]H 
`

'XPE 4XHVWLRQV

Q:

7HYDOYOUNEEDTOWRITE
ACONSTRUCTORIFTHECOMPILER
WRITESONEFORYOU

A:

4HATSALLWELLANDGOODWHENTHE$UCKCLASSDEVELOPERKNOWS
HOWBIGTHE$UCKOBJECTSHOULDBE"UTWHATIFWEWANTTHE
PROGRAMMERWHOISUSING$UCKTODECIDEHOWBIGAPARTICULAR
$UCKSHOULDBE
)MAGINETHE$UCKHASASIZEINSTANCEVARIABLE ANDYOUWANTTHE
PROGRAMMERUSINGYOUR$UCKCLASSTOSETTHESIZEOFTHENEW
$UCK(OWCOULDYOUDOIT
7ELL YOUCOULDADDASET3IZE SETTERMETHODTOTHECLASS"UT
THATLEAVESTHE$UCKTEMPORARILYWITHOUTASIZE
ANDFORCESTHE
$UCKUSERTOWRITETWOSTATEMENTSONETOCREATETHE$UCK AND
ONETOCALLTHESET3IZE METHOD4HECODEBELOWUSESASETTER
METHODTOSETTHEINITIALSIZEOFTHENEW$UCK

LQ

SXEOLFYRLGVHW6L]H LQWQHZ6L]H ^
VL]H QHZ6L]H
`
`

Q:

(OWCANYOUTELLACON
STRUCTORFROMAMETHOD#AN
YOUALSOHAVEAMETHODTHATS
THESAMENAMEASTHECLASS

SXEOLFFODVV'XFN^
EOH
LQWVL]H
VWDQFHYDULD
SXEOLF'XFN ^
6\VWHPRXWSULQWOQ 4XDFN 
`

)FYOUNEEDCODETOHELP
INITIALIZEYOUROBJECTANDGET
ITREADYFORUSE YOULLHAVETO
WRITEYOUROWNCONSTRUCTOR9OU
MIGHT FOREXAMPLE BEDEPEN
DENTONINPUTFROMTHEUSER
BEFOREYOUCANFINISHMAKING
THEOBJECTREADY4HERESANOTHER
REASONYOUMIGHTHAVETOWRITE
ACONSTRUCTOR EVENIFYOUDONT
NEEDANYCONSTRUCTORCODE
YOURSELF)THASTODOWITHYOUR
SUPERCLASSCONSTRUCTOR ANDWELL
TALKABOUTTHATINAFEWMINUTES


FRQVWUXFWRU
KRG
VHWWHUPHW

SXEOLFFODVV8VH$'XFN^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'XFNG QHZ'XFN 
7KHUHVD

WKLVSRLQWLEQDGWKLQJKHUH7KH
GVHW6L]H  
$QGWKH \ WKHFRGHEXWZLW'XFNLVDOLYHDW
RXUHUHO\LQJ
K
`
WR.12:QW
RQWKH'RXXWFDVL]H 
K
D
`
W
'
NXVHU
X
SURF
FNF

HVV
UHD

WRFDOOWKRHQVHWRFDOOWKHFRQWVWLRUQLVDWZRSDUW
XFWRUDQGR
HWWHU
QH

,QVWDQFHYDULDEOHVGRKDYHDGHIDXOWYDOXHRU
IRUQXPHULFSULPLWLYHVIDOVHIRUERROHDQVDQG
QXOOIRUUHIHUHQFHV

A:

*AVALETSYOUDECLAREA
METHODWITHTHESAMENAMEAS
YOURCLASS4HATDOESNTMAKEIT
ACONSTRUCTOR THOUGH4HETHING
THATSEPARATESAMETHODFROMA
CONSTRUCTORISTHERETURNTYPE
-ETHODSMUSTHAVEARETURN
TYPE BUTCONSTRUCTORSCANNOT
HAVEARETURNTYPE

Q:

!RECONSTRUCTORSINHER
ITED)FYOUDONTPROVIDEA
CONSTRUCTORBUTYOURSUPERCLASS
DOES DOYOUGETTHESUPERCLASS
CONSTRUCTORINSTEADOFTHE
DEFAULT

A:

.OPE#ONSTRUCTORSARE
NOTINHERITED7ELLLOOKATTHATIN
JUSTAFEWPAGES
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
)FANOBJECTSHOULDNTBEUSEDUNTILONEOR
MOREPARTSOFITSSTATEINSTANCEVARIABLES HAVE
BEENINITIALIZED DONTLETANYONEGETAHOLDOF
A$UCKOBJECTUNTILYOURElNISHEDINITIALIZING
)TSUSUALLYWAYTOORISKYTOLETSOMEONEMAKE
ANDGETAREFERENCETOANEW$UCKOBJECTTHAT
ISNTQUITEREADYFORUSEUNTILTHATSOMEONETURNS
AROUNDANDCALLSTHESET3IZE METHOD(OWWILL
THE$UCK USEREVENKNOWTHATHESREQUIREDTOCALL
THESETTERMETHODAFTERMAKINGTHENEW$UCK
4HEBESTPLACETOPUTINITIALIZATIONCODEISINTHE
CONSTRUCTOR!NDALLYOUNEEDTODOISMAKEA
CONSTRUCTORWITHARGUMENTS
SXEOLFFODVV'XFN^
LQWVL]H

/HWWKHXVHUPDNHDQHZ'XFN
DQGVHWWKH'XFNVVL]HDOOLQ
RQHFDOO7KHFDOOWRQHZ
7KHFDOOWRWKH'XFN
FRQVWUXFWRU

SXEOLF'XFN LQWGXFN6L]H ^
6\VWHPRXWSULQWOQ 4XDFN 
VL]H GXFN6L]H

RWKH

W
PHWHU
D
U
D
S

QLQW
U
$GGD FRQVWUXFWR

N
'XF

W
8VHWKHDUJXPHQWYDOXHWRVH
WKHVL]HLQVWDQFHYDULDEOH

6\VWHPRXWSULQWOQ VL]HLVVL]H 
`
`

SXEOLFFODVV8VH$'XFN^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
'XFNG QHZ'XFN  

\
O
Q
`
3DVVDYDOXHW
R
HUHV PDNH `
RWKH
K
W

H
F
P
RQVW
H
WL

7KLV DWHPHQW: GVHW


RQHVW HZ'XFNDQ DWHPHQW
WKHQ HLQRQHVW
LWVVL]

UXFWRU

)LOH(GLW:LQGRZ+HOS+RQN

MDYD8VH$'XFN
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
CONSTRUCTORANDITTAKESANINTARGUMENTFORTHESIZEOFTHE
$UCK4HATMIGHTNOTBEABIGPROBLEM BUTITDOESMAKEIT
HARDERFORAPROGRAMMERTOCREATEANEW$UCKOBJECT ESPECIALLY
IFTHEPROGRAMMERDOESNTKNOWWHATTHESIZEOFA$UCKSHOULD
BE7OULDNTITBEHELPFULTOHAVEADEFAULTSIZEFORA$UCK SO
THATIFTHEUSERDOESNTKNOWANAPPROPRIATESIZE HECANSTILL
MAKEA$UCKTHATWORKS

SXEOLFFODVV'XFN^
LQWVL]H

,PDJLQHWKDW\RXZDQW'XFNXVHUVWRKDYH7:2RSWLRQV
IRUPDNLQJD'XFNRQHZKHUHWKH\VXSSO\WKH'XFN
VL]H DVWKHFRQVWUXFWRUDUJXPHQW DQGRQHZKHUHWKH\
GRQWVSHFLI\DVL]HDQGWKXVJHW\RXUGHIDXOW'XFNVL]H

SXEOLF'XFN ^
VXSSO\GHIDXOWVL]H
VL]H 
`

9OUCANTDOTHISCLEANLYWITHJUSTASINGLECONSTRUCTOR
2EMEMBER IFAMETHODORCONSTRUCTORSAMERULES HAS
APARAMETER YOUMUSTPASSANAPPROPRIATEARGUMENTWHEN
YOUINVOKETHATMETHODORCONSTRUCTOR9OUCANTJUSTSAY h)F
SOMEONEDOESNTPASSANYTHINGTOTHECONSTRUCTOR THENUSE
THEDEFAULTSIZEv BECAUSETHEYWONTEVENBEABLETOCOMPILE
WITHOUTSENDINGANINTARGUMENTTOTHECONSTRUCTORCALL9OU
COULDDOSOMETHINGCLUNKLYLIKETHIS

SXEOLF'XFN LQWGXFN6L]H ^
XVHGXFN6L]HSDUDPHWHU
VL]H GXFN6L]H
`
`

SXEOLFFODVV'XFN^
LQWVL]H
SXEOLF'XFN LQWQHZ6L]H ^
LI QHZ6L]H  ^
VL]H 
`HOVH^
VL]H QHZ6L]H
`
`
`

OXHLV
PHWHUYD'XFND
D
U
D
S

H
K
,IW JLYHWKHQHZ ZLVHXVH
]HUR OWVL]HRWKHU HIRU
GHIDX DUDPHWHUYDOX U\JRRG
WKHS H127DYH
WKHVL]Q
VROXWLR

"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

9OUREALLYWANT47/WAYSTO
MAKEANEW$UCK

4OMAKEA$UCKWHENYOUKNOWTHESIZE
'XFNG QHZ'XFN  
4OMAKEA$UCKWHENYOUDONOTKNOW
THESIZE
'XFNG QHZ'XFN 
3OTHISTWO OPTIONS TO MAKE A $UCKIDEA
NEEDSTWOCONSTRUCTORS/NETHATTAKES
ANINTANDONETHATDOESNT)FYOUHAVE
MORETHANONECONSTRUCTORINACLASS
ITMEANSYOUHAVEOVERLOADED
CONSTRUCTORS

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
NWZaW]' 1R 
9OUMIGHTTHINKTHATIFYOUWRITEONLY
ACONSTRUCTORWITHARGUMENTS THE
COMPILERWILLSEETHATYOUDONTHAVEA
NO ARGCONSTRUCTOR ANDSTICKONEINFOR
YOU"UTTHATSNOTHOWITWORKS4HE
COMPILERGETSINVOLVEDWITHCONSTRUCTOR
MAKINGONLYIFYOUDONTSAYANYTHINGATALL
ABOUTCONSTRUCTORS

2.OHWVVHHKHUH<RX
KDYHWKHULJKWWR\RXURZQ
FRQVWUXFWRU0DNHVVHQVH
,I\RXFDQQRWDIIRUGDFRQVWUXFWRU
RQHZLOOEHSURYLGHGIRU\RXE\WKH
FRPSLOHU*RRGWRNQRZ

,I\RXZULWHDFRQVWUXFWRUWKDW
WDNHVDUJXPHQWVDQG\RXVWLOO
ZDQWDQRDUJFRQVWUXFWRU
\RXOOKDYHWREXLOGWKHQRDUJ
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
ONLYANINT FOREXAMPLE THECLASSWOULDNTCOMPILE7HATYOU
NAMETHEPARAMETERVARIABLEDOESNTCOUNT)TSTHEVARIABLE
TYPEINT $OG ETC ANDORDERTHATMATTERS9OUCANHAVETWO
CONSTRUCTORSTHATHAVEIDENTICALTYPES ASLONGASTHEORDERIS
DIFFERENT!CONSTRUCTORTHATTAKESA3TRINGFOLLOWEDBYANINT IS
NOTTHESAMEASONETHATTAKESANINTFOLLOWEDBYA3TRING

)RXUGLI
PHDQVI IHUHQWFRQVWU
PDNHD RXUGLIIHUHQW XFWRUV
QHZPXV
KURRP ZD\VWR

VL]HEXW\RX
ZKHQ\RXNQRZWKH
PDJLF
GRQWNQRZLILWV

SXEOLFFODVV0XVKURRP^
SXEOLF0XVKURRP LQWVL]H ^`

RZDQ\WKLQJ

ZKHQ\RXGRQWNQ


LWVPDJLFRUQRW
ZKHQ\RXNQNQRZRZLI
H
L]
KHV
EXWGRQW W
SXEOLF0XVKURRP ERROHDQLV0DJLF ^`
ZKHQ\RXNQRZ LWV

SXEOLF0XVKURRP
ERROHDQLV0DJLFLQWVL]H
^`
KH
W
YH
KD
ZKHWKHURUQRWNQRZ
WKHVHWZR WLQ
EX
'\RX

VDPHDUJV
SXEOLF0XVKURRP
LQWVL]HERROHDQLV0DJLF ^` PDJLF$1 ZHOO

VR

HU
UG
R
DV
W
H
HQ
VL]
WKH
GLIIHU
`
LWV2.
SXEOLF0XVKURRP  ^`

:MDD=LHGAFLK



,QVWDQFHYDULDEOHVOLYHZLWKLQWKHREMHFWWKH\EHORQJWRRQ
WKH+HDS



,I\RXZDQWDQRDUJFRQVWUXFWRUDQG\RXYHDOUHDG\SXW
LQDFRQVWUXFWRUZLWKDUJXPHQWV\RXOOKDYHWREXLOGWKH
QRDUJFRQVWUXFWRU\RXUVHOI



,IWKHLQVWDQFHYDULDEOHLVDUHIHUHQFHWRDQREMHFWERWK
WKHUHIHUHQFHDQGWKHREMHFWLWUHIHUVWRDUHRQWKH+HDS



$OZD\VSURYLGHDQRDUJFRQVWUXFWRULI\RXFDQWRPDNHLW
HDV\IRUSURJUDPPHUVWRPDNHDZRUNLQJREMHFW6XSSO\
GHIDXOWYDOXHV



$FRQVWUXFWRULVWKHFRGHWKDWUXQVZKHQ\RXVD\QHZRQ
DFODVVW\SH



$FRQVWUXFWRUPXVWKDYHWKHVDPHQDPHDVWKHFODVVDQG
PXVWQRWKDYHDUHWXUQW\SH



2YHUORDGHGFRQVWUXFWRUVPHDQV\RXKDYHPRUHWKDQRQH
FRQVWUXFWRULQ\RXUFODVV



<RXFDQXVHDFRQVWUXFWRUWRLQLWLDOL]HWKHVWDWH LHWKH
LQVWDQFHYDULDEOHV RIWKHREMHFWEHLQJFRQVWUXFWHG



2YHUORDGHGFRQVWUXFWRUVPXVWKDYHGLIIHUHQWDUJXPHQW
OLVWV



,I\RXGRQWSXWDFRQVWUXFWRULQ\RXUFODVVWKHFRPSLOHU
ZLOOSXWLQDGHIDXOWFRQVWUXFWRU






7KHGHIDXOWFRQVWUXFWRULVDOZD\VDQRDUJFRQVWUXFWRU

<RXFDQQRWKDYHWZRFRQVWUXFWRUVZLWKWKHVDPH
DUJXPHQWOLVWV$QDUJXPHQWOLVWLQFOXGHVWKHRUGHUDQGRU
W\SHRIDUJXPHQWV



,QVWDQFHYDULDEOHVDUHDVVLJQHGDGHIDXOWYDOXHHYHQ
ZKHQ\RXGRQWH[SOLFLWO\DVVLJQRQH7KHGHIDXOWYDOXHV
DUHIDOVHIRUSULPLWLYHVDQGQXOOIRUUHIHUHQFHV

,I\RXSXWDFRQVWUXFWRUDQ\FRQVWUXFWRULQ\RXUFODVV
WKHFRPSLOHUZLOOQRWEXLOGWKHGHIDXOWFRQVWUXFWRU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 
RDWRDWDELOLW\ )
6WULQJQDPH *HQHULF
ORQJ>@IHDWKHUV ^`
ERROHDQFDQ)O\ WUXH
LQWPD[6SHHG 

SXEOLF'XFN ^
6\VWHPRXWSULQWOQ W\SHGXFN 
`

0DWFKWKHQHZ'XFN FDOOZLWKWKHFRQVWUXFWRU
WKDWUXQVZKHQWKDW'XFNLVLQVWDQWLDWHG:HGLG
WKHHDV\RQHWRJHW\RXVWDUWHG

SXEOLFFODVV7HVW'XFN^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
LQWZHLJKW 
RDWGHQVLW\ )
6WULQJQDPH 'RQDOG
ORQJ>@IHDWKHUV ^`
ERROHDQFDQ)O\ WUXH
LQWDLUVSHHG 

SXEOLF'XFN ERROHDQ\ ^
FDQ)O\ \
6\VWHPRXWSULQWOQ W\SHGXFN 
`
SXEOLF'XFN 6WULQJQORQJ>@I ^
QDPH Q
IHDWKHUV I
6\VWHPRXWSULQWOQ W\SHGXFN 
`

'XFN>@G QHZ'XFN>@
G>@ QHZ'XFN 

G>@ QHZ'XFN GHQVLW\ZHLJKW 





G>@ QHZ'XFN QDPHIHDWKHUV 

SXEOLF'XFN LQWZRDWI ^
SRXQGV Z
RDWDELOLW\ I
6\VWHPRXWSULQWOQ W\SHGXFN 
`

G>@ QHZ'XFN FDQ)O\ 


G>@ QHZ'XFN )DLUVSHHG 





G>@ QHZ'XFN IDOVH 

SXEOLF'XFN RDWGHQVLW\LQWPD[ ^
RDWDELOLW\ GHQVLW\
PD[6SHHG PD[
6\VWHPRXWSULQWOQ W\SHGXFN 
`
`


G>@ QHZ'XFN DLUVSHHGGHQVLW\ 


`
`










%ARLIERYOUSAIDTHATITSGOODTOHAVEANO ARGU
MENTCONSTRUCTORSOTHATIFPEOPLECALLTHENO ARGCON
STRUCTOR WECANSUPPLYDEFAULTVALUESFORTHEhMISSINGv
ARGUMENTS"UTARENTTHERETIMESWHENITSIMPOSSIBLETO
COMEUPWITHDEFAULTS!RETHERETIMESWHENYOUSHOULD
NOTHAVEANO ARGCONSTRUCTORINYOURCLASS

Q:

A:

9OURERIGHT4HEREARETIMESWHENANO ARGCONSTRUC
TORDOESNTMAKESENSE9OULLSEETHISINTHE*AVA!0)SOME
CLASSESDONTHAVEANO ARGCONSTRUCTOR4HE#OLORCLASS FOR
EXAMPLE REPRESENTSACOLOR#OLOROBJECTSAREUSEDTO FOR
EXAMPLE SETORCHANGETHECOLOROFASCREENFONTOR'5)
BUTTON7HENYOUMAKEA#OLORINSTANCE THATINSTANCEIS
OFAPARTICULARCOLORYOUKNOW $EATH BY #HOCOLATE"ROWN
"LUE 3CREEN OF $EATH"LUE 3CANDALOUS2ED ETC )FYOU
MAKEA#OLOROBJECT YOUMUSTSPECIFYTHECOLORINSOMEWAY
&RORUF QHZ&RORU  


7EREUSINGTHREEINTSFOR2'"VALUESHERE7ELLGETINTO
USING#OLORLATER INTHE3WINGCHAPTERS /THERWISE WHAT
WOULDYOUGET4HE*AVA!0)PROGRAMMERSCOULDHAVEDE
CIDEDTHATIFYOUCALLANO ARG#OLORCONSTRUCTORYOULLGETA
LOVELYSHADEOFMAUVE"UTGOODTASTEPREVAILED
)FYOUTRYTOMAKEA#OLORWITHOUTSUPPLYINGANARGUMENT
&RORUF QHZ&RORU 

4HECOMPILERFREAKSOUTBECAUSEITCANTFINDAMATCHINGNO
ARGCONSTRUCTORINTHE#OLORCLASS
)LOH(GLW:LQGRZ+HOS6WRS%HLQJ6WXSLG

FDQQRWUHVROYHV\PERO
FRQVWUXFWRU&RORU
ORFDWLRQFODVV
MDYDDZW&RORU
&RORUF QHZ&RORU 
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.

FRQVWUXFWRUVDQGJF

6IVWZM^QM_"NW]Z\PQVO[\W
ZMUMUJMZIJW]\KWV[\Z]K\WZ[

YiX`e
gfn\i
7HATABOUTSUPERCLASSES

$FRQVWUXFWRULVWKHFRGHWKDWUXQVZKHQ
VRPHERG\VD\VQHZRQDFODVVW\SH

'XFNG QHZ'XFN 


$FRQVWUXFWRUPXVWKDYHWKHVDPHQDPH
DVWKHFODVVDQGQRUHWXUQW\SH

7HENYOUMAKEA$OG
SHOULDTHE#ANINE
CONSTRUCTORRUNTOO
)FTHESUPERCLASSISABSTRACT
SHOULDITEVENHAVEA
CONSTRUCTOR

SXEOLF'XFN LQWVL]H ^`

,I\RXGRQWSXWDFRQVWUXFWRULQ\RXUFODVV
WKHFRPSLOHUSXWVLQDGHIDXOWFRQVWUXFWRU
7KHGHIDXOWFRQVWUXFWRULVDOZD\VDQRDUJ
FRQVWUXFWRU

SXEOLF'XFN ^`

7ELLLOOKATTHISONTHENEXT
FEWPAGES SOSTOPNOWAND
THINKABOUTTHEIMPLICATIONSOF
CONSTRUCTORSANDSUPERCLASSES

WKHUH DUH QR

Q:
A:

'XPE 4XHVWLRQV

$OCONSTRUCTORSHAVETOBESXEOLF

<RXFDQKDYHPRUHWKDQRQHFRQVWUXFWRULQ\RXUFODVV
DVORQJDVWKHDUJXPHQWOLVWVDUHGLIIHUHQW+DYLQJ
PRUHWKDQRQHFRQVWUXFWRULQDFODVVPHDQV\RXKDYH
RYHUORDGHGFRQVWUXFWRUV

SXEOLF'XFN ^`
SXEOLF'XFN LQWVL]H ^`
SXEOLF'XFN 6WULQJQDPH ^`
SXEOLF'XFN 6WULQJQDPHLQWVL]H ^`

'RLQJDOOWKH%UDLQ%DUEHOOVKDVEHHQVKRZQWRSURGXFHDLQFUHDVHLQ
QHXURQVL]H$QG\RXNQRZZKDWWKH\VD\%LJQHXURQV

.O#ONSTRUCTORSCANBESXEOLF
SULYDWH ORDEFAULTWHICHMEANSNOACCESS
MODIFIERATALL 7ELLLOOKMOREATDEFAULT
ACCESSINCHAPTERANDAPPENDIX"

Q:

(OWCOULDAPRIVATECONSTRUCTOR
EVERBEUSEFUL.OBODYCOULDEVERCALLIT
SONOBODYCOULDEVERMAKEANEWOBJECT

A:

"UTTHATSNOTEXACTLYRIGHT-ARKING
SOMETHINGSULYDWHDOESNTMEANNOBODY
CANACCESSIT ITJUSTMEANSTHATNOBODY
OUTSIDETHECLASSCANACCESSIT"ETYOURE
THINKINGh#ATCHv/NLYCODEFROMTHE
SAMECLASSASTHECLASS WITH PRIVATE CON
STRUCTORCANMAKEANEWOBJECTFROMTHAT
CLASS BUTWITHOUTFIRSTMAKINGANOBJECT
HOWDOYOUEVERGETTORUNCODEFROMTHAT
CLASSINTHEFIRSTPLACE(OWDOYOUEVERGET
TOANYTHINGINTHATCLASS0ATIENCEGRASSHOP
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.

VSDFHIRUDQREMHFWVVXSHUFODVVSDUWV

?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
THOUGHMULTIPLEOBJECTSMATERIALIZETHEOBJECTBEINGNEWDANDONEOBJECTPEREACH
SUPERCLASS#ONCEPTUALLY THOUGH ITSMUCHBETTERTOTHINKOFITLIKETHEPICTUREBELOW
WHERETHEOBJECTBEINGCREATEDHASLAYERSOFITSELFREPRESENTINGEACHSUPERCLASS

2EMHFW
)RRD
LQWE
LQWF
HTXDOV
JHW&ODVV
KDVK&RGH
WR6WULQJ

6QRZERDUG
)RR[
)RR\
LQW]
WXUQ
VKUHG
JHW$LU
ORVH&RQWURO

2EMHFWKDVLQVWDQFHYDULDEOHV
HQFDSVXODWHGE\DFFHVVPHWKRGV
7KRVHLQVWDQFHYDULDEOHVDUH
FUHDWHGZKHQDQ\VXEFODVVLV
LQVWDQWLDWHG 7KHVHDUHQWWKH
5($/2EMHFWYDULDEOHVEXWZH
GRQWFDUHZKDWWKH\DUHVLQFH
WKH\UHHQFDSVXODWHG

$VLQJOH
REMHFWRQ
WKHKHDS

Z ;

2EMHFW

6QRZERDUGDOVRKDVLQVWDQFH
YDULDEOHVRILWVRZQVRWRPDNH
D6QRZERDUGREMHFWZHQHHG
VSDFHIRUWKHLQVWDQFHYDULDEOHV
RIERWKFODVVHV

6QRZERDUG
6Q

RZ E

RDUGRE

MHF

7KHUHLVRQO\21(REMHFWRQWKHKHDSKHUH$
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
WHOLECONSTRUCTORCHAINREACTION!
NDYES
EVENABSTRACTCLASSESHAVECONSTRUCTORS
!LTHOUGHYOUCANNEVERSAYNEWONAN
ABSTRACTCLASS ANABSTRACTCLASSISSTILL
ASUPERCLASS SOITSCONSTRUCTORRUNS
WHENSOMEONEMAKESANINSTANCEOFA
CONCRETESUBCLASS
4HESUPERCONSTRUCTORSRUNTOBUILD
OUTTHESUPERCLASSPARTSOFTHEOBJECT
2EMEMBER ASUBCLASSMIGHTINHERIT
METHODSTHATDEPENDONSUPERCLASSSTATE
INOTHERWORDS THEVALUEOFINSTANCEVARIABLES
INTHESUPERCLASS &ORANOBJECTTOBEFULLY
FORMED ALLTHESUPERCLASSPARTSOFITSELFMUSTBE
FULLY FORMED ANDTHATSWHYTHESUPERCONSTRUCTOR
MUSTRUN!LLINSTANCEVARIABLESFROMEVERYCLASS
INTHEINHERITANCETREEHAVETOBEDECLAREDAND
INITIALIZED%VENIF!NIMALHASINSTANCEVARIABLES
THAT(IPPODOESNTINHERITIFTHEVARIABLESARE
PRIVATE FOREXAMPLE THE(IPPOSTILLDEPENDSON
THE!NIMALMETHODSTHATUSETHOSEVARIABLES
7HENACONSTRUCTORRUNS ITIMMEDIATELYCALLSITS
SUPERCLASSCONSTRUCTOR ALLTHEWAYUPTHECHAIN
UNTILYOUGETTOTHECLASS/BJECTCONSTRUCTOR

P
K

c
Y

2EMHFW

$QLPDO
2EMHFW

$QLPDO
+,SSR

+LSSR

$VLQJOH+LSSRREMHFWRQWKHKHDS
$QHZ+LSSRREMHFWDOVR,6$$QLPDO
DQG,6$2EMHFW,I\RXZDQWWRPDNHD
+LSSR\RXPXVWDOVRPDNHWKH$QLPDO
DQG2EMHFWSDUWVRIWKH+LSSR
7KLVDOOKDSSHQVLQDSURFHVVFDOOHG
&RQVWUXFWRU&KDLQLQJ

/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

SXEOLFFODVV$QLPDO^
SXEOLF$QLPDO ^
6\VWHPRXWSULQWOQ 0DNLQJDQ$QLPDO 
`
`

7HATSTHEREALOUTPUT'IVENTHE
CODEONTHELEFT WHATPRINTSOUT
WHENYOURUN4EST(IPPO!OR"
THEANSWERISATTHEBOTTOMOFTHEPAGE
)LOH(GLW:LQGRZ+HOS6ZHDU

MDYD7HVW+LSSR
6WDUWLQJ
0DNLQJDQ$QLPDO

Licensed by
Eduard Simons
104038

SXEOLFFODVV+LSSRH[WHQGV$QLPDO^
SXEOLF+LSSR ^
6\VWHPRXWSULQWOQ 0DNLQJD+LSSR 
`
`

0DNLQJD+LSSR

)LOH(GLW:LQGRZ+HOS6ZHDU

SXEOLFFODVV7HVW+LSSR^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ 6WDUWLQJ 
+LSSRK QHZ+LSSR 
`
`

 &RGHIURPDQRWKHU
FODVVVD\VQHZ
+LSSR DQGWKH
+LSSR FRQVWUXFWRU
JRHVLQWRDVWDFN
IUDPHDWWKHWRSRI
WKHVWDFN

+LSSR

 +LSSR LQYRNHV

WKHVXSHUFODVV
FRQVWUXFWRUZKLFK
SXVKHVWKH$QLPDO 
FRQVWUXFWRURQWRWKH
WRSRIWKHVWDFN

 $QLPDO LQYRNHV

$QLPDO
+LSSR

MDYD7HVW+LSSR
6WDUWLQJ
0DNLQJD+LSSR
0DNLQJDQ$QLPDO

WKHVXSHUFODVV
FRQVWUXFWRUZKLFK
SXVKHVWKH2EMHFW 
FRQVWUXFWRURQWR
WKHWRSRIWKHVWDFN
VLQFH2EMHFWLVWKH
VXSHUFODVVRI$QLPDO

2EMHFW
$QLPDO
+LSSR

 2EMHFW FRPSOHWHV

DQGLWVVWDFNIUDPH
LVSRSSHGRIIWKH
VWDFN([HFXWLRQJRHV
EDFNWRWKH$QLPDO 
FRQVWUXFWRUDQG
SLFNVXSDWWKHOLQH
IROORZLQJ$QLPDOV
FDOOWRLWVVXSHUFODVV
FRQVWUXFWRU

$QLPDO
+LSSR

7KHILUVWRQH$7KH+LSSR FRQVWUXFWRULVLQYRNHGILUVWEXW
LWVWKH$QLPDOFRQVWUXFWRUWKDWILQLVKHVILUVW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ^
$QLPDO 
%$'VL]H QHZ6L]H
`

127KLV
LVQRWOH
JD

O

`
4HEONLYWAYTOCALLASUPERCONSTRUCTORISBYCALLINGSUPER 
4HATSRIGHTSUPER CALLSTHESUPERCONSTRUCTOR
7HATARETHEODDS
SXEOLFFODVV'XFNH[WHQGV$QLPDO^

$QGKRZLVLWWKDWZHYH
JRWWHQDZD\ZLWKRXW
GRLQJLW"
9OUPROBABLYFIGUREDTHATOUT

/URGOODFRIENDTHECOMPILER
PUTSINACALLTOSUPER IFYOU
DONT
3OTHECOMPILERGETSINVOLVEDIN
CONSTRUCTOR MAKINGINTWOWAYS

 )FYOUDONTPROVIDEACONSTRUCTOR
4HECOMPILERPUTSONEINTHATLOOKSLIKE

LQWVL]H

SXEOLF&ODVV1DPH ^
VXSHU 

SXEOLF'XFN LQWQHZ6L]H ^
VXSHU 
VL]H QHZ6L]H

`

\RXMXVWVD\V
X

SHU

`
`
!CALLTOSUPER INYOURCONSTRUCTORPUTSTHESUPERCLASS
CONSTRUCTORONTHETOPOFTHE3TACK!NDWHATDOYOU
THINKTHATSUPERCLASSCONSTRUCTORDOES#ALLSITSSUPERCLASS
CONSTRUCTOR!NDSOITGOESUNTILTHE/BJECTCONSTRUCTORIS
ONTHETOPOFTHE3TACK/NCE/BJECT lNISHES ITSPOPPED
OFFTHE3TACKANDTHENEXTTHINGDOWNTHE3TACKTHE
SUBCLASSCONSTRUCTORTHATCALLED/BJECT ISNOWONTOP
4HATCONSTRUCTORlNISHESANDSOITGOESUNTILTHEORIGINAL
CONSTRUCTORISONTHETOPOFTHE3TACK WHEREITCANNOW
lNISH

 )FYOUDOPROVIDEACONSTRUCTOR
BUTYOUDONOTPUTINTHECALLTO
SUPER
4HECOMPILERWILLPUTACALLTOSUPER IN
EACHOFYOUROVERLOADEDCONSTRUCTORS

4HECOMPILER SUPPLIEDCALLLOOKSLIKE
VXSHU 
)TALWAYSLOOKSLIKETHAT4HECOMPILER
INSERTEDCALLTOSUPER ISALWAYSANO ARG
CALL)FTHESUPERCLASSHASOVERLOADED
CONSTRUCTORS ONLYTHENO ARGONEISCALLED

8QOHVVWKHFRQVWUXFWRUFDOOVDQRWKHURYHUORDGHG
FRQVWUXFWRU \RXOOVHHWKDWLQDIHZSDJHV 
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
YOUCANlGUREOUTWHICHHASTOEXISTlRST4HESUPERCLASSPARTS
OFANOBJECTHAVETOBEFULLY FORMEDCOMPLETELYBUILT BEFORETHE
SUBCLASSPARTSCANBECONSTRUCTED2EMEMBER
THESUBCLASSOBJECTMIGHTDEPENDONTHINGSIT
INHERITSFROMTHESUPERCLASS SOITSIMPORTANT
THATTHOSEINHERITEDTHINGSBElNISHED.O
WAYAROUNDIT4HESUPERCLASSCONSTRUCTOR
MUSTlNISHBEFOREITSSUBCLASSCONSTRUCTOR

LV62FUHHS\7KHUHV

QRZD\,FRXOGKDYHEHHQ
ERUQEHIRUHP\SDUHQWV
7KDWVMXVWZURQJ

,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 PXVWEHWKHUVWVWDWHPHQW
LQHDFKFRQVWUXFWRU
3RVVLEOHFRQVWUXFWRUVIRUFODVV%RRS

; SXEOLF%RRS ^
; SXEOLF%RRS ^
VXSHU 
`

; SXEOLF%RRS LQWL ^
VXSHU 

7KHVHD
.EHFDXVH ; SXEOLF%RRS LQWL ^
WKHSURJUUHD2
SOLFLWO\FRG PPHUH[
VL]H L
WRVXSHU  HGWKHFDOO
`
VWDWHPHQW DVWKHILUVW

VL]H L

SXEOLF%RRS LQWL ^

VL]H L
VXSHU 
`

7KHVHD
WKHFRPSULOHH2.EHFDXVH
FDOOWRVXSH UZLOOSXWD
ILUVWVWDWH U LQDVWKH
PHQW

%$'7
<RXFDQWKHLVZRQWFRPSLOH
WKHFDOO RV[SOLFLWO\SXW
XSHU
DQ\WKLQJW
HOVH EHORZ

7KHUHVDQH[FHSWLRQWRWKLVUXOH\RXOOOHDUQLWRQSDJH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
THATDIDNTHAVEANO ARGCONSTRUCTOR)MAGINETHISSCENARIOALLANIMALSHAVEA
NAME4HERESAGET.AME METHODINCLASS!NIMALTHATRETURNSTHEVALUEOFTHE
NAMEINSTANCEVARIABLE4HEINSTANCEVARIABLEISMARKEDPRIVATE BUTTHESUBCLASS
INTHISCASE (IPPO INHERITSTHEGET.AME METHOD3OHERESTHEPROBLEM
(IPPOHASAGET.AME METHODTHROUGHINHERITANCE BUTDOESNOTHAVETHENAME
INSTANCEVARIABLE(IPPOHASTODEPENDONTHE!NIMALPARTOFHIMSELFTOKEEPTHE
NAMEINSTANCEVARIABLE ANDRETURNITWHENSOMEONECALLSGET.AME ONA(IPPO
OBJECT"UTHOWDOESTHE!NIMALPARTGETTHENAME4HEONLYREFERENCE(IPPO
HASTOTHE!NIMALPARTOFHIMSELFISTHROUGHSUPER SOTHATSTHEPLACEWHERE
(IPPOSENDSTHE(IPPOSNAMEUPTOTHE!NIMALPARTOFHIMSELF SOTHATTHE
!NIMALPARTCANSTOREITINTHEPRIVATENAMEINSTANCEVARIABLE
SXEOLFDEVWUDFWFODVV$QLPDO^
SULYDWH6WULQJQDPH
SXEOLF6WULQJJHW1DPH ^
UHWXUQQDPH
`

`
`

$QLPDO 6WULQJQ
6WULQJJHW1DPH

+LSSR

>RWKHU+LSSRVSH
FLILFPHWKRGV@

$JHWWHU
+LSSRLQKHUPLWHWV KRGWKDW

QDPH WKH1DPH

SULYDWH6WULQJQDPH

+LSSR 6WULQJQ

$OODQLPDOV LQFOXGLQJ H
VXEFODVVHV KDYHDQDP

SXEOLF$QLPDO 6WULQJWKH1DPH ^

$QLPDO

7KHFRQV UXFW
RUWKDW
WDNHVWKHWQD
LWWKHQDPHLQPHDQGDVVLJQV
VWDQFH
YDULDEOH

7KH$QLPDOSDUWRI
PHQHHGVWRNQRZP\QDPH
VR,WDNHDQDPHLQP\RZQ
+LSSRFRQVWUXFWRUWKHQSDVV
WKHQDPHWRVXSHU

SXEOLFFODVV+LSSRH[WHQGV$QLPDO^
SXEOLF+LSSR 6WULQJQDPH ^
VXSHU QDPH 
`
`

DPH

FWRUWDNHVDQ
+LSSRFRQVWUX

LWVHQGVW
WKH$QLPDOKHFRQDPHXSWKH6WDFNWR

QVWUXFWRU
)LOH(GLW:LQGRZ+HOS+LGH

SXEOLFFODVV0DNH+LSSR^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
+LSSRK QHZ+LSSR %XII\ 
6\VWHPRXWSULQWOQ KJHW1DPH 
`
`

0DNHD+
QDPH%XILSIS\RSDVVLQJWKH
FRQVWUXFW WRWKH+LSSR
+LSSRVLQKRHUULW7KHQFDOOWKH
HGJHW1DPH

MDYD0DNH+LSSR
%XII\

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
Use this( ) to
om another
r
f
r
o
t
c
u
r
t
s
n
o
c
structor in
n
o
c
d
e
d
a
lo
r
e
ov
s.
the same clas
is( )
The call to th
ly in a
n
o
d
e
s
u
e
b
n
ca
must be
d
n
a
,
r
o
t
c
u
r
t
s
con
ent in a
m
e
t
a
t
s
t
s
ir
f
the
constructor.
n have a
a
c
r
o
t
c
u
r
t
s
n
o
Ac
R this( ),
O
)
(
r
e
p
u
s
o
t
call
h!
but never bot

7HATIFYOUHAVEOVERLOADEDCONSTRUCTORSTHAT WITH
THEEXCEPTIONOFHANDLINGDIFFERENTARGUMENTTYPES
ALLDOTHESAMETHING9OUKNOWTHATYOUDONTWANT
DUPLICATECODESITTINGINEACHOFTHECONSTRUCTORSPAIN
TOMAINTAIN ETC SOYOUDLIKETOPUTTHEBULKOFTHE
CONSTRUCTORCODEINCLUDINGTHECALLTOSUPER INONLY
ONEOFTHEOVERLOADEDCONSTRUCTORS9OUWANTWHICHEVER
CONSTRUCTORISlRSTINVOKEDTOCALL4HE2EAL#ONSTRUCTOR
ANDLET4HE2EAL#ONSTRUCTORlNISHTHEJOBOF
CONSTRUCTION)TSSIMPLEJUSTSAYTHIS /RTHISA3TRING 
/RTHIS X )NOTHERWORDS JUSTIMAGINETHATTHE
KEYWORDTHISISAREFERENCETOTHECURRENTOBJECT
9OUCANSAYTHIS ONLYWITHINACONSTRUCTOR ANDITMUST
BETHElRSTSTATEMENTINTHECONSTRUCTOR
"UTTHATSAPROBLEM ISNTIT%ARLIERWESAIDTHAT
SUPER MUSTBETHElRSTSTATEMENTINTHECONSTRUCTOR
7ELL THATMEANSYOUGETACHOICE
(YHU\FRQVWUXFWRUFDQKDYHDFDOOWRVXSHU 
RUWKLV EXWQHYHUERWK

FODVV0LQLH[WHQGV&DU^
&RORUFRORU
SXEOLF0LQL ^
WKLV &RORU5HG 
`

WUXFWRU
7KHQRDUJFRQV
&RORUDQG
W
XO
ID
GH
D
VXSSOLHV
5HDO
GH
FDOOVWKHRYHUO WRDKHRGQHWKDW
U
WR
&RQVWUXF
FDOOVVXSHU 

SXEOLF0LQL &RORUF ^
VXSHU 0LQL 
FRORU F
PRUHLQLWLDOL]DWLRQ
`

7KLVLV7KH5HDO&RQVWUXFWR
UWKDW
GRHV7KH5HDO:RUNRI
LWLDOL]LQJWKH
REMHFW LQFOXGLQJWKHFDOLQ
OWRVXSHU
)LOH(GLW:LQGRZ+HOS'ULYH

SXEOLF0LQL LQWVL]H ^
WKLV &RORU5HG 
:RQWZRUN&DQWKDYH
VXSHU VL]H 
VXSHU DQGWKLV LQWK

DPH
FRQVWUXFWRUEHFDXVHWKHV
`
H\
HDFK
PXVWEHWKHILUVWVWDWHPHQW
`

MDYDF0LQLMDYD
0LQLMDYDFDOOWRVXSHUPXVW
EHILUVWVWDWHPHQWLQFRQVWUXFWRU

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
CONSTRUCTORSTHATCAUSEDTHEM BYDRAWINGALINEFROMTHE
COMPILERERRORTOTHEhBADvCONSTRUCTOR
SXEOLFFODVV%RR^
SXEOLF%RR LQWL ^`
SXEOLF%RR 6WULQJV ^`
SXEOLF%RR 6WULQJVLQWL ^`
`

FODVV6RQ2I%RRH[WHQGV%RR^

0DNH LW

6WLFN

2OSESA
RERED V
IOLETSA
9OURP
REBLUE
ARENTS

COMEF
IRST WA
4HESU
YBEFOR
PERCLAS
EYOU
SPAR TS
FORMED
OFANO
BEFORE
B
JE
C
TMUSTB
THENE
EXIST*
EFULLY
WSUBC
USTLIKE
LASSOB
T
H
JEC TCA
E
RESNOW
BEENB
N
ORNBEFO
AYYOUC
OULDHA
REYOUR
PARENT
VE
S

)LOH(GLW:LQGRZ+HOS

MDYDF6RQ2I%RRMDYD
SXEOLF6RQ2I%RR ^
VXSHU ERR 
`
SXEOLF6RQ2I%RR LQWL ^
VXSHU )UHG 
`
SXEOLF6RQ2I%RR 6WULQJV ^
VXSHU  
`

FDQQRWUHVROYHV\PERO
V\PEROFRQVWUXFWRU%RR
MDYDODQJ6WULQJMDYDOD
QJ6WULQJ
)LOH(GLW:LQGRZ+HOS<DGD\DGD\DGD

MDYDF6RQ2I%RRMDYD
FDQQRWUHVROYHV\PERO

SXEOLF6RQ2I%RR LQWL6WULQJV ^
`

V\PEROFRQVWUXFWRU%RR

LQWMDYDODQJ6WULQJ

SXEOLF6RQ2I%RR 6WULQJD6WULQJE6WULQJF ^
VXSHU DE 
`
SXEOLF6RQ2I%RR LQWLLQWM ^
VXSHU PDQM 
`
SXEOLF6RQ2I%RR LQWLLQW[LQW\ ^
VXSHU LVWDU 
`
`


)LOH(GLW:LQGRZ+HOS,P1RW/LVWHQLQJ

MDYDF6RQ2I%RRMDYD
FDQQRWUHVROYHV\PERO
V\PEROFRQVWUXFWRU%RR

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
J]\PW_TWVOLWM[IVWJRMK\TQ^M '

!NOBJECTSLIFEDEPENDSENTIRELYONTHELIFEOFREFERENCES
REFERRINGTOIT)FTHEREFERENCEISCONSIDEREDhALIVEv THE
OBJECTISSTILLALIVEONTHE(EAP)FTHEREFERENCEDIES
ANDWELLLOOKATWHATTHATMEANSINJUSTAMOMENT THE
OBJECTWILLDIE

$ORFDOYDULDEOHOLYHVRQO\
ZLWKLQWKHPHWKRGWKDW
GHFODUHGWKHYDULDEOH

3OIFANOBJECTSLIFEDEPENDSONTHEREFERENCE
VARIABLESLIFE HOWLONGDOESAVARIABLELIVE

SXEOLFYRLGUHDG ^
LQWV 
VFDQEHXVHGRQO\
ZLWKLQWKLVPHWKRG
:KHQWKLVPHWKRGHQGV
VGLVDSSHDUVFRPSOHWHO\
`

4HATDEPENDSONWHETHERTHEVARIABLEISALOCALVARIABLE
ORANINSTANCEVARIABLE4HECODEBELOWSHOWSTHELIFEOFA
LOCALVARIABLE)NTHEEXAMPLE THEVARIABLEISAPRIMITIVE
BUTVARIABLELIFETIMEISTHESAMEWHETHERITSAPRIMITIVE
ORREFERENCEVARIABLE

6ARIABLE@SCANBEUSEDONLYWITHINTHE
READ METHOD)NOTHERWORDS THEVARIABLE
ISINSCOPEONLYWITHINITSOWNMETHOD.O
OTHERCODEINTHECLASSORANYOTHERCLASS
CANSEE@S

SXEOLFFODVV7HVW/LIH2QH^
SXEOLFYRLGUHDG ^
LQWV 
VOHHS 
`

VLVV
PHWKRGFRSHGWRWKHUHD
DQ\ZKHUH VRLWFDQWEH G 
XVHG
HOVH

SXEOLFYRLGVOHHS ^
V 

`
HJDOWR
O

W
R
`
1


%$' KHUH
XVHV

VOHHS
UHDG V

EOH6LQFH
LD
U
D
Y

V

H
K
VHHW
UDPH
VOHHS FDQWVOHHS VRZQ6WDFNI RXWLW
LWVQRWLQ VQWNQRZDQ\WKLQJDE
VOHHS GRH

7KHYDULDE
UHDG PHW OHVLVDOLYHEXWLQ
RQWRSRI KRG:KHQVOHHS F VFRSHRQO\ZLWKLQWK
VWLOOVHHV WKH6WDFNDQGUXQQ RPSOHWHVDQGUHDG H
WKH6WDFN :KHQUHDG FRPSOHLQJDJDLQUHDG FDQ LV
VLVGHDG

3XVKLQJX WHVDQGLVSRSSHGRI
SGLJLWDOG
I
DLVLHV

$QLQVWDQFHYDULDEOHOLYHV
DVORQJDVWKHREMHFW
GRHV,IWKHREMHFWLVVWLOO
DOLYHVRDUHLWVLQVWDQFH
YDULDEOHV
SXEOLFFODVV/LIH^
LQWVL]H
SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
VGLVDSSHDUVDWWKH
HQGRIWKLVPHWKRG
EXWVL]HFDQEHXVHG
DQ\ZKHUHLQWKHFODVV
`
`
6ARIABLE@STHISTIMEAMETHODPARAMETER
ISINSCOPEONLYWITHINTHESET3IZE
METHOD"UTINSTANCEVARIABLESIZEIS
SCOPEDTOTHELIFEOFTHEOBJECTASOPPOSED
TOTHELIFEOFTHEMETHOD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
JR  
`

/LIH
!LOCALVARIABLEISALIVEASLONGASITS3TACK
FRAMEISONTHE3TACK)NOTHERWORDS
UNTILTHEMETHODCOMPLETES

SXEOLFYRLGJR LQW[ ^
LQW] [
FUD]\ 
LPDJLQHPRUHFRGHKHUH
`

6FRSH
!LOCALVARIABLEISINSCOPEONLYWITHINTHE
METHODINWHICHTHEVARIABLEWASDECLARED
7HENITSOWNMETHODCALLSANOTHER THE
VARIABLEISALIVE BUTNOTINSCOPEUNTILITS
METHODRESUMES9OUCANUSEAVARIABLEONLY
WHENITISINSCOPE

GR6WXII E
 GR6WXII JRHVRQWKH
6WDFN9DULDEOHELV
DOLYHDQGLQVFRSH

SXEOLFYRLGFUD]\ ^
FKDUF D
`

FUD]\ F
JR [ ]
GR6WXII E

JR [ ]
GR6WXII E

 FUD]\ LVSXVKHGRQWR

 FUD]\ FRPSOHWHVDQG

JR [ ]
GR6WXII E
 JR SORSVRQWRSRI

WKH6WDFN[DQG]
DUHDOLYHDQGLQVFRSH
DQGELVDOLYHEXWQRW
LQVFRSH

7HILEALOCALVARIABLEISALIVE ITSSTATEPERSISTS
!SLONGASMETHODDO3TUFF ISONTHE3TACK FOR
EXAMPLE THE@BVARIABLEKEEPSITSVALUE"UTTHE
@BVARIABLECANBEUSEDONLYWHILEDO3TUFF S
3TACKFRAMEISATTHETOP)NOTHERWORDS YOUCAN
USEALOCALVARIABLEONLYWHILETHATLOCALVARIABLES
METHODISACTUALLYRUNNINGASOPPOSEDTO
WAITINGFORHIGHER3TACKFRAMESTOCOMPLETE 

WKH6WDFNZLWKFQRZ
DOLYHDQGLQVFRSH7KH
RWKHUWKUHHYDULDEOHV
DUHDOLYHEXWRXWRI
VFRSH

LVSRSSHGRIIWKH6WDFN
VRFLVRXWRIVFRSH
DQGGHDG:KHQJR 
UHVXPHVZKHUHLWOHIW
RII[DQG]DUHERWK
DOLYHDQGEDFNLQVFRSH
9DULDEOHELVVWLOODOLYH
EXWRXWRIVFRSH XQWLO
JR FRPSOHWHV 

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
!NOBJECTISALIVEASLONGASTHEREARELIVEREFERENCESTOIT)FAREFERENCE
VARIABLEGOESOUTOFSCOPEBUTISSTILLALIVE THEOBJECTITREFERSTOISSTILL
ALIVEONTHE(EAP!NDTHENYOUHAVETOASKh7HATHAPPENSWHENTHE
3TACKFRAMEHOLDINGTHEREFERENCEGETSPOPPEDOFFTHE3TACKATTHEEND
OFTHEMETHODv
)FTHATWASTHEONLYLIVEREFERENCETOTHEOBJECT THEOBJECTISNOW
ABANDONEDONTHE(EAP4HEREFERENCEVARIABLED
ISINTEGRATEDWITH
THE3TACKFRAME SOTHEABANDONEDOBJECTISNOW OFlCIALLY TOAST4HE
TRICKISTOKNOWTHEPOINTATWHICHANOBJECTBECOMESELIGIBLEFORGARBAGE
COLLECTION
/NCEANOBJECTISELIGIBLEFORGARBAGECOLLECTION'# YOUDONTHAVE
TOWORRYABOUTRECLAIMINGTHEMEMORYTHATOBJECTWASUSING)FYOUR
PROGRAMGETSLOWONMEMORY '#WILLDESTROYSOMEORALLOFTHEELIGIBLE
OBJECTS TOKEEPYOUFROMRUNNINGOUTOF2!-9OUCANSTILLRUNOUTOF
MEMORY BUTNOTBEFOREALLELIGIBLEOBJECTSHAVEBEENHAULEDOFFTOTHE
DUMP9OURJOBISTOMAKESURETHATYOUABANDONOBJECTSIE MAKE
THEMELIGIBLEFOR'# WHENYOUREDONEWITHTHEM SOTHATTHEGARBAGE
COLLECTORHASSOMETHINGTORECLAIM)FYOUHANGONTOOBJECTS '#CANT
HELPYOUANDYOURUNTHERISKOFYOURPROGRAMDYINGAPAINFUL
OUT OF MEMORYDEATH

,Y ZMUPN_^ WTQP SL^ YZ


aLW`P YZ XPLYTYR YZ
[ZTY_ `YWP^^ ^ZXPMZOd
SL^ L ]PQP]PYNP _Z T_
4Q dZ` NLY_ RP_ _Z T_
dZ` NLY_ L^V T_ _Z OZ
LYd_STYR LYO T_^ U`^_ L
MTR QL_ bL^_P ZQ MT_^
-`_ TQ LY ZMUPN_ T^
`Y]PLNSLMWP _SP
2L]MLRP .ZWWPN_Z] bTWW
R`]P _SL_ Z`_ >ZZYP]
Z] WL_P] _SL_ ZMUPN_^
RZTY OZbY

7KUHHZD\VWRJHWULGRIDQREMHFWVUHIHUHQFH

$QREMHFWEHFRPHV
HOLJLEOHIRU*&ZKHQ
LWVODVWOLYHUHIHUHQFH
GLVDSSHDUV

 7KHUHIHUHQFHJRHVRXWRIVFRSHSHUPDQHQWO\
YRLGJR ^
/LIH] QHZ/LIH 
`

GLHVDW
UHIHUHQFHW]KRG
HQGRIPH

HG
WLVDEDQGRQWR
F
MH
E
R
VW
LU
/LIH] QHZ/LIH 
WKHI UHSURJUDPPHG
] QHZ/LIH 
ZKHQ]LV FW
DQHZREMH
7KHUHIHUHQFHLVH[SOLFLWO\VHWWRQXOO
GRQHG
MHFWLVDEDQHG
E
R
VW
LU
I
H
/LIH] QHZ/LIH 
K
W
HSURJUDPP
] QXOO
ZKHQ]LVG

 7KHUHIHUHQFHLVDVVLJQHGDQRWKHUREMHFW

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 ^
EDUI 
`

,GRQWOLNHZKHUH
WKLVLVKHDGHG


SXEOLFYRLGEDUI ^
'XFNG QHZ'XFN 
`
`

IRRI LVSXVKHGRQWRWKH
6WDFNQRYDULDEOHVDUH
GHFODUHG

IRRI
+HDS

EDUI LVSXVKHGRQWRWKH
6WDFNZKHUHLWGHFODUHV
DUHIHUHQFHYDULDEOHDQG
FUHDWHVDQHZREMHFWDV
VLJQHGWRWKDWUHIHUHQFH
7KHREMHFWLVFUHDWHGRQ
WKH+HDSDQGWKHUHIHU
HQFHLVDOLYHDQGLQVFRSH

EDUI
IRRI

\
'X

W

FNREMHF

+HDS
EDUI FRPSOHWHVDQGSRSV
RIIWKH6WDFN,WVIUDPH
GLVLQWHJUDWHVVRGLVQRZ
GHDGDQGJRQH([HFXWLRQ
UHWXUQVWRIRRI EXWIRRI 
FDQWXVHG

IRRI

'X

W

FNREMHF

WKH
FNJRHVRQ UI 
X
'

Z
H
Q

7KH
VED
DVORQJD
+HDSDQG WKHGUHIHUHQFH

LVUXQQLQJ LQVFRSHVRWKH
G
Q
D

LVDOLYH QVLGHUHGDOLYH
R
F
'XFNLV

8KRK7KHGYDULDEOH
ZHQWDZD\ZKHQWKHEDUI 
6WDFNIUDPHZDVEORZQ
RIIWKHVWDFNVRWKH'XFN
LVDEDQGRQHG*DUEDJH
FROOHFWRUEDLW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

'XGHDOO\RX

SXEOLFFODVV5H5HI^

'XFNG QHZ'XFN 

KDGWRGRZDVUHVHW
WKHUHIHUHQFH*XHVV
WKH\GLGQWKDYHPHPRU\

SXEOLFYRLGJR ^
G QHZ'XFN 
`
`

'X

\
5H

5 HI 

Licensed by
Eduard Simons
104038
W

PDQDJHPHQWEDFNWKHQ

FNREMHF

+HDS

FW 
REMH

HQFHG
7KHQHZ'XFNJRHVRQWKH+HDSUHIHU
OHWKH
E\G6LQFHGLVDQLQVWDQFHYDULDE MHFW
'XFNZLOOOLYHDVORQJDVWKH5H5HIRE
WKDWLQVWDQWLDWHGLWLVDOLYH8QOHVV

'X

W

DOOVWKH
:KHQVRPHRQHFKLV'XFNLV
JR PHWKRGWRQO\UHIHUHQFH
DEDQGRQHG+LV JUDPPHGIRUD
KDVEHHQUHSUR N
GLIIHUHQW'XF

FNREMHF

5H

5 HI 

FW 
REMH

'X

W

\
FNREMHF

+HDS

LQJWKH
GLVDVVLJQHGDQHZ'XFNREMHFWOHDYG7KDW
RQH
RULJLQDO ILUVW 'XFNREMHFWDEDQG
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

SXEOLFYRLGJR ^
G QXOO
`
`

7KHPHDQLQJRIQXOO
7HENYOUSETAREFERENCETOQXOO YOURE
DEPROGRAMMINGTHEREMOTECONTROL

'X

W

SXEOLFFODVV5H5HI^

'XFNG QHZ'XFN 

FNREMHF

\
5H

5 HI 

+HDS

FW 
REMH

HQFHG
7KHQHZ'XFNJRHVRQWKH+HDSUHIHU
OHWKH
E\G6LQFHGLVDQLQVWDQFHYDULDE
MHFW
RE
5HI
5H
'XFNZLOOOLYHDVORQJDVWKH

OHVV
WKDWLQVWDQWLDWHGLWLVDOLYH8Q

)NOTHERWORDS YOUVEGOTAREMOTE
CONTROL BUTNO46ATTHEOTHEREND!NULL

EDQGRQHG
7KLV'XFNLVD FHKDVEHHQ
HQ
+LVRQO\UHIHU
VHWWRQXOO

REFERENCEHASBITSREPRESENTING@NULLWE
DONTKNOWORCAREWHATTHOSEBITSARE AS
LONGASTHE*6-KNOWS 
)FYOUHAVEANUNPROGRAMMEDREMOTE

'X

DOANYTHINGWHENYOUPRESSTHEM"UT
IN*AVA YOUCANTPRESSTHEBUTTONSIE

ISSUE NOTACOMPILERERROR THATYOURE


EXPECTINGABARKBUTTHERESNO$OGTHERE
TODOIT
)FYOUUSETHEDOTOPERATORON
ANULLREFERENCE YOULLGETA
.ULL0OINTER%XCEPTIONATRUNTIME9OULL

FNREMHF

USETHEDOTOPERATOR ONANULLREFERENCE
BECAUSETHE*6-KNOWSTHISISARUNTIME

W

CONTROL INTHEREALWORLD THEBUTTONSDONT

5H

5 HI 

FW 
REMH

+HDS

JDUHPRWH
GLVVHWWRQXOOZKLFKLVMXVWOLNHKDYLQ J<RXUHQRW
WKLQ
FRQWUROWKDWLVQWSURJUDPPHGWRDQ\
QGXQWLOLWV
UR
DWR
HYHQDOORZHGWRXVHWKHGRWRSHU
UHSURJUDPPHG DVVLJQHGDQREMHFW 

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
STATE6ALUESKEPTININSTANCEVARIABLES

)APPRECIATEYOURPOINTOFVIEW AND)CERTAINLY
APPRECIATETHEVALUEOFOBJECTSTATEANDALL
BUT)DONTWANTFOLKSTOBEMISLED,OCAL
VARIABLESAREREALLYIMPORTANT4OUSEYOUR
PHRASE h!FTERALL WHATSANOBJECTWITHOUT
BEHAVIORv!NDWHATISBEHAVIOR!LGORITHMS
INMETHODS!NDYOUCANBETYOURBITSTHERELL
BESOMELOCALVARIABLESINTHERETOMAKETHOSE
.O DONTGETMEWRONG )DOUNDERSTANDYOUR ALGORITHMSWORK
ROLEINAMETHOD ITSJUSTTHATYOURLIFEISSO
SHORT3OTEMPORARY4HATSWHYTHEYCALLYOU
7ITHINTHELOCAL VARIABLECOMMUNITY THE
GUYShTEMPORARYVARIABLESv
PHRASEhTEMPORARYVARIABLEvISCONSIDERED
DEROGATORY7EPREFERhLOCALv hSTACKv hAUTO
MATICv ORv3COPE CHALLENGEDv
-YAPOLOGIES)UNDERSTANDCOMPLETELY

)NEVERREALLYTHOUGHTABOUTITLIKETHAT7HAT
AREYOUDOINGWHILETHEOTHERMETHODSARE
RUNNINGANDYOUREWAITINGFORYOURFRAMETO
BETHETOPOFTHE3TACKAGAIN

!NYWAY ITSTRUETHATWEDONTHAVEALONG
LIFE ANDITSNOTAPARTICULARLYGOODLIFEEITHER
&IRST WERESHOVEDINTOA3TACKFRAMEWITH
ALLTHEOTHERLOCALVARIABLES!NDTHEN IFTHE
METHODWEREPARTOFCALLSANOTHERMETHOD
ANOTHERFRAMEISPUSHEDONTOPOFUS!NDIF
THATMETHODCALLSANOTHERMETHODANDSOON
3OMETIMESWEHAVETOWAITFOREVERFORALLTHE
OTHERMETHODSONTOPOFTHE3TACKTOCOM
PLETESOTHATOURMETHODCANRUNAGAIN
.OTHING.OTHINGATALL)TSLIKEBEINGIN
STASISTHATTHINGTHEYDOTOPEOPLEINSCIENCE
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

7ESAWANEDUCATIONALVIDEOABOUTITONCE
,OOKSLIKEAPRETTYBRUTALENDING)MEAN
WHENTHATMETHODHITSITSENDINGCURLYBRACE
THEFRAMEISLITERALLYBLOWNOFFTHE3TACK.OW
THATSGOTTAHURT

)LIVEONTHE(EAP WITHTHEOBJECTS7ELL NOT


WITHTHEOBJECTS ACTUALLYINANOBJECT4HE
OBJECTWHOSESTATE)STORE)HAVETOADMITLIFE
CANBEPRETTYLUXURIOUSONTHE(EAP!LOTOF
USFEELGUILTY ESPECIALLYAROUNDTHEHOLIDAYS

/+ HYPOTHETICALLY YES IF)MANINSTANCE


VARIABLEOFTHE#OLLARANDTHE#OLLARGETS
'#D THENTHE#OLLARSINSTANCEVARIABLES
WOULDINDEEDBETOSSEDOUTLIKESOMANYPIZZA
BOXES"UT)WASTOLDTHATTHISALMOSTNEVER
HAPPENS

4HEYLETUSDRINK

4WKIT>IZQIJTM
FRAMEGETSTORUNAGAIN/NTHEONEHAND WE
GETTOBEACTIVEAGAIN/NTHEOTHERHAND THE
CLOCKSTARTSTICKINGAGAINONOURSHORTLIVES
4HEMORETIMEOURMETHODSPENDSRUNNING
THECLOSERWEGETTOTHEENDOFTHEMETHOD
7EALLKNOWWHATHAPPENSTHEN
4ELLMEABOUTIT)NCOMPUTERSCIENCETHEYUSE
THETERMPOPPEDASINhTHEFRAMEWASPOPPED
OFFTHE3TACKv4HATMAKESITSOUNDFUN OR
MAYBELIKEANEXTREMESPORT"UT WELL YOU
SAWTHEFOOTAGE3OWHYDONTWETALKABOUT
YOU)KNOWWHATMYLITTLE3TACKFRAMELOOKS
LIKE BUTWHEREDOYOULIVE

"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
ANDTHEWHOLE#OLLARISABANDONED WHAT
HAPPENSTOYOU

!NDYOUBELIEVEDIT4HATSWHATTHEYSAYTO
KEEPUSMOTIVATEDANDPRODUCTIVE"UTARENT
YOUFORGETTINGSOMETHINGELSE7HATIFYOURE
ANINSTANCEVARIABLEINSIDEANOBJECT ANDTHAT
OBJECTISREFERENCEDONLYBYALOCALVARIABLE)F
)MTHEONLYREFERENCETOTHEOBJECTYOUREIN
WHEN)GO YOURECOMINGWITHME,IKEITOR
NOT OURFATESMAYBECONNECTED3O)SAYWE
FORGETABOUTALLTHISANDGOGETDRUNKWHILE
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

JF QXOO

QHZ*& JF

JF QXOO

QHZ*& QXOO

JF QXOO

JF JF

`

JF JF

SXEOLFVWDWLFYRLGGR6WXII *&FRS\*& ^

JF QXOO

GR6WXII QHZ*& 
UHWXUQQHZ*&
`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
*&JF
*&JF QHZ*& 
*&JF QHZ*& 
*&JF JF
JF GR6WXII 

)
FDOOPRUHPHWKRGV

*&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

1dQ^OU_Q
FODVV%HHV^
+RQH\>@EHH+$
`

3RSXODU
2EMHFWV

)NTHISCODEEXAMPLE SEVERALNEWOBJECTSARECREATED
9OURCHALLENGEISTOFINDTHEOBJECTTHATIS@MOSTPOPULAR
IETHEONETHATHASTHEMOSTREFERENCEVARIABLESREFERRING
TOIT4HENLISTHOWMANYTOTALREFERENCESTHEREAREFOR
THATOBJECT ANDWHATTHEYARE7ELLSTARTBYPOINTINGOUT
ONEOFTHENEWOBJECTS ANDITSREFERENCEVARIABLE
'OOD,UCK

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
`
+HUHVDQHZ
.LWN QHZ.LW 
5DFFRRQREMHFW
NNK KRQH\3RW
5DFFRRQU QHZ5DFFRRQ 

UUK KRQH\3RW
UN N
N QXOO
`HQGRIPDLQ
`

+HUHVLWVUHIHUHQFH
YDULDEOHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\

)LYH0LQXWH
0\VWHU\


:HYHUXQWKHVLPXODWLRQIRXUWLPHVDQGWKHPDLQPRGXOHVWHPSHUDWXUHFRQVLVWHQWO\
GULIWVRXWRIQRPLQDOWRZDUGVFROG6DUDKVDLGH[DVSHUDWHG:HLQVWDOOHGWKHQHZWHPSERWVODVW
ZHHN7KHUHDGLQJVRQWKHUDGLDWRUERWVGHVLJQHGWRFRROWKHOLYLQJTXDUWHUVVHHPWREHZLWKLQ
VSHFVRZHYHIRFXVHGRXUDQDO\VLVRQWKHKHDWUHWHQWLRQERWVWKHERWVWKDWKHOSWRZDUPWKHTXDU
WHUV7RPVLJKHGDWUVWLWKDGVHHPHGWKDWQDQRWHFKQRORJ\ZDVJRLQJWRUHDOO\SXWWKHPDKHDG
RIVFKHGXOH1RZZLWKRQO\YHZHHNVOHIWXQWLOODXQFKVRPHRIWKHRUELWHUVNH\OLIHVXSSRUW
V\VWHPVZHUHVWLOOQRWSDVVLQJWKHVLPXODWLRQJDXQWOHW


:KDWUDWLRVDUH\RXVLPXODWLQJ"7RPDVNHG
 :HOOLI,VHHZKHUH\RXUHJRLQJZHDOUHDG\WKRXJKWRIWKDW6DUDKUHSOLHG0LV
VLRQFRQWUROZLOOQRWVLJQRIIRQFULWLFDOV\VWHPVLIZHUXQWKHPRXWRIVSHF:HDUH
UHTXLUHGWRUXQWKHYUDGLDWRUERWV6LP8QLWVLQDUDWLRZLWKWKHYUDGLDWRUV
6LP8QLWV6DUDKFRQWLQXHG2YHUDOOWKHUDWLRRIUHWHQWLRQERWVWRUDGLDWRUERWVLV
VXSSRVHGWRUXQ


+RZVSRZHUFRQVXPSWLRQ6DUDK"7RPDVNHG6DUDKSDXVHG:HOOWKDWV
DQRWKHUWKLQJSRZHUFRQVXPSWLRQLVUXQQLQJKLJKHUWKDQDQWLFLSDWHG:HYHJRWDWHDP
WUDFNLQJWKDWGRZQWRREXWEHFDXVHWKHQDQRVDUHZLUHOHVVLWVEHHQKDUGWRLVRODWHWKHSRZHU
FRQVXPSWLRQRIWKHUDGLDWRUVIURPWKHUHWHQWLRQERWV2YHUDOOSRZHUFRQVXPSWLRQUDWLRV6DUDK
FRQWLQXHGDUHGHVLJQHGWRUXQZLWKWKHUDGLDWRUVSXOOLQJPRUHSRZHUIURPWKHZLUHOHVVJULG

2.6DUDK7RPVDLG/HWVWDNHDORRNDWVRPHRIWKHVLPXODWLRQLQLWLDWLRQFRGH
:HYHJRWWRQGWKLVSUREOHPDQGQGLWTXLFN
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

)LYH0LQXWH
0\VWHU\
FRQWLQXHG

SXEOLFFODVV7HVW/LIH6XSSRUW6LP^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$UUD\/LVWD/LVW QHZ$UUD\/LVW 
95DGLDWRUY QHZ95DGLDWRU D/LVW 
95DGLDWRUY QHZ95DGLDWRU D/LVW 
IRU LQW] ]] ^
5HWHQWLRQ%RWUHW QHZ5HWHQWLRQ%RW D/LVW 
`
`
`
FODVV6LP8QLW^
6WULQJERW7\SH
6LP8QLW 6WULQJW\SH ^
ERW7\SH W\SH
`
LQWSRZHU8VH ^
LI 5HWHQWLRQHTXDOV 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


 JF QXOO

%XERCISE3OLUTIONS

 QHZ*& JF

'#

 JF QXOO
 QHZ*& QXOO

WKDWLVRXWRIVFRSH
2.JFZDVWKHRQO\UHIHUHQFHYDULDEOH
UHIHUULQJWRWKDWREMHFW
1RDQRWKHURXWRIVFRSHYDULDEOH
2.JFKDGWKHRQO\UHIHUHQFHEHFDXVH
QHZ*&LVRXWRIVFRSH
1RQHZ*&LVRXWRIVFRSH

 JF QXOO 1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW


 JF JF 1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW
 JF JF
 JF QXOO

2.5HDVVLJQLQJWKHRQO\UHIHUHQFHWR
WKDWREMHFW
1RJFLVVWLOOUHIHUULQJWRWKDWREMHFW

)TPROBABLYWASNTTOOHARDTOlGUREOUTTHATTHE(ONEYOBJECTlRSTREFERREDTOBYTHEHONEY0OTVARIABLEISBY
FARTHEMOST@POPULAROBJECTINTHISCLASS"UTMAYBEITWASALITTLETRICKIERTOSEETHATALLOFTHEVARIABLESTHAT
POINTFROMTHECODETOTHE(ONEYOBJECTREFERTOTHESAMEOBJECT4HEREAREATOTALOFACTIVEREFERENCESTO
THISOBJECTRIGHTBEFORETHEMAIN METHODCOMPLETES4HEKKHVARIABLEISVALIDFORAWHILE BUTKGETSNULLED
ATTHEEND3INCERKSTILLREFERSTOTHE+ITOBJECT RKKHALTHOUGHNEVEREXPLICITYDECLARED REFERSTOTHEOBJECT

3RSXODU
2EMHFWV

+RQH\
2EMHFW

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[ [[ ^
ED>[@ QHZ%HDU 
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[WUDYH95DGLDWRU6LP8QLWVZHUHFUHDWHG,I7RPZDVULJKW
WRWDOSRZHUXVHZRXOGKDYHEHHQQRWWKHWKDW6DUDKVH[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
*AVASTATICFINALVARIABLES

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
THINGEVERYTIMEROUNDSAmOATINGPOINTNUMBERTHE
ARGUMENTTOTHEMETHOD TOTHENEARESTINTEGER%VERY
TIME)FYOUHAD INSTANCESOFCLASS-ATH ANDRAN
THEROUND METHOD YOUDGETANINTEGERVALUEOF
%VERYTIME)NOTHERWORDS THEMETHODACTSONTHE
ARGUMENT BUTISNEVERAFFECTEDBYANINSTANCEVARIABLE
STATE4HEONLYVALUETHATCHANGESTHEWAYTHEROUND
METHODRUNSISTHEARGUMENTPASSEDTOTHEMETHOD
$OESNTITSEEMLIKEAWASTEOFPERFECTLYGOODHEAPSPACE
TOMAKEANINSTANCEOFCLASS-ATHSIMPLYTORUNTHE
ROUND METHOD!NDWHATABOUTOTHER-ATHMETHODS
LIKEMIN WHICHTAKESTWONUMERICALPRIMITIVESAND
RETURNSTHESMALLEROFTHETWO/RMAX /RABS WHICH
RETURNSTHEABSOLUTEVALUEOFANUMBER
4HESEMETHODSNEVERUSEINSTANCEVARIABLEVALUES)NFACTTHE
-ATHCLASSDOESNTHAVEANYINSTANCEVARIABLES3OTHERES
NOTHINGTOBEGAINEDBYMAKINGANINSTANCEOFCLASS
-ATH3OGUESSWHAT9OUDONTHAVETO!SAMATTEROF
FACT YOUCANT

,I\RXWU\WRPDNHDQLQVWDQFHRI
FODVV0DWK

0HWKRGVLQWKH0DWKFODVV
GRQWXVHDQ\LQVWDQFH
YDULDEOHYDOXHV$QGEHFDXVH
WKHPHWKRGVDUHVWDWLF
\RXGRQWQHHGWRKDYHDQ
LQVWDQFHRI0DWK$OO\RX
QHHGLVWKH0DWKFODVV
LQW[ 0DWKURXQG  
LQW\ 0DWKPLQ  
LQW] 0DWKDEV  

7KHVHPHWKRGVQHYHUX
LQVWDQFHYDULDEOHVVRWVH
EHKDYLRUGRHVQWQHHG KHLU
WR
NQRZDERXWDVSHF
LILFREMHFW

0DWKPDWK2EMHFW QHZ0DWK 

<RXOOJHWWKLVHUURU
)LOH(GLW:LQGRZ+HOS,ZDV7ROG7KHUH:RXOG%H1R0DWK

MDYDF7HVW0DWK
7HVW0DWKMDYD0DWK KDVSULYDWH
DFFHVVLQMDYDODQJ0DWK
0DWKPDWK2EMHFW QHZ0DWK 
A

7KLVHUURUVKRZVWKDW
FRQVWUXFWRULV HG WKH0DWK
SULYDWH7KDW
PHDQV\RXFDQ1PD(9UN(5
0DWKFODVVWRPDNHD VD\QHZRQWKH
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

DOXHDIIHFWV
FHYDULDEOHWYKH
DQ
VW
,Q
SOD\ 
6WULQJWLWOH
WKHEHKDYLRURI
SXEOLF6RQJ 6WULQJW ^
PHWKRG
SXEOLFFODVV6RQJ^

SXEOLFVWDWLFLQWPLQ LQWDLQWE ^

WLWOH W

UHWXUQVWKHOHVVHURIDDQGE

`

SXEOLFYRLGSOD\ ^
6RXQG3OD\HUSOD\HU QHZ6RXQG3OD\HU 

0DWK

SOD\HUSOD\6RXQG WLWOH 

WLWOH

6H[3LVWROV

SOD\

3ROLWLN
&ROGSOD\

FHV
Q
D
W
V
Q
L

WZR VV6RQJ
RIFOD

RE
6RQJ

RE
6RQJ

k*
6RQJ

EOHV
1RLQVWDQFHYDUHKLDDYLRU
7KHPHWKRGE ZLWK
GRHVQWFKDQJH HVWDWH
LQVWDQFHYDULDEO

MHFW

6RQJ

OH
XHRIWKHWJLWWKDW
DO
Y
QW
UH
XU
F
7KH
LDEOHLVWKHV RQ
LQVWDQFHYDU\R
FDOOSOD\
SOD\VZKHQ X
0\:D\

MHFW

`

PLQ
PD[
DEV


k+

0DWKPLQ  

HUDWKHU
8VHWKH&ODVVQDP DULDEOH
Y
WKDQDUHIHUHQFH
QDPH

6RQJ

VSOD\ 

VSOD\ 
&DOOLQ
J

UHIHU SOD\ R
&DOOLQJSOD\ RQWKLV
3ROLW HQFHZLOO QWKLV
F
LNW
UHIHUHQFHZLOOFDXVH
RSOD DXVH
\
0\:D\WRSOD\

122%-(

&76
$EVROXWHO\

DQ\ZKHUHLQ 122%-(&76
WKLVSLFWX
UH 
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 
l*

WSOD\ 

?PI\Q\UMIV[\WPI^MI
KTI[[_Q\P[\I\QKUM\PWL[
/FTENALTHOUGHNOTALWAYS ACLASSWITHSTATIC
METHODSISNOTMEANTTOBEINSTANTIATED)N#HAPTER
WETALKEDABOUTABSTRACTCLASSES ANDHOWMARKING
ACLASSWITHTHEDEVWUDFWMODIlERMAKESIT
IMPOSSIBLEFORANYONETOSAY@NEWONTHATCLASSTYPE
)NOTHERWORDS ITSIMPOSSIBLETOINSTANTIATEANABSTRACT
CLASS
"UTYOUCANRESTRICTOTHERCODEFROMINSTANTIATING
ANON ABSTRACTCLASSBYMARKINGTHECONSTRUCTOR
SULYDWH2EMEMBER AMETHODMARKEDPRIVATEMEANS
THATONLYCODEFROMWITHINTHECLASSCANINVOKE
THEMETHOD!CONSTRUCTORMARKEDPRIVATEMEANS
ESSENTIALLYTHESAMETHINGONLYCODEFROMWITHIN
THECLASSCANINVOKETHECONSTRUCTOR.OBODYCAN
SAY@NEWFROMOUTSIDETHECLASS4HATSHOWITWORKS
WITHTHE-ATHCLASS FOREXAMPLE4HECONSTRUCTOR
ISPRIVATE YOUCANNOTMAKEANEWINSTANCEOF-ATH
4HECOMPILERKNOWSTHATYOURCODEDOESNTHAVE
ACCESSTOTHATPRIVATECONSTRUCTOR

4HISDOESNOTMEANTHATACLASSWITHONEORMORE
STATICMETHODSSHOULDNEVERBEINSTANTIATED)NFACT
EVERYCLASSYOUPUTAMAIN METHODINISACLASSWITH
ASTATICMETHODINIT
4YPICALLY YOUMAKEAMAIN METHODSOTHATYOU
CANLAUNCHORTESTANOTHERCLASS NEARLYALWAYSBY
INSTANTIATINGACLASSINMAIN ANDTHENINVOKINGA
METHODONTHATNEWINSTANCE
3OYOUREFREETOCOMBINESTATICANDNON STATIC
METHODSINACLASS ALTHOUGHEVENASINGLENON STATIC
METHODMEANSTHEREMUSTBESOMEWAYTOMAKEAN
INSTANCEOFTHECLASS4HEONLYWAYSTOGETANEW
OBJECTARETHROUGH@NEWORDESERIALIZATIONOR
SOMETHINGCALLEDTHE*AVA2EmECTION!0)THATWE
DONTGOINTO .OOTHERWAY"UTEXACTLYWHOSAYSNEW
CANBEANINTERESTINGQUESTION ANDONEWELLLOOKAT
ALITTLELATERINTHISCHAPTER

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
THEPREVIOUSPAGES THEREMIGHTNOTEVENBEANYINSTANCES
OFTHATCLASS3INCEASTATICMETHODISCALLEDUSINGTHECLASS
-ATHRANDOM ASOPPOSEDTOANINSTANCEREFERENCETPLAY
ASTATICMETHODCANTREFERTOANYINSTANCEVARIABLESOFTHE
CLASS4HESTATICMETHODDOESNTKNOWWHICHINSTANCESVARIABLE
VALUETOUSE

,I\RXWU\WRFRPSLOHWKLVFRGH
XFN"
:KLFK'VL]H"
:KRVH

SXEOLFFODVV'XFN^
SULYDWHLQWVL]H

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ 6L]HRIGXFNLVVL]H 
`
SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
`
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H
`
`


,IWKHUHVD'
WKHKHDSVRPHZXFKHNUHRQ
GRQWNQRZDERXWLWZH


,I\RXWU\WRXVHDQ
LQVWDQFHYDULDEOHIURP
LQVLGHDVWDWLFPHWKRG
WKHFRPSLOHUWKLQNV
,GRQWNQRZZKLFK
REMHFWVLQVWDQFHYDULDEOH
\RXUHWDONLQJDERXW
,I\RXKDYHWHQ'XFN
REMHFWVRQWKHKHDSD
VWDWLFPHWKRGGRHVQW
NQRZDERXWDQ\RIWKHP

,PVXUHWKH\UH
WDONLQJDERXW0<
VL]HYDULDEOH

1R,PSUHWW\VXUH
WKH\UHWDONLQJDERXW

0<VL]HYDULDEOH

<RXOOJHWWKLVHUURU
)LOH(GLW:LQGRZ+HOS4XDFN

MDYDF'XFNMDYD
'XFNMDYDQRQVWDWLFYDULDEOH
VL]HFDQQRWEHUHIHUHQFHGIURPD
VWDWLFFRQWH[W
6\VWHPRXWSULQWOQ 6L]H
RIGXFNLVVL]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

;\I\QKUM\PWL[KIV\][MVWV[\I\QK
UM\PWL[MQ\PMZ
7HATDONON STATICMETHODSDO4HEYUSUALLYUSEINSTANCE
VARIABLESTATETOAFFECTTHEBEHAVIOROFTHEMETHOD!GET.AME
METHODRETURNSTHEVALUEOFTHENAMEVARIABLE7HOSENAME
4HEOBJECTUSEDTOINVOKETHEGET.AME METHOD

7KLVZRQWFRPSLOH
SXEOLFFODVV'XFN^
SULYDWHLQWVL]H

&DOOLQJJHW6
WKHLQHYLWDEOHL]H JH MXVWSRVWSRQHV
WKHVL]HLQVWDQFHYW6L]H XVHV
DULDEOH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ 6L]HLVJHW6L]H 
`
SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
`
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H
DPHSUREOHP
%DFNWRWKHV
`
`
ZKRVHVL]H"

)LOH(GLW:LQGRZ+HOS-DFNLQ

MDYDF'XFNMDYD
'XFNMDYDQRQVWDWLFPHWKRG
JHW6L]H FDQQRWEHUHIHUHQFHG
IURPDVWDWLFFRQWH[W
6\VWHPRXWSULQWOQ 6L]H
RIGXFNLVJHW6L]H 

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

7HATIFYOUTRYTOCALLANON STATIC
METHODFROMASTATICMETHOD BUTTHE
NON STATICMETHODDOESNTUSEANYIN
STANCEVARIABLES7ILLTHECOMPILERALLOW
THAT

A:

.O4HECOMPILERKNOWSTHAT
WHETHERYOUDOORDONOTUSEINSTANCE
VARIABLESINANON STATICMETHOD YOUCAN
!NDTHINKABOUTTHEIMPLICATIONSIFYOU
WEREALLOWEDTOCOMPILEASCENARIOLIKE
THAT THENWHATHAPPENSIFINTHEFUTURE
YOUWANTTOCHANGETHEIMPLEMENTATION
OFTHATNON STATICMETHODSOTHATONEDAY
ITDOESUSEANINSTANCEVARIABLE/RWORSE
WHATHAPPENSIFASUBCLASSOVERRIDESTHE
METHODANDUSESANINSTANCEVARIABLEIN
THEOVERRIDINGVERSION

Q:

)COULDSWEAR)VESEENCODETHAT
CALLSASTATICMETHODUSINGAREFERENCE
VARIABLEINSTEADOFTHECLASSNAME

A:

9OUCANDOTHAT BUTASYOURMOTHER
ALWAYSTOLDYOU h*USTBECAUSEITSLEGAL
DOESNTMEANITSGOODv!LTHOUGHITWORKS
TOCALLASTATICMETHODUSINGANYINSTANCE
OFTHECLASS ITMAKESFORMISLEADINGLESS
READABLE CODE9OUCANSAY
'XFNG QHZ'XFN 
6WULQJ>@V ^`
GPDLQ V 

A

N
0D)RNUPH DWLWJHW6W'DLFWH7LPHVW,QDQVWFHDQ FH 


PH,Q
'DWH
DWJHW7L UFHQW,QVWDQFH
'DWH)RUP SADW
RED 3H
SE
UP REJHW
O
2
)R
HU
PE
1X
OMLATE

NTOBLO
ANDKNOW
NTSEE
3TATICSCA
TE
ARIABLESTA
INSTANCEV

4HISCODEISLEGAL BUTTHECOMPILERJUST
RESOLVESITBACKTOTHEREALCLASSANYWAY
h/+ DISOFTYPE$UCK ANDMAIN ISSTATIC
SO)LLCALLTHESTATICMAIN INCLASS$UCKv 
)NOTHERWORDS USINGDTOINVOKEMAIN
DOESNTIMPLYTHATMAIN WILLHAVEANY
SPECIALKNOWLEDGEOFTHEOBJECTTHATDIS
REFERENCING)TSJUSTANALTERNATEWAYTO
INVOKEASTATICMETHOD BUTTHEMETHODIS
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"
^IT]MQ[\PM[IUMNWZ)44
QV[\IVKM[WN\PMKTI[[
)MAGINEYOUWANTEDTOCOUNTHOWMANY$UCK
INSTANCESAREBEINGCREATEDWHILEYOURPROGRAMIS
RUNNING(OWWOULDYOUDOIT-AYBEANINSTANCE
VARIABLETHATYOUINCREMENTINTHECONSTRUCTOR

SULYDWHLQWVL]H
SULYDWHVWDWLFLQWGXFN&RXQW 

SXEOLF'XFN ^
1RZLWZ
GXFN&RXQW
LQFUHPHQWLOLQOJNHHS
HDFKWLPH
`
WKH'

FODVV'XFN^
LQWGXFN&RXQW 
SXEOLF'XFN ^
GXFN&RXQW
WKLVZRXO OZ
`
D\VVH
GXFN&RXQGWD
WRHDFKWW
`
D

DGH

XFNFRQVWUXF
WR
EHFDXVHGXF
N&RXQWLVUVWUDXQV
DQGZRQWEH
UHVHWWR WLF

SXEOLFYRLGVHW6L]H LQWV ^
VL]H V
`
SXEOLFLQWJHW6L]H ^
UHWXUQVL]H
`
`

LPH

.O THATWOULDNTWORKBECAUSEDUCK#OUNTISAN
INSTANCEVARIABLE ANDSTARTSATFOREACH$UCK9OU
COULDTRYCALLINGAMETHODINSOMEOTHERCLASS BUT
THATSKLUDGEY9OUNEEDACLASSTHATSGOTONLYASINGLE
COPYOFTHEVARIABLE ANDALLINSTANCESSHARETHATONE
COPY

RS\
LWVRZQF

S
H
H
N

W
RHVQ
REMHFWG
WV
$'XFFNN&RXQW
XFNREMWHKFLQN
'

LF
W
D
W

V
RIGX
WLV ILW<RXFDQ OLYHV
W
GXFN&RXQ
R
%HFDXVHUHDVLQJOHFRS\DVDYDULDEOHWFKWD
D
H
M
OH
K
V
E
E

DOO WDWLFYDULD RILQDQR
RIDV /$66LQVWHDG
LQD&

4HATSWHATASTATICVARIABLEGIVESYOUAVALUESHARED
BYALLINSTANCESOFACLASS)NOTHERWORDS ONEVALUE
PERCLASS INSTEADOFONEVALUEPERINSTANCE

'XFN
VL]H

VL]H
VWDWLFGXFN&RXQW

GXFN&RXQW

FNREMHFW

JHW6L]H
VHW6L]H

'X

VL]H
GXFN&RXQW

'X

FNREMHFW

VL]H
VL]H

GXFN&RXQW

GXFN&RXQW

'X

FNREMHFW

FNREMHFW

'X

'XFNZDVP

SXEOLFFODVV'XFN^

W
GXFN&RXHQG21/<

LF
W
D
W
V

7KH OHLVLQLWLDOL] VW
YDULDE WKHFODVVLVILU LPHD
ZKHQ 127HDFKW H
ORDGHG VWDQFHLVPDG
QHZLQ

(DFK'XF
VL]HYDULDENOHREMHFWKDVLWVRZQ
EXWWKHUHVR
RQHFRS\
QO\
YDULDEOHRWKIHWKHGXFN&RXQW 
RQHLQWKHFOD
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
LFH&UHDP
QH
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
THE*6-LOADSACLASSBECAUSESOMEBODYSTRYINGTOMAKEA
NEWINSTANCEOFTHECLASS FORTHElRSTTIME ORUSEASTATIC
METHODORVARIABLEOFTHECLASS!SAPROGRAMMER YOUALSO
HAVETHEOPTIONOFTELLINGTHE*6-TOLOADACLASS BUTYOURE
NOTLIKELYTONEEDTODOTHAT)NNEARLYALLCASES YOUREBETTER
OFFLETTINGTHE*6-DECIDEWHENTOLOADTHECLASS

$OOVWDWLFYDULDEOHV
LQDFODVVDUH
LQLWLDOL]HGEHIRUH
DQ\REMHFWRI
WKDWFODVVFDQEH
FUHDWHG

!NDTHEREARETWOGUARANTEESABOUTSTATICINITIALIZATION
3TATICVARIABLESINACLASSAREINITIALIZEDBEFOREANYOBJECTOFTHAT
CLASSCANBECREATED
3TATICVARIABLESINACLASSAREINITIALIZEDBEFOREANYSTATICMETHOD
OFTHECLASSRUNS

KHQWKHFODVVLVORDGHG
7KHSOD\HU&RXQWLVLQLWLDOL]HGZE
XWZHGRQWQHHG
:HH[SOLFLWO\LQLWLDOL]HGLWWRHIRULQ
WV6WDWLFYDUL
YDOX
XOW
WRVLQFHLVWKHGHID
FHYDULDEOHV
WDQ
LQV
DEOHVJHWGHIDXOWYDOXHVMXVWOLNH

FODVV3OD\HU^
VWDWLFLQWSOD\HU&RXQW 
SULYDWH6WULQJQDPH
SXEOLF3OD\HU 6WULQJQ ^
QDPH Q
SOD\HU&RXQW
`
`
SXEOLFFODVV3OD\HU7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6\VWHPRXWSULQWOQ 3OD\HUSOD\HU&RXQW 

'HIDXOWYDOXHVI
VWDWLFDQGLQVWDQFRUHGYDHFODUHGEXWXQLQLWLDOL]HG
ULDEOHVDUHWKHVDPH
SULPLWLYHLQWHJHUV ORQJ
VKRUWHWF 
SULPLWLYHIORDWLQJSRLQW
V IORDWGRXEOH 
ERROHDQIDOVH
REMHFWUHIHUHQFHVQXOO

3OD\HURQH QHZ3OD\HU 7LJHU:RRGV 


6\VWHPRXWSULQWOQ 3OD\HUSOD\HU&RXQW 
`
`


$FFHVVDVWDWLFYDULDEOHMXVWO LNHDVWDWLF
DPH
VVQ
FOD
WKH
LWK
PHWKRGZ

3TATICVARIABLESAREINITIALIZEDWHENTHECLASSISLOADED)FYOU
DONTEXPLICITLYINITIALIZEASTATICVARIABLEBYASSIGNINGITA
VALUEATTHETIMEYOUDECLAREIT ITGETSADEFAULTVALUE SOINT
VARIABLESAREINITIALIZEDTOZERO WHICHMEANSWEDIDNTNEED
TOEXPLICITLYSAYhPLAYER#OUNTv$ECLARING BUTNOTINITIAL
IZING ASTATICVARIABLEMEANSTHESTATICVARIABLEWILLGETTHEDE
FAULTVALUEFORTHATVARIABLETYPE INEXACTLYTHESAMEWAYTHAT
INSTANCEVARIABLESAREGIVENDEFAULTVALUESWHENDECLARED

)LOH(GLW:LQGRZ+HOS:KDW"

MDYD3OD\HU7HVW'ULYH


EHIRUHDQ\LQVWDQFHVDUHPDGH

DIWHUDQREMHFWLVFU

HDWHG

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\[
!VARIABLEMARKEDQDOMEANSTHATONCEINITIALIZEDITCAN
NEVERCHANGE)NOTHERWORDS THEVALUEOFTHESTATIClNALVARIABLE
WILLSTAYTHESAMEASLONGASTHECLASSISLOADED,OOKUP-ATH0)
INTHE!0) ANDYOULLlND
SXEOLFVWDWLFQDOGRXEOH3, 
4HEVARIABLEISMARKEDSXEOLFSOTHATANYCODECANACCESSIT
4HEVARIABLEISMARKEDVWDWLFSOTHATYOUDONTNEEDAN
INSTANCEOFCLASS-ATHWHICH REMEMBER YOURENOTALLOWEDTO
CREATE 

$VWDWLFLQLWLDOL]HULVDEORFN
RI FRGHWKDWUXQVZKHQD
FODVVLVORDGHGEHIRUHDQ\
RWKHUFRGHFDQXVHWKH
FODVVVRLWVDJUHDWSODFH
WRLQLWLDOL]HDVWDWLFILQDO
YDULDEOH
FODVV)RR^
QDOVWDWLFLQW[

Licensed by
Eduard Simons
104038

4HEVARIABLEISMARKEDQDOBECAUSE0)DOESNTCHANGEASFARAS
*AVAISCONCERNED 
4HEREISNOOTHERWAYTODESIGNATEAVARIABLEASACONSTANT BUT
THEREISANAMINGCONVENTIONTHATHELPSYOUTORECOGNIZEONE

#ONSTANTVARIABLENAMESSHOULDBEINALLCAPS

VWDWLF^
[ 
`

,QLWLDOL]HDQDOVWDWLFYDULDEOH
 $WWKHWLPH\RXGHFODUHLW

SXEOLFFODVV)RR^
SXEOLFVWDWLFQDOLQW)22B; 
`

25


QRWLFHW
ILQDOYDULDKHEQDPLQJFRQYHQWLRQ
QDPHVK OHVDUHFRQVWD VWDWLF
XQGHUVFRRUXHOGEHDOOXSSHUFDQVHWVVRWKH

VHSDUDWLQJ
WKHZRUZGLWV KDQ

,QDVWDWLFLQLWLDOL]HU

,I\RXGRQWJLYHDYDOXHWRDQDOYDULDEOH
LQRQHRIWKRVHWZRSODFHV
SXEOLFFODVV%DU^
SXEOLFVWDWLFQDOGRXEOH%$5B6,*1
`

QRLQLWLDOL]

DWLRQ

7KHFRPSLOHUZLOOFDWFKLW
)LOH(GLW:LQGRZ+HOS-DFNLQ

SXEOLFFODVV%DU^
SXEOLFVWDWLFQDOGRXEOH%$5B6,*1

MDYDF%DUMDYD

VWDWLF^
%$5B6,*1  GRXEOH 0DWKUDQGRP 
`
`

HUURU

%DUMDYDYDULDEOH%$5B6,*1
PLJKWQRWKDYHEHHQLQLWLDOL]HG

WKLVFRG
LVORDGHGHUE XQVDVVRRQDVWKH
LVFDOOHGDQ HIRUHDQ\VWDWLFPFODVV
YDULDEOHFD GHYHQEHIRUHDQ HWKRG
\VWDWLF
QEHXVHG
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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[
9OUCANUSETHEKEYWORDQDOTOMODIFYNON
STATICVARIABLESTOO INCLUDINGINSTANCEVARIABLES
LOCALVARIABLES ANDEVENMETHODPARAMETERS)N
EACHCASE ITMEANSTHESAMETHINGTHEVALUECANT
BECHANGED"UTYOUCANALSOUSElNALTOSTOP
SOMEONEFROMOVERRIDINGAMETHODORMAKINGA
SUBCLASS

QRQVWDWLFQDOYDULDEOHV
FODVV)RRI^
QDOLQWVL]H 
QDOLQWZKXIH

QRZ\RXFDQWFKDQJHVL]H

)RRI ^
ZKXIH 
QRZ\RXFDQWFKDQJHZKXIILH
`

YRLGGR6WXII QDOLQW[ ^
\RXFDQWFKDQJH[
`

YRLGGR0RUH ^
QDOLQW] 
\RXFDQWFKDQJH]
`
`


A final variable means you


cant change its value.
A final method means you
cant override the method.
A final class means you
cant extend the class (i.e.
you cant make a subclass).
,WVDOOVRVRQDO
,PHDQLI,GNQRZQ
,ZRXOGQWEHDEOHWR
FKDQJHWKLQJV

QDOPHWKRG
FODVV3RRI^
QDOYRLGFDOF:KXIH ^
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

Q:

:MDD=LHGAFLK

!STATICMETHODCANTACCESSA
NON STATICVARIABLE"UTCANANON STATIC
METHODACCESSASTATICVARIABLE

 $VWDWLFPHWKRGVKRXOGEHFDOOHGXVLQJWKHFODVV

A:

 $VWDWLFPHWKRGFDQEHLQYRNHGZLWKRXWDQ\LQVWDQFHV

/FCOURSE!NON STATICMETHODINA
CLASSCANALWAYSCALLASTATICMETHODINTHE
CLASSORACCESSASTATICVARIABLEOFTHECLASS

QDPHUDWKHUWKDQDQREMHFWUHIHUHQFHYDULDEOH
0DWKUDQGRP YVP\)RRJR
RIWKHPHWKRGVFODVVRQWKHKHDS

 $VWDWLFPHWKRGLVJRRGIRUDXWLOLW\PHWKRGWKDWGRHV
QRW DQGZLOOQHYHU GHSHQGRQDSDUWLFXODULQVWDQFH
YDULDEOHYDOXH

Q:

 $VWDWLFPHWKRGLVQRWDVVRFLDWHGZLWKDSDUWLFXODU

A:

 $VWDWLFPHWKRGFDQQRWDFFHVVDQRQVWDWLFPHWKRG

LQVWDQFHRQO\WKHFODVVVRLWFDQQRWDFFHVVDQ\
LQVWDQFHYDULDEOHYDOXHVRILWVFODVV,WZRXOGQWNQRZ
ZKLFKLQVWDQFHVYDOXHVWRXVH

7HYWOULD)WANTTOMAKEACLASS
lNAL$OESNTTHATDEFEATTHEWHOLE
PURPOSEOF//

9ESANDNO!TYPICALREASONFOR
MAKINGACLASSFINALISFORSECURITY9OU
CANT FOREXAMPLE MAKEASUBCLASSOFTHE
3TRINGCLASS)MAGINETHEHAVOCIFSOMEONE
EXTENDEDTHE3TRINGCLASSANDSUBSTITUTED
THEIROWN3TRINGSUBCLASSOBJECTS
POLYMORPHICALLY WHERE3TRINGOBJECTS
AREEXPECTED)FYOUNEEDTOCOUNTONA
PARTICULARIMPLEMENTATIONOFTHEMETHODS
INACLASS MAKETHECLASSFINAL

Q:

)SNTITREDUNDANTTOHAVETOMARK
THEMETHODSlNALIFTHECLASSISlNAL

A:

)FTHECLASSISFINAL YOUDONTNEEDTO
MARKTHEMETHODSFINAL4HINKABOUTITIF
ACLASSISFINALITCANNEVERBESUBCLASSED
SONONEOFTHEMETHODSCANEVERBE
OVERRIDDEN
/NTHEOTHERHAND IFYOUDOWANTTOALLOW
OTHERSTOEXTENDYOURCLASS ANDYOUWANT
THEMTOBEABLETOOVERRIDESOME BUTNOT
ALL OFTHEMETHODS THENDONTMARKTHE
CLASSFINALBUTGOINANDSELECTIVELYMARK
SPECIFICMETHODSASFINAL!FINALMETHOD
MEANSTHATASUBCLASSCANTOVERRIDETHAT
PARTICULARMETHOD

VLQFHQRQVWDWLFPHWKRGVDUHXVXDOO\DVVRFLDWHGZLWK
LQVWDQFHYDULDEOHVWDWH

 ,I\RXKDYHDFODVVZLWKRQO\VWDWLFPHWKRGVDQG\RX
GRQRWZDQWWKHFODVVWREHLQVWDQWLDWHG\RXFDQPDUN
WKHFRQVWUXFWRUSULYDWH

 $VWDWLFYDULDEOHLVDYDULDEOHVKDUHGE\DOOPHPEHUV
RIDJLYHQFODVV7KHUHLVRQO\RQHFRS\RIDVWDWLF
YDULDEOHLQDFODVVUDWKHUWKDQRQHFRS\SHUHDFK
LQGLYLGXDOLQVWDQFHIRULQVWDQFHYDULDEOHV

 $VWDWLFPHWKRGFDQDFFHVVDVWDWLFYDULDEOH
 7RPDNHDFRQVWDQWLQ-DYDPDUNDYDULDEOHDVERWK
VWDWLFDQGILQDO

 $ILQDOVWDWLFYDULDEOHPXVWEHDVVLJQHGDYDOXHHLWKHU
DWWKHWLPHLWLVGHFODUHGRULQDVWDWLFLQLWLDOL]HU
VWDWLF^
'2*B&2'( 
`

 7KHQDPLQJFRQYHQWLRQIRUFRQVWDQWV ILQDOVWDWLF
YDULDEOHV LVWRPDNHWKHQDPHDOOXSSHUFDVH

 $ILQDOYDULDEOHYDOXHFDQQRWEHFKDQJHGRQFHLWKDV
EHHQDVVLJQHG

 $VVLJQLQJDYDOXHWRDILQDOLQVWDQFHYDULDEOHPXVWEH
HLWKHUDWWKHWLPHLWLVGHFODUHGRULQWKHFRQVWUXFWRU

 $ILQDOPHWKRGFDQQRWEHRYHUULGGHQ
 $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


:KDWV/HJDO"
'IVENEVERYTHINGYOUVEJUST
LEARNEDABOUTSTATICANDlNAL
WHICHOFTHESEWOULDCOMPILE

SXEOLFFODVV)RR^
VWDWLFLQW[
SXEOLFYRLGJR ^
6\VWHPRXWSULQWOQ [ 
`
`

SXEOLFFODVV)RR^
VWDWLFQDOLQW[ 
SXEOLFYRLGJR ^
6\VWHPRXWSULQWOQ [ 
`
`

SXEOLFFODVV)RR^
LQW[

SXEOLFVWDWLFYRLGJR ^
6\VWHPRXWSULQWOQ [ 
`
`

SXEOLFFODVV)RR^
VWDWLFQDOLQW[ 
SXEOLFYRLGJR QDOLQW[ ^
6\VWHPRXWSULQWOQ [ 
`
`

SXEOLFFODVV)RR^
QDOLQW[
SXEOLFYRLGJR ^
6\VWHPRXWSULQWOQ [ 
`
`

SXEOLFFODVV)RR^
LQW[ 
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
ATSOMESTATICMETHODSIN
CLASS-ATH4HISISNTALLOF
THEM JUSTTHEHIGHLIGHTS
#HECKYOUR!0)FORTHEREST
INCLUDINGSQRT TAN CEIL
mOOR ANDASIN 

0DWKUDQGRP
5HWXUQVDGRXEOHEHWZHHQWKURXJK EXW
QRWLQFOXGLQJ 
GRXEOHU 0DWKUDQGRP 
LQWU  LQW  0DWKUDQGRP   

0DWKDEV
5HWXUQVDGRXEOHWKDWLVWKHDEVROXWHYDOXHRI
WKHDUJXPHQW7KHPHWKRGLVRYHUORDGHGVR
LI\RXSDVVLWDQLQWLWUHWXUQVDQLQW3DVVLWD
GRXEOHLWUHWXUQVDGRXEOH
LQW[ 0DWKDEV  UHWXUQV
GRXEOHG 0DWKDEV  UHWXUQV

0DWKURXQG
5HWXUQVDQLQWRUDORQJ GHSHQGLQJRQ
ZKHWKHUWKHDUJXPHQWLVDRDWRUDGRXEOH 
URXQGHGWRWKHQHDUHVWLQWHJHUYDOXH
LQW[ 0DWKURXQG I UHWXUQV
LQW\ 0DWKURXQG I UHWXUQV

0DWKPLQ

5HPHPEHUIORDWLQJSRLQWOLWHUD
OVDUHDVVXPHG
WREHGRXEOHVXQOHVV\RX
DGGWKHI

5HWXUQVDYDOXHWKDWLVWKHPLQLPXPRIWKH
WZRDUJXPHQWV7KHPHWKRGLVRYHUORDGHGWR
WDNHLQWVORQJVRDWVRUGRXEOHV
LQW[ 0DWKPLQ  UHWXUQV
GRXEOH\ 0DWKPLQ  UHWXUQV

0DWKPD[
5HWXUQVDYDOXHWKDWLVWKHPD[LPXPRIWKH
WZRDUJXPHQWV7KHPHWKRGLVRYHUORDGHGWR
WDNHLQWVORQJVRDWVRUGRXEOHV
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

object

3OMETIMESYOUWANTTOTREATAPRIMITIVELIKE
ANOBJECT&OREXAMPLE INALLVERSIONSOF*AVA
PRIORTO YOUCANNOTPUTAPRIMITIVEDIRECTLY
INTOACOLLECTIONLIKE!RRAY,ISTOR(ASH-AP
LQW[ 
$UUD\/LVWOLVW QHZ$UUD\/LVW 
OLVWDGG [ 

XVLQJ-DYDRU
7KLVZRQWZRUNXQOHVV\RXUH
HWKRGLQ$UUD\/LVW
W P
G LQ
RDG
VQ
KHUH
JUHDWHU7
KDVDGG PHWKRGV
VWR
\/L
WKDWWDNHVDQLQW $UUD HVQRWQO\
SULPLWLYHV
WKDWWDNHREMHFWUHIHUHQF
4HERESAWRAPPERCLASSFOREVERYPRIMITIVETYPE
ANDSINCETHEWRAPPERCLASSESAREINTHEJAVA
LANGPACKAGE YOUDONTNEEDTOIMPORTTHEM
9OUCANRECOGNIZEWRAPPERCLASSESBECAUSE
EACHONEISNAMEDAFTERTHEPRIMITIVETYPEIT
WRAPS BUTWITHTHElRSTLETTERCAPITALIZEDTO
FOLLOWTHECLASSNAMINGCONVENTION
/HYEAH FORREASONSABSOLUTELYNOBODYONTHE
PLANETISCERTAINOF THE!0)DESIGNERSDECIDED
NOTTOMAPTHENAMESEXACTLYFROMPRIMITIVE
TYPETOCLASSTYPE9OULLSEEWHATWEMEAN
%RROHDQ

primitive
When you need to treat
a primitive like an object,
wrap it. If youre using any
version of Java before 5.0,
youll do this when you
need to store a primitive
value inside a collection like
ArrayList or HashMap.

&KDUDFWHU
%\WH
6KRUW
,QWHJHU

:DWFKRXW7KHQDPHVDUHQWLYH
PDSSHGH[DFWO\WRWKHSULPLW
W\SHV7KHFODVVQDPHVDUHIXOO\
VSHOOHGRXW

LQWSULPLWLY

,QWHJHUREMHFW

'RXEOH

ZUDSSLQJDYDOXH

*LYHWKHSULPLWLYHWRWKH VLW
ZUDSSHUFRQVWUXFWRU7KDW

,Q

LQW

HFW


/RQJ
)ORDW

WHJHUREM

LQWL 
,QWHJHUL:UDS QHZ,QWHJHU L 

XQZUDSSLQJDYDOXH

$OOWKHZUDSSHUVZRUN
OLNHWKLV%RROHDQKDVD
ERROHDQ9DOXH &KDUDFWHU
KDVDFKDU9DOXH HWF

LQWXQ:UDSSHG L:UDSLQW9DOXH 

1RWHWKHSLFWXUHDWWKHWRSLVDFKRFRODWHLQDIRLOZUDSSHU*HW
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,FDQW
MXVWPDNHDQ$UUD\/LVWRILQWV""",
KDYHWRZUDSHYHU\VLQJOHIULFNLQRQHLQDQHZ
,QWHJHUREMHFWWKHQXQZUDSLWZKHQ,WU\
WRDFFHVVWKDWYDOXHLQWKH$UUD\/LVW"
7KDWVDZDVWHRIWLPHDQGDQHUURU
ZDLWLQJWRKDSSHQ

*MNWZM2I^IA7=PIL\WLW\PM_WZS
3HESRIGHT)NALLVERSIONSOF*AVAPRIORTO PRIMITIVESWEREPRIMITIVES
ANDOBJECTREFERENCESWEREOBJECTREFERENCES ANDTHEYWERE.%6%2
TREATEDINTERCHANGEABLY)TWASALWAYSUPTOYOU THEPROGRAMMER TODO
THEWRAPPINGANDUNWRAPPING4HEREWASNOWAYTOPASSAPRIMITIVETOA
METHODEXPECTINGANOBJECTREFERENCE ANDNOWAYTOASSIGNTHERESULTOFA
METHODRETURNINGANOBJECTREFERENCEDIRECTLYTOAPRIMITIVEVARIABLEEVEN
WHENTHERETURNEDREFERENCEISTOAN)NTEGERANDTHEPRIMITIVEVARIABLEIS
ANINT4HEREWASSIMPLYNORELATIONSHIPBETWEENAN)NTEGERANDANINT
OTHERTHANTHEFACTTHAT)NTEGERHASANINSTANCEVARIABLEOFTYPEINTTOHOLD
THEPRIMITIVETHE)NTEGERWRAPS !LLTHEWORKWASUPTOYOU

$Q$UUD\/LVWRISULPLWLYHLQWV
:LWKRXWDXWRER[LQJ -DYDYHUVLRQVEHIRUH
SXEOLFYRLGGR1XPV2OG:D\ ^

RW
RUH\RXFRXOGEMQHFWV
HI
E
HU
PE
PH
5H

0DNHDQ$UUD\/LVWVRDOO$UUD\/LVWVZHUHOLVWVRI2
VSHFLI\WKH7<3(

$UUD\/LVWOLVW2I1XPEHUV QHZ$UUD\/LVW 


HOLVW

ULPLWLYHWRWKIL
S
KH
W
GG
D
W
DQ
F
RX
<
U UVW
OLVW2I1XPEHUVDGG QHZ,QWHJHU  
ZUDSLWLQDQ,QWHJH

VR\RXKDYHWR

,QWHJHURQH  ,QWHJHU OLVW2I1XPEHUVJHW  


LQWLQW2QH RQHLQW9DOXH 
`


,WFRPHVRXWDVW\DQSHFDVW
F
2EMHFWEXW\RX ,QWHJHU
WKH2EMHFWWRDQ

)LQDOO\\RXFDQJ
HWWKHSULPLWLYH
RXWRIWKH,QWHJ
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
0DNHDQ$UUD\/LVW

SXEOLFYRLGGR1XPV1HZ:D\ ^

$UUD\/LVW,QWHJHU!OLVW2I1XPEHUV QHZ$UUD\/LVW,QWHJHU! 
OLVW2I1XPEHUVDGG  

-XVWDGGLW 

LQWQXP OLVW2I1XPEHUVJHW  


`

$QGWKHFRPSLOHUDXWRPDWLF
DOO\XQZUDSV XQER[HV 
WKH,QWHJHUREMHFWVR\RXF
GLUHFWO\WRDSULPLWLYHZLWKDQDVVLJQWKHLQWYDOXH
LQW9DOXH PHWKRGRQWKH,QWRXWKDYLQJWRFDOOWKH
HJHUREMHFW

$OWKRXJKWKHUHLV127DPHWKRGLQ$UUD\/LVW
IRUDGG LQW WKHFRPSLOHUGRHVDOOWKHZUDSSLQJ
ER[LQJ IRU\RX,QRWKHUZRUGVWKHUHUHDOO\,6
DQ,QWHJHUREMHFWVWRUHGLQWKH$UUD\/LVWEXW
\RXJHWWRSUHWHQGWKDWWKH$UUD\/LVWWDNHV
LQWV <RXFDQDGGERWKLQWVDQG,QWHJHUVWRDQ
$UUD\/LVW,QWHJHU!

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

LQW

WHJ REM
HU

YRLGWDNH1XPEHU ,QWHJHUL ^`

5HWXUQYDOXHV

LQWJLYH1XPEHU ^
UHWXUQ[
`

,IDPHWKRGGHFODUHVDSULPLWLYH
UHWXUQW\SH\RXFDQUHWXUQHLWKHUD
FRPSDWLEOHSULPLWLYHRUDUHIHUHQFH
WRWKHZUDSSHURIWKDWSULPLWLYHW\SH
$QGLIDPHWKRGGHFODUHVDZUDSSHU
UHWXUQW\SH\RXFDQUHWXUQHLWKHUD
UHIHUHQFHWRWKHZUDSSHUW\SHRUD
SULPLWLYHRIWKHPDWFKLQJW\SH

,Q

WHJ REM
HU

%RROHDQH[SUHVVLRQV

LQW

WUXH
WUXH

HF
W

$Q\SODFHDERROHDQYDOXHLVH[SHFWHG
\RXFDQXVHHLWKHUDQH[SUHVVLRQWKDW
HYDOXDWHVWRDERROHDQ ! RUD
SULPLWLYHERROHDQRUDUHIHUHQFHWRD
%RROHDQZUDSSHU

HF
W

,Q

HF
W

,IDPHWKRGWDNHVDZUDSSHUW\SH\RX
FDQSDVVDUHIHUHQFHWRDZUDSSHURU
DSULPLWLYHRIWKHPDWFKLQJW\SH$QG
RIFRXUVHWKHUHYHUVHLVWUXHLID
PHWKRGWDNHVDSULPLWLYH\RXFDQ
SDVVLQHLWKHUDFRPSDWLEOHSULPLWLYH
RUDUHIHUHQFHWRDZUDSSHURIWKDW
SULPLWLYHW\SH

ER
ROH REM
D Q

ERROHDQ

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
WRDQ,QWHJHUREMHFW

,Q

HF
W

WHJ REM
HU

%XWGRQWZRUU\WKLVLVMXVWDFRPSLOHUWULFN
7KHODQJXDJHZDVQWPRGLHGWRPDNHWKH
RSHUDWRUVZRUNRQREMHFWVWKHFRPSLOHU
VLPSO\FRQYHUWVWKHREMHFWWRLWVSULPLWLYH
W\SHEHIRUHWKHRSHUDWLRQ,WVXUHORRNV
ZHLUGWKRXJK

LQW

L

,QWHJHUL QHZ,QWHJHU  
L
$QGWKDWPHDQV\RXFDQDOVRGRWKLQJVOLNH
,QWHJHUM QHZ,QWHJHU  
,QWHJHUN M

$VVLJQPHQWV

6KDUSHQ \RXU SHQFLO


:LOOWKLVFRGHFRPSLOH":LOOLWUXQ",ILWUXQV
ZKDWZLOOLWGR"
7DNH\RXUWLPHDQGWKLQNDERXWWKLVRQHLW
EULQJVXSDQLPSOLFDWLRQRIDXWRER[LQJWKDW
ZHGLGQWWDONDERXW
<RXOOKDYHWRJRWR\RXUFRPSLOHUWRILQG
WKHDQVZHUV <HVZHUHIRUFLQJ\RXWR
H[SHULPHQWIRU\RXURZQJRRGRIFRXUVH

,Q

HF
W

<RXFDQDVVLJQHLWKHUDZUDSSHURUSULPLWLYH
WRDYDULDEOHGHFODUHGDVDPDWFKLQJZUDSSHU
RUSULPLWLYH)RUH[DPSOHDSULPLWLYHLQW
YDULDEOHFDQEHDVVLJQHGWRDQ,QWHJHU
UHIHUHQFHYDULDEOHDQGYLFHYHUVDD
UHIHUHQFHWRDQ,QWHJHUREMHFWFDQEH
DVVLJQHGWRDYDULDEOHGHFODUHGDVDQLQW
SULPLWLYH

WHJ REM
HU

LQW

'RXEOHG [

SXEOLFFODVV7HVW%R[^
,QWHJHUL
LQWM
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7HVW%R[W QHZ7HVW%R[ 
WJR 
`

SXEOLFYRLGJR ^
M L
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

&RQYHUWLQJD6WULQJWRD
SULPLWLYHYDOXHLVHDV\

H
1RSUREOHPWRSDUV


WR
LQ

Licensed by
Eduard Simons
104038

6WULQJV 
LQW[ ,QWHJHUSDUVH,QW V 
GRXEOHG 'RXEOHSDUVH'RXEOH  

ERROHDQE QHZ%RROHDQ WUXH ERROHDQ9DOXH 

UHZRXOGEHDQW\RX"%XWWKHUH
<RXGWKLQNWKH
DQ ZRXOG

RR
%
%RROHDQSDUVH WHO\OHWKHUHVD%RROHDQFRQVWUXFW\RRUX
Q
QD
KH
WX
W
RU
LVQW)
6WULQJDQG LQJLW
DQGSDUVHV DH
WKDWWDNHV S
E\XQZUDSS
OX
YD
H
LY
MXVWJHWWKH ULPLW

%XWLI\RXWU\WRGRWKLV

6WULQJW WZR
LQW\ ,QWHJHUSDUVH,QW W 

8KRK7KLVFRPSLOHVMXVWILQHEXW
DWUXQWLPHLWEORZVXS$Q\WKLQJ
WKDWFDQWEHSDUVHGDVDQXPEHU
ZLOOFDXVHD1XPEHU)RUPDW([FHSWLRQ

<RXOOJHWDUXQWLPHH[FHSWLRQ
)LOH(GLW:LQGRZ+HOS&OXH

MDYD:UDSSHUV
([FHSWLRQLQWKUHDGPDLQ
MDYDODQJ1XPEHU)RUPDW([FHSWLRQWZR
DWMDYDODQJ,QWHJHUSDUVH,QW ,QWHJHUMDYD
DWMDYDODQJ,QWHJHUSDUVH,QW ,QWHJHUMDYD
DW:UDSSHUVPDLQ :UDSSHUVMDYD

(YHU\PHWKRGRU
FRQVWUXFWRUWKDWSDUVHV
D6WULQJFDQWKURZD
1XPEHU)RUPDW([FHSWLRQ
,WVDUXQWLPHH[FHSWLRQ
VR\RXGRQWKDYHWR
KDQGOHRUGHFODUHLW
%XW\RXPLJKWZDQWWR
:HOOWDONDERXW([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
EXISTING3TRING
GRXEOHG 
6WULQJGRXEOH6WULQJ G

HG
SHUDWRULVRYHUORDG
5HPHPEHUWKHQO\RRYHUORDGHGRSHUDWRU DVD
LQ-DYD WKHRWHQDWRU$Q\WKLQJDGGHGWRD
6WULQJFRQFD HV6WULQJLILHG
6WULQJEHFRP

GRXEOHG 
6WULQJGRXEOH6WULQJ 'RXEOHWR6WULQJ G 

$QRWKHUZD\WRGRLWXVLQJDVWD
WLF
PHWKRGLQFODVV'RXEOH
<HDK
EXWKRZGR,PDNHLW
ORRNOLNHPRQH\":LWKDGROODU
VLJQDQGWZRGHFLPDOSODFHV
OLNHRUZKDWLI,ZDQW
FRPPDVOLNHRU
ZKDWLI,ZDQWLWLQ

:KHUHVP\SULQWI
OLNH,KDYHLQ&",V
QXPEHUIRUPDWWLQJSDUWRI
WKH,2FODVVHV"

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
7KHQXPEHUWRYHIFRURPPDV 
KD
R
ZDQWLWW

SXEOLFFODVV7HVW)RUPDWV^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

6WULQJV 6WULQJIRUPDW G 
6\VWHPRXWSULQWOQ V 
`
`
7KHIR



UPDWWLQJLQVWUXFWLRQVI
RUKRZW IRUPDWWKH
VHFRQGDUJXPHQW Z
KLQWKLVFDVHLVDQRLQ
5HPHPEHUWKHUHDUHKLF
WYDOXH 
KHUHWKHILUVWFRPPDRQO\WZRDUJXPHQWVWRWKLVPHWKRG
LV,16,'(WKH6WULQJOL
LWLVQWVHSDUDWLQJDUJXP
WHUDOVR
HQWVWRWKHIRUPDWPHW
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
WKHDUJXPHQWVKRXOGEHIRUPDWWHG

 7KHDUJXPHQWWREHIRUPDWWHG
$OWKRXJKWKHUHFDQEHPRUHWKDQRQHDUJXPHQWZHOO
VWDUWZLWKMXVWRQH7KHDUJXPHQWW\SHFDQWEHMXVW
DQ\WKLQJLWKDVWREHVRPHWKLQJWKDWFDQEHIRUPDWWHG
XVLQJWKHIRUPDWVSHFLILHUVLQWKHIRUPDWWLQJLQVWUXFWLRQV
)RUH[DPSOHLI\RXUIRUPDWWLQJLQVWUXFWLRQVVSHFLI\D
IORDWLQJSRLQWQXPEHU\RXFDQWSDVVLQD'RJRUHYHQD
6WULQJWKDWORRNVOLNHDIORDWLQJSRLQWQXPEHU

'RWKLV


\NQRZSULQWI 
1RWHLI\RXDOUHRXDGFDQSUREDEO\MXVW
IURPF&\IHZSDJHV2WKHUZLVH
VNLPWKHQH[W
UHDGFDUHIXOO\

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

)RUPDWVSHFLILHUVIRU
VH
FRQGDUJXPHQWWRWKHWKH

LQ
H
XG
FO
LQ
&KDUDFWHUVWR
PH

WKRG WKHQXPEHU  
HG
UHWXUQ
WKHILQDO6WULQ J
IURPIRUPDW 

0RUHFKDUDFWHUVWR
LQFOXGHLQWKH6WULQ
JDIWHU
WKHVHFRQGDUJXPHQW
IRUPDWWHGDQGLQVHUWHLV
G

$UJXPHQWWREH
IRUPDWWHG 

IRUPDW ,KDYHIEXJVWR[ 

2XWSXW

,KDYHEXJVWR[

1RWLFHZHOR
DIWHUWKHGHVWFLVPDORPHRIWKHQXPEHUV
ZKDWWKHIP SRLQW&DQ\RXJXHVV
HDQV"
4HEhvSIGNTELLSTHEFORMATTERTOINSERTTHEOTHERMETHODARGUMENTTHE
SECONDARGUMENTTOFORMAT THENUMBER HERE !.$FORMATITUSINGTHE
hFvCHARACTERSAFTERTHEPERCENTSIGN4HENTHERESTOFTHEFORMAT3TRING
hBUGSTOlXv ISADDEDTOTHElNALOUTPUT
$GGLQJDFRPPD

IRUPDW ,KDYHIEXJVWR[ 
,KDYHEXJVWR[

WUXFWLRQV
%\FKDQJLQJWKHIRUPDWLQV
JRWD
ZH
IURPIWRIQXPEH
U
WHG
PDW
IRU
FRPPDLQWKH
 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LWGRHVQWSULQWRXWWKHILQI"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
LETSLOOKATTHESYNTAXFORTHEFORMATSPECIlERSTHETHINGSTHATGOAFTERTHE
PERCENT SIGNANDDESCRIBEHOWTHEARGUMENTSHOULDBEFORMATTED
$IRUPDWVSHFLHUFDQKDYHXSWRYHGLIIHUHQWSDUWV QRW
LQFOXGLQJWKH (YHU\WKLQJLQEUDFNHWV>@EHORZLVRSWLRQDOVR
RQO\WKHSHUFHQW  DQGWKHW\SHDUHUHTXLUHG%XWWKHRUGHULV
DOVRPDQGDWRU\VRDQ\SDUWV\RX'2XVHPXVWJRLQWKLVRUGHU

>DUJXPHQWQXPEHU@>DJV@>ZLGWK@>SUHFLVLRQ@W\SH
:HOOJHWWRWK
LWOHWV\RXVD\:LV+,ODW&+HU
7KHVHDUHIRUDWWLQJ
DUJXPHQWLIWKHUHVPR
UH

VSHFLDOIRUP LQVHUWLQJ
WKDQRQH 'RQWZRUU
\
RSWLRQVOLNH XWWLQJ
DERXWLWMXVW\HW
FRPPDVRUS EHUVLQ
QHJDWLYHQXPRUWR
SDUHQWKHVHV PEHUV
PDNHWKHQXHG
OHIWMXVWLIL

Z
7KLVGHILQHVWKH
DQGDWRU\
<RXDOUHDG\NQRLQH
V 7\SHLVP
HI
G
LW
0,1,080QXPEHU
[WSDJH 
QH
WKLVRQH
H
WK
H
VH
RIFKDUDFWHUVWKDW
WKHSUHFLVLRQ,Q DQGZLOOXVXDOO\EH
ZLOOEHXVHG7KDWV
RWKHUZRUGVLWU GIRUDGHFLPDO
PLQLPXP QRW
VHWVWKHQXPEH
HJHURUIIRU
727$/,IWKHQXPEHU RIGHFLPDOSODFHV LQW
IO
D RDWLQJSRLQW
LVORQJHUWKDQWKH
'RQWIRUJHWWR QXPEHU
ZLGWKLWOOVWLOOEHXVHG LQFOXGHWKHLQ
LQIXOOEXWLILWVOHVV WKHUH
WKDQWKHZLGWKLWOOEH
SDGGHGZLWK]HURHV

>DUJXPHQWQXPEHU@>DJV@>ZLGWK@>SUHFLVLRQ@W\SH

IRUPDW I 

7KHUHVQRDUJXPHQW
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
G

GHFLPDO
IRUPDW G 



$ZRXOGQ
RWZRUN,W
ZRXOGEHWKHVD
GLUHFWO\DVVLJQDPHDVWU\LQJWR
GRXEOHWRDQ
LQWYDULDEOH

4HEARGUMENTMUSTBECOMPATIBLEWITHANINT SOTHATMEANS
ONLYBYTE SHORT INT ANDCHARORTHEIRWRAPPERTYPES 
I

RDWLQJSRLQW
IRUPDW I 



GWKHI
+HUHZHFRPELQHLQ
GLFDWRU
LRQ
FLV
UH
S
ZLWKD
ZLWK
XS
G
GH
VRZHHQ

HV
UR
]H
WKUHH

4HEARGUMENTMUSTBEOFAmOATINGPOINTTYPE SOTHAT
MEANSONLYAmOATORDOUBLEPRIMITIVEORWRAPPER ASWELL
ASSOMETHINGCALLED"IG$ECIMALWHICHWEDONTLOOKATIN
THISBOOK 
[

You must include a


type in your format
instructions, and if you
specify things besides
type, the type must
always come last.
Most of the time,
youll probably format
numbers using either
d for decimal or f
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 7KHUDQNLVGRXWRIIRQHWZR 

7KHUDQNLVRXWRI

:HDGGHGFRPPDVWRERWKYDULDEOHV
DQGUHVWULFWHGWKHIORDWLQJSRLQW
QXPEHU WKHVHFRQGYDULDEOH WRWZR
GHFLPDOSODFHV

:KHQ\RXKD
DUJXPHQWWKHYH\PUHRUHWKDQRQH
XVLQJWKHRUGHULQ LQVHUWHG
ZKLFK\RX
SDVVWKHPW
PHWKRG RWKHIRUPDW 

!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
ANOTHERNEWFEATUREVARIABLEARGUMENTLISTSCALLEDVARARGSFORSHORT 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 WFQHZ'DWH 

6XQ1RY067
-XVWWKHWLPH

WU

6WULQJIRUPDW WUQHZ'DWH 

30
'D\RIWKHZHHNPRQWKDQGGD\

W$W%WG

4HEREISNTASINGLEFORMATSPECIlERTHATWILLDOEXACTLYWHATWE
WANT SOWEHAVETOCOMBINETHREEOFTHEMFORDAYOFTHEWEEK
T! MONTHT" ANDDAYOFTHEMONTHTD 

%XWWKDWP
SDVVWKH'DWHDHQVREZHKDYHWR
WLPHVRQHIRUHDFMHFWLQWKUHH
SDUWRIWKH
IR
UPDWWKDWZHZK
'DWHWRGD\ QHZ'DWH 
DQ
ZRUGVWKHW$Z W,QRWKHU
LOOJLYHXVMXVW
6WULQJIRUPDW W$W%WGWRGD\WRGD\WRGD\ 
WKHGD\RIWKH
Z
HH

ZHKDYHWRGRLW NEXWWKHQ
7KHFRPPDLVQRWSDUWRIWKHIRUPDWWLQJLWV
MX
VWWKHPRQWKDQGDJDLQWRJHW
MXVWWKHFKDUDFWHUZHZDQWSULQWHGDIWHUWKH
GD\RIWKHPRQWK DJDLQIRUWKH
ILUVWLQVHUWHGIRUPDWWHGDUJXPHQW

6XQGD\1RYHPEHU

6DPHDVDERYHEXWZLWKRXWGXSOLFDWLQJWKHDUJXPHQWV
'DWHWRGD\ QHZ'DWH 
6WULQJIRUPDW W$W%WGWRGD\ 


<RXFDQWKLQNRIWKLVDVNLQGRIOLNHFDOOLQJWKUHH
GLIIHUHQWJHWWHUPHWKRGVRQWKH'DWHREMHFWWR
JHWWKUHHGLIIHUHQWSLHFHVRIGDWDIURPLW

W$W%WG

7KHDQJOHEUDFNHWLVMXVWDQRWKHU
IODJLQWKHVSHFLILHUWKDWWHOOVWKH
IRUPDWWHUWRXVHWKHSUHYLRXVDUJXPHQW
DJDLQ6RLWVDYHV\RXIURPUHSHDWLQJWKH
DUJXPHQWVDQGLQVWHDG\RXIRUPDWWKH
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

/HWVVHHKRZPDQ\ZRUN
GD\VZLOOWKHUHEHLIWKH
SURMHFWVWDUWVRQ)HEWKDQG
HQGVRQ$XJXVWWK"

?WZSQVO_Q\P,I\M[
Licensed
by
Eduard Simons
104038

9OUNEEDTODOMOREWITHDATESTHANJUSTGET
TODAYSDATE9OUNEEDYOURPROGRAMSTOADJUST
DATES lNDELAPSEDTIMES PRIORITIZESCHEDULES
HECK MAKESCHEDULES9OUNEEDINDUSTRIAL
STRENGTHDATEMANIPULATIONCAPABILITIES
9OUCOULDMAKEYOUROWNDATEROUTINESOF
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
%ARLIERWEUSEDJAVAUTIL$ATETOlNDTODAYSDATE SOITSEEMS
LOGICALTHATTHISCLASSWOULDBEAGOODPLACETOSTARTLOOKINGFOR
SOMEHANDYDATEMANIPULATIONCAPABILITIES BUTWHENYOUCHECK
OUTTHE!0)YOULLlNDTHATMOSTOF$ATESMETHODSHAVEBEEN
DEPRECATED

For a time-stamp of now,


use Date. But for everything
else, use Calendar.

4HE$ATECLASSISSTILLGREATFORGETTINGAhTIMESTAMPvANOBJECT
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:217ZRUN

&DOHQGDUFDO QHZ&DOHQGDU 

7KHFRPSLOHUZRQWDOORZWKLV 

,QVWHDGXVHWKHVWDWLFJHW,QVWDQFH PHWKRG

&DOHQGDUFDO &DOHQGDUJHW,QVWDQFH 

7KLVV\QWD[VKRXOGORRNIDPLOLDUDWWKLV
SRLQWZHUHLQYRNLQJDVWDWLFPHWKRG

:DLWDPLQXWH
,I\RXFDQWPDNHDQ
LQVWDQFHRIWKH&DOHQGDU
FODVVZKDWH[DFWO\DUH\RX
DVVLJQLQJWRWKDW&DOHQGDU
UHIHUHQFH"

<RXFDQWJHWDQLQVWDQFHRI&DOHQGDU
EXW\RXFDQFDQJHWDQLQVWDQFHRID
FRQFUHWH&DOHQGDUVXEFODVV
/BVIOUSLYYOUCANTGETANINSTANCEOF#ALENDAR BECAUSE
#ALENDARISABSTRACT"UTYOURESTILLFREETOCALLSTATICMETHODS
ON#ALENDAR SINCESTATICMETHODSARECALLEDONTHECLASS
RATHERTHANONAPARTICULARINSTANCE3OYOUCALLTHESTATIC
GET)NSTANCE ON#ALENDARANDITGIVESYOUBACKANINSTANCE
OFACONCRETESUBCLASS3OMETHINGTHATEXTENDS#ALENDAR
WHICHMEANSITCANBEPOLYMORPHICALLYASSIGNEDTO#ALENDAR
ANDWHICHBYCONTRACTCANRESPONDTOTHEMETHODSOFCLASS
#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

DW







R-DQ
EDVHG
6HWWLPHWWKHPRQWKLV]HUR
1RWLFH
DELJRO
&RQYHUWWKLVWR
V
DPRXQWRIPLOOLVHFRQG

$QH[DPSOHRIZRUNLQJZLWKD&DOHQGDUREMHFW
&DOHQGDUF &DOHQGDUJHW,QVWDQFH 
FVHW  
ORQJGD\ FJHW7LPH,Q0LOOLV 
GD\   
FVHW7LPH,Q0LOOLV GD\ 

$GGDQKRXUVZRUWKRIPLOOLVWKHQXSGDWHWKHWLPH
1RWLFHWKH LWVOLNHGD\ GD\ 

6\VWHPRXWSULQWOQ QHZKRXUFJHW F+285B2)B'$< 


FDGG F'$7( 
6\VWHPRXWSULQWOQ DGGGD\VFJHW7LPH 

$GGGD\VWRWKHGDWHZKLFK
VKRXOGPRYHXVLQWR)HEUXDU\

FUROO F'$7( 

5ROOGD\VRQWRWKLVGDWH7KLV
UROOVWKHGDWHDKHDGGD\VEXW
'2(6127FKDQJHWKHPRQWK 

6\VWHPRXWSULQWOQ UROOGD\VFJHW7LPH 
FVHW F'$7( 
6\VWHPRXWSULQWOQ VHWWRFJHW7LPH 

:HUHQRWLQ
GRLQJDVHWFURIHPWHQWLQJKHUHMXVW
KHGDWH

)LOH(GLW:LQGRZ+HOS7LPH)OLHV

QHZKRXU
DGGGD\V:HG)HE067
UROOGD\V7XH)HE067
VHWWR6XQ)HE067

7KLVRXWSXWFRQILUPVKRZPLOOLV
DGGUROODQGVHWZRUN

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
2ETURNSTHEVALUEOFTHEGIVENCALEN

GET)NSTANCE

2ETURNSA#ALENDAR YOUCANSPECIFY

DARFIELD

ALOCALE

+EY#ALENDAR&IE
LD

GET4IME)N-ILLIS
2ETU

LONG
RNSTHIS#ALENDARSTIMEINMILLIS ASA

ROLLINTlELD BOOLEANUP

!DDSORSUBTRACTSTIMEWITHOUTCHANG

SETINTlELD INTVALUE

3ETSTHEVALUEOFAGIVEN#ALENDARF

INGLARGERFIELDS

IELD

SETYEAR MONTH DAY HOUR MINU

TE ALLINTS

MPLETETIME
!COMMONVARIETYOFSETTOSETACO

SET4IME)N-ILLISLONGMILLIS

3ETSA#ALENDARSTIMEBASEDONALO

MORE

NGMILLI TIME

$!4%$!9?/&?
-/.4(
'ETSETTHEDAYO

FMONTH
(/52(/52?/
&?$!9
'ETSETTHEHO

URORHOURVALUE

-),,)3%#/.$
'ETSETTHEMILLI

SECONDS

-).54%
'ETSETTHEMINU

TE

-/.4(
'ETSETTHEMON

TH

9%!2
'ETSETTHEYEAR

:/.%?/&&3%4

'ETSETRAWOFFSE

MORE

TOF'-4INMILLIS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
make your code
confusing to read

6RPHROGIDVKLRQHGFRGH
LPSRUWMDYDODQJ0DWK
FODVV1R6WDWLF^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ VTUW0DWKVTUW  
6\VWHPRXWSULQWOQ WDQ0DWKWDQ  


VHZKHUQWV
X

R
W

[
R
WD
7KHV\UQLQJVWDWLFLPS
OD
F
GH

`
`
6DPHFRGHZLWKVWDWLFLPSRUWV
LPSRUWVWDWLFMDYDODQJ6\VWHPRXW
LPSRUWVWDWLFMDYDODQJ0DWK 
FODVV:LWK6WDWLF^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
RXWSULQWOQ VTUWVTUW  
RXWSULQWOQ WDQWDQ  

;Yn]Ylk?gl[`Yk

 ,I\RXUHRQO\JRLQJWRXVHDVWDWLFPHPEHU
DIHZWLPHVZHWKLQN\RXVKRXOGDYRLG
VWDWLFLPSRUWVWRKHOSNHHSWKHFRGHPRUH
UHDGDEOH

 ,I\RXUHJRLQJWRXVHDVWDWLFPHPEHUDORW
OLNHGRLQJORWVRI0DWKFDOFXODWLRQV WKHQ
LWVSUREDEO\2.WRXVHWKHVWDWLFLPSRUW

 1RWLFHWKDW\RXFDQXVHZLOGFDUGV  LQ

`

\RXUVWDWLFLPSRUWGHFODUDWLRQ

 $ELJLVVXHZLWKVWDWLFLPSRUWVLVWKDWLWV

6WDWLFLPSRUWVLQDFWLRQ

QRWWRRKDUGWRFUHDWHQDPLQJFRQIOLFWV)RU
H[DPSOHLI\RXKDYHWZRGLIIHUHQWFODVVHV
ZLWKDQDGG 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

&ULLOFIT9EAH YOUCANSAYTHATAGAIN/+
SOTHEREAREAFEWINTHE3WINGLIBRARY BUT
EVERYBODYKNOWS3WINGISJUSTASPECIALCASE

9OUREALLYSHOULDCHECKYOURFACTS7HEN
WASTHELASTTIMEYOULOOKEDATTHE!0))TS
FRICKINLOADEDWITHSTATICS)TEVENHASENTIRE
CLASSESDEDICATEDTOHOLDINGCONSTANTVALUES
4HERESACLASSCALLED3WING#ONSTANTS FOR
EXAMPLE THATSJUSTFULLOFTHEM
)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
CROSSEDYOURNARROWMINDLETSFACEIT 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

7ELL /+ EVERYONCEINAWHILESURE ITMAKES


SENSETOUSEASTATIC BUTLETMETELLYOU ABUSE
OFSTATICVARIABLESANDMETHODS ISTHEMARK
OFANIMMATURE//PROGRAMMER!DESIGNER
SHOULDBETHINKINGABOUTOBJECTSTATE NOTCLASS
STATE
3TATICMETHODSARETHEWORSTTHINGSOFALL
BECAUSEITUSUALLYMEANSTHEPROGRAMMERIS
THINKINGPROCEDURALLYINSTEADOFABOUTOBJECTS
DOINGTHINGSBASEDONTHEIRUNIQUEOBJECT
STATE

!LRIGHTJUSTSTOPRIGHTTHERE4(!4IS
DElNITELYNOTTRUE3OMESTATICVARIABLESARE
ABSOLUTELYCRUCIALTOASYSTEM!NDEVENTHE
ONESTHATARENTCRUCIALSUREAREHANDY

7HYDOYOUSAYTHAT!NDWHATSWRONGWITH
STATICMETHODS

3URE )KNOWTHATOBJECTSSHOULDBETHEFOCUS
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
1dQ^OU_Q

FODVV6WDWLF6XSHU^

7KH-DYDILOHRQWKLVSDJHUHSUHVHQWVD
FRPSOHWHSURJUDP<RXUMRELVWRSOD\
FRPSLOHUDQGGHWHUPLQHZKHWKHUWKLV
ILOHZLOOFRPSLOH,ILWZRQWFRPSLOH
KRZZRXOG\RXIL[LWDQG
LILWGRHVFRPSLOHZKDW
ZRXOGEHLWVRXWSXW"

VWDWLF^
6\VWHPRXWSULQWOQ VXSHUVWDWLFEORFN 
`

6WDWLF6XSHU^
6\VWHPRXWSULQWOQ

)FITCOMPILES WHICHOFTHESEIS
THEOUTPUT

VXSHUFRQVWUXFWRU 
`
`

0OSSIBLE/UTPUT
)LOH(GLW:LQGRZ+HOS&OLQJ

MDYD6WDWLF7HVWV

SXEOLFFODVV6WDWLF7HVWVH[WHQGV6WDWLF6XSHU^
VWDWLFLQWUDQG
VWDWLF^

VWDWLFEORFN
LQPDLQ
VXSHUVWDWLFEORFN
VXSHUFRQVWUXFWRU
FRQVWUXFWRU

UDQG  LQW  0DWKUDQGRP   


6\VWHPRXWSULQWOQ VWDWLFEORFNUDQG 
`
6WDWLF7HVWV ^
6\VWHPRXWSULQWOQ FRQVWUXFWRU 
`

0OSSIBLE/UTPUT
)LOH(GLW:LQGRZ+HOS(OHFWULFLW\

MDYD6WDWLF7HVWV
VXSHUVWDWLFEORFN

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6\VWHPRXWSULQWOQ LQPDLQ 
6WDWLF7HVWVVW QHZ6WDWLF7HVWV 
`

VWDWLFEORFN
LQPDLQ
VXSHUFRQVWUXFWRU
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  

MDYDODQJ6\VW

LPSRUWVWDWLF

HPRXW

Licensed by
Eduard Simons
104038

  
VWDWLFLQW'$<B,0 

IXOOPRRQRQWFF 

FIRUPDW

&DOHQGDU

F QHZ
&DOHQ

GDU 

V^

FODVV)XOO0RRQ

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
GD\  '$<B,0  

IRU LQW[ [[ ^

VWDWLFL

QW'$<B,

0 
 

 

SULQWOQ


IXOOPRRQRQWF



LPSRUWMDYDLR

LPSRUWMDYDXWLO

 

VWDWLFLPSRUWMDYDODQJ6\VWHPRXW
FVHW  

RXWSULQWOQ

)LOH(GLW:LQGRZ+HOS+RZO

MDYD)XOO0RRQV
IXOOPRRQRQ)UL)HE067
IXOOPRRQRQ6DW0DU067
IXOOPRRQRQ0RQ$SU0'7

FVHW7L

PH,Q0LOO

LV GD\

6WULQJIRUPDW

&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

"%THECOMPILER

INSTANCESOFACLASS
#ONSTRUCTORSARECALLEDBEFORESTATICVARI

6WDWLF6XSHU  ^

7UXH
)DOVH

ABLESAREINITIALIZED

6\VWHPRXWSULQWOQ

-!8?3):%WOULDBEAGOODNAMEFORA

VXSHUFRQVWUXFWRU 

STATIClNALVARIABLE

`

!STATICINITIALIZERBLOCKRUNSBEFOREACLASSS 7UXH

7UXH

CONSTRUCTORRUNS
6WDWLF6XSHULVDFRQVWUXFWRUDQGPXVW
KDYH  LQLWVVLJQDWXUH1RWLFHWKDWDV
WKHRXWSXWEHORZGHPRQVWUDWHVWKHVWDWLF
EORFNVIRUERWKFODVVHVUXQEHIRUHHLWKHU
RIWKHFRQVWUXFWRUVUXQ

)FACLASSISMARKEDlNAL ALLOFITSMETHODS

)DOVH

MUSTBEMARKEDlNAL
!lNALMETHODCANONLYBEOVERRIDDENIF

)DOVH

ITSCLASSISEXTENDED
4HEREISNOWRAPPERCLASSFORBOOLEAN
0OSSIBLE/UTPUT
)LOH(GLW:LQGRZ+HOS&OLQJ

MDYD6WDWLF7HVWV
VXSHUVWDWLFEORFN

PRIMITIVES
!WRAPPERISUSEDWHENYOUWANTTOTREATA 7UXH
PRIMITIVELIKEANOBJECT

VWDWLFEORFN

4HEPARSE8XXMETHODSALWAYSRETURNA

LQPDLQ

3TRING

VXSHUFRQVWUXFWRU

&ORMATTINGCLASSESWHICHAREDECOUPLED

FRQVWUXFWRU

)DOVH

)DOVH
)DOVH

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 
LPSRUWVWDWLFMDYDODQJ6\VWHPRXW
FODVV)XOO0RRQV^
VWDWLFLQW'$<B,0    
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
&DOHQGDUF &DOHQGDUJHW,QVWDQFH 
FVHW  

9OUMIGHTDISCOVERTHATAFEWOFTHE
DATESPRODUCEDBYTHISPROGRAMARE
OFFBYADAY4HISASTRONOMICALSTUFF
ISALITTLETRICKY ANDIFWEMADEIT
PERFECT ITWOULDBETOOCOMPLEXTO
MAKEANEXERCISEHERE
(INTONEPROBLEMYOUMIGHTTRYTO
SOLVEISBASEDONDIFFERENCESINTIME
ZONES#ANYOUSPOTTHEISSUE

ORQJGD\ FJHW7LPH,Q0LOOLV 
IRU LQW[ [[ ^
GD\  '$<B,0 
FVHW7LPH,Q0LOOLV GD\ 
RXWSULQWOQ 6WULQJIRUPDW IXOOPRRQRQWFF 
`
`
`



)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
6XUHLWVULVN\
EXW,FDQKDQGOHLWLI
VRPHWKLQJJRHVZURQJ

6WXII KDSSHQV7KHILOHLVQWWKHUH7KHVHUYHULVGRZQ.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

GDQFHEHDW

V
HWKDWJHW HUV
J
D
VV
H
P

U
X
R
\
RWKHUSOD\
VHQWWRWKH\RXUFXUUHQW
DORQJZLWK UQZKHQ\RX
EHDWSDWWH
KLW6HQG,W

$QG\JURRYH

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW

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



LQFRPLQJPH
RWKHUSOD\H VVDJHVIURP
WRORDGWKH UV&OLFNRQH
JRHVZLWKLW SDWWHUQWKDW
6WDUWWRS DQGWKHQFOLFN
OD\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.

H[FHSWLRQKDQGOLQJ

?MTT[\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
SOUNDTOCOMEOUTOFYOURCOMPUTER!NDDONTWORRYIFYOU
DONTKNOWATHINGABOUT-)$) ORATHINGABOUTREADINGOR
MAKINGMUSIC%VERYTHINGYOUNEEDTOLEARNISCOVEREDHERE
9OUCANALMOSTSMELLTHERECORDDEAL

0,',ILOH

<PM2I^I;W]VL)81

DWLRQ
DVLQIRUP OGEH
K

H
LO
I
,
RX
0,'
DVRQJVK
Q\
DERXWKRZ LWGRHVQWKDYHD 
I
W
SOD\HGEX GGDWD,WVNLQGR
Q
X

R
V
V
Q
DFWXDO PXVLFLQVWUXFWLR

OLNHVKHHW USLDQR
H
IRUDSOD\

*AVA3OUNDISACOLLECTIONOFCLASSESANDINTERFACESADDEDTO
*AVASTARTINGWITHVERSION4HESEARENTSPECIALADD ONS
THEYREPARTOFTHESTANDARD*3%CLASSLIBRARY*AVA3OUNDISSPLIT
INTOTWOPARTS-)$)AND3AMPLED7EUSEONLY-)$)INTHIS
BOOK-)$)STANDSFOR-USICAL)NSTRUMENT$IGITAL)NTERFACE
HQW
ANDISASTANDARDPROTOCOLFORGETTINGDIFFERENTKINDSOF
,QVWUXP
OH
E
D
S
ELECTRONICSOUNDEQUIPMENTTOCOMMUNICATE"UTFOR
D
F
0,',
OUR"EAT"OXAPP YOUCANTHINKOF-)$)ASAKINDOF
SHEETMUSICTHATYOUFEEDINTOSOMEDEVICEYOUCANTHINK
OFLIKEAHIGH TECH@PLAYERPIANO)NOTHERWORDS -)$)
DATADOESNTACTUALLYINCLUDEANYSOUND BUTITDOES
INCLUDETHEINSTRUCTIONSTHATA-)$) READINGINSTRUMENT
0,',GHYLFHNQRZVKRZWR
CANPLAYBACK/RFORANOTHERANALOGY YOUCANTHINKOF
UHDGD0,',ILOHDQGSOD\EDFN
A-)$)lLELIKEAN(4-,DOCUMENT ANDTHEINSTRUMENT
WKHVRXQG7KHGHYLFHPLJKW
THATRENDERSTHE-)$)lLEIEPLAYSIT ISLIKETHE7EB
BROWSER
EHDV\QWKHVL]HUNH\ERDUGRU
-)$)DATASAYSWHATTODOPLAYMIDDLE# ANDHERESHOWHARD
TOHITIT ANDHERESHOWLONGTOHOLDIT ETC BUTITDOESNTSAY
ANYTHINGATALLABOUTTHEACTUALSOUNDYOUHEAR-)$)DOESNT
KNOWHOWTOMAKEAmUTE PIANO OR*IMMY(ENDRIXGUITAR
SOUND&ORTHEACTUALSOUND WENEEDANINSTRUMENTA-)$)
DEVICE THATCANREADANDPLAYA-)$)lLE"UTTHEDEVICEIS
USUALLYMORELIKEANENTIREBANDORORCHESTRAOFINSTRUMENTS!ND
THATINSTRUMENTMIGHTBEAPHYSICALDEVICE LIKETHEELECTRONIC
KEYBOARDSYNTHESIZERSTHEROCKMUSICIANSPLAY ORITCOULD
EVENBEANINSTRUMENTBUILTENTIRELYINSOFTWARE LIVINGINYOUR
COMPUTER

6SHDNHU

VRPHRWKHUNLQGRILQVWUXPHQW
8VXDOO\D0,',LQVWUXPHQW
FDQSOD\D/27RIGLIIHUHQW
VRXQGV SLDQRGUXPVYLROLQ
HWF DQGDOODWWKHVDPHWLPH
6RD0,',ILOHLVQWOLNHVKHHW
PXVLFIRUMXVWRQHPXVLFLDQLQ
WKHEDQGLWFDQKROGWKH
SDUWVIRU$//WKHPXVLFLDQV
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
XQGPLGLSD
R
V
[
D
Y
MD

H
REMHFW,WVWKH
LPSRUWWK
:HQHHGD6HTXHQFHU HYLFHLQVWUXPHQW
,',G
PDLQSDUWRIWKH0 LQJWKDWZHOO
SXEOLFFODVV0XVLF7HVW^
WK
H
WK
V
ZHUHXVLQJ,W

,LQIRUPDWLRQLQWR
,'
0
SXEOLFYRLGSOD\ ^
VHTXHQFHVDOOWKH
WPDNHDEUDQG
DVRQJ%XWZHGRQ KDYHWRDVNWKH
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
ZH

QHZRQHRXUVHOYHV RQH
V
6\VWHPRXWSULQWOQ :HJRWDVHTXHQFHU 
0LGL6\VWHPWRJLYHX
LPSRUWMDYD[VRXQGPLGL 



`FORVHSOD\
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0XVLF7HVWPW QHZ0XVLF7HVW 
PWSOD\ 
`FORVHPDLQ
`FORVHFODVV

;WUM\PQVO[_ZWVO
7KLVFRGHZRQWFRPSLOH7KHFRPSLOHUVD\VWKHU
HVDQ
XQUHSRUWHGH[FHSWLRQWKDWPXVWEHFDXJKWRUGHF
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'
W

ZU L W H

 /HWVVD\\RXZDQW
WRFDOODPHWKRGLQD
FODVVWKDW\RXGLGQW
ZULWH

KD

WXVH

VPHWKR

FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^
H[SORGH 
`
`
`

FODVV%DU^
YRLGJR ^
PRR 
`
LQWVWXII ^
[EHHS 
`
`

\RXUFRGH

FODVV\RX
GLGQWZULWH

\RX

 7KDWPHWKRGGRHV
VRPHWKLQJULVN\
VRPHWKLQJWKDWPLJKW
QRWZRUNDWUXQWLPH

GV
LQ

FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^
H[SORGH 
`
`
`

FODVV\RX
GLGQWZULWH

YRLGPRR ^
LI VHUYHU'RZQ ^

H[SORGH 
`
`
0\PRR 
PHWKRGZLOO
H[SORGHLIWKH
VHUYHULVGRZQ

,ZRQGHULI
WKDWPHWKRG
FRXOGEORZXS

 <RXQHHGWRNQRZ
WKDWWKHPHWKRG
\RXUHFDOOLQJLV
ULVN\

FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^
H[SORGH 
`
`
`

FODVV\RX
GLGQWZULWH

\RX
1RZWKDW,
NQRZ,FDQWDNH
SUHFDXWLRQV

ZULWHVDIHO

 <RXWKHQZULWHFRGH
WKDWFDQKDQGOHWKH
IDLOXUHLILWGRHV
KDSSHQ<RXQHHGWREH
SUHSDUHGMXVWLQFDVH

FODVV%DU^
YRLGJR ^
WU\^
PRR 
`FDWFK 0;P ^
FU\ 
`
`
`

\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 YOUCANBEPREPAREDFORPOSSIBLYEVENRECOVERFROMTHEPROBLEMTHATCAUSED
THEEXCEPTION
3O HOWDOYOUKNOWIFAMETHODTHROWSANEXCEPTION9OUlNDAWKURZVCLAUSEINTHE
RISKYMETHODSDECLARATION

7KHJHW6HTXHQFHU PHWKRGWDNHVDULVN,WFDQIDLODWUXQWLPH
6RLWPXVWGHFODUHWKHULVN\RXWDNHZKHQ\RXFDOOLW

7KH$3,GRFVWHOO\RX
WKDWJHW6HTXHQFHU 
FDQWKURZDQH[FHSWLRQ
0LGL8QDYDLODEOH([FHSWLRQ
$PHWKRGKDVWRGHFODUH
WKHH[FHSWLRQVLWPLJKW
WKURZ

7KLVSDUWWHOOV\R
X:+(1\RXPLJKW
JHWWKDW
H[FHSWLRQLQW
KLVFDVHEHFDXVHR
I
UHVRXUFH
UHVWULFWLRQV ZKLFK
FRXOGMXVWPHDQVWK
HVHTXHQFHU
LVDOUHDG\EHLQJXV
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
dWTgf
Va`fkagfZ[`][
feiadfZ[f1I
ZSf
eZag^V;Va1
e[Y`WVYWW]k
[`IS[][][

<PMKWUXQTMZVMML[\WSVW_
\PI\A7=SVW_aW]ZMKITTQVO
IZQ[SaUM\PWL
)FYOUWRAPTHERISKYCODEINSOMETHINGCALLEDA
WU\FDWFK THECOMPILERWILLRELAX
!TRYCATCHBLOCKTELLSTHECOMPILERTHATYOU
KNOWANEXCEPTIONALTHINGCOULDHAPPENINTHE
METHODYOURECALLING ANDTHATYOUREPREPARED
TOHANDLEIT4HATCOMPILERDOESNTCAREHOWYOU
HANDLEITITCARESONLYTHATYOUSAYYOURETAKING
CAREOFIT
LPSRUWMDYD[VRXQGPLGL 
SXEOLFFODVV0XVLF7HVW^

6WSdYWW]k
>[XW[eeZadf
WebWU[S^^ka`fZ
WZWSb 
FS]WfZWd[e] 
[f 4gf\gef[`
USeW
fZ[`YeVa`fiad
]agfTWegdWfa
S`kbdaT^W_eTW
XadWS^^ZW^^TdWS
]e^aaeW

fdk

USfUZ

SXEOLFYRLGSOD\ ^
 WU\^
6HTXHQFHUVHTXHQFHU 0LGL6\VWHP
JHW6HTXHQFHU 

6\VWHPRXWSULQWOQ 6XFFHVVIXOO\JRWDVHTXHQFHU 

KLQJ
SXWWKHULVN\WN
LQDWU\EORF

 `FDWFK 0LGL8QDYDLODEOH([FHSWLRQH[ ^

6\VWHPRXWSULQWOQ %XPPHU 


`
`FORVHSOD\
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0XVLF7HVWPW QHZ0XVLF7HVW 
PWSOD\ 
`FORVHPDLQ
`FORVHFODVV

PDNHDF
GRLIWK DWFKEORFNIRU
KDSSHQV HH[FHSWLRQDOVLW ZKDWWR
0LGL8QD LQRWKHUZRU XDWLRQ
E\WKHF YDLODEOH([FHSWLR GVD
Q
DOOWRJH
W6HTXHQF LVWKURZQ
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.

H[FHSWLRQVDUHREMHFWV

,PJRQQD

75<WKLVULVN\WKLQJ
DQG,PJRQQD

&$7&+P\VHOILI,IDOO

)VM`KMX\QWVQ[IVWJRMK\
WN\aXM-`KMX\QWV

Licensed by
Eduard Simons
104038

7HICHISFORTUNATE BECAUSEITWOULDBEMUCHHARDER
TOREMEMBERIFEXCEPTIONSWEREOFTYPE"ROCCOLI
2EMEMBERFROMYOURPOLYMORPHISMCHAPTERSTHAT
ANOBJECTOFTYPE%XCEPTIONCANBEANINSTANCEOFANY
SUBCLASSOF%XCEPTION

'RQWWU\WKLVDWKRPH

"ECAUSEAN%XCEPTIONISANOBJECT WHATYOUCATCHISAN
OBJECT)NTHEFOLLOWINGCODE THEFDWFKARGUMENT
ISDECLAREDASTYPE%XCEPTION ANDTHEPARAMETER
REFERENCEVARIABLEISEX

7KURZDEOH

HSWLRQ
3DUWRIWKH([F KH\DOO
FODVVKLHUDUFK\7RZDEOH
H[WHQGFODVV7KUNH\
DQGLQKHULWWZR
PHWKRGV

,2([FHSWLRQ



JHW0HVVDJH

WU\^

SULQW6WDFN7UDFH

GRULVN\WKLQJ

J
NHGHFODULQ
LWVMXVWOLDUJXPHQW
DPHWKRG

`FDWFK ([FHSWLRQH[ ^

([FHSWLRQ

WU\WRUHFRYHU
`

,QWHUUXSWHG([FHSWLRQ

7KLVFRG
([FHSWLR HRQO\UXQVLIDQ
QLVWKURZ
Q

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
W

\PMV_PW[MKWLM\PZW_[Q\'
9OULLSPENDMUCHMOREOFYOUR*AVACODINGTIMEHANDLING
EXCEPTIONSTHANYOULLSPENDCREATINGANDTHROWINGTHEMYOURSELF
&ORNOW JUSTKNOWTHATWHENYOURCODECALLSARISKYMETHODA
METHODTHATDECLARESANEXCEPTIONITSTHERISKYMETHODTHAT
THROWSTHEEXCEPTIONBACKTOYOU THECALLER
)NREALITY ITMIGHTBEYOUWHOWROTEBOTHCLASSES)TREALLY
DOESNTMATTERWHOWRITESTHECODEWHATMATTERSISKNOWING
WHICHMETHODTHROWSTHEEXCEPTIONANDW
HICHMETHODCATCHESIT

DQH[FHSWLR
RZV
QE
KU
DF

N

FODVV%DU^
YRLGJR ^
PRR 
`
LQWVWXII ^
[EHHS 
`
`

\RXUFRGH


FDOOVULVN\PHWKRG

FODVV&RZ^
YRLGPRR ^
LI VHUYHU'RZQ ^
H[SORGH 
`
`
`

FODVVZLWKD
ULVN\PHWKRG

7HENSOMEBODYWRITESCODETHATCOULDTHROWANEXCEPTION THEY
MUSTDECLARETHEEXCEPTION

 5LVN\H[FHSWLRQWKURZLQJFRGH

E\
KHZRUOG HSWLRQ
W

OO
H
W

7
6
F
G08
DG([
WKLVPHWKR WKDWLWWKURZVD%

GHFODULQJ

SXEOLFYRLGWDNH5LVN WKURZV%DG([FHSWLRQ^
LI DEDQGRQ$OO+RSH ^
WKURZQHZ%DG([FHSWLRQ 
`
`

FUHDWH
REMHFW DQHZ([FHSWLR
DQGWKU
RZLW Q

 <RXUFRGHWKDWFDOOVWKHULVN\PHWKRG

SXEOLFYRLGFURVV)LQJHUV ^
WU\^
DQ2EMHFWWDNH5LVN 
`FDWFK %DG([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ $DDUJK 
H[SULQW6WDFN7UDFH 
`

One method will


catch what another
method throws. An
exception is always
thrown back to the
caller.
The method that
throws has to declare
that it might throw
the exception.

,I\RXFDQWUHFRYHUIURP
WK
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
5XQWLPH([FHSWLRQDUHFKHFNHGIRUE\
WKHFRPSLOHU7KH\UHFDOOHGFKHFNHG
H[FHSWLRQV
([FHSWLRQ

,2([FHSWLRQ

,QWHUUXSWHG([FHSWLRQ

7KHFRPSLOHUJXDUDQWHHV


)FYOUTHROWANEXCEPTIONINYOURCODEYOUMUSTDECLAREITUSING
THETHROWSKEYWORDINYOURMETHODDECLARATION

)FYOUCALLAMETHODTHATTHROWSANEXCEPTIONINOTHERWORDS
AMETHODTHATDECLARESITTHROWSANEXCEPTION YOUMUST
ACKNOWLEDGETHATYOUREAWAREOFTHEEXCEPTIONPOSSIBILITY
/NEWAYTOSATISFYTHECOMPILERISTOWRAPTHECALLINATRYCATCH
4HERESASECONDWAYWELLLOOKATALITTLELATERINTHISCHAPTER

5XQWLPH([FHSWLRQ

&ODVV&DVW([FHSWLRQ

E\WKH
DUH127FKHFNHGULVHKHUH 
V
RQ
WL
HS
[F
H(
P
US
5XQWL
NQRZQDV ELJVX

FRPSLOHU7KH\UH WLRQV<RXFDQWKURZFDWFK
HS
W
XQFKHFNHGH[F WLPH([FHSWLRQVEXW\RXGRQ
DQGGHFODUH5XQ FRPSLOHUZRQWFKHFN
KDYHWRDQGWKH

1XOO3RLQWHU([FHSWLRQ

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

7AITJUSTAMINUTE(OWCOMETHISISTHE&)234TIME
WEVEHADTOTRYCATCHAN%XCEPTION7HATABOUTTHE
EXCEPTIONS)VEALREADYGOTTENLIKE.ULL0OINTER%XCEPTION
ANDTHEEXCEPTIONFOR$IVIDE"Y:ERO)EVENGOTA
.UMBER&ORMAT%XCEPTIONFROMTHE)NTEGERPARSE)NT
METHOD(OWCOMEWEDIDNTHAVETOCATCHTHOSE

A:

4HECOMPILERCARESABOUTALLSUBCLASSESOF%XCEPTION
UNLESSTHEYAREASPECIALTYPE 2UNTIME%XCEPTION!NY
EXCEPTIONCLASSTHATEXTENDS2UNTIME%XCEPTIONGETSA
FREEPASS2UNTIME%XCEPTIONSCANBETHROWNANYWHERE
WITHORWITHOUTTHROWSDECLARATIONSORTRYCATCHBLOCKS
4HECOMPILERDOESNTBOTHERCHECKINGWHETHERAMETHOD
DECLARESTHATITTHROWSA2UNTIME%XCEPTION ORWHETHERTHE
CALLERACKNOWLEDGESTHATTHEYMIGHTGETTHATEXCEPTIONAT
RUNTIME



Q:

)LLBITE7(9DOESNTTHECOMPILERCAREABOUTTHOSE
RUNTIMEEXCEPTIONS!RENTTHEYJUSTASLIKELYTOBRINGTHE
WHOLESHOWTOASTOP

A:

-OST2UNTIME%XCEPTIONSCOMEFROMAPROBLEMIN
YOURCODELOGIC RATHERTHANACONDITIONTHATFAILSATRUNTIME
INWAYSTHATYOUCANNOTPREDICTORPREVENT9OUCANNOT
GUARANTEETHEFILEISTHERE9OUCANNOTGUARANTEETHESERVER
ISUP"UTYOUCANMAKESUREYOURCODEDOESNTINDEXOFFTHE
ENDOFANARRAYTHATSWHATTHELENGTHATTRIBUTEISFOR 
9OU7!.42UNTIME%XCEPTIONSTOHAPPENATDEVELOPMENT
ANDTESTINGTIME9OUDONTWANTTOCODEINATRYCATCH FOR
EXAMPLE ANDHAVETHEOVERHEADTHATGOESWITHIT TOCATCH
SOMETHINGTHATSHOULDNTHAPPENINTHEFIRSTPLACE
!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\RXUHIUHHWRGRHLWKHURU
ERWKRIWKRVHWKLQJV

 $OO([FHSWLRQVWKHFRPSLOHUFDUHVDERXWDUHFDOOHGFKHFNHG
H[FHSWLRQVZKLFKUHDOO\PHDQVFRPSLOHUFKHFNHGH[FHSWLRQV2QO\
5XQWLPH([FHSWLRQVDUHH[FOXGHGIURPFRPSLOHUFKHFNLQJ$OORWKHU
H[FHSWLRQVPXVWEHDFNQRZOHGJHGLQ\RXUFRGHDFFRUGLQJWRWKH
UXOHV

 $PHWKRGWKURZVDQH[FHSWLRQZLWKWKHNH\ZRUGWKURZIROORZHGE\
DQHZH[FHSWLRQREMHFW
WKURZQHZ1R&DIIHLQH([FHSWLRQ 

 0HWKRGVWKDWPLJKWWKURZDFKHFNHGH[FHSWLRQPXVWDQQRXQFHLWZLWK
DWKURZV([FHSWLRQGHFODUDWLRQ

 ,I\RXUFRGHFDOOVDFKHFNHGH[FHSWLRQWKURZLQJPHWKRGLWPXVW
UHDVVXUHWKHFRPSLOHUWKDWSUHFDXWLRQVKDYHEHHQWDNHQ

 ,I\RXUHSUHSDUHGWRKDQGOHWKHH[FHSWLRQZUDSWKHFDOOLQDWU\FDWFK
DQGSXW\RXUH[FHSWLRQKDQGOLQJUHFRYHU\FRGHLQWKHFDWFKEORFN

 ,I\RXUHQRWSUHSDUHGWRKDQGOHWKHH[FHSWLRQ\RXFDQVWLOOPDNHWKH
FRPSLOHUKDSS\E\RIILFLDOO\GXFNLQJWKHH[FHSWLRQ:HOOWDONDERXW
GXFNLQJDOLWWOHODWHULQWKLVFKDSWHU

Q `U\
YQ`MO[SZU`Ub
PHWKLQJQHZ

WROHDUQVR
,I\RXUHWU\LQJ
WROHDUQ
VWWKLQJ\RXWU\
OD
H
PDNHWKDWWK
H\RXSXWWKLV
VOHHS6RRQF
EHIRUHJRLQJWR
WHDU\RXUVHOI
Q
FD
X
XPLQJ\R
ERRNGRZQ DVV
JHOVHPRUH
LQ
RQWUHDGDQ\WK
DZD\IURPLW G
KHHULRV
&
ID
R
FN
WKHED
FKDOOHQJLQJWKDQ
FHVVZKDW
UR
S
QHHGVWLPHWR
LQ
UD
UE
RX
<
[
ER
RXOGWDNH
OHDUQHG7KDWF
\RXYHUHDGDQG
RPHWKLQJ
V
YH
\RXWU\WRVKR
DIHZKRXUV,I
DVRPHRIWKH
WRSRI\RXU-DY
QHZLQULJKWRQ
VWLFN
-DYDPLJKWQRW
WOHDUQLQJ
GRHVQWUXOHRX
2IFRXUVHWKLV
UODWHVW
RX
\
:RUNLQJRQ
DSK\VLFDOVNLOO
JURXWLQH
[LQ
%R
LFN
.
P
%DOOURR
IIHFW\RXU
SUREDEO\ZRQWD
-DYDOHDUQLQJ
XOWVUHDGWKLV
)RUWKHEHVWUHV
VWORRNDW
ERRN RUDWOHD
LJKWEHIRUH
U
HV
XU
FW
SL
WKH

HS
OH
JRLQJWRV

6KDUSHQ \RXU SHQFLO


4HINGSYOUWANTTODO

7HICHOFTHESEDOYOUTHINK
MIGHTTHROWANEXCEPTIONTHAT
THECOMPILERWOULDCAREABOUT
7EREONLYLOOKINGFORTHE
THINGSTHATYOUCANTCONTROLIN
YOURCODE7EDIDTHElRSTONE
"ECAUSEITWASTHEEASIEST

7HATMIGHTGOWRONG

??CONNECTTOAREMOTESERVER

WKHVHUYHULVGRZQ
??????????????????????????????????

??ACCESSANARRAYBEYONDITSLENGTH

??????????????????????????????????

??DISPLAYAWINDOWONTHESCREEN

??????????????????????????????????

??RETRIEVEDATAFROMADATABASE

??????????????????????????????????

??SEEIFATEXTlLEISWHEREYOUTHINKITIS

??????????????????????????????????

??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\^

LQWKH
7KHFRGHFN
QHYHU
OR
E
FDWFK
UXQV
)LOH(GLW:LQGRZ+HOS5LVN$OO


)RRI
[GR5LVN\7KLQJ 

LQWE IJHW1XP 

ORFNUXQV
)LUVWWKHWU\E ORZWKH
EH
WKHQWKHFRGH
FDWFKUXQV


`FDWFK ([FHSWLRQH[ ^

MDYD7HVWHU

6\VWHPRXWSULQWOQ IDLOHG 

:HPDGHLW

`
6\VWHPRXWSULQWOQ :HPDGHLW 

,IWKHWU\IDLOV
EHFDXVHGR5LVN\7KLQJ 
GRHVWKURZDQH[FHSWLRQ

WU\^

WKH
NUXQVEXW KURZV
F
OR
E

\
U
W

W
7KH
LVN\7KLQJ
FDOOWRGR5 QVRWKHUHVWRI
DQH[FHSWLR FNGRHVQWUXQ
WKHWU\EOR
HQ
FNUXQVWK
OR
E

K
F
W
D
F
7KH
VRQ
GFRQWLQXH
WKHPHWKR




)RRI
[GR5LVN\7KLQJ 

LQWE IJHW1XP 


Y
EORFNQHJ
\
U
W

H
K
LQ
W
RI
G7K
7KHUHVWZKLFKLVD*RRKHWU\
W
V
HUUXQ WKHUHVWRI XFFHVVRI
EHFDXVH SHQGVRQWKHV N\7KLQJ 
GH
WRGR5LV
WKHFDOO

`FDWFK ([FHSWLRQH[ ^


)LOH(GLW:LQGRZ+HOS5LVN$OO

6\VWHPRXWSULQWOQ IDLOHG 

MDYD7HVWHU

IDLOHG

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
THEOVEN
)FTHETHINGYOUTRYISACOMPLETEFAILURE
YOUHAVETOTURNOFFTHEOVEN

$UH\RXVXUH
\RXZDQWWRWU\
WKLV"

1RPDWWHUZKDWGR127OHW
PHIRUJHWWRWXUQRIIWKH
RYHQ/DVWWLPH,WRUFKHGKDOI
WKHQHLJKERUKRRG

)FTHETHINGYOUTRYSUCCEEDS
YOUHAVETOTURNOFFTHEOVEN

9OUHAVETOTURNOFFTHEOVENNOMATTERWHAT
$QDOO\EORFNLVZKHUH\RXSXW
FRGHWKDWPXVWUXQUHJDUGOHVV
RIDQH[FHSWLRQ
WU\^
WXUQ2YHQ2Q 
[EDNH 
`FDWFK %DNLQJ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`QDOO\^
WXUQ2YHQ2II 
`
7ITHOUTlNALLY YOUHAVETOPUTTHE
TURN/VEN/FF INBOTHTHETRYANDTHECATCH
BECAUSEYOUHAVETOTURNOFFTHEOVENNOMATTER
WHAT!lNALLYBLOCKLETSYOUPUTALLYOUR
IMPORTANTCLEANUPCODEINONEPLACEINSTEADOF
DUPLICATINGITLIKETHIS
WU\^
WXUQ2YHQ2Q 
[EDNH 
WXUQ2YHQ2II 
`FDWFK %DNLQJ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
WXUQ2YHQ2II 
`

,IWKHWU\EORFNIDLOV DQH[FHSWLRQ IORZ


FRQWUROLPPHGLDWHO\PRYHVWRWKHFDWFKEORFN
:KHQWKHFDWFKEORFNFRPSOHWHVWKHILQDOO\
EORFNUXQV:KHQWKHILQDOO\EORFNFRPSOHWHV
WKHUHVWRI WKHPHWKRGFRQWLQXHVRQ
,IWKHWU\EORFNVXFFHHGV QRH[FHSWLRQ 
IORZFRQWUROVNLSVRYHUWKHFDWFKEORFNDQG
PRYHVWRWKHILQDOO\EORFN:KHQWKHILQDOO\
EORFNFRPSOHWHVWKHUHVWRI WKHPHWKRG
FRQWLQXHVRQ
,IWKHWU\RUFDWFKEORFNKDVDUHWXUQ
VWDWHPHQWQDOO\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

&LOW#ONTROL

,OOKATTHECODETOTHELEFT7HATDOYOUTHINKTHE
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 \HVHTXDOV WHVW ^
WKURZQHZ6FDU\([FHSWLRQ 
`
6\VWHPRXWSULQWOQ HQGULVN\ 
UHWXUQ
`
`

7HENTESThNOvSTARTTRY STARTRISKY ENDRISKY ENDTRY lNALLY ENDOFMAIN


7HENTESThYESvSTARTTRY STARTRISKY SCARYEXCEPTION 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
FODUHVWZR
H
G

G
R
K
W
H
7KLVP
SWLRQV
7:2H[FH

QWHP

SXEOLFFODVV)RR^
SXEOLFYRLGJR ^

LIGR/DXQGU\ WKURZVD
3DQWV([FHSWLRQLWODQGVLQWKH
3DQWV([FHSWLRQFDWFKEORFN

/DXQGU\ODXQGU\ QHZ/DXQGU\ 
WU\^
ODXQGU\GR/DXQGU\ 
`FDWFK 3DQWV([FHSWLRQSH[ ^
UHFRYHU\FRGH

`FDWFK /LQJHULH([FHSWLRQOH[ ^
UHFRYHU\FRGH
`
`
`

WKURZVD
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
SPECIALABOUTONE EXCEPTTHATITISATHINGTHATCANBETHROWN
3OLIKEALLGOODOBJECTS %XCEPTIONSCANBEREFERREDTO
POLYMORPHICALLY!,INGERIE%XCEPTIONOBJECT FOREXAMPLE
COULDBEASSIGNEDTOA#LOTHING%XCEPTIONREFERENCE!
0ANTS%XCEPTIONCOULDBEASSIGNEDTOAN%XCEPTIONREFERENCE
9OUGETTHEIDEA4HEBENElTFOREXCEPTIONSISTHATAMETHOD
DOESNTHAVETOEXPLICITLYDECLAREEVERYPOSSIBLEEXCEPTIONIT
MIGHTTHROWITCANDECLAREASUPERCLASSOFTHEEXCEPTIONS
3AMETHINGWITHCATCHBLOCKSYOUDONTHAVETOWRITEACATCH
FOREACHPOSSIBLEEXCEPTIONASLONGASTHECATCHORCATCHES
YOUHAVECANHANDLEANYEXCEPTIONTHROWN

DYH
$OOH[FHSWLRQVK
([FHSWLRQDVD
VXSHUFODVV

([FHSWLRQ

,2([FHSWLRQ

&ORWKLQJ([FHSWLRQ

 <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
&ORWKLQJ([FHSWL
RQ7KDWPHDQV
GR/DXQGU\ FDQ

W
/LQJHULH([FHSWL KURZD3DQWV([FHSWLRQ
RQ7HH6KLUW([F
HS
'UHVV6KLUW([FHS
WLRQZLWKRXWH[S WLRQDQG
LQGLYLGXDOO\
OLFLWO\GHFODULQJ
WKHP

7HH6KLUW([FHSWLRQ

'UHVV6KLUW([FHSWLRQ

 <RXFDQ&$7&+H[FHSWLRQVXVLQJD

VXSHUW\SHRIWKHH[FHSWLRQWKURZQ
WU\^
ODXQGU\GR/DXQGU\ 

Q\
FDQFDWFKD HSWLRQ
F
[
(
&ORWKLQJ
VXEFODVV

WU\^
ODXQGU\GR/DXQGU\ 

QO\
FDQFDWFKR[FHSWLRQDQG
7HH6KLUW( ([FHSWLRQ
'UHVV6KLUW

`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
GRHVQWDOZD\VPHDQ\RX6+28/'
9OUCOULDWRITEYOUREXCEPTION HANDLINGCODESOTHAT
YOUSPECIFYONLYONECATCHBLOCK USINGTHESUPERTYPE
%XCEPTIONINTHECATCHCLAUSE SOTHATYOULLBEABLETO
CATCHANYEXCEPTIONTHATMIGHTBETHROWN
WU\^
ODXQGU\GR/DXQGU\ 
`FDWFK ([FHSWLRQH[ ^

LOO
KLVFDWFKEORFNZ
7
"
7
$
+
:
RP
UHFRYHU\FRGH5HFRYHU\IU
RXZRQW
OOH[FHSWLRQVVR\ 
D
QG
D
<
1
$
K
WF
QJ
FD
`
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\ 

`FDWFK 7HH6KLUW([FHSWLRQWH[ ^
UHFRYHU\IURP7HH6KLUW([FHSWLRQ

DQG
[FHSWLRQV HHGGLIIHUHQW
(
W
LU
K
6
H
Q
7H
XVH
[FHSWLRQV
/LQJHULH( RGHVR\RXVKRXOG
F
UHFRYHU\ FDWFKEORFNV
W
GLIIHUHQ

`FDWFK /LQJHULH([FHSWLRQOH[ ^
UHFRYHU\IURP/LQJHULH([FHSWLRQ

`FDWFK &ORWKLQJ([FHSWLRQFH[ ^

$OORWKHU&ORWK
LQ
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
NZWU[UITTM[\\WJQOOM[\

&ORWKLQJ([FHSWLRQ

DUH
HSWLRQV RWKHU
F
[
(
W
LU
7HH6K KHUHEXWQR
FDXJKW QVZLOOILW
H[FHSWLR
FDWFK 7HH6KLUW([FHSWLRQWH[

Licensed by
Eduard Simons
104038
3DQWV([FHSWLRQ

ZLOO
FHSWLRQV DOO
[
(
W
LU
K
7HH6 HWKHUHEXW 
QHYHUJ KLUW([FHSWLRQ KHUH
RWKHU6 HVDUHFDXJKW
VXEFODVV

/LQJHULH([FHSWLRQ

7HH6KLUW([FHSWLRQ

6KLUW([FHSWLRQ

8QLIRUP([FHSWLRQ

'UHVV6KLUW([FHSWLRQ

FDWFK 6KLUW([FHSWLRQVH[

SWLRQV
LQJ([FH DOWKRXJK
K
W
OR
&


$OO
KWKHUH
G
DUHFDXJ W([FHSWLRQDQ YHU
H
LU
Q
K
O
6
7HH FHSWLRQZLO
6KLUW([ IDU
JHWWKLV

FDWFK &ORWKLQJ([FHSWLRQFH[



4HEHIGHERUPTHEINHERITANCETREE THEBIGGERTHE
CATCH@BASKET!SYOUM
OVEDOWNTHEINHERITANCE
TREE TOWARDMOREANDMORESPECIALIZED%XCEPTION
CLASSES THECATCH@BASKETISSMALLER)TSJUSTPLAINOLD
POLYMORPHISM
!3HIRT%XCEPTIONCATCHISBIGENOUGHTOTAKE
A4EE3HIRT%XCEPTIONORA$RESS3HIRT%XCEPTION
ANDANYFUTURESUBCLASSOFANYTHINGTHATEXTENDS
3HIRT%XCEPTION !#LOTHING%XCEPTIONISEVENBIGGER
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
THEEXCEPTION)FYOURlRSTCATCHBLOCKIS
FDWFK ([FHSWLRQH[ THECOMPILER
KNOWSTHERESNOPOINTINADDINGANY
OTHERSTHEYLLNEVERBEREACHED

6L]HPDWWHUVZKHQ
\RXKDYHPXOWLSOHFDWFK
EORFNV7KHRQHZLWKWKHELJJHVW
EDVNHWKDVWREHRQWKHERWWRP
2WKHUZLVHWKHRQHVZLWK
VPDOOHUEDVNHWVDUHXVHOHVV

RWKLV

'RQWG
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


cant catch one anothers exceptions.
`FDWFK 6KLUW([FHSWLRQVH[ ^

9OUCOULDPUT3HIRT%XCEPTIONABOVE
,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
TWODIFFERENTCLASSDIAGRAMSTHATCANACCURATELYREmECTTHE%XCEPTION
CLASSES)NOTHERWORDS WHATCLASSINHERITANCESTRUCTURESWOULDMAKETHE
TRYCATCHBLOCKSINTHESAMPLECODELEGAL

6KDUSHQ \RXU SHQFLO


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
WITHTHETRYBLOCK

%D]([

)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\RXGRQWZDQWWRKDQGOHDQ
H[FHSWLRQ\RXFDQGXFNLWE\
GHFODULQJLW
7HENYOUCALLARISKYMETHOD THECOMPILER
NEEDSYOUTOACKNOWLEDGEIT-OSTOFTHETIME
THATMEANSWRAPPINGTHERISKYCALLINATRY
CATCH"UTYOUHAVEANOTHERALTERNATIVE SIMPLY
DUCKITANDLETTHEMETHODTHATCALLEDYOUCATCH
THEEXCEPTION
)TSEASYALLYOUHAVETODOISDECLARETHAT
YOUTHROWTHEEXCEPTIONS%VENTHOUGH
TECHNICALLY YOUARENTTHEONEDOINGTHE
THROWING ITDOESNTMATTER9OURESTILLTHEONE
LETTINGTHEEXCEPTIONWHIZRIGHTONBY
"UTIFYOUDUCKANEXCEPTION THENYOUDONT
HAVEATRYCATCH SOWHATHAPPENSWHENTHE
RISKYMETHODDO,AUNDRY DOESTHROWTHE
EXCEPTION
7HENAMETHODTHROWSANEXCEPTION THAT
METHODISPOPPEDOFFTHESTACKIMMEDIATELY
ANDTHEEXCEPTIONISTHROWNTOTHENEXT
METHODDOWNTHESTACKTHECALLER"UTIFTHE
CALLERISADUCKER THENTHERESNOCATCHFORITSO
THECALLERPOPSOFFTHESTACKIMMEDIATELY AND
THEEXCEPTIONISTHROWNTOTHENEXTMETHOD
ANDSOONWHEREDOESITEND9OULLSEEA
LITTLELATER

EXW
<WKURZLW FK
/
/
$
(
5

<RXGRQW QWKDYHDWU\FDW
R
SXEOLFYRLGIRR WKURZV5HDOO\%DG([FHSWLRQ^ VLQFH\RXG PHWKRG\RXFDOO
N\
G
IRUWKHULV ZWKHULVN\PHWKR 
FDOOULVN\PHWKRGZLWKRXWDWU\FDWFK
8
QR
<28DUH ZKRHYHUFDOOV<2
Z

R
Q

LR
ODXQGU\GR/DXQGU\ 
%HFDXVH ZLWKWKHH[FHSW Q
O
D
H
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"
SXEOLFFODVV:DVKHU^
/DXQGU\ODXQGU\ QHZ/DXQGU\ 
SXEOLFYRLGIRR WKURZV&ORWKLQJ([FHSWLRQ^
ODXQGU\GR/DXQGU\ 
`

WLRQ
HH[FHS ERG\WR
K
W

N
F
X
R
G
KHUHVQ
HWKRGV
%RWKP ODULQJLW VRW HVMXVWILQH
LO
E\GHF 7KLVFRPS
LW

H
O
KDQG

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV WKURZV&ORWKLQJ([FHSWLRQ^


:DVKHUD QHZ:DVKHU 
DIRR 
`
`

GR/DXQGU\ WKURZVD
&ORWKLQJ([FHSWLRQ

GR/DXQGU\
IRR
PDLQ
PDLQ FDOOVIRR
IRR FDOOVGR/DXQGU\
GR/DXQGU\ LV
UXQQLQJDQGWKURZVD
&ORWKLQJ([FHSWLRQ

IRR GXFNVWKH
H[FHSWLRQ

IRR
PDLQ
GR/DXQGU\ SRSVRIIWKH
VWDFNLPPHGLDWHO\DQG
WKHH[FHSWLRQLVWKURZQ
EDFNWRIRR 
%XWIRR GRHVQWKDYHD
WU\FDWFKVR

PDLQ GXFNVWKH
H[FHSWLRQ

7KH-90
VKXWVGRZQ

PDLQ
IRR SRSVRIIWKH
VWDFNLPPHGLDWHO\DQG
WKHH[FHSWLRQLVWKURZQ
EDFNWRZKR":KDW"
7KHUHVQRERG\OHIW
EXWWKH-90DQGLWV
WKLQNLQJ'RQWH[SHFW
0(WRJHW\RXRXWRI
WKLV

:HUHXVLQJWKHWHHVKLUWWRUHSUHVHQWD&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,WVWKHODZ
6RQRZZHYHVHHQERWKZD\VWRVDWLVI\WKHFRPSLOHU
ZKHQ\RXFDOODULVN\ H[FHSWLRQWKURZLQJ PHWKRG


+$1'/(
:UDSWKHULVN\FDOOLQDWU\FDWFK

WU\^
ODXQGU\GR/DXQGU\ 
`FDWFK &ORWKLQJ([FHSWLRQFH[ ^
UHFRYHU\FRGH
`


7KLVKDGEHWWHUEHD
ELJ
KDQGOHDOOH[FHSWLRQV HQRXJKFDWFKWR
WKDWGR/DXQGU\ 
PLJKWWKURZ2UHOVH
WK
VWLOOFRPSODLQWKDW\ HFRPSLOHUZLOO
RXUHQRWFDWFKLQJDOO
RIWKHH[FHSWLRQV

'(&/$5( GXFNLW


RGWKURZVD KH
K
W
H
P

\
U
G
7KHGR/DXQ WLRQEXWE\GHFODULQJW
HS
&ORWKLQJ([F IRR PHWKRGJHWVWR
KH
H[FHSWLRQW SWLRQ1RWU\FDWFK
FH
[
H
H
GXFNWK

'HFODUHWKDW<285PHWKRGWKURZVWKHVDPHH[FHSWLRQV
DVWKHULVN\PHWKRG\RXUHFDOOLQJ

YRLGIRR WKURZV&ORWKLQJ([FHSWLRQ^
ODXQGU\GR/DXQGU\ 
`

%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%/(
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
:DVKHUD QHZ:DVKHU 
DIRR 
`
%HFDXVHWKHIRR PH
`

WKRGGXFN
&ORWKLQJ([FHSWLRQWKURZQE VWKH
\GR/DXQGU\ 
PDLQ KDVWRZUDSDIRR
LQDWU\FDWFK
RUPDLQ KDVWRGHFODUHW
KDW
WKURZV&ORWKLQJ([FHSWLRQ LWWRR

H
SLOHDQGZHUURU
P
R
F

W
Q
R

Z
LRQ
1RZPDLQX QUHSRUWHGH[FHSWFRQFHUQHG



V
Q
U
D
JHW DVWKHFRPSLOH VDQ
$VIDU PHWKRGWKURZ
WKHIRR Q
H[FHSWLR

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
TRYCATCH


HTXHQFHU 
6
W
H
J

J
LQ
OO
FD
WU\
1RSUREOHP HYHZUDSSHGLWLQD
Z

W
QRZWKD 
N
FDWFKEORF

SXEOLFYRLGSOD\ ^
WU\^

6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 


6\VWHPRXWSULQWOQ 6XFFHVVIXOO\JRWDVHTXHQFHU 

7KHFDW
WKHULJ FKSDUDPHWHUK
K
D
FDWFK ) WH[FHSWLRQ,I VWREH
LO

ZHVDLG
H
1
RW)
FRGHZR
XOGQRW RXQG([FHSWLRQ 
PRUSKLF
FRPSLOH
I WKH
D
ZRQWI OO\D0LGL8QDY EHFDXVHSRO\ 
LWLQWRD
LO
)LOH1RW DEOH([FHSWLRQ
5HPHPE
)RXQG(
H
[FHSWLRQ
FDWFKE ULWVQRWHQRX

ORFN\
J
K

W
RKDYHD
RXKDYH
WKLQJEH

WRFDWF
LQJWKUR
KWKH
ZQ

`FDWFK 0LGL8QDYDLODEOH([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ %XPPHU 
`
`FORVHSOD\


-`KMX\QWV:]TM[
 <RXFDQQRWKDYHDFDWFKRUQDOO\
ZLWKRXWDWU\

$/
YRLGJR ^
127/(* WU\"
H
K
)RRI QHZ)RR 
:KHUHVW
IIRRI 
FDWFK )RR([FHSWLRQH[ ^`
`

<RXFDQQRWSXWFRGHEHWZHHQWKH
WU\DQGWKHFDWFK

WU\^
[GR6WXII 
`QDOO\^
FOHDQXS
`

127/

(*$
WU\^
FRGHEHWZH / <RXFDQWSXW
H
[GR6WXII 
WKHFDWFK QWKHWU\DQG
`
LQW\ 
`FDWFK ([FHSWLRQH[ ^`


$WU\0867EHIROORZHGE\HLWKHUD
FDWFKRUDQDOO\
/(

*$/
KDYHDI EHFDXVH\RX
LQ
WKRXJKW DOO\HYHQ
KHUHVQR
%XW\RX
FDWFK
F
WU\E\LW DQQRWKDYHD
VHOI

$WU\ZLWKRQO\DQDOO\ QRFDWFK 
PXVWVWLOOGHFODUHWKHH[FHSWLRQ
YRLGJR WKURZV)RR([FHSWLRQ^
WU\^
K
RXWDFDWF
[GR6WXII  $WU\ZLWK
LVI\WKH
`QDOO\^`
GRHVQWVDW HFODUHODZ
G
`
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

%XWZK\GRQW
\RXMXVWXVH
5HDG\EDNHFRGH"

7KHUHLV12ZD\
,POHWWLQJ%HWW\ZLQWKH
FRGHRIIWKLV\HDUVR,P
JRQQDPDNHLWP\VHOIIURP
VFUDWFK

You dont have to do it


yourself, but its 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
SOD\VWKHPXVLF

6HTXHQFHU

SOD\V

4HE3EQUENCERISTHETHING
THATACTUALLYCAUSESASONG
TOBEPLAYED4HINKOFITLIKE
AMUSIC#$PLAYER

7KHPXVLFWREH
SOD\HGDVRQJ

6HTXHQFH

KDVD

4HE3EQUENCEISTHE
SONG THEMUSICALPIECE
THATTHE3EQUENCERWILL
PLAY&ORTHISBOOK THINK
OFTHE3EQUENCEASA
MUSIC#$ BUTTHEWHOLE
#$PLAYSJUSTONESONG

7KHSDUWRIWKH
6HTXHQFHWKDW
KROGVWKHDFWXDO
LQIRUPDWLRQ

7UDFN
&ORTHISBOOK WEONLY
NEEDONE4RACK SOJUST
IMAGINEAAMUSIC#$
WITHONLYONESONG!
SINGLE4RACK4HIS4RACK
ISWHEREALLTHESONG
DATA-)$)INFORMATION
LIVES

HDVD
6HTXHQF 7KH
H
K
W

I
R

N

ERRNWKLQ
QH7UDFN
)RUWKLV J&' KDVRQO\R OD\WKHVRQJ
S
Q
VLQJOHVR QDERXWKRZWR 7UDFNLVSDUW
LR
H
W
K
D
W

P
LQIRU
UDFNDQG
7

H
K
W

Q
OLYHVR TXHQFH
H
RIWKH6


KROGV

7KHDFWXDOPXVLF
LQIRUPDWLRQ
QRWHVWRSOD\
KRZORQJHWF
0LGL
(YHQW

0LGL
(YHQW

0LGL
(YHQW

0LGL
(YHQW

!-)$)EVENTISAMESSAGE
THATTHE3EQUENCERCAN
UNDERSTAND!-)$)EVENT
MIGHTSAYIFITSPOKE
%NGLISH h!TTHISMOMENT
INTIME PLAYMIDDLE# PLAY
ITTHISFASTANDTHISHARD
ANDHOLDITFORTHISLONGh
!-)$)EVENTMIGHT
ALSOSAYSOMETHINGLIKE
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 

8KKDWHWREUHDNLW
WR\RXEXWWKDWVRQO\
)285VWHSV

$KKKK:H
IRUJRWWRSXVKWKH
3/$<EXWWRQ<RXKDYHWR
VWDUW WKH6HTXHQFHU

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

'RQWIRUJHWWRLP

LPSRUWMDYD[VRXQGPLGL 

SRUWWKHPLGLSDF

SXEOLFFODVV0LQL0LQL0XVLF$SS^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0LQL0XVLF$SSPLQL QHZ0LQL0LQL0XVLF$SS 
PLQLSOD\ 
`FORVHPDLQ

QLW
DQGRSH XHQFHU
U
H
F
Q
H
X
T
JHWD6H QXVHLWD6HT Q
D
VRZHF RPHDOUHDG\RSH
F

W
Q
GRHV

Licensed by
Eduard Simons
104038

SXEOLFYRLGSOD\ ^
WU\^

NDJH

6HTXHQFHUSOD\HU 0LGL6\VWHPJHW6HTXHQFHU 

SOD\HURSHQ 


6HTXHQFHVHT
QHZ6HTXHQFH 6HTXHQFH334 



7UDFNWUDFN
VHTFUHDWH7UDFN 


6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 

DVHW0HVVDJH  
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 
WUDFNDGG QRWH2Q 

HQWVWRWKH N
XP
J
U
D
H
K
W
XW
DER
 WKLQ
'RQWZRUU\ UXFWRU-XVWFRS\WKHVH
VW
6HTXHQFHFRQ \EDNHDUJXPHQWV 
DG
H
RIHPDV5

$VNWKH6HTXHQFHIRUD
7
7UDFNOLYHVLQWKH6HTXH UDFN5HPHPEHUWKH
QFHDQGWKH0,',GDW
D
OLYHVLQWKH7UDFN

3XWVRPH0LGL(YHQWVLQWRWKH7UDFN7
KLVSDUW
LVPRVWO\5HDG\EDNHFRGH7KHRQO\
WKLQJ\RXOO
KDYHWRFDUHDERXWDUHWKHDUJXPHQWVWR
WKH
VHW0HVVDJH PHWKRGDQGWKHDUJXPH
QWVWR
WKH0LGL(YHQWFRQVWUXFWRU:HOOORRN
DWWKRVH
DUJXPHQWVRQWKHQH[WSDJH

6KRUW0HVVDJHE QHZ6KRUW0HVVDJH 
EVHW0HVVDJH  
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 
WUDFNDGG QRWH2II 

SOD\HUVHW6HTXHQFH VHT 
*LYHWKH6HTXHQFHWRWKH6HTXHQFHU OLNH

SXWWLQJWKH&'LQWKH&'SOD\HU
SOD\HUVWDUW 

6WDUW WKH

`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`FORVHSOD\
`FORVHFODVV



6HTXHQFHU

OLNHSXVKLQJ3

/$<

FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
CAREABOUTDESCRIBEATHINGTODOANDTHEMOMENTINTIMETODOIT4HEMOMENT
INTIMEPARTMATTERS SINCETIMINGISEVERYTHINGINMUSIC4HISNOTEFOLLOWS
THISNOTEANDSOON!NDBECAUSE-IDI%VENTSARESODETAILED YOUHAVETOSAY
ATWHATMOMENTTOSTARTPLAYINGTHENOTEA./4%/.EVENT ANDATWHAT
MOMENTTOSTOPPLAYINGTHENOTES./4%/&&EVENT 3OYOUCANIMAGINE
THATlRINGTHEhSTOPPLAYINGNOTE'v./4%/&&MESSAGE BEFORETHEhSTART
PLAYING.OTE'v./4%/. MESSAGEWOULDNTWORK
4HE-)$)INSTRUCTIONACTUALLYGOESINTOA-ESSAGEOBJECTTHE-IDI%VENTIS
ACOMBINATIONOFTHE-ESSAGEPLUSTHEMOMENTINTIMEWHENTHATMESSAGE
SHOULD@lRE)NOTHERWORDS THE-ESSAGEMIGHTSAY h3TARTPLAYING-IDDLE
#vWHILETHE-IDI%VENTWOULDSAY h4RIGGERTHISMESSAGEATBEATv
3OWEALWAYSNEEDA-ESSAGEANDA-IDI%VENT
4HE-ESSAGESAYSWHATTODO ANDTHE-IDI%VENTSAYSWHENTODOIT

!-IDI%VENTSAYS
WHATTODOAND
WHENTODOIT
%VERYINSTRUCTION
MUSTINCLUDETHE
TIMINGFORTHAT
INSTRUCTION
)NOTHERWORDS AT
WHICHBEATTHAT
THINGSHOULDHAPPEN

0DNHD0HVVDJH
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 

3XWWKH,QVWUXFWLRQLQWKH0HVVDJH
DVHW0HVVDJH  

0DNHDQHZ0LGL(YHQWXVLQJWKH0HVVDJH
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 

$GGWKH0LGL(YHQWWRWKH7UDFN
WUDFNDGG QRWH2Q 


JQRWH
LQ
\
OD
S
W
U
D
KH
HVD\VVW
7KLVPHVVDJ WKHRWKHUQXPEHUVRQW
W
ZHOOORRND

H
QH[WSDJ
7KHLQVWUXFWLRQVDUHLQ
W
(YHQWDGGVWKHPRPHQ KHPHVVDJHEXWWKH0LGL
WLQWLPHZKHQWKHLQVW
UXFWLRQ
VKRXOGEHWULJJHUHG7
KLV
PHVVDJHDDWWKHILUV 0LGL(YHQWVD\VWRWULJJHU
WEHDW EHDW 

UJDQL]HV
YHQWREMHFWV7KH6HTXHQFHR
$7UDFNKROGVDOOWKH0LGL( QWLVVXSSRVHGWRKDSSHQDQGWKHQ
FKHYH
WKHPDFFRUGLQJWRZKHQHD LQWKDWRUGHU<RXFDQKDYHORWVRI
FN
ED
HP
DPSOH
WKH6HTXHQFHUSOD\VWK
PHPRPHQWLQWLPH)RUH[ QW
VD
FW
[D
HH
WK
DW
QJ
HQL
DSS
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
7KHUVWDUJXPHQWWRVHW0HVVDJH DOZD\V
UHSUHVHQWVWKHPHVVDJHW\SHZKLOHWKHRWKHU
WKUHHDUJXPHQWVUHSUHVHQWGLIIHUHQWWKLQJV
GHSHQGLQJRQWKHPHVVDJHW\SH

\
SH
W\ QHO WRSOD LW\
H
J
VD KDQ RWH HORF
PHV
F
Q
Y

DVHW0HVVDJH  

7KHODVWD
W\SH7KLVLVDUJVYDU\GHSHQGLQJRQWKH
RWKHUDUJVDUH 127(21PHVVDJHVRWPHVVDJH
WRNQRZLQRU IRUWKLQJVWKH6HTXHQF KH
HUQHHGV
GHUWRSOD\D
QRWH


0HVVDJHW\SH

4HE-ESSAGESAYSWHATTODO THE
-IDI%VENTSAYSWHENTODOIT

 &KDQQHO

7KLQNRIDFKDQQHOOLNHDPXVLFLDQLQ
DEDQG&KDQQHOLVPXVLFLDQ WKH
NH\ERDUGSOD\HU FKDQQHOLVWKH
GUXPPHUHWF

 1RWHWRSOD\

$QXPEHUIURPWRJRLQJ
IURPORZWRKLJKQRWHV

PHDQV
127(21


\LQJ

VWD

OD
UWS

PHDQV
127(2))

\LQJ
SOD
S
R
VW



 


 
 



 9HORFLW\

+RZ IDVW DQG KDUG


GLG
\RX SUHVV WKH NH\"   LVVRVRIW\RX
SUREDEO\ZRQWKHDUDQ\WKLQJEXWLVD
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
LVDQGWKHWKLUGDUJXPHQWUHSUHVHQWVWKHDFWXDO
LQVWUXPHQW WU\DQXPEHUEHWZHHQDQG
UVWVHW0HVVDJH  


VDJH FLDQ HQW
V
H
XVL UXP
WP
PHQ HO P WRLQVW
X
U
W
Q
LQV QFKDQ
H
J
Q
L
FKD

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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^WKLVLVWKHUVWRQH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF&PG/LQHPLQL QHZ0LQL0XVLF&PG/LQH 
LI DUJVOHQJWK ^
6\VWHPRXWSULQWOQ 'RQWIRUJHWWKHLQVWUXPHQWDQGQRWHDUJV 
`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
6KRUW0HVVDJHUVW QHZ6KRUW0HVVDJH 
UVWVHW0HVVDJH LQVWUXPHQW 
0LGL(YHQWFKDQJH,QVWUXPHQW QHZ0LGL(YHQW UVW 
WUDFNDGG FKDQJH,QVWUXPHQW 
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH QRWH 
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 
WUDFNDGG QRWH2Q 
6KRUW0HVVDJHE QHZ6KRUW0HVVDJH 
EVHW0HVVDJH QRWH 
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 
WUDFNDGG QRWH2II 
SOD\HUVHW6HTXHQFH VHT 
SOD\HUVWDUW 

5XQLWZLWKWZRLQWDUJVIURP
WR7U\WKHVHIRUVWDUWHUV
)LOH(GLW:LQGRZ+HOS$WWHQXDWH

MDYD0LQL0XVLF&PG/LQH
MDYD0LQL0XVLF&PG/LQH
MDYD0LQL0XVLF&PG/LQH

`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

:KHUHZHUHKHDGHGZLWKWKHUHVW
RIWKH&RGH.LWFKHQV
&KDSWHUWKHJRDO
:KHQZHUHGRQHZHOOKDYHDZRUNLQJ
%HDW%R[WKDWVDOVRD'UXP&KDW&OLHQW
:HOOQHHGWROHDUQDERXW*8,V LQFOXG
LQJHYHQWKDQGOLQJ ,2QHWZRUNLQJDQG
WKUHDGV7KHQH[WWKUHHFKDSWHUV 
DQG ZLOOJHWXVWKHUH

GDQFHEHDW

$QG\JURRYH

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW

&KDSWHU0,',HYHQWV
7KLV&RGH.LWFKHQOHWVXVEXLOGDOLWWOH
PXVLFYLGHR ELWRIDVWUHWFKWRFDOOLW
WKDW WKDWGUDZVUDQGRPUHFWDQJOHVWR
WKHEHDWRIWKH0,',PXVLF:HOOOHDUQ
KRZWRFRQVWUXFWDQGSOD\DORWRI0,',
HYHQWV LQVWHDGRIMXVWDFRXSOHDVZHGR
LQWKHFXUUHQWFKDSWHU 

EHDWRQH

EHDWWZR

EHDWWKUHH

EHDWIRXU

&KDSWHU6WDQGDORQH
%HDW%R[
1RZZHOODFWXDOO\EXLOGWKHUHDO%HDW%R[
*8,DQGDOO%XWLWVOLPLWHGDVVRRQDV\RX
FKDQJHDSDWWHUQWKHSUHYLRXVRQHLVORVW
7KHUHVQR6DYHDQG5HVWRUHIHDWXUHDQG
LWGRHVQWFRPPXQLFDWHZLWKWKHQHWZRUN
%XW\RXFDQVWLOOXVHLWWRZRUNRQ\RXU
GUXPSDWWHUQVNLOOV

&KDSWHU6DYHDQG
5HVWRUH
<RXYHPDGHWKHSHUIHFWSDWWHUQDQG
QRZ\RXFDQVDYHLWWRDOHDQGUHORDGLW
ZKHQ\RXZDQWWRSOD\LWDJDLQ7KLVJHWV
XVUHDG\IRUWKHQDOYHUVLRQ 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
1dQ^OU_Q

!WORKING*AVAPROGRAMISSCRAMBLEDUPONTHEFRIDGE#ANYOU
RECONSTRUCTALLTHECODESNIPPETSTOMAKEAWORKING*AVAPROGRAM
THATPRODUCESTHEOUTPUTLISTEDBELOW3OMEOFTHECURLYBRACESFELL
ONTHEFLOORANDTHEYWERETOOSMALLTOPICKUP SOFEELFREETOADDAS
MANYOFTHOSEASYOUNEED

U 

6\VWHPRXWSULQW

GR5LVN\ WHVW 

WU\^

6\VWHPRXWSULQW
W 

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
WKDZV
MDYD([7HVW'ULYHQR
WKURZV

^

JV
PDLQ 6WULQJ>@DU
SXEOLFVWDWLFYRLG
JV>@
6WULQJWHVW DU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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



















#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

3TARTACHAINOFEVENTS

4HETEMPLATE

#REATEBADNEWS

2OLLANOTHERONEOFF
THELINE

/NEOFMYROLES

/NEOF*AVAS@

-ORE(INTS



$OWN

/NLYPUBLICORDEFAULT
/RAMOUTHWASH
?????THEFAMILYFORTUNE
&OR??????NOTEXAMPLE .OTA@GETTER
.UMBERS

0ROBLEMOBJECTS

!LSOATYPEOFCOLLECTION
1UACK
3TARTSAPROBLEM
.OT!BSTRACT

.ODUCKING

!CROSS

!*AVACHILD
3TARTAMETHOD
)NSTEADOFDECLARE

!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
&ALSE EITHERORBOTH

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6WULQJWHVW DUJV>@
WU\^

&ALSE YOUCANDECLARETHEEXCEPTION

6\VWHPRXWSULQW W 

4RUE

GR5LVN\ WHVW 

&ALSE RUNTIMEEXCEPTIONCANBECAUGHT

6\VWHPRXWSULQW R 

4RUE
4RUE BOTHAREACCEPTABLE

`FDWFK 0\([H ^

&ALSE THEDECLARATIONISSUFlCIENT

6\VWHPRXWSULQW D 

&ALSE BUTIFITDOESNTTHE*6-MAYSHUT
DOWN

`QDOO\^

4RUE

6\VWHPRXWSULQW Z 
`
6\VWHPRXWSULQWOQ V 
`

&ALSE
4RUE)TSOFTENUSEDTOCLEAN UPPARTIALLY
COMPLETEDTASKS
&ALSE

VWDWLFYRLGGR5LVN\ 6WULQJW WKURZV0\([^


6\VWHPRXWSULQW K 

&ALSE

LI \HVHTXDOV W ^

&ALSE DUCKINGISSYNONOMOUSWITHDECLAR
ING

WKURZQHZ0\([ 
`

&ALSE BROADESTEXCEPTIONSMUSTBECAUGHT
BYTHELASTCATCHBLOCKS

6\VWHPRXWSULQW U 

&ALSE IFYOUDONTHAVEACATCHBLOCK YOU


MUSTDECLARE

`
`

&ALSE

)LOH(GLW:LQGRZ+HOS&KLOO

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



$268%&/$66,192.(

73779&




+,(5$5&+<$+$1'/(/
11+77$



6&(7(;&(37,216
7(&516



$6.(<:25'+

1(((75((



77'8&.&57


,17$$/*25,7+0

$(,7$75


7+52:6&21&5(7(2

($+(1(:

Licensed by
Eduard Simons
104038



FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
,JXHVVSUHVHQWDWLRQ
UHDOO\LVHYHU\WKLQJ

,KHDUG\RXU
H[ZLIHFRXOGRQO\FRRN
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
FRPPDQGOLQHDSS
\RXUHILUHG

1\ITT[\IZ\[_Q\PI_QVLW_
!*&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
DPHQXED RQ

K
LW
Z

H
P
D-)UD ZLGJHWV DEXWW
DQGWZR LREXWWRQ
DQGDUDG
0DNLQJD*8,LVHDV\


0DNHDIUDPH D-)UDPH
-)UDPHIUDPH QHZ-)UDPH 

0DNHDZLGJHW EXWWRQWH[WHOGHWF
-%XWWRQEXWWRQ QHZ-%XWWRQ FOLFNPH 

$GGWKHZLGJHWWRWKHIUDPH
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 

8]\_QLOM\[QV\PM_QVLW_
/NCEYOUHAVEA*&RAME YOUCANPUT
THINGS@WIDGETS INITBYADDINGTHEM
TOTHE*&RAME4HEREAREATONOF3WING
COMPONENTSYOUCANADDLOOKFORTHEM
INTHEJAVAXSWINGPACKAGE4HEMOST
COMMONINCLUDE*"UTTON *2ADIO"UTTON
*#HECK"OX *,ABEL *,IST *3CROLL0ANE
*3LIDER *4EXT!REA *4EXT&IELD AND
*4ABLE-OSTAREREALLYSIMPLETOUSE BUT
SOMELIKE*4ABLE CANBEABITMORE
COMPLICATED

<RXGRQWDGGWKL
GLUHFWO\7KLQNRI QJVWRWKHIUDPH
WULPDURXQGWKHZWKHIUDPHDVWKH
WKLQJVWRWKHZLQGRLQGRZDQG\RXDGG
ZSDQH


'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
LPSRUWMDYD[VZLQJ 

KLV
GRQWIRUJHWWRLPSRUWW
VZLQJSDFNDJH

SXEOLFFODVV6LPSOH*XL^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

WWRQ
HDQGDEX
P
D
U
I

D

H
PDN
QFRQVWUXFWRU
-)UDPHIUDPH QHZ-)UDPH 
\RXFDQSDVVWKHEXWRQWRWKHEXWWRQ
-%XWWRQEXWWRQ QHZ-%XWWRQ FOLFNPH 
WKHWH[W\RXZDQW
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 

WKLVOLQHPDNHVWK URJU
DPTXLWDVVRRQDV\RX
FORVHWKHZLQGRZ LHS
I
\R
XO
MXVWVLWWKHUHRQWKHVFUH HDYHWKLVRXWLWZLOO
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
HQIRUHYHU
DGGWKHEXWWRQWR
WKHIUDPHV
FRQWHQWSDQH
IUDPHVHW6L]H  
JLYHWKHIU
DPHDVL]H
LQSL[HOV
IUDPHVHW9LVLEOH WUXH 
`
`

ILQDOO\PDNHLWYLVLE 
LI\RXIRUJHW
WKLVVWHS\RXZRQWOH
VHH
D
Q\WKLQJZKHQ
\RXUXQWKLVFRGH

/HWVVHHZKDWKDSSHQVZKHQZHUXQLW
MDYD6LPSOH*XL

:KRD7KDWVD
5HDOO\%LJ%XWWRQ
7KHEXWWRQOOVDOOWKH
DYDLODEOHVSDFHLQWKHIUDPH
/DWHUZHOOOHDUQWRFRQWURO
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\
4HATSNOTEXACTLYTRUE7HENYOUPRESSTHEBUTTONITSHOWSTHAT
@PRESSEDOR@PUSHEDINLOOKWHICHCHANGESDEPENDINGONTHE
PLATFORMLOOKANDFEEL BUTITALWAYSDOESSOMETHINGTOSHOWWHEN
ITSBEINGPRESSED 
4HEREALQUESTIONIS h(OWDO)GETTHEBUTTONTODOSOMETHING
SPECIlCWHENTHEUSERCLICKSITv

:HQHHGWZRWKLQJV


$PHWKRGWREHFDOOHGZKHQWKHXVHU
FOLFNV WKHWKLQJ\RXZDQWWRKDSSHQDV
DUHVXOWRIWKHEXWWRQFOLFN 

$ZD\WRNQRZZKHQWRWULJJHU
WKDWPHWKRG,QRWKHUZRUGVDZD\
WRNQRZZKHQWKHXVHUFOLFNVWKH
EXWWRQ

Q:

7ILLABUTTONLOOKLIKEA
7INDOWSBUTTONWHENYOURUNON
7INDOWS

A:

)FYOUWANTITTO9OUCAN
CHOOSEFROMAFEWhLOOKAND
FEELSvCLASSESINTHECORELIBRARY
THATCONTROLWHATTHEINTERFACELOOKS
LIKE)NMOSTCASESYOUCANCHOOSE
BETWEENATLEASTTWODIFFERENTLOOKS
THESTANDARD*AVALOOKANDFEEL ALSO
KNOWNAS-ETAL ANDTHENATIVELOOK
ANDFEELFORYOURPLATFORM4HE-AC
/38SCREENSINTHISBOOKUSEEITHER
THE/38!QUALOOKANDFEEL ORTHE
-ETALLOOKANDFEEL

Q:

#AN)MAKEAPROGRAMLOOK
LIKE!QUAALLTHETIME%VENWHEN
ITSRUNNINGUNDER7INDOWS

A:

.OPE.OTALLLOOKANDFEELS
AREAVAILABLEONEVERYPLATFORM)F
YOUWANTTOBESAFE YOUCANEITHER
EXPLICITLYSETTHELOOKANDFEELTO
-ETAL SOTHATYOUKNOWEXACTLYWHAT
YOUGETREGARDLESSOFWHERETHEAPP
ISRUNNING ORDONTSPECIFYALOOK
ANDFEELANDACCEPTTHEDEFAULTS

Q:

)HEARD3WINGWASDOG SLOW
ANDTHATNOBODYUSESIT

:KHQWKHXVHUFOLFNVZHZDQW
WRNQRZ
:HUHLQWHUHVWHGLQWKHXVHU
WDNHVDFWLRQRQDEXWWRQHYHQW

A:

4HISWASTRUEINTHEPAST
BUTISNTAGIVENANYMORE/NWEAK
MACHINES YOUMIGHTFEELTHEPAINOF
3WING"UTONTHENEWERDESKTOPS
ANDWITH*AVAVERSIONANDBE
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

)LUVWWKHEXWWRQQHHGVWRNQRZ
WKDWZHFDUH

SXEOLFYRLGFKDQJH,W ^
EXWWRQVHW7H[W ,YHEHHQFOLFNHG 
`

+H\EXWWRQ,FDUHDERXW
ZKDWKDSSHQVWR\RX

\RXUFRGH

W

)MAGINEYOUWANTTHETEXTONTHEBUTTONTO
CHANGEFROMCLICKMETO)VEBEENCLICKEDWHEN
THEUSERPRESSESTHEBUTTON&IRSTWECANWRITEA
METHODTHATCHANGESTHETEXTOFTHEBUTTONA
QUICKLOOKTHROUGHTHE!0)WILLSHOWYOUTHE
METHOD 

EX

"UTNOWWHAT(OWWILLWEKNOWWHENTHIS
METHODSHOULDRUN(OWWILLWEKNOWWHENTHE
BUTTONISCLICKED


)N*AVA THEPROCESSOFGETTINGANDHANDLINGA
USEREVENTISCALLEDEVENT HANDLING4HEREARE
MANYDIFFERENTEVENTTYPESIN*AVA ALTHOUGH
MOSTINVOLVE'5)USERACTIONS)FTHEUSERCLICKS
ABUTTON THATSANEVENT!NEVENTTHATSAYS
h4HEUSERWANTSTHEACTIONOFTHISBUTTONTO
HAPPENv)FITSAh3LOW4EMPOvBUTTON THEUSER
WANTSTHESLOW TEMPOACTIONTOOCCUR)FITSA
3ENDBUTTONONACHATCLIENT THEUSERWANTSTHE
SEND MY MESSAGEACTIONTOHAPPEN3OTHEMOST
STRAIGHTFORWARDEVENTISWHENTHEUSERCLICKED
THEBUTTON INDICATINGTHEYWANTANACTIONTO
OCCUR

HF

/M\\QVOI][MZM^MV\

WWRQREM

7KHXVHUFOLFNHGPH

6HFRQGWKHEXWWRQQHHGVDZD\
WRFDOOXVEDFNZKHQDEXWWRQ
FOLFNHGHYHQWRFFXUV

7ITHBUTTONS YOUUSUALLYDONTCAREABOUTANY
INTERMEDIATEEVENTSLIKEBUTTON IS BEING PRESSED
ANDBUTTON IS BEING RELEASED7HATYOUWANTTO
SAYTOTHEBUTTONIS h)DONTCAREHOWTHEUSER
PLAYSWITHTHEBUTTON HOWLONGTHEYHOLDTHE
MOUSEOVERIT HOWMANYTIMESTHEYCHANGETHEIR
MINDANDROLLOFFBEFORELETTINGGO ETC*USTTELL
MEWHENTHEUSERMEANSBUSINESS)NOTHERWORDS
DONTCALLMEUNLESSTHEUSERCLICKSINAWAYTHAT
INDICATESHEWANTSTHEDARNBUTTONTODOWHATIT
SAYSITLLDOv

YiX`e
gfn\i
 (OWCOULDYOUTELLABUTTONOBJECTTHATYOU
CAREABOUTITSEVENTS4HATYOUREACONCERNED
LISTENER
 (OWWILLTHEBUTTONCALLYOUBACK!SSUME
THATTHERESNOWAYFORYOUTOTELLTHEBUTTONTHE
NAMEOFYOURUNIQUEMETHODCHANGE)T 3O
WHATELSECANWEUSETOREASSURETHEBUTTONTHAT
WEHAVEASPECIFICMETHODITCANCALLWHENTHE
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 \RXFDUHDERXWWKHEXWWRQVHYHQWV

LPSOHPHQWDQLQWHUIDFHWKDWVD\V
,POLVWHQLQJIRU\RXUHYHQWV
$OLVWHQHULQWHUIDFHLVWKHEULGJHEHWZHHQWKH
OLVWHQHU \RX DQGHYHQWVRXUFH WKHEXWWRQ 
4HE3WING'5)COMPONENTSAREEVENTSOURCES)N*AVATERMS
ANEVENTSOURCEISANOBJECTTHATCANTURNUSERACTIONSCLICK
AMOUSE TYPEAKEY CLOSEAWINDOW INTOEVENTS!NDLIKE
VIRTUALLYEVERYTHINGELSEIN*AVA ANEVENTISREPRESENTEDASAN
OBJECT!NOBJECTOFSOMEEVENTCLASS)FYOUSCANTHROUGHTHE
JAVAAWTEVENTPACKAGEINTHE!0) YOULLSEEABUNCHOFEVENT
CLASSESEASYTOSPOTTHEYALLHAVE%VENTINTHENAME 9OULL
lND-OUSE%VENT +EY%VENT 7INDOW%VENT !CTION%VENT AND
SEVERALOTHERS
!NEVENTSOURCELIKEABUTTON CREATESANEVENTOBJECTWHENTHE
USERDOESSOMETHINGTHATMATTERSLIKECLICKTHEBUTTON -OST
OFTHECODEYOUWRITEANDALLTHECODEINTHISBOOK WILLRECEIVE
EVENTSRATHERTHANCREATEEVENTS)NOTHERWORDS YOULLSPEND
MOSTOFYOURTIMEASANEVENTLISTENERRATHERTHANANEVENTSOURCE
%VERYEVENTTYPEHASAMATCHINGLISTENERINTERFACE)FYOUWANT
-OUSE%VENTS IMPLEMENTTHE-OUSE,ISTENERINTERFACE7ANT
7INDOW%VENTS)MPLEMENT7INDOW,ISTENER9OUGETTHEIDEA
!NDREMEMBERYOURINTERFACERULESTOIMPLEMENTANINTERFACE
YOUDECLARETHATYOUIMPLEMENTITCLASS$OGIMPLEMENTS0ET
WHICHMEANSYOUMUSTWRITEIMPLEMENTATIONMETHODSFOREVERY
METHODINTHEINTERFACE
3OMEINTERFACESHAVEMORETHANONEMETHODBECAUSETHE
EVENTITSELFCOMESINDIFFERENTmAVORS)FYOUIMPLEMENT
-OUSE,ISTENER FOREXAMPLE YOUCANGETEVENTSFOR
MOUSE0RESSED MOUSE2ELEASED MOUSE-OVED ETC%ACHOF
THOSEMOUSEEVENTSHASASEPARATEMETHODINTHEINTERFACE
EVENTHOUGHTHEYALLTAKEA-OUSE%VENT)FYOUIMPLEMENT
-OUSE,ISTENER THEMOUSE0RESSED METHODISCALLEDWHENTHE
USERYOUGUESSEDIT PRESSESTHEMOUSE!NDWHENTHEUSERLETS
GO THEMOUSE2ELEASED METHODISCALLED3OFORMOUSEEVENTS
THERESONLYONEEVENTOBJECT -OUSE%VENT BUTSEVERALDIFFERENT
EVENTMETHODS REPRESENTINGTHEDIFFERENTTYPESOFMOUSEEVENTS

:KHQ\RXLPSOHPHQWD
OLVWHQHULQWHUIDFH\RXJLYH
WKHEXWWRQDZD\WRFDOO
\RXEDFN7KHLQWHUIDFHLV
ZKHUHWKHFDOOEDFNPHWKRG
LVGHFODUHG

LQ
W
$FWL HUIDFH!
RQ/
LVWHQ !
DFWLR
HU
Q3HU
I
RUPH

G $F
WL

RQ(Y

HQWH

FH!!
LQWHUID U
QH
,WHP/LVWH
(YHQWHY

JHG ,WHP

&KDQ
LWHP6WDWH

LQWHU
IDF
.H\/LV H!!
WHQHU

NH\3UH
VVHG .
H\(YHQ
WHY
NH\5HOH
DVHG .
H\(YHQ
WHY
NH\7\S
HG .H\
(YHQWH
Y

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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.\RXUHDQ$FWLRQ/LVWHQHU
VR,NQRZKRZWRFDOO\RXEDFN
ZKHQWKHUHVDQHYHQW,OOFDOO
WKHDFWLRQ3HUIRUPHG PHWKRG

EX

WKDW,NQRZ\RXKDYH

QD
WR

G G$

FWLRQ/LVWHQHU W

KLV


D F WLR
HQW
Q3 H UIRU P H G WKH ( Y

The Listener
)FYOURCLASSWANTSTOKNOWABOUT
ABUTTONS!CTION%VENTS YOU
IMPLEMENTTHE!CTION,ISTENER
INTERFACE4HEBUTTONNEEDSTO
KNOWYOUREINTERESTED SOYOU
REGISTERWITHTHEBUTTONBYCALLINGITS
ADD!CTION,ISTENERTHIS ANDPASSINGAN
!CTION,ISTENERREFERENCETOITINTHISCASE
YOUARETHE!CTION,ISTENERSOYOUPASS
THIS 4HEBUTTONNEEDSAWAYTOCALLYOU
BACKWHENTHEEVENTHAPPENS SOITCALLS
THEMETHODINTHELISTENERINTERFACE!SAN
!CTION,ISTENER YOUMUSTIMPLEMENTTHE
INTERFACESSOLEMETHOD ACTION0ERFORMED 
4HECOMPILERGUARANTEESIT

The Event Source


!BUTTONISASOURCEOF!CTION%VENTS
SOITHASTOKNOWWHICHOBJECTSARE
INTERESTEDLISTENERS4HEBUTTONHASAN
ADD!CTION,ISTENER METHODTOGIVE
INTERESTEDOBJECTSLISTENERS AWAYTO
TELLTHEBUTTONTHEYREINTERESTED
7HENTHEBUTTONS
ADD!CTION,ISTENER RUNSBECAUSE
APOTENTIALLISTENERINVOKEDIT THE
BUTTONTAKESTHEPARAMETERA
REFERENCETOTHELISTENEROBJECT AND
STORESITINALIST7HENTHEUSERCLICKS
THEBUTTON THEBUTTON@lRESTHEEVENT
BYCALLINGTHEACTION0ERFORMED
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

*HWWLQJDEXWWRQV$FWLRQ(YHQW


,PSOHPHQWWKH$FWLRQ/LVWHQHULQWHUIDFH

5HJLVWHUZLWKWKHEXWWRQ WHOOLW\RX
ZDQWWROLVWHQIRUHYHQWV

'HQHWKHHYHQWKDQGOLQJPHWKRG LPSOHPHQW
WKHDFWLRQ3HUIRUPHG PHWKRGIURPWKH
$FWLRQ/LVWHQHULQWHUUIDFH


UWKHSDFNDJHWKDW
IR
W
HQ
P
WH
WD
V
UW
UHLQ
DQHZLPSR
V
QG$FWLRQ(YHQWD
7KLVVD\
$FWLRQ/LVWHQHUD

H
F
D
I
U
KHLQWH
,6$

OHPHQWW RI6LPSOH*XL%
S
P
,
SXEOLFFODVV6LPSOH*XL%LPSOHPHQWV$FWLRQ/LVWHQHU^
DQFH
DQLQVW LVWHQHU
-%XWWRQEXWWRQ
R
WVRQO\W
Q
H
$FWLRQ/
Y
H

H
LY
OJ
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WHUV
WWRQZLO
6LPSOH*XL%JXL QHZ6LPSOH*XL% 
7KHEX WHQHULPSOHPHQ
LV
JXLJR 
$FWLRQ/

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZWHYHQW 

`

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
EXWWRQ QHZ-%XWWRQ FOLFNPH 

KLVVD\V
7

Q
R
W
W
X
KHE
HUV
VWZLWKW RXUOLVWRIOLVWHQ PD
H
U
H
W
LQ

U
IUR
\RX
R\
UHJLVWHU WWRQ$GGPHW 67EHDQREMHFW
EXWWRQDGG$FWLRQ/LVWHQHU WKLV 

X
WRWKHE HQW\RXSDVV08 Q/LVWHQHU
P
LR
7KHDUJX LPSOHPHQWV$FW
W
D
FODVVWK
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
HV
QHULQWHUIDF
IUDPHVHW6L]H  
H
W
LV
/
Q
LR
W
F
H$
KH
IUDPHVHW9LVLEOH WUXH 
,PSOHPHQWWK HG PHWKRG7KLVLVW
`
P
U
R
DFWLRQ3HUI KDQGOLQJPHWKRG


DFWXDOHYHQW

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
EXWWRQVHW7H[W ,YHEHHQFOLFNHG 
`
7KHEXWWRQFDOOVWKLVP
`
HWKRGWROHW\R

XNQRZDQHY
KDSSHQHG,WVHQGV\RXD
Q$FWLRQ(YHQWREMHFWDV HQW
WKH
DUJXPHQWEXWZHGRQW
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

DFFHSWUHJLVWUDWLRQV IURPOLVWHQHUV 
JHWHYHQWVIURPWKHXVHUDQG
FDOOWKHOLVWHQHUVHYHQWKDQGOLQJ

$VDOLVWHQHUP\MRELVWR

LPSOHPHQWWKHLQWHUIDFH
UHJLVWHUZLWKWKHEXWWRQDQG
SURYLGHWKHHYHQWKDQGOLQJ

PHWKRG ZKHQWKHXVHUFOLFNVPH

6RXUFH6(1'6
WKHHYHQW
/LVWHQHU*(76WKH
HYHQW

+H\ZKDWDERXWPH",PDSOD\HUWRR\RX
NQRZ$VDQHYHQWREMHFW,PWKHDUJXPHQW
WRWKHHYHQWFDOOEDFNPHWKRG IURPWKH
LQWHUIDFH DQGP\MRELVWRFDUU\GDWDDERXW

W

WKHHYHQWEDFNWRWKHOLVWHQHU

(Y
HQWREMHF

(YHQWREMHFW
+2/'6'$7$
DERXWWKHHYHQW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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:
A:

Q:

7HYCANT)BEASOURCEOFEVENTS

9OU#!.7EJUSTSAIDTHATMOSTOFTHETIME
YOULLBETHERECEIVERANDNOTTHEORIGINATOROFTHE
EVENTATLEASTINTHEEARLYDAYSOFYOURBRILLIANT*AVA
CAREER -OSTOFTHEEVENTSYOUMIGHTCAREABOUT
ARE@FIREDBYCLASSESINTHE*AVA!0) ANDALLYOUHAVE
TODOISBEALISTENERFORTHEM9OUMIGHT HOWEVER
DESIGNAPROGRAMWHEREYOUNEEDACUSTOMEVENT SAY
3TOCK-ARKET%VENTTHROWNWHENYOURSTOCKMARKET
WATCHERAPPFINDSSOMETHINGITDEEMSIMPORTANT)N
THATCASE YOUDMAKETHE3TOCK7ATCHEROBJECTBEAN
EVENTSOURCE ANDYOUDDOTHESAMETHINGSABUTTON
ORANYOTHERSOURCE DOESMAKEALISTENERINTERFACE
FORYOURCUSTOMEVENT PROVIDEAREGISTRATIONMETHOD
ADD3TOCK,ISTENER ANDWHENSOMEBODYCALLSIT ADD
THECALLERALISTENER TOTHELISTOFLISTENERS4HEN WHEN
ASTOCKEVENTHAPPENS INSTANTIATEA3TOCK%VENTOBJECT
ANOTHERCLASSYOULLWRITE ANDSENDITTOTHELISTENERS
INYOURLISTBYCALLINGTHEIRSTOCK#HANGED3TOCK%VENT
EV METHOD!NDDONTFORGETTHATFOREVERYEVENTTYPE
THEREMUSTBEAMATCHINGLISTENERINTERFACESOYOULL
CREATEA3TOCK,ISTENERINTERFACEWITHASTOCK#HANGED
METHOD 

)DONTSEETHEIMPORTANCEOFTHEEVENTOBJECT
THATSPASSEDTOTHEEVENTCALL BACKMETHODS)F
SOMEBODYCALLSMYMOUSE0RESSEDMETHOD WHAT
OTHERINFOWOULD)NEED

A:

!LOTOFTHETIME FORMOSTDESIGNS YOUDONT


NEEDTHEEVENTOBJECT)TSNOTHINGMORETHANALITTLE
DATACARRIER TOSENDALONGMOREINFOABOUTTHEEVENT
"UTSOMETIMESYOUMIGHTNEEDTOQUERYTHEEVENTFOR
SPECIFICDETAILSABOUTTHEEVENT&OREXAMPLE IFYOUR
MOUSE0RESSED METHODISCALLED YOUKNOWTHEMOUSE
WASPRESSED"UTWHATIFYOUWANTTOKNOWEXACTLY
WHERETHEMOUSEWASPRESSED)NOTHERWORDS WHATIF
YOUWANTTOKNOWTHE8AND9SCREENCOORDINATESFOR
WHERETHEMOUSEWASPRESSED

Licensed by
Eduard Simons
104038

/RSOMETIMESYOUMIGHTWANTTOREGISTERTHESAME
LISTENERWITHMULTIPLEOBJECTS!NONSCREENCALCULATOR
FOREXAMPLE HASNUMERICKEYSANDSINCETHEYALLDO
THESAMETHING YOUMIGHTNOTWANTTOMAKEASEPARATE
LISTENERFOREVERYSINGLEKEY)NSTEAD YOUMIGHT
REGISTERASINGLELISTENERWITHEACHOFTHEKEYS AND
WHENYOUGETANEVENTBECAUSEYOUREVENTCALL BACK
METHODISCALLED YOUCANCALLAMETHODONTHEEVENT
OBJECTTOFINDOUTWHOTHEREALEVENTSOURCEWAS)N
OTHERWORDS WHICHKEYSENTTHISEVENT

6KDUSHQ \RXU SHQFLO


%ACHOFTHESEWIDGETSUSERINTERFACEOBJECTS ARETHE
SOURCEOFONEORMOREEVENTS-ATCHTHEWIDGETSWITH
THEEVENTSTHEYMIGHTCAUSE3OMEWIDGETSMIGHTBEA
SOURCEOFMORETHANONEEVENT ANDSOMEEVENTSCANBE
GENERATEDBYMORETHANONEWIDGET

:LGJHWV

(YHQWPHWKRGV

+RZGR\RX.12:LI
DQREMHFWLVDQHYHQW
VRXUFH"
/RRNLQWKH$3,

2./RRNIRUZKDW"

FKHFNER[

ZLQGRZ&ORVLQJ

WH[WHOG

DFWLRQ3HUIRUPHG

VFUROOLQJOLVW

LWHP6WDWH&KDQJHG

$PHWKRGWKDWVWDUWVZLWK
DGGHQGVZLWK/LVWHQHU
DQGWDNHVDOLVWHQHULQWHU
IDFHDUJXPHQW,I\RXVHH

EXWWRQ

PRXVH3UHVVHG

DGG.H\/LVWHQHU .H\/LVWHQHUN

GLDORJER[

NH\7\SHG

UDGLREXWWRQ

PRXVH([LWHG

PHQXLWHP

IRFXV*DLQHG

\RXNQRZWKDWDFODVV
ZLWKWKLVPHWKRGLVD
VRXUFHRI.H\(YHQWV
7KHUHVDQDPLQJSDWWHUQ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
PLVWDNHQO\
ERXJKWE\FRIIHH
KRXVHEDULVWDV

'UDZ'JUDSKLFVRQDZLGJHW
8VHDJUDSKLFVREMHFWWRSDLQWVKDSHV
JUDSKLFVOO2YDO  
<RXFDQSDLQWDORWPRUHWKDQER[HVDQGFLUFOHV
WKH-DYD'$3,LVIXOORIIXQVRSKLVWLFDWHG
JUDSKLFVPHWKRGV

DUW
VLPXODJWDPHV
LRQVHW
F

FKDUWVVV
EXVLQH LFV
JUDSK
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


ERWKRI

G
H
H
Q

\RX

LGJHW
I-3DQHODDPZ
R
VV
OD
XVWOLNH
F
M
E
H
X
V
0DNHD XFDQDGGWRDIU QHLV\RXU
WKDW\R HOVH([FHSWWKLVR
DQ\WKLQJ RPL]HGZLGJHW
FODVV0\'UDZ3DQHOH[WHQGV-3DQHO^
RZQFXVW
KRG
W*UDSKLFVPHW 
DQ
UW

SR
P
,
LJ
%
7KLVLVWKH 5FDOOWKLV\RXUVHOI7KH
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
<RXZLOO1(9(DQGVD\V+HUHVDQLFH
V\VWHPFDOOVLW VXUIDFHRIW\SH*UDSKLFV
IUHVKGUDZLQJ DLQWRQQRZ
JVHW&RORU &RORURUDQJH 
WKDW\RXPD\S
,PDJLQHWKDWJ V
DSDLQWLQJPDFKLQH<
JOO5HFW  
WHOOLQJLWZKDWL
RXUH
FR
OR
ZKDWVKDSHWRSDLQ UWRSDLQWZLWKDQGWKHQ
`
W
Z
LW
KFRRU
ZKHUHLWJRHVDQG
KRZELJLWLV GLQDWHVIRU
`
LPSRUWMDYDDZW 

LPSRUWMDYD[VZLQJ 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

UH

H
HJRHVK

'LVSOD\D-3(*
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^

QDP
\RXUILOH

,PDJHLPDJH QHZ,PDJH,FRQ FDW]LOODMSJ JHW,PDJH 


JGUDZ,PDJH LPDJHWKLV 

`

7KH[\FRRUG
OHIWFRUQHUVKLQRXDWHVIRUZKHUHWKHSLFWXUHVW
WKHOHIWHGJHRIOGJR7KLVVD\VSL[HOVIUR RS
WRSHGJHRIWKH WKHSDQHODQGSL[HOVIURPP
UHODWLYHWRWKH SDQHO7KHVHQXPEHUVDUHDOZWKH
VXEFODVV QRWWKHZLGJHW LQWKLVFDVH\RXU-3DQ D\V
HQWLUHIUDPH
HO

3DLQWDUDQGRPO\FRORUHGFLUFOH
RQDEODFNEDFNJURXQG

ODFN
HOZLWKE
Q
D
S

H
LU
HQW
ILOOWKHHIDXOWFRORU
G

WKH

JOO5HFW WKLVJHW:LGWK WKLVJHW+HLJKW 
7KHILUVWWZRDUJVGHILQHWKH [\ 
XSSHUOHIW
FRUQHUUHODWLYHWRWKHSDQHOIRUZKHU
VWDUWVVRPHDQVVWDUWSL[HO HGUDZLQJ

VIURPWKH
OHIW
HGJHDQGSL[HOVIURPWKHWRSHG
LQWUHG  LQW  0DWKUDQGRP   
RWKHUWZRDUJVVD\0DNHWKHZLGW JH7KH
LQWJUHHQ  LQW  0DWKUDQGRP   
KRIWKLV
UHFWDQJOHDVZLGHDVWKHSDQHO WKLVZLG
LQWEOXH  LQW  0DWKUDQGRP   
PDNHWKHKHLJKWDVWDOODVWKHSDQHO WK DQG
WKLVKHLJKW
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^

&RORUUDQGRP&RORU QHZ&RORU UHGJUHHQEOXH 


JVHW&RORU UDQGRP&RORU 
<RXFDQP
JOO2YDO  
WRUHSUHVHQDWNHDFRORUE\SDVVLQJ
`
L
W

VWDUW
WKHWRSPSD L[HOVIURPWKHOHIW
SL[HOVWNHLWSL[HOVZLGIURP
DOO
HDQG

QLQWV
KH5*%YDOX
HV

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
COULDBEASUBCLASSOF'RAPHICSBECAUSEOFPOLYMORPHISM 
!NDINFACT ITIS

4HEOBJECTREFERENCEDBYTHE@GPARAMETERISACTUALLYAN
INSTANCEOFTHE'RAPHICS$CLASS
7HYDOYOUCARE"ECAUSETHEREARETHINGSYOUCANDOWITH
A'RAPHICS$REFERENCETHATYOUCANTDOWITHA'RAPHICS
REFERENCE!'RAPHICS$OBJECTCANDOMORETHANA'RAPHICS
OBJECT ANDITREALLYISA'RAPHICS$OBJECTLURKINGBEHINDTHE
'RAPHICSREFERENCE
2EMEMBERYOURPOLYMORPHISM4HECOMPILERDECIDESWHICH
METHODSYOUCANCALLBASEDONTHEREFERENCETYPE NOTTHE
OBJECTTYPE)FYOUHAVEA$OGOBJECTREFERENCEDBYAN!NIMAL
REFERENCEVARIABLE
$QLPDOD QHZ'RJ 

GUDZ,PDJH
GUDZ/LQH
GUDZ3RO\JRQ
GUDZ5HFW
GUDZ2YDO
OO5HFW
OO5RXQG5HFW
VHW&RORU

7RFDVWWKH*UDSKLFV'REMHFWWR
D*UDSKLFV'UHIHUHQFH
*UDSKLFV'JG  *UDSKLFV' J

9OUCAN./4SAY
DEDUN 

%VENTHOUGHYOUKNOWITSREALLYA$OGBACKTHERE4HE
COMPILERLOOKSAT@A SEESTHATITSOFTYPE!NIMAL ANDlNDS
THATTHERESNOREMOTECONTROLBUTTONFORBARK INTHE!NIMAL
CLASS"UTYOUCANSTILLGETTHEOBJECTBACKTOTHE$OGITREALLYIS
BYSAYING

0HWKRGV\RXFDQFDOORQ
D*UDSKLFV'UHIHUHQFH
OO'5HFW
GUDZ'5HFW
URWDWH

'RJG  'RJ D


GEDUN 

VFDOH

3OTHEBOTTOMLINEWITHTHE'RAPHICSOBJECTISTHIS

VKHDU

)FYOUNEEDTOUSEAMETHODFROMTHE'RAPHICS$CLASS YOU
CANTUSETHETHEPAINT#OMPONENTPARAMETER@G STRAIGHT
FROMTHEMETHOD"UTYOUCANCASTITWITHANEW'RAPHICS$
VARIABLE

WUDQVIRUP

*UDSKLFV'JG  *UDSKLFV' J

VHW5HQGHULQJ+LQWV

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]

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
*UDSKLFV'JG  *UDSKLFV' J

REMHFWV
UDSKLFVU'H*
*
KLF
D
\
OO
D
H
LWVU DGLQJDVDPH UDS
PDVTXHU
REMHFW

FDVWLWVRZHFDQFDOOVRPHWKLQJWKDW
*UDSKLFV'KDVEXW*UDSKLFVGRHVQW

*UDGLHQW3DLQWJUDGLHQW QHZ*UDGLHQW3DLQW &RORUEOXH&RORURUDQJH 

VWDUWLQ
HQGLQJ
JFRORU HQGLQJS
FRORU
JSRLQW
RLQW

VWDUWLQ

JGVHW3DLQW JUDGLHQW 

WKLVVHWVWKHYLUWXDOSDLQ
WEUXVKWRD
JUDGLHQWLQVWHDGRI
DVROLGFRORU 

JGOO2YDO  
`

LOO
HDOO\PHDQVRQI\RXU
U
RG
K
HW
P

O
WKHILOO2YDZLWKZKDWHYHULVORDGHG
WKHRYDO  LHWKHJUDGLHQW
SDLQWEUXVK

SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
*UDSKLFV'JG  *UDSKLFV' J

LQWUHG  LQW  0DWKUDQGRP   
LQWJUHHQ  LQW  0DWKUDQGRP   
LQWEOXH  LQW  0DWKUDQGRP   
&RORUVWDUW&RORU QHZ&RORU UHGJUHHQEOXH 

ERYH
HWKHRQRHPDFRORUVIRU
LN
O
VW
MX
V
L
WKLV WPDNHVUDQG VRIWKH
H[FHSWLUWDQGVWRSFRORU
WKHVWD W7U\LW
JUDGLHQ

UHG  LQW  0DWKUDQGRP   


JUHHQ  LQW  0DWKUDQGRP   
EOXH  LQW  0DWKUDQGRP   
&RORUHQG&RORU QHZ&RORU UHGJUHHQEOXH 
*UDGLHQW3DLQWJUDGLHQW QHZ*UDGLHQW3DLQW VWDUW&RORUHQG&RORU 
JGVHW3DLQW JUDGLHQW 
JGOO2YDO  
`
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
?J9H@A;K

=N=FLK

 7RPDNHD*8,VWDUWZLWKDZLQGRZXVXDOO\D-)UDPH
-)UDPHIUDPH QHZ-)UDPH 

 <RXFDQDGGZLGJHWV EXWWRQVWH[WILHOGVHWF WRWKH


-)UDPHXVLQJ

 <RXFDQGUDZ'JUDSKLFVGLUHFWO\RQWRDZLGJHW
 <RXFDQGUDZDJLIRUMSHJGLUHFWO\RQWRDZLGJHW
 7RGUDZ\RXURZQJUDSKLFV LQFOXGLQJDJLIRUMSHJ 
PDNHDVXEFODVVRI-3DQHODQGRYHUULGHWKHSDLQW&RP
SRQHQW PHWKRG

IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 

 8QOLNHPRVWRWKHUFRPSRQHQWVWKH-)UDPHGRHVQWOHW
\RXDGGWRLWGLUHFWO\VR\RXPXVWDGGWRWKH-)UDPHV
FRQWHQWSDQH

 7KHSDLQW&RPSRQHQW PHWKRGLVFDOOHGE\WKH*8,
V\VWHP<281(9(5&$//,7<2856(/)7KHDUJX
PHQWWRSDLQW&RPSRQHQW LVD*UDSKLFVREMHFWWKDW
JLYHV\RXDVXUIDFHWRGUDZRQZKLFKZLOOHQGXSRQ
WKHVFUHHQ<RXFDQQRWFRQVWUXFWWKDWREMHFW\RXUVHOI

 7RPDNHWKHZLQGRZ -)UDPH GLVSOD\\RXPXVWJLYHLW


DVL]HDQGWHOOLWEHYLVLEOH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

 7\SLFDOPHWKRGVWRFDOORQD*UDSKLFVREMHFW WKHSDLQW
&RPSRQHQWSDUDPHQWHU DUH

 7RNQRZZKHQWKHXVHUFOLFNVDEXWWRQ RUWDNHVVRPH
RWKHUDFWLRQRQWKHXVHULQWHUIDFH \RXQHHGWROLVWHQIRU
D*8,HYHQW

 7ROLVWHQIRUDQHYHQW\RXPXVWUHJLVWHU\RXULQWHUHVW

JUDSKLFVVHW&RORU &RORUEOXH 
JOO5HFW  

 7RGUDZDMSJFRQVWUXFWDQ,PDJHXVLQJ
,PDJHLPDJH QHZ,PDJH,FRQ FDW]LOOD
MSJ JHW,PDJH 

ZLWKDQHYHQWVRXUFH$QHYHQWVRXUFHLVWKHWKLQJ EXW
WRQFKHFNER[HWF WKDWILUHVDQHYHQWEDVHGRQXVHU
LQWHUDFWLRQ

 7KHOLVWHQHULQWHUIDFHJLYHVWKHHYHQWVRXUFHDZD\

DQGGUDZWKHLPDJLQHXVLQJ
JGUDZ,PDJH LPDJHWKLV 

 7KHREMHFWUHIHUHQFHGE\WKH*UDSKLFVSDUDPHWHU

WRFDOO\RXEDFNEHFDXVHWKHLQWHUIDFHGHILQHVWKH
PHWKRG V WKHHYHQWVRXUFHZLOOFDOOZKHQDQHYHQW
KDSSHQV

WRSDLQW&RPSRQHQW LVDFWXDOO\DQLQVWDQFHRIWKH
*UDSKLFV'FODVV7KH*UDSKLFV'FODVVKDVDYDULHW\
RIPHWKRGVLQFOXGLQJ
OO'5HFW GUDZ'5HFW URWDWH VFDOH VKHDU 
WUDQVIRUP

 7RUHJLVWHUIRUHYHQWVZLWKDVRXUFHFDOOWKHVRXUFHV
UHJLVWUDWLRQPHWKRG5HJLVWUDWLRQPHWKRGVDOZD\VWDNH
WKHIRUPRIDGG(YHQW7\SH!/LVWHQHU7RUHJLVWHUIRUD
EXWWRQV$FWLRQ(YHQWVIRUH[DPSOHFDOO

 7RLQYRNHWKH*UDSKLFV'PHWKRGV\RXPXVWFDVWWKH

EXWWRQDGG$FWLRQ/LVWHQHU WKLV 

 ,PSOHPHQWWKHOLVWHQHULQWHUIDFHE\LPSOHPHQWLQJDOORI

SDUDPHWHUIURPD*UDSKLFVREMHFWWRD*UDSKLFV'
REMHFW
*UDSKLFV'JG  *UDSKLFV' J

WKHLQWHUIDFHVHYHQWKDQGOLQJPHWKRGV3XW\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
FDOOVWKHOLVWHQHUVHYHQWKDQGOHU

7KHHYHQWKDQGOHUFDOOVUHSDLQW RQWKH
IUDPH7KHV\VWHPFDOOVSDLQW&RPSRQHQW 
RQWKHGUDZLQJSDQHO

9RLOD$QHZFRORULVSDLQWHGEHFDXVH
SDLQW&RPSRQHQW UXQVDJDLQOOLQJWKH
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 

7KLVLVQW
W
RGRLW WUKHDOO\WKHZD\\RX

\
OO
D
VX
U
X
HRQHDUJ
G
Q
UDPHV
HWWHU D
DGGPHWHKVXR SSRVHG

7KLVLVWRKUH\E ZD\WRDGGWRDD\I
G 
\
VSHFLI
PDQGDW FRQWHQWSDQH$OZ ZVDQWWKH
GHIDXOW  ZKLFKUHJLRQ \RX
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5EXWWRQ 
:+(5( RJR
W
W
ZLGJH
JDGG
KHVLQJOHXDOGUQWXVH 
W
OO
D
F
X
R
ZHFDOOWKHWZRDUJXP
\
:KHQ WKHRQHZHVKR OO\ODQGLQ
HQWDGGPHWKRG

D
WK
G
DWWDNHVDUHJLRQ XVLQ
LF
R
W
K
D
W
P
H
P
DXWR
O
LO
Z
W
H
J
DQ
LG
G
WKHZLGJHWWRDGGWRJDFRQVWDQW 
QRUWK
WKHZ WHUUHJVLRQ
WKDWUHJLRQ
WKHFHQ

GHIDXOWUHJLRQ

ZHVW

FHQWHU

HDVW

6KDUSHQ \RXU SHQFLO


*LYHQWKHSLFWXUHVRQSDJHZULWHWKH
FRGHWKDWDGGVWKHEXWWRQDQGWKHSDQHOWR

VRXWK

WKHIUDPH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

7KHFXVW
LQVWDQFHRRPGUDZLQJSDQHO
LVLQWKH& I0\'UDZ3DQHO 
RIWKHIUD(17(5UHJLRQ
PH

7KHFLUFOHFKDQJHVFRORUHDFKWLPH\RX
FOLFNWKHEXWWRQ
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 

SXEOLFFODVV6LPSOH*XL&LPSOHPHQWV$FWLRQ/LVWHQHU^
-)UDPHIUDPH

LQWKH
%XWWRQLVUHJLRQRI
6287+ PH
WKHIUD

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6LPSOH*XL&JXL QHZ6LPSOH*XL& 
JXLJR 
`
SXEOLFYRLGJR ^
IUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 

LV 

-%XWWRQEXWWRQ QHZ-%XWWRQ &KDQJHFRORUV 


VWHQHU WK
$GGWKHEXOLWWRQ
EXWWRQDGG$FWLRQ/LVWHQHU WKLV 
WRWKH

0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 
$GGWKHWZRZL HWV

EXW
WRQDQGGUDZLQJGJ
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+EXWWRQ 
SDQHO WR
WK
HWZRUHJLRQVRIWKH
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5GUDZ3DQHO 
IUDPH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW 
`
NVWHOOWKHIUDPH
`
:KHQWKHXVHUFOLF 7KDWPHDQV

HOI
U\
WRUHSDLQW LWV
LVFDOOHGRQHYH
QW
QH
SR
RP
W&
SDLQ
PH
ZLGJHWLQWKHIUD

FODVV0\'UDZ3DQHOH[WHQGV-3DQHO^
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
&RGHWROOWKHRYDOZLWKDUDQGRPFRORU
6HHSDJHIRUWKHFRGH
`

7KHGUDZ
DQHOVSDLQW&R
PHWKRGLVLQFDJS
PSRQHQ
OOHGHYHU\W
FOLFNV
LPHWKHXVHUW  

`
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
Eduard Simons
104038
ZHVW

FHQWHU

HDVW

ODEHOZLOO
JRKHUH

VRXWK

J H
KDQJLQ
DO EHOFQZLOOEHKHU
EXWWR

GUDZLQJSDQHOJRHV
LQWKHFHQWHU

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<RXFDQW9OUCANTIMPLEMENTTHESAMEMETHODTWICEINA*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 
ODEHO%XWWRQDGG$FWLRQ/LVWHQHU WKLV 
PRUHJXLFRGHKHUH
`

5HJLVWHUWKHVDPHOLVWHQHU
ZLWKERWKEXWWRQV

SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
LI HYHQWJHW6RXUFH  FRORU%XWWRQ ^
REMHFW
IUDPHUHSDLQW 
4XHU\WKHHYHZQW
EXWWRQ
FK
KL
`HOVH^
WRILQGRXWHGLWDQGXVH
ODEHOVHW7H[W 7KDWKXUW 
DFWXDOO\ILUFLGHZKDWWRGR
`
WKDWWRGH
`
`

)ODZWKLVGRHVZRUNEXWLQPRVWFDVHVLWVQRWYHU\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
:RQWZRUN7KLVFODVVGRHVQWKDYHDUHIHUH
`

WKHIUDPHYDULDEOHRIWKH0\*XLFODVV

FODVV/DEHO%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
ODEHOVHW7H[W 7KDWKXUW 
`
3UREOHP7KLVFODVVKDVQRUHIHU
`

HQFHWRWKHYDULDEOHODEHO

)ODZWKHVHFODVVHVZRQWKDYHDFFHVVWRWKHYDULDEOHVWKH\QHHG
WRDFWRQIUDPHDQGODEHO9OUCOULDlXIT 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

:RXOGQWLWEHZRQGHUIXOLI\RX
FRXOGKDYHWZRGLIIHUHQWOLVWHQHUFODVVHV
EXWWKHOLVWHQHUFODVVHVFRXOGDFFHVVWKH
LQVWDQFHYDULDEOHVRIWKHPDLQ*8,FODVV
DOPRVWDVLIWKHOLVWHQHUFODVVHVEHORQJHG
WRWKHRWKHUFODVV7KHQ\RXGKDYHWKHEHVW
RIERWKZRUOGV<HDKWKDWZRXOGEHGUHDP\
%XWLWVMXVWDIDQWDV\

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
FODVV0\2XWHU&ODVV^

FODVV0\,QQHU&ODVV^
YRLGJR ^
`
`

\
VVLVIXWOOHUFODVV
OD
F

U
H
Q
,Q HGE\RX
HQFORV

`

!NINNERCLASSGETSASPECIALPASSTOUSETHEOUTERCLASSSSTUFF%VEN
THEPRIVATESTUFF!NDTHEINNERCLASSCANUSETHOSEPRIVATEVARIABLES
ANDMETHODSOFTHEOUTERCLASSASIFTHEVARIABLESANDMEMBERS
WEREDElNEDINTHEINNERCLASS4HATSWHATSSOHANDYABOUTINNER
CLASSESTHEYHAVEMOSTOFTHEBENElTSOFANORMALCLASS BUTWITH
SPECIALACCESSRIGHTS

An inner class can


use all the methods
and variables of the
outer class, even the
private ones.
The inner class gets
to use those variables
and methods just
as if the methods
and variables were
declared within the
inner class.

,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
ERQGZLWKDQ
RXWHUREMHFW

2EMEMBER WHENWETALKABOUTANINNERCLASSACCESSING
SOMETHINGINTHEOUTERCLASS WEREREALLYTALKINGABOUTAN
INSTANCEOFTHEINNERCLASSACCESSINGSOMETHINGINANINSTANCEOF
THEOUTERCLASS"UTWHICHINSTANCE
#ANANYARBITRARYINSTANCEOFTHEINNERCLASSACCESSTHEMETHODS
ANDVARIABLESOFANYINSTANCEOFTHEOUTERCLASS.O

!NINNEROBJECTMUSTBETIEDTOASPECIlCOUTEROBJECTON
THEHEAP

K



0\
2XWHUREMH


V
Q

O
V
/M\\Q Q\P
_
P
K
]
\W
Z
M
V
V
Q

aW]Z [
KTI[

0DNHDQLQVWDQFHRI
WKHLQQHUFODVVE\
XVLQJWKHLQVWDQFH
RIWKHRXWHUFODVV
FW

0\
,QQHUREMH

`ake

 7KHRXWHUDQGLQQHUREMHFWV

jh
dqEg
g
H

&
<j

WKH
IURP &KDU"
U
H
O
O
\
VH
EHVW
HGP
QHZ
0RY
R
K
7KH
:
RURI
DXWK

DUHQRZLQWLPDWHO\OLQNHG

LQW[

HDS
MHFWVRQWKHK
7KHVHWZRFLREDOERQG7KHLQQHU 6WULQJV
KDYHDVSH RXWHUVYDULDEOHV
FDQXVHWKHYHUVD 
LQQHU
DQGYLFH

RXWH

6]LY

FW

ZZVS

WPL
JV

0DNHDQLQVWDQFHRI
WKHRXWHUFODVV

7KHUHVDQH[FHSWLRQWRWKLVIRUDYHU\VSHFLDOFDVHDQLQQHUFODVVGHQHG
ZLWKLQDVWDWLFPHWKRG%XWZHUHQRWJRLQJWKHUHDQG\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
7KHRXWHUF

[

EOH
SULYDWHLQW[
LQVWDQFHYDULD
0DNHDQLQVW
0\,QQHULQQHU QHZ0\,QQHU 
LQQHUFODVV DQFHRIWKH
SXEOLFYRLGGR6WXII ^
LQQHUJR 
FDOODPHWKRGRQWKH
`

LQW

gml]j
0\2XWHU

LQQHUFODVV



FODVV0\,QQHU^
YRLGJR ^
[ 
`
`FORVHLQQHUFODVV

VHVWKH
7KHPHWKRGLQWKHLQQHUFODOHVVX
DVLI[
[
ULDE
YD
QFH
RXWHUFODVVLQVWD
EHORQJHGWRWKHLQQHUFODVV

LQW

gml]j

`FORVHRXWHUFODVV

VSHFLDO
ERQG

0\2XWHU

Side bar
9OUCANINSTANTIATEANINNERINSTANCEFROMCODERUNNINGOUTSIDETHEOUTERCLASS BUTYOU
HAVETOUSEASPECIALSYNTAX#HANCESAREYOULLGOTHROUGHYOURENTIRE*AVALIFEANDNEVER
NEEDTOMAKEANINNERCLASSFROMOUTSIDE BUTJUSTINCASEYOUREINTERESTED

aff]j
0\,QQHU

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
SXEOLFFODVV7ZR%XWWRQV^

RHVQW
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( 
-%XWWRQODEHO%XWWRQ QHZ-%XWWRQ &KDQJH/DEHO 
ODEHO%XWWRQDGG$FWLRQ/LVWHQHU QHZ/DEHO/LVWHQHU 
-%XWWRQFRORU%XWWRQ QHZ-%XWWRQ &KDQJH&LUFOH 
FRORU%XWWRQDGG$FWLRQ/LVWHQHU QHZ&RORU/LVWHQHU 

KH
QJ WKLV WWRLRWQ
VL
DV
S
I
R
G
HD
LQVW
HUUHJLVWUD
EXWWRQVOLVWVVHQDQHZLQVWDQFHRI
PHWKRGSD ULDWHOLVWHQHUFODVV
WKHDSSURS

ODEHO QHZ-/DEHO ,PDODEHO 


0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW6287+FRORU%XWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5GUDZ3DQHO 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67ODEHO%XWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW:(67ODEHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

FODVV/DEHO/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
ODEHOVHW7H[W 2XFK 
`
LQQHUFODVVNQ
`FORVHLQQHUFODVV
DERXWODEH RZV

7ZR%XWWRQV
REMHFW

RXWHU

LQQHU
/DEHO/LVWHQHU
REMHFW

WRKDYH
1RZZHJHWQ/
LVWHQHUV
LR
FW
$
2
7:
V
DV
FO
H
LQDVLQJO

LQQHU

&RORU/LVWHQHU
REMHFW

FODVV&RORU/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHYHQW ^
IUDPHUHSDLQW 
WKHLQQHUFODVVJH
`
WVWRXVHWKHIUD
LQVWDQFHYDULDEO
PH
`FORVHLQQHUFODVV
H
Z
H[SOLFLWUHIHUHQFH LWKRXWKDYLQJDQ

W
R
WK
HRXWHUFODVV
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.

LQQHUFODVVHV

,CXC'ZRQUGF
7KLVZHHNVLQWHUYLHZ

,QVWDQFHRI DQ,QQHU&ODVV
+HDG)LUVW?PI\UISM[QVVMZKTI[[M[QUXWZ\IV\'
,QQHUREMHFW?PMZMLW1[\IZ\'?MOQ^MaW]IKPIVKM\W
QUXTMUMV\\PM[IUMQV\MZNIKMUWZM\PIVWVKMQVIKTI[[
:MUMUJMZaW]KIV\QUXTMUMV\IUM\PWLUWZM\PIV
WVKMQVIVWZUIT2I^IKTI[[*]\][QVOQVVMZKTI[[M[MIKP
QVVMZKTI[[KIVQUXTMUMV\\PM[IUMQV\MZNIKM[WaW]KIV
PI^MITT\PM[MLQNNMZMV\QUXTMUMV\I\QWV[WN \PM^MZa[IUM
QV\MZNIKMUM\PWL[
+HDG)LUVW?Pa_W]TLaW]M^MZ_IV\\WQUXTMUMV\\PM
[IUMUM\PWL\_QKM'
,QQHUREMHFW4M\[ZM^Q[Q\/=1M^MV\PIVLTMZ[<PQVS
IJW]\Q\QN aW]_IV\\PZMMJ]\\WV[\WMIKPPI^MI
LQNNMZMV\M^MV\JMPI^QWZ\PMV][M\PZMMQVVMZKTI[[M[ITT
QUXTMUMV\QVO)K\QWV4Q[\MVMZ_PQKPUMIV[MIKPKTI[[
OM\[\WQUXTMUMV\Q\[W_VIK\QWV8MZNWZUMLUM\PWL
+HDG)LUVW;WIZMM^MV\PIVLTMZ[\PMWVTaZMI[WV\W][M
QVVMZKTI[[M['
,QQHUREMHFW7POW[PVW-^MV\PIVLTMZ[IZMR][\IV
WJ^QW][M`IUXTM)Va\QUMaW]VMMLI[MXIZI\MKTI[[J]\
[\QTT_IV\\PI\KTI[[\WJMPI^MI[QN Q\_MZMXIZ\WN IVW\PMZ
KTI[[IVQVVMZKTI[[Q[\PMJM[\IVL[WUM\QUM[WVTa_Ia
\WLWQ\
+HDG)LUVW1U[\QTTKWVN][MLPMZM1N aW]_IV\\PMQVVMZ
KTI[[\WJMPI^MTQSMQ\JMTWVO[\W\PMW]\MZKTI[[_PaPI^M
I[MXIZI\MKTI[[QV\PMZ[\XTIKM'?Pa_W]TLV\\PMQVVMZ
KTI[[KWLMR][\JMQV\PMW]\MZKTI[[QV\PMZ[\XTIKM'
,QQHUREMHFW1R][\OI^MaW]WVM[KMVIZQW_PMZMaW]
VMMLUWZM\PIVWVMQUXTMUMV\I\QWVWN IVQV\MZNIKM*]\
M^MV_PMVaW]ZMVW\][QVOQV\MZNIKM[aW]UQOP\VMML
\_WLQNNMZMV\KTI[[M[JMKI][M\PW[MKTI[[M[ZMXZM[MV\\_W
LQNNMZMV\\PQVO[1\[OWWL77
+HDG)LUVW?PWI0WTLWVPMZM1\PW]OP\IJQOXIZ\WN 
77LM[QOVQ[IJW]\ZM][MIVLUIQV\MVIVKMAW]SVW_\PM
QLMI\PI\QN aW]PI^M\_W[MXIZI\MKTI[[M[\PMaKIVMIKP
JMUWLQMLIVL][MLQVLMXMVLMV\TaI[WXXW[ML\W[\]NVO
Q\ITTQV\WWVMKTI[[aILIaILIaILI*]\_Q\PIVQVVMZKTI[[
aW]ZM[\QTTR][\_WZSQVO_Q\PWVMZMITKTI[[QV\PMMVLZQOP\'
<PMMVKTW[QVOKTI[[Q[\PMWVTaWVM\PI\[ZM][IJTMIVL

[MXIZI\MNZWUM^MZaJWLaMT[M1VVMZKTI[[M[IZMV\M`IK\Ta
ZM][IJTM1VNIK\1^MPMIZL\PMUKITTML:M][MTM[[
][MTM[[W^MZIVLW^MZIOIQV
,QQHUREMHFWAM[Q\[\Z]M\PI\\PMQVVMZKTI[[Q[VW\I[
ZM][IJTMQVNIK\[WUM\QUM[VW\ZM][IJTMI\ITTJMKI][MQ\[
QV\QUI\MTa\QML\W\PMQV[\IVKM^IZQIJTM[IVLUM\PWL[WN 
\PMW]\MZKTI[[*]\Q\
+HDG)LUVW_PQKPWVTaXZW^M[UaXWQV\ 1N \PMaZMVW\
ZM][IJTM_PaJW\PMZ_Q\PI[MXIZI\MKTI[['1UMIVW\PMZ
\PIV\PMQV\MZNIKMQ[[]M_PQKP[W]VL[TQSMI_WZSIZW]VL
\WUM
,QQHUREMHFW)[1_I[[IaQVOaW]VMML\W\PQVSIJW]\
1;)IVLXWTaUWZXPQ[U
+HDG)LUVW73)VL1U\PQVSQVOIJW]\\PMUJMKI][M
,QQHUREMHFW*MKI][M\PMW]\MZIVLQVVMZKTI[[M[
UQOP\VMML\WXI[[LQNNMZMV\1;)\M[\[ 4M\[[\IZ\_Q\P\PM
XWTaUWZXPQK/=1TQ[\MVMZM`IUXTM?PI\[\PMLMKTIZML
IZO]UMV\\aXMNWZ\PMJ]\\WV[TQ[\MVMZZMOQ[\ZI\QWV
UM\PWL'1VW\PMZ_WZL[QN aW]OW\W\PM)81IVLKPMKS
_PI\SQVLWN \PQVOKTI[[WZQV\MZNIKM\aXMLWaW]PI^M\W
XI[[\W\PMILL)K\QWV4Q[\MVMZUM\PWL'
+HDG)LUVWAW]PI^M\WXI[[ITQ[\MVMZ;WUM\PQVO\PI\
QUXTMUMV\[IXIZ\QK]TIZTQ[\MVMZQV\MZNIKMQV\PQ[KI[M
)K\QWV4Q[\MVMZAMIP_MSVW_ITT\PQ[?PI\[aW]ZXWQV\'
,QQHUREMHFW5aXWQV\Q[\PI\XWTaUWZXPQKITTaaW]PI^M
IUM\PWL\PI\\ISM[WVTaWVMXIZ\QK]TIZ\aXM;WUM\PQVO
\PI\XI[[M[\PM1;)\M[\NWZ)K\QWV4Q[\MVMZ*]\IVL
PMZM[\PMJQO\PQVO_PI\QN aW]ZKTI[[VMML[\WJMIV1;
)WN [WUM\PQVO\PI\[IKTI[[\aXMZI\PMZ\PIVIVQV\MZNIKM'
+HDG)LUVW?W]TLV\aW]PI^MaW]ZKTI[[R][\M`\MVL\PM
KTI[[aW]VMML\WJMIXIZ\WN '1[V\\PI\\PM_PWTMXWQV\
WN PW_[]JKTI[[QVO_WZS['1N *Q[I[]JKTI[[WN )\PMV
IVa_PMZMIV)Q[M`XMK\MLI*KIVJM][ML<PM_PWTM
XI[[I,WO_PMZMIV)VQUITQ[\PMLMKTIZML\aXM\PQVO
,QQHUREMHFWAM[ *QVOW ;WVW__PI\PIXXMV[QN aW]
VMML\WXI[[\PM1;)\M[\NWZ\_WLQNNMZMV\KTI[[M['+TI[[M[
\PI\IZMV\QV\PM[IUMQVPMZQ\IVKMPQMZIZKPa'

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\PQVS1UOM\
\QVOQ\AW]KIVIT_Ia[QUXTMUMV\UWZM\PIVWVMQV\MZNIKM
J]\aW]KIVM`\MVLWVTaWVMKTI[[AW]KIVWVTaJMWVMSQVL
WN 1;)_PMVQ\KWUM[\WKTI[[\aXM[
,QQHUREMHFW?MTTLWVM AM[aW]KIV\JMJW\PI,WO
IVLI*]\\WV*]\QN aW]ZMI,WO\PI\VMML[\W[WUM
\QUM[JMI*]\\WVQVWZLMZ\WXI[[aW]Z[MTN \WUM\PWL[
\PI\\ISMI*]\\WV\PM,WOKTI[[_PQKPM`\MVL[)VQUIT
[WQ\KIV\M`\MVL*]\\WVKIVPI^MIVQVVMZKTI[[\PI\IK\[
WV\PM,WO[JMPITN I[I*]\\WVJaM`\MVLQVO*]\\WV
IVL\P][_PMZM^MZI*]\\WVQ[ZMY]QZML\PM,WOKIV
XI[[PQ[QVVMZ*]\\WVQV[\MILWN PQU[MTN1VW\PMZ_WZL[
QV[\MILWN [IaQVO`\ISM*]\\WV\PQ[\PM,WOWJRMK\KITT[
`\ISM*]\\WVVM_5a1VVMZ*]\\WV
+HDG)LUVW+IV1OM\IKTMIZM`IUXTM'
,QQHUREMHFW:MUMUJMZ\PMLZI_QVOXIVMT_M][ML
_PMZM_MUILMW]ZW_V[]JKTI[[WN 28IVMT':QOP\VW_
\PI\KTI[[Q[I[MXIZI\MVWVQVVMZKTI[[)VL\PI\[VM
JMKI][M\PMKTI[[LWM[V\VMML[XMKQITIKKM[[\W\PMQV[\IVKM
^IZQIJTM[WN \PMUIQV/=1*]\_PI\QN Q\LQL'?PI\QN 
_MZMLWQVOIVIVQUI\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
XIVMTKTI[[OM\[\WJMI[]JKTI[[WN 28IVMT_PQTM\PMW]\MZ
KTI[[Q[[\QTTNZMM\WJMI[]JKTI[[WN [WUM\PQVOMT[M

+HDG)LUVW?PW[MTQNM'AW]Z['<PMW]\MZWJRMK\'*W\P'
,QQHUREMHFW5QVM1KIV\JM\QML\WIVaW\PMZW]\MZ
WJRMK\5aWVTa_IaW]\Q[OIZJIOMKWTTMK\QWV
+HDG)LUVW?PI\IJW]\\PMW]\MZWJRMK\'+IVQ\JM
I[[WKQI\ML_Q\PIVaW\PMZQVVMZWJRMK\['
,QQHUREMHFW;WVW__MPI^MQ\<PQ[Q[_PI\aW]ZMITTa
_IV\MLAM[aM[5a[WKITTMLUI\MKIVPI^MI[UIVa
QVVMZWJRMK\[I[Q\_IV\[
+HDG)LUVW1[\PI\TQSM[MZQITUWVWOIUa'7ZKIVQ\PI^M
\PMUITTI\\PM[IUM\QUM'
,QQHUREMHFW)TTI\\PM[IUM\QUM<PMZM;I\Q[ML'
+HDG)LUVW?MTTQ\LWM[UISM[MV[M)VLTM\[VW\
NWZOM\Q\_I[aW]M`\WTTQVO\PM^QZ\]M[WN U]T\QXTM
QUXTMUMV\I\QWV[WN \PM[IUMQV\MZNIKM;WQ\UISM[[MV[M
\PI\QN \PMW]\MZKTI[[PI[\PZMMJ]\\WV[Q\_W]TLVMML
\PZMMLQNNMZMV\QVVMZKTI[[M[IVL\P][\PZMMLQNNMZMV\QVVMZ
KTI[[WJRMK\[\WPIVLTM\PMM^MV\[<PIVS[NWZM^MZa\PQVO
0MZM[I\Q[[]M

+HDG)LUVWAM[1[MM )VL\PMLZI_QVOXIVMTQ[V\ZM][
IJTMMVW]OP\WJMI[MXIZI\MKTI[[IVa_Ia[QVKM_PI\Q\[
IK\]ITTaXIQV\QVOQ[[XMKQK\W\PQ[WVM/=1IXXTQKI\QWV

+HWKLQNVKHV
JRWLWPDGHKDYLQJWZR
LQQHUFODVVREMHFWV%XWZH
KDYHDFFHVVWRDOOKLVSULYDWH
GDWDVRMXVWLPDJLQHWKHGDPDJH
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\_MZMJWVLML\W
+HDG)LUVW)TZQOP\1TTOW_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:
Eduard Simons
A:
104038

WKHUH DUH QR

'XPE 4XHVWLRQV
7HYAREWELEARNINGABOUT
ANIMATIONHERE)DOUBTIF)M
GOINGTOBEMAKINGGAMES

+RZVLPSOHDQLPDWLRQZRUNV


3DLQWDQREMHFWDWDSDUWLFXODU[DQG\FRRUGLQDWH
JOO2YDO  

SL[HOVIURPWKHOHIW
SL[HOVIURPWKHWRS


5HSDLQWWKHREMHFWDWDGLIIHUHQW[DQG\FRRUGLQDWH
JOO2YDO  

SL[HOVIURPWKHOHIW
SL[HOVIURPWKHWRS
WKHREMHFWPRYHGDOLWWOH
GRZQDQGWRWKHULJKW 



5HSHDWWKHSUHYLRXVVWHSZLWKFKDQJLQJ[DQG\YDOXHV
IRUDVORQJDVWKHDQLPDWLRQLVVXSSRVHGWRFRQWLQXH

9OUMIGHTNOTBEMAKING
GAMES BUTYOUMIGHTBE
CREATINGSIMULATIONS WHERE
THINGSCHANGEOVERTIMETOSHOW
THERESULTSOFAPROCESS/RYOU
MIGHTBEBUILDINGAVISUALIZATION
TOOLTHAT FOREXAMPLE UPDATES
AGRAPHICTOSHOWHOWMUCH
MEMORYAPROGRAMISUSING
ORTOSHOWYOUHOWMUCH
TRAFFICISCOMINGTHROUGH
YOURLOAD BALANCINGSERVER
!NYTHINGTHATNEEDSTOTAKEA
SETOFCONTINUOUSLY CHANGING
NUMBERSANDTRANSLATETHEMINTO
SOMETHINGUSEFULFORGETTING
INFORMATIONOUTOFTHENUMBERS

$OESNTTHATALLSOUNDBUSINESS
LIKE4HATSJUSTTHEhOFFICIAL
JUSTIFICATIONv OFCOURSE4HEREAL
REASONWERECOVERINGITHEREIS
JUSTBECAUSEITSASIMPLEWAY
TODEMONSTRATEANOTHERUSE
OFINNERCLASSES!NDBECAUSE
WEJUSTLIKEANIMATION ANDOUR
NEXT(EAD&IRSTBOOKISABOUT
*%%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 
JOO2YDO [\ 
`
`

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
HYDULDEOHVLQW
QF
D
W
QV
L
R

Z
\
W
PDNH
IRUWKH[DQG

VV
D
FO
,
8
*
LQ
PD
IWKHFLUFOH
FRRUGLQDWHVR

SXEOLFFODVV6LPSOH$QLPDWLRQ^
LQW[ 
LQW\ 

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6LPSOH$QLPDWLRQJXL QHZ6LPSOH$QLPDWLRQ 
JXLJR 
`
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ -)UDPH(;,7B21B&/26( 
0\'UDZ3DQHOGUDZ3DQHO QHZ0\'UDZ3DQHO 
IUDPHJHW&RQWHQW3DQH DGG GUDZ3DQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

HWKH
7KLVLVZKHUIRU LQWL
DFWLRQLV [

LL ^

1RWKLQJQHZKHU
DQGSXWWKHPLQWH0DNHWKHZLGJHWV
KHIUDPH

UHSHDWWKLVWLPHV

LQFUHPHQWWKH[DQG\
FRRUGLQDWHV
ZH
SDLQWLWVHOI VR
UH
R
W
HO
DQ
S
DW
KH
RF LRQ
GUDZ3DQHOUHSDLQW 
WHOOW
FOHLQWKHQHZO
LU
F
KH
W
H
VH

Q
FD
\

WU\^
7KUHDGVOHHS  
`FDWFK ([FHSWLRQH[ ^`
`

`FORVHJR PHWKRG

6ORZLWGRZQDOLWWOH RWKHUZ
LVHLWZLOOPRYHVR
TXLFNO\\RXZRQW6((LW
PR
YH
ZHUHQWVXSSRVHGWRDOUHDG\N 'RQWZRUU\\RX
QRZWKLV:HOOJHWWR
WKUHDGVLQFKDSWHU

DQ
LWVFODVV0\'UDZ3DQHOH[WHQGV-3DQHO^

Z
R
1 UFO
DVV
LQQH SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORUJUHHQ 
JOO2YDO [\ 
`
`FORVHLQQHUFODVV
`FORVHRXWHUFODVV

8VHWKHFRQWLQX
FRRUGLQDWHVRIWDOKHO\XSGDWHG[DQG\
RXWHUFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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,WGLGQWPRYHLWVPHDUHG
:KDWGLGZHGRZURQJ"
7KHUHVRQHOLWWOHDZLQWKHSDLQW&RPSRQHQW 
PHWKRG

:HIRUJRWWRHUDVHZKDWZDV
DOUHDG\WKHUH6RZHJRWWUDLOV

1RWH[DFWO\WKH
ZHZHUHJRLQJIROURRN

7R[LWDOOZHKDYHWRGRLVOOLQWKHHQWLUHSDQHOZLWK
WKHEDFNJURXQGFRORUEHIRUHSDLQWLQJWKHFLUFOHHDFK
WLPH7KHFRGHEHORZDGGVWZROLQHVDWWKHVWDUWRIWKH
PHWKRGRQHWRVHWWKHFRORUWRZKLWH WKHEDFNJURXQG
FRORURIWKHGUDZLQJSDQHO DQGWKHRWKHUWROOWKH
HQWLUHSDQHOUHFWDQJOHZLWKWKDWFRORU,Q(QJOLVKWKH
FRGHEHORZVD\V)LOODUHFWDQJOHVWDUWLQJDW[DQG\RI
 SL[HOVIURPWKHOHIWDQGSL[HOVIURPWKHWRS DQG
PDNHLWDVZLGHDQGDVKLJKDVWKHSDQHOLVFXUUHQWO\
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
JVHW&RORU &RORUZKLWH 
JOO5HFW WKLVJHW:LGWK WKLVJHW+HLJKW 
JVHW&RORU &RORUJUHHQ 
JOO2YDO [\ 
`

JHW:LGWK DQG
PHWKRGVLQKHULWHJGHW+HLJKW DUH
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

Lets make a music video. Well use Java-generated random


graphics that keep time with the music beats.
Along the way well register (and listen for) a new kind of
non-GUI event, triggered by the music itself.
5HPHPEHUWKLVSDUWLVDOORSWLRQDO%XWZHWKLQNLWVJRRGIRU\RX
$QG\RXOOOLNHLW$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
THEPROGRAMLISTENSFORTHEBEATOFTHEMUSIC
ANDDRAWSARANDOMGRAPHICRECTANGLEWITHEACH
BEAT
4HATBRINGSUPSOMENEWISSUESFORUS3OFAR
WEVELISTENEDFORONLY'5)EVENTS BUTNOW
WENEEDTOLISTENFORAPARTICULARKINDOF-)$)
EVENT4URNSOUT LISTENINGFORANON '5)EVENTIS
JUSTLIKELISTENINGFOR'5)EVENTSYOUIMPLEMENT
ALISTENERINTERFACE REGISTERTHELISTENERWITHAN
EVENTSOURCE THENSITBACKANDWAITFORTHEEVENT
SOURCETOCALLYOUREVENT HANDLERMETHODTHE
METHODDElNEDINTHELISTENERINTERFACE 
4HESIMPLESTWAYTOLISTENFORTHEBEATOFTHE
MUSICWOULDBETOREGISTERANDLISTENFORTHE
ACTUAL-)$)EVENTS SOTHATWHENEVERTHE
SEQUENCERGETSTHEEVENT OURCODEWILLGETIT
TOOANDCANDRAWTHEGRAPHIC"UTTHERESA
PROBLEM!BUG ACTUALLY THATWONTLETUSLISTEN
FORTHE-)$)EVENTSWEREMAKINGTHEONESFOR
./4%/. 
3OWEHAVETODOALITTLEWORK AROUND4HERE
ISANOTHERTYPEOF-)$)EVENTWECANLISTEN
FOR CALLEDA#ONTROLLER%VENT/URSOLUTION
ISTOREGISTERFOR#ONTROLLER%VENTS ANDTHEN
MAKESURETHATFOREVERY./4%/.EVENT
THERESAMATCHING#ONTROLLER%VENTlREDAT
THESAME@BEAT(OWDOWEMAKESURETHE
#ONTROLLER%VENTISlREDATTHESAMETIME7E
ADDITTOTHETRACKJUSTLIKETHEOTHEREVENTS)N
OTHERWORDS OURMUSICSEQUENCEGOESLIKETHIS

:KDWWKHPXVLFDUWSURJUDP
QHHGVWRGR
 0DNHDVHULHVRI0,',PHVVDJHV

HYHQWVWRSOD\UDQGRPQRWHVRQDSLDQR
RUZKDWHYHULQVWUXPHQW\RXFKRRVH
 5HJLVWHUDOLVWHQHUIRUWKHHYHQWV
 6WDUWWKHVHTXHQFHUSOD\LQJ
 (DFKWLPHWKHOLVWHQHUVHYHQW

KDQGOHUPHWKRGLVFDOOHGGUDZD
UDQGRPUHFWDQJOHRQWKHGUDZLQJ
SDQHODQGFDOOUHSDLQW

:HOOEXLOGLWLQWKUHHLWHUDWLRQV
 9HUVLRQ2QH&RGHWKDWVLPSOLHVPDN

LQJDQGDGGLQJ0,',HYHQWVVLQFHZHOO
EHPDNLQJDORWRIWKHP
 9HUVLRQ7ZR5HJLVWHUDQGOLVWHQIRU

WKHHYHQWVEXWZLWKRXWJUDSKLFV
3ULQWVDPHVVDJHDWWKHFRPPDQGOLQH
ZLWKHDFKEHDW

"%!4 ./4%/. #/.42/,,%2%6%.4


"%!4 ./4%/&&
"%!4 ./4%/. #/.42/,,%2%6%.4
"%!4 ./4%/&&

 9HUVLRQ7KUHH7KHUHDOGHDO$GGV

ANDSOON

JUDSKLFVWRYHUVLRQWZR

"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\[
2IGHTNOW MAKINGANDADDINGMESSAGESAND
EVENTSTOATRACKISTEDIOUS&OREACHMESSAGE
WEHAVETOMAKETHEMESSAGEINSTANCEINTHIS
CASE 3HORT-ESSAGE CALLSET-ESSAGE MAKEA
-IDI%VENTFORTHEMESSAGE ANDADDTHEEVENT
TOTHETRACK)NLASTCHAPTERSCODE WEWENT
THROUGHEACHSTEPFOREVERYMESSAGE4HAT
MEANSEIGHTLINESOFCODEJUSTTOMAKEANOTE
PLAYANDTHENSTOPPLAYING&OURLINESTOADDA
./4%/.EVENT ANDFOURLINESTOADDA./4%
/&&EVENT
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH QRWH 
0LGL(YHQWQRWH2Q QHZ0LGL(YHQW D 
WUDFNDGG QRWH2Q 

7KLQJVWKDWKDYHWRKDSSHQIRU
HDFKHYHQW
 0DNHDPHVVDJHLQVWDQFH
6KRUW0HVVDJHUVW QHZ6KRUW0HVVDJH 

 &DOOVHW0HVVDJH ZLWKWKHLQVWUXFWLRQV
UVWVHW0HVVDJH LQVWUXPHQW

 0DNHD0LGL(YHQWLQVWDQFHIRUWKHPHVVDJH

6KRUW0HVVDJHE QHZ6KRUW0HVVDJH 
EVHW0HVVDJH QRWH 
0LGL(YHQWQRWH2II QHZ0LGL(YHQW E 
WUDFNDGG QRWH2II 

0LGL(YHQWQRWH2Q QHZ0LGL(YHQW UVW 

 $GGWKHHYHQWWRWKHWUDFN
WUDFNDGG QRWH2Q 

/HWVEXLOGDVWDWLFXWLOLW\PHWKRGWKDW
PDNHVDPHVVDJHDQGUHWXUQVD0LGL(YHQW


DUJXPHQWV
WKHIRXHUPHVVDJH
IRUWK

7KHHYHQWWLFNIRU
:+(1WKLVPHVVDJH
VKRXOGKDSSHQ

SXEOLFVWDWLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^

ZKRR$PHWKRGZLWKILYHSDUDPHWHUV

6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 


PDNHWK H
VVDJHD
WKHPHWKHRP
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 

GRQWIRU

JHWWKHLP
SR

UW
SXEOLFFODVV0LQL0XVLF3OD\HU^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WU\^

FHU
DVHTXHQ

RSHQ
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
PDNH DQG
VHTXHQFHURSHQ 


6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 
PDNHDVHTXHQFH
7UDFNWUDFN VHTFUHDWH7UDFN 
DQGDWUDFN

IRU LQWL LL  ^
PDNHDEXQFKRIHYHQWVWRPDNHWKHQRWHVNHHS

JRLQJXS IURPSLDQRQRWHWRSLDQRQRWH 
WUDFNDGG PDNH(YHQW LL 
WUDFNDGG PDNH(YHQW LL 

FDOORXUQHZPD (Y
HQW PHWKRGWRPD
PHVVDJHDQGHYHNH
NHWKH
QW
W
0LGL(YHQWUHWXUQHG KHQDGGWKHUHVXOW WKH
IU
RP
WKHWUDFN7KHVHDUH PDNH(YHQW WR
127(21  DQ
127(2)) 
G
SDLUV
VWDUWLWUXQQLQJ

`HQGORRS

VHTXHQFHUVHW6HTXHQFH VHT 
VHTXHQFHUVHW7HPSR,Q%30  
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\[

UROOHU(YHQWV
:HQHHGWROLVWHQIRU&RQWHUL
QWHUIDFH
WHQ
HOLV
WK
HQW
VRZHLPSOHP

LPSRUWMDYD[VRXQGPLGL 
SXEOLFFODVV0LQL0XVLF3OD\HULPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF3OD\HUPLQL QHZ0LQL0XVLF3OD\HU 
PLQLJR 
`
U
WKHVHTXHQFHWK
SXEOLFYRLGJR ^
H
IRUHYHQWVZLWK

5HJLVWHU HJLVWUDWLRQPHWKRGWDNHV
YHQWU
HQWLQJ

7KHH
\UHSUHV W
WU\^
1'DQLQWDUUD
$
U
ZDQ
QH
WH
OLV
6HTXHQFHUVHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU  &RQWUROOHU(YHQWV\RX
WKHOLVWRI O\RQHHYHQW
VHTXHQFHURSHQ 
:HZDQWRQ

LQW>@HYHQWV,:DQW ^`
VHTXHQFHUDGG&RQWUROOHU(YHQW/LVWHQHU WKLVHYHQWV,:DQW 
6HTXHQFHVHT QHZ6HTXHQFH 6HTXHQFH334 
7UDFNWUDFN VHTFUHDWH7UDFN 
IRU LQWL LL  ^
WUDFNDGG PDNH(YHQW LL 
WUDFNDGG PDNH(YHQW L 
WUDFNDGG PDNH(YHQW LL 
`HQGORRS
VHTXHQFHUVHW6HTXHQFH VHT 
VHTXHQFHUVHW7HPSR,Q%30  
VHTXHQFHUVWDUW 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
`FORVH

SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
6\VWHPRXWSULQWOQ OD 
`

+HUHVKRZZHSLFNXSWKHE
HDWZHLQVHUW
RXU2:1&RQWUROOHU(
YHQ
W

W\SHLV&RQWUROOHU( W Z VD\VWKHHYHQW
LWKDQDUJXPHQWIRU
HYHQWQXPEHUYHQ
7
KLV
HY
,1*:HSXWLWLQ 867 HQWZLOOGR127+
VRWKDWZHFDQJHW
DQHYHQWHDFKWLPH-D
QR
WH
LVSOD\HG,QRWKH
ZRUGVLWVVROHSXU
VRWKDWVRPHWKLQJZULOO
ILUHWKDW:(FDQOSRLVWVHHQLVIR
IRU127(212))HYHQW U ZHFDQWOLVWHQ
V 1RWHWKDWZHUH
PDNLQJWKLVHYHQWKD
SS
HQ
DW
WKH127(216RZ QW WKH6$0(WLFNDV
KH127(21HYHQW
KDSSHQVZHOONQRZDEKHRXW
LW
ZLOOILUHDWWKHVDPHWLPH EHFDXVH285HYHQW

WUROOHU
URPWKH&RQJH
I
G
KR
HW
P
HU
GO
ZH WWKH
7KHHYHQWKDQ
(DFKWLPHG
FH
ID
HU
QW
L
HU
HQ
(YHQWOLVW SULQWODWRWKHFRPPDQ OLQH
HYHQWZHOO

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
HYHQW QHZ0LGL(YHQW DWLFN 
&RGHWKDWVGLIIHUHQWIURPWKHSUHYLRXV

YHUVLRQLVKLJKOLJKWHGLQJUD\ DQGZHUH
`FDWFK ([FHSWLRQH ^`
QRWUXQQLQJLWDOOZLWKLQPDLQ WKLVWLPH
UHWXUQHYHQW
`
`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
7KHGUDZLQJSDQH

QHU

FODVV0\'UDZ3DQHOH[WHQGV-3DQHOLPSOHPHQWV&RQWUROOHU(YHQW/LVWHQHU^

:HVHWDIODJWRIDOVHDQGZHOOVHWLW
ERROHDQPVJ IDOVH

WRWUXHRQO\ZKHQZHJHWDQHYHQW

SXEOLFYRLGFRQWURO&KDQJH 6KRUW0HVVDJHHYHQW ^
PVJ WUXH
:HJRWDQHYHQWVRZHVHWWKHIODJWR
UHSDLQW 
WUXHDQGFDOOUHSDLQW
`
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLFVJ ^
LI PVJ ^

:HKDYHWRXVHDIODJEHFDXVH27+(5WKLQJ
DQG
ZHZDQWWRSDLQW21/<ZKHQWKHUHVDVPLJKWWULJJHUDUHSDLQW 

&RQWUROOHU(YHQW
*UDSKLFV'J  *UDSKLFV' J
LQWU  LQW  0DWKUDQGRP   
LQWJU  LQW  0DWKUDQGRP   
LQWE  LQW  0DWKUDQGRP   
JVHW&RORU QHZ&RORU UJUE 

7KHUHVWLVFRGHWRJHQHUDWH
DUDQGRPFRORUDQGSDLQWD
VHPLUDQGRPUHFWDQJOH

LQWKW  LQW  0DWKUDQGRP    


LQWZLGWK  LQW  0DWKUDQGRP    
LQW[  LQW  0DWKUDQGRP    
LQW\  LQW  0DWKUDQGRP    
JOO5HFW [\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 
LPSRUWMDYDLR 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 

7KLVLVWKHFRPSOHWHFRGHOLVWLQJIRU9HUVLRQ
7KUHH,WEXLOGVGLUHFWR\RQ9HUVLRQ7ZR7U\
WRDQQRWDWHLW\RXUVHOIZLWKRXWORRNLQJDWWKH
SUHYLRXVSDJHV

SXEOLFFODVV0LQL0XVLF3OD\HU^
VWDWLF-)UDPHI QHZ-)UDPH 0\)LUVW0XVLF9LGHR 
VWDWLF0\'UDZ3DQHOPO
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
0LQL0XVLF3OD\HUPLQL QHZ0LQL0XVLF3OD\HU 
PLQLJR 
`FORVHPHWKRG


Licensed by
Eduard Simons
104038

SXEOLFYRLGVHW8S*XL ^
PO QHZ0\'UDZ3DQHO 
IVHW&RQWHQW3DQH PO 
IVHW%RXQGV  
IVHW9LVLEOH WUXH 
`FORVHPHWKRG

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    

JOO5HFW [\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
HAPPENTOSAYSOMETHINGTHATCOULDBETRUEFORMORETHANONEGUY THEN
WRITEDOWNALLFORWHOMTHATSENTENCEAPPLIES&ILLINTHEBLANKSNEXTTOTHE
SENTENCEWITHTHENAMESOFONEORMOREATTENDEES

1dQ^OU_Q

*1#/

4ONIGHTSATTENDEES

 `

!NYOFTHECHARMINGPERSONALITIESFROMTHISCHAPTERJUST
MIGHTSHOWUP

,JRWWKHZKROH*8,LQP\KDQGV
(YHU\HYHQWW\SHKDVRQHRI WKHVH
7KHOLVWHQHUVNH\PHWKRG

7KLVPHWKRGJLYHV-)UDPHLWVVL]H

<RXDGGFRGHWRWKLVPHWKRGEXWQHYHUFDOOLW

:KHQWKHXVHUDFWXDOO\GRHVVRPHWKLQJLWVDQBBBBB
0RVWRI WKHVHDUHHYHQWVRXUFHV

,FDUU\GDWDEDFNWRWKHOLVWHQHU

$QDGG;[[/LVWHQHU  PHWKRGVD\VDQREMHFWLVDQBBBBB
+RZDOLVWHQHUVLJQVXS

7KHPHWKRGZKHUHDOOWKHJUDSKLFVFRGHJRHV
,PW\SLFDOO\ERXQGWRDQLQVWDQFH

7KHJLQ *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

1dQ^OU_Q
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYDDZW 

"%THECOMPILER
7KH-DYDILOHRQWKLVSDJHUHSUHVHQWVD
FRPSOHWHVRXUFHILOH<RXUMRELVWRSOD\
FRPSLOHUDQGGHWHUPLQHZKHWKHUWKLVILOH
ZLOOFRPSLOH,ILWZRQWFRPSLOHKRZ
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

3RRO3X]]OH
9OURJOBISTOTAKECODESNIPPETSFROM
THEPOOLANDPLACETHEMINTOTHEBLANK
LINESINTHECODE9OUMAYUSETHE
SAMESNIPPETMORETHANONCE
ANDYOUWONTNEEDTOUSEALLTHE
SNIPPETS9OURGOALISTOMAKEA
CLASSTHATWILLCOMPILEANDRUN
ANDPRODUCETHEOUTPUTLISTED
/UTPUT

4HE!MAZING 3HRINKING "LUE2ECTANGLE


4HISPROGRAMWILLPRODUCEABLUE
RECTANGLETHATWILLSHRINKANDSHRINKAND
DISAPPEARINTOAlELDOFWHITE

.OTE%ACHSNIPPET
FROMTHEPOOLCANBE
USEDMORETHANONCE

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
SXEOLFFODVV$QLPDWH^
LQW[ 
LQW\ 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
$QLPDWHJXL QHZ$QLPDWH 
JXLJR 
`
SXEOLFYRLGJR ^
-)UDPHBBBBBBBBB QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ



-)UDPH(;,7B21B&/26( 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBJHW&RQWHQW3DQH DGG GUDZ3 
BBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBVHW9LVLEOH WUXH 
IRU LQWL LBBBBBBBBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBB
WU\^
7KUHDGVOHHS  
`FDWFK ([FHSWLRQH[ ^`
`
`
FODVV0\'UDZ3H[WHQGV-3DQHO^
SXEOLFYRLGSDLQW&RPSRQHQW *UDSKLF
BBBBBBBBB ^
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
`
`

GFILL2ECTX Y X  Y 


I
GFILL2ECTX Y  X
  Y

I Y
GFILL2ECT X
  Y
 X Y
I Y X
X GFILL2ECT   
Y GFILL2ECT   
!NIMATEFRAMENEW!NIMATE
-Y$RAW0DRAW0NEW-Y$RAW0
G
GSET#OLORBLUE
DRAW0PAINT #ONTENT0ANEDRAW0NEW#ONTENT0ANE
DRAW
GSET#OLORWHITE
DRAWREPAINT
DRAW0SET3IZE 
FRAME
GSET#OLOR#OLORBLUE
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

*1#/ `

LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYDDZW 

)GOTTHEWHOLE'5) INMYHANDS -)UDPH

FODVV,QQHU%XWWRQ^

%VERYEVENTTYPEHASONEOFTHESE

OLVWHQHULQWHUIDFH

4HELISTENERSKEYMETHOD

DFWLRQ3HUIRUPHG 

-)UDPHIUDPH
-%XWWRQE

4HISMETHODGIVES*&RAMEITSSIZE

VHW6L]H 

9OUADDCODETOTHISMETHODBUT
NEVERCALLIT

SDLQW&RPSRQHQW 

7HENTHEUSERACTUALLYDOES
SOMETHING ITSAN????

HYHQW

-OSTOFTHESEAREEVENTSOURCES

VZLQJFRPSRQHQWV

)CARRYDATABACKTOTHELISTENER

HYHQWREMHFW

!NADD8XX,ISTENER METHOD
SAYSANOBJECTISAN???

HYHQWVRXUFH

(OWALISTENERSIGNSUP

DGG$FWLRQ/LVWHQHU 

4HEMETHODWHEREALLTHE
GRAPHICSCODEGOES

SDLQW&RPSRQHQW 

)MTYPICALLYBOUNDTOANINSTANCE LQQHUFODVV
4HE@GIN'RAPHICSG IS
REALLYOFTHISCLASS

*UDSKLFVG

4HEMETHODTHATGETS
PAINT#OMPONENT ROLLING

UHSDLQW 

4HEPACKAGEWHEREMOSTOFTHE
3WINGERSRESIDE

MDYD[VZLQJ

2QFHWKLVFRGH
LV[HGLWZLOO
FUHDWHD*8,ZLWK
DEXWWRQWKDW
WRJJOHVEHWZHHQ
$DQG%ZKHQ\RX
FOLFNLW

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
,QQHU%XWWRQJXL QHZ,QQHU%XWWRQ 
JXLJR 
`
SXEOLFYRLGJR ^
IUDPH QHZ-)UDPH 
IUDPHVHW'HIDXOW&ORVH2SHUDWLRQ



-)UDPH(;,7B21B&/26( 
7KHDGG$FWLRQ/LVWHQHU  
PHWKRGWDNHVDFODVVWKDW
LPSOHPHQWVWKH$FWLRQ/LV
WHQHULQWHUIDFH
E QHZ-%XWWRQ $ 
EDGG$FWLRQ/LVWHQHU VM_*4Q[\MVMZ 

IUDPHJHW&RQWHQW3DQH DGG



%RUGHU/D\RXW6287+E 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
FODVV%/LVWHQHUQUXTMUMV\[$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWH ^
LI EJHW7H[W HTXDOV $ ^
EVHW7H[W % 
$FWLRQ/LVWHQHULVDQ
`HOVH^
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


2ECTANGLE

-)UDPH(;,7B21B&/26( 

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 

JOO5HFW  
JVHW&RORU &RORUEOXH 
JOO5HFW [\[ \  
`
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
6ZLQJ

:K\ZRQW
WKHEDOOJRZKHUH,ZDQW
LWWRJR" OLNHVPDFNLQ6X]\
6PLWKVIDFH ,YHJRWWDOHDUQ
WRFRQWUROLW

6ZLQJLVHDV\5NLESSYOUACTUALLYCAREWHERETHINGSENDUPONTHESCREEN3WINGCODE
LOOKSEASY BUTTHENYOUCOMPILEIT RUNIT LOOKATITANDTHINK hHEY THATSNOTSUPPOSEDTOGO
THEREv4HETHINGTHATMAKESITEASYTOCODEISTHETHINGTHATMAKESITHARDTOCONTROLTHE

,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
FACT THEYALLEXTENDMDYD[VZLQJ-&RPSRQHQW

+WUXWVMV\[KIVJMVM[\ML
)N3WING VIRTUALLYALLCOMPONENTSARECAPABLEOFHOLDINGOTHER
COMPONENTS)NOTHERWORDS YOUCANSTICKJUSTABOUTANYTHINGINTOANYTHING
ELSE"UTMOSTOFTHETIME YOULLADDUSERINTERACTIVECOMPONENTSSUCHAS
BUTTONSANDLISTSINTOBACKGROUNDCOMPONENTSSUCHASFRAMESANDPANELS
!LTHOUGHITSPOSSIBLETOPUT SAY APANELINSIDEABUTTON THATSPRETTY
WEIRD ANDWONTWINYOUANYUSABILITYAWARDS

A widget is technically
a Swing Component.
Almost every thing
you can stick in a
GUI extends from
javax.swing.JComponent.

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[WHOGHWF
-%XWWRQEXWWRQ QHZ-%XWWRQ FOLFNPH 

$GGWKHFRPSRQHQWWRWKHIUDPH
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67EXWWRQ 

'LVSOD\LW JLYHLWDVL]HDQGPDNHLWYLVLEOH
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

3XWLQWHUDFWLYHFRPSRQHQWV

,QWREDFNJURXQGFRPSRQHQWV

-%XWWRQ
-&KHFN%R[

-)UDPH

-3DQHO

-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[
$VDOD\RXWPDQDJHU

!LAYOUTMANAGERISA*AVAOBJECTASSOCIATED
WITHAPARTICULARCOMPONENT ALMOSTALWAYSA
BACKGROUNDCOMPONENT4HELAYOUTMANAGER
CONTROLSTHECOMPONENTSCONTAINEDWITHINTHE
COMPONENTTHELAYOUTMANAGERISASSOCIATED
WITH)NOTHERWORDS IFAFRAMEHOLDSAPANEL
ANDTHEPANELHOLDSABUTTON THEPANELSLAYOUT
MANAGERCONTROLSTHESIZEANDPLACEMENTOF
THEBUTTON WHILETHEFRAMESLAYOUTMANAGER
CONTROLSTHESIZEANDPLACEMENTOFTHE
PANEL4HEBUTTON ONTHEOTHERHAND
DOESNTNEEDALAYOUTMANAGERBECAUSETHE
BUTTONISNTHOLDINGOTHERCOMPONENTS

,PLQFKDUJHRIWKH VL]H
DQGSODFHPHQWRI\RXUFRPSRQHQWV
,QWKLV*8,,PWKHRQHZKRGHFLGHG
KRZELJWKHVHEXWWRQVVKRXOGEHDQG
ZKHUHWKH\DUHUHODWLYHWRHDFK
RWKHUDQGWKH IUDPH

)FAPANELHOLDSlVETHINGS EVENIFTHOSE
lVETHINGSEACHHAVETHEIROWNLAYOUT
MANAGERS THESIZEANDLOCATIONOFTHElVE
THINGSINTHEPANELAREALLCONTROLLEDBYTHE
PANELSLAYOUTMANAGER)FTHOSElVETHINGS
INTURN HOLDOTHERTHINGS THENTHOSEOTHER
THINGSAREPLACEDACCORDINGTOTHELAYOUT
MANAGEROFTHETHINGHOLDINGTHEM
7HENWESAYHOLDWEREALLYMEANADDASIN A
PANELHOLDSABUTTONBECAUSETHEBUTTONWAS
ADDEDTOTHEPANELUSINGSOMETHINGLIKE
P\3DQHODGG EXWWRQ 
,AYOUTMANAGERSCOMEINSEVERALmAVORS AND
EACHBACKGROUNDCOMPONENTCANHAVEITSOWN
LAYOUTMANAGER,AYOUTMANAGERSHAVETHEIR
OWNPOLICIESTOFOLLOWWHENBUILDINGALAYOUT
&OREXAMPLE ONELAYOUTMANAGERMIGHTINSIST
THATALLCOMPONENTSINAPANELMUSTBETHESAME
SIZE ARRANGEDINAGRID WHILEANOTHERLAYOUT
MANAGERMIGHTLETEACHCOMPONENTCHOOSEITS
OWNSIZE BUTSTACKTHEMVERTICALLY(ERESAN
EXAMPLEOFNESTEDLAYOUTS

3DQHO$VOD\RXWP
DQDJHU
FRQWUROVWKHVL]
SODFHPHQWRI3DQHHODQG
%


PDQDJSHUODFHPHQW

W
X
R
\
OD
G
V
3DQHO%ROVWKHVL]HDWQRQV
U
W
W
X
Q
E
FR HWKUHH
RIWK

EXWWRQ
EXWWRQ
EXWWRQ
3DQHO%

-3DQHOSDQHO$ QHZ-3DQHO 

3DQHO$

-3DQHOSDQHO% QHZ-3DQHO 

3DQHO$VOD\RXWPDQDJHU V127
+,1*WR
VD\DERXWWKHWKUHHEXWWKD
7KHKLHUDUFK\
RIFRQWUROLVRQO\RQHOHYHRQV
DQHO$VOD\RXW
PDQDJHUFRQWUROVRQO\WKHO3
WKLQJVDGGHGGLUHFWO\
WR3DQHO$DQGGRHVQRWF
URODQ\WKLQJ
QHVWHGZLWKLQWKRVHDGGHGFRQW
RPSRQHQWV

SDQHO%DGG QHZ-%XWWRQ EXWWRQ 


SDQHO%DGG QHZ-%XWWRQ EXWWRQ 
SDQHO%DGG QHZ-%XWWRQ EXWWRQ 
SDQHO$DGG SDQHO% 

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
/HWVVHHKHUHWKH

$OD\RXWVFHQDULR

UVWEXWWRQZDQWVWREH
SL[HOVZLGHDQGWKHWH[WHOG

0DNHDSDQHODQGDGGWKUHHEXWWRQVWRLW

7KHSDQHOVOD\RXWPDQDJHUDVNVHDFKEXWWRQKRZELJ
WKDWEXWWRQSUHIHUVWREH

7KHSDQHOVOD\RXWPDQDJHUXVHVLWVOD\RXWSROLFLHVWRGHFLGH
ZKHWKHULWVKRXOGUHVSHFWDOOSDUWRUQRQHRIWKHEXWWRQV
SUHIHUHQFHV

$GGWKHSDQHOWRDIUDPH

7KHIUDPHVOD\RXWPDQDJHUDVNVWKHSDQHOKRZELJWKHSDQHO

QHHGVDQGWKHIUDPHLVSL[HOV
ZLGHDQG,PVXSSRVHGWRDUUDQJH

Licensed by
Eduard Simons
104038

HYHU\WKLQJYHUWLFDOO\

SUHIHUVWREH


7KHIUDPHVOD\RXWPDQDJHUXVHVLWVOD\RXWSROLFLHVWRGHFLGH
ZKHWKHULWVKRXOGUHVSHFWDOOSDUWRUQRQHRIWKHSDQHOV
SUHIHUHQFHV

OD\RXWP

DQDJHU

,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
FRPSRQHQWLQWRYHUHJLRQV<RXFDQDGGRQO\RQH
FRPSRQHQWSHUUHJLRQWRDEDFNJURXQGFRQWUROOHG
E\D%RUGHU/D\RXWPDQDJHU&RPSRQHQWVODLGRXW

QW
RQHFRPSRQQH
LR
J
H
SHUU

E\WKLVPDQDJHUXVXDOO\GRQWJHWWRKDYHWKHLU
SUHIHUUHGVL]H%RUGHU/D\RXWLVWKHGHIDXOWOD\RXW
PDQDJHUIRUDIUDPH

)ORZ/D\RXW
$)ORZ/D\RXWPDQDJHUDFWVNLQGRIOLNHDZRUG
SURFHVVRUH[FHSWZLWKFRPSRQHQWVLQVWHDGRI
ZRUGV(DFKFRPSRQHQWLVWKHVL]HLWZDQWVWREH
DQGWKH\UHODLGRXWOHIWWRULJKWLQWKHRUGHUWKDW

FRPSRQHQWVDGGHGOH
IW
WRULJKWZUDSS
LQ
J
WR
QHZOLQHZKHQQHHGH D
G

WKH\UHDGGHGZLWKZRUGZUDSWXUQHGRQ6R
ZKHQDFRPSRQHQWZRQWWKRUL]RQWDOO\LWGURSV
WRWKHQH[WOLQHLQWKHOD\RXW)ORZ/D\RXWLVWKH
GHIDXOWOD\RXWPDQDJHUIRUDSDQHO

%R[/D\RXW
$%R[/D\RXWPDQDJHULVOLNH)ORZ/D\RXWLQWKDW
HDFKFRPSRQHQWJHWVWRKDYHLWVRZQVL]HDQG
WKHFRPSRQHQWVDUHSODFHGLQWKHRUGHULQZKLFK
WKH\UHDGGHG%XWXQOLNH)ORZ/D\RXWD%R[/D\RXW
PDQDJHUFDQVWDFNWKHFRPSRQHQWVYHUWLFDOO\ RU

GHGWRS
FRPSRQHQWVDG
SHUOLQH
WRERWWRP RQH

KRUL]RQWDOO\EXWXVXDOO\ZHUHMXVWFRQFHUQHGZLWK
YHUWLFDOO\ ,WVOLNHD)ORZ/D\RXWEXWLQVWHDGRI
KDYLQJDXWRPDWLFFRPSRQHQWZUDSSLQJ\RXFDQ
LQVHUWDVRUWRIFRPSRQHQWUHWXUQNH\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

/HWVDGGDEXWWRQWRWKHHDVWUHJLRQ
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 

%RUGHU/D\RXWLVLQ

MDYDDZWSDFNDJH

SXEOLFFODVV%XWWRQ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%XWWRQJXL QHZ%XWWRQ 
JXLJR 
`
SXEOLFYRLGJR ^
KHUHJLRQ
VSHFLI\W
-)UDPHIUDPH QHZ-)UDPH 
-%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\LVQWLWZLGHURUWDOOHU"

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WKHEXWWRQPRUHFKDUDFWHUV

H[W

KHW
HGRQO\W
J
Q
D
K
F

H
: EXWWRQ
RQWKH

SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-%XWWRQEXWWRQ QHZ-%XWWRQ FOLFNOLNH\RXPHDQLW 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
)LUVW,DVNWKH
EXWWRQIRULWV

,KDYHDORWRIZRUGV

SUHIHUUHGVL]H

QRZVR,GSUHIHUWREH
SL[HOVZLGHDQG

%X

FW

SL[HOVWDOO

WWRQREMH

6LQFHLWVLQWKHHDVW
UHJLRQRIDERUGHUOD\RXW
,OOUHVSHFWLWVSUHIHUUHGZLGWK%XW

1H[WWLPH

,GRQWFDUHKRZWDOOLWZDQWVWREH

,PJRLQZLWKRZ

LWVJRQQDEHDVWDOODVWKHIUDPH

OD\RXW7KHQ,JHW

EHFDXVHWKDWVP\SROLF\

(9(5<7+,1*,

RQJHWV
7KHEXWIWHUUHGZLGWK
LWVSUH WKHLJKW
EXWQR

%X

FW

ZDQW

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

/HWVWU\DEXWWRQLQWKH1257+UHJLRQ
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-%XWWRQEXWWRQ QHZ-%XWWRQ 7KHUHLVQRVSRRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

DVLW
LVDVWDDVOOZLGHDV
Q
R
W
W
X
E

H
7K WREHEXW
ZDQWV DPH
WKHIU

1RZOHWVPDNHWKHEXWWRQDVNWREHWDOOHU
+RZGRZHGRWKDW"7KHEXWWRQLVDOUHDG\DVZLGH
DVLWFDQHYHUEHDVZLGHDVWKHIUDPH%XWZH
FDQWU\WRPDNHLWWDOOHUE\JLYLQJLWDELJJHUIRQW
SXEOLFYRLGJR ^
FHWKH
WZLOOIPRRUUHVSDFH
Q
R
-)UDPHIUDPH QHZ-)UDPH 
I

U
H
J
$ELJ WRDOORFDWH KW
-%XWWRQEXWWRQ QHZ-%XWWRQ &OLFN7KLV 
IUDPH HEXWWRQVKHLJ
)RQWELJ)RQW QHZ)RQW VHULI)RQW%2/' 
IRUWK
EXWWRQVHW)RQW ELJ)RQW 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW1257+EXWWRQ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

KHVDPHEXWQRZ

7KHZLGWKVWD\VW
WK

OOHU7KHQRU H
WKHEXWWRQLVWD
RDFFRPRGDW W
HG
UHJLRQVWUHWFK ZW
SUHIHUUHGKHLJK
WKHEXWWRQVQH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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,PLQQRUWKRUVRXWKLWVMXVWWKH

But what happens


in the center region?

RSSRVLWH,JHWP\SUHIHUUHGKHLJKWEXW

%X

FW

QRWZLGWK

WWRQREMH

7KHFHQWHUUHJLRQJHWVZKDWHYHUVOHIW
H[FHSWLQRQHVSHFLDOFDVHZHOOORRNDWODWHU
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 
`

HDVWDQG
&RPSRQHQWVHLLQUWSUKHHIHUUHGZLGWK
ZHVWJHWWK
QRUWKDQG
&RPSRQHQWVLQHLWUKH
HIHUUHG
SU
VRXWKJHWWK
KHLJKW

SL[HOV

&RPSRQHQWV
ZKDWHYHUVSDFLQHWLVKHFHQWHUJHW
EDVHGRQWKHIUD OHIWRYHU
[LQWKPHGLPHQVLRQV
LVFRGH 

:KHQ\RXSXWVRP
HWKLQJ
LQWKHQRUWKR
JRHVDOOWKHZD\UDVRXWKLW
FURVV
WKHIUDPHV
LQWKHHDVWDQRGWKZHWKLQJV
ZRQWEHDVWDOODVHVW
WKH\
ZRXOGEHLIWKH
VRXWKUHJLRQVZHUQRUWKDQG
HHPSW\

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
DERXWWKHRZRIWKH
FRPSRQHQWV
OHIWWRULJKWWRSWRERWWRPLQ
WKHRUGHUWKH\ZHUHDGGHG

/HWVDGGDSDQHOWRWKHHDVWUHJLRQ
$-3DQHOVOD\RXWPDQDJHULV)ORZ/D\RXWE\GHIDXOW:KHQZHDGG
DSDQHOWRDIUDPHWKHVL]HDQGSODFHPHQWRIWKHSDQHOLVVWLOO
XQGHUWKH%RUGHU/D\RXWPDQDJHUVFRQWURO%XWDQ\WKLQJLQVLGHWKH

SDQHO LQRWKHUZRUGVFRPSRQHQWVDGGHGWRWKHSDQHOE\FDOOLQJ

SDQHODGG D&RPSRQHQW DUHXQGHUWKHSDQHOV)ORZ/D\RXW


PDQDJHUVFRQWURO:HOOVWDUWE\SXWWLQJDQHPSW\SDQHOLQWKHIUDPHV
HDVWUHJLRQDQGRQWKHQH[WSDJHVZHOODGGWKLQJVWRWKHSDQHO

KDYHDQ\WKLQJ
7KHSDQHOGRHRHVQVQWWDVNIRUPXFK
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

/HWVDGGDEXWWRQWRWKHSDQHO
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 

KH
SDQHODQGDGGWPDQDJHU
KH
W
WR
Q
WR
XW
E
\RXW
$GGWKH
PH7KHSDQHOVODWKHIUDPHV
SDQHOWRWKHIUDWK
G
DQ

RQ
HEXWW
IORZ FRQWUROV ERUGHU FRQWUROVWKHSDQHO
HU
DJ
OD\RXWPDQ

-%XWWRQEXWWRQ QHZ-%XWWRQ VKRFNPH 

SDQHODGG EXWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`

SDQHO

7KHSDQHOH[SDQGHG
$QGWKHEXWWRQJRWLW
V
SUHIHUUHGVL]HLQ
WK
GLPHQVLRQVEHFDXVHER
WKHSDQHO
XVHVIORZOD\RXWDQG
EXWWRQLVSDUWRIWKHWSKH
DQHO
QRWWKHIUDPH 

SDQHO

,QHHG

2N,QHHGWR
NQRZKRZELJWKH

WRNQRZKRZELJWKH

SDQHOZDQWVWREH

EXWWRQZDQWVWR
%DVHGRQP\IRQWVL]H
,KDYHDEXWWRQQRZ

DQGWKHQXPEHURI

VRP\OD\RXWPDQDJHUV

FKDUDFWHUV,ZDQWWREH

JRQQDKDYHWRJXUHRXW

SL[HOVZLGHDQGSL[HOVWDOO

FRQWUROV

3D
QHOREMHF

W

FRQWUROV

7KHIUDPHV

7KHSDQHOV

%RUGHU/D\RXWPDQDJHU

)ORZ/D\RXWPDQDJHU

%X

FW

KRZELJ,QHHGWREH

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.

IORZOD\RXW

:KDWKDSSHQVLIZHDGG7:2EXWWRQV
WRWKHSDQHO"
SXEOLFYRLGJR ^
-)UDPHIUDPH QHZ-)UDPH 
-3DQHOSDQHO QHZ-3DQHO 
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
-%XWWRQEXWWRQ QHZ-%XWWRQ VKRFNPH 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ EOLVV 

SDQHODGG EXWWRQ 
DGG%27+WR
WKHSDQHO
SDQHODGG EXWWRQ7ZR 

V
2EXWWRQ

PDNH7:

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 


IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`


ZKDWZHJRW

ZKDWZHZDQWHG


HEXWWRQHVDFK
K
W

W
Q
D
Z

:H GRQWRSRI
VWDFNH
RWKHU

6KDUSHQ \RXU SHQFLO

7KHSDQHO
ILWERWKEHXW[WSDQGHGWR
RQVVLGH
E\VLGH

DQ
VVPDOOHUZW K
L
Q
R
W
W
X
E

WWKHEOLWVVRQWKDWVKRZIORKDWLW
QRWLFHWFKNDP
HEXW
VMXVWZ
WKHVKR RUNV7KHEXWWRQJHW
OD\RXWZ QGQRPRUH 
QHHGV D

)FTHECODEABOVEWEREMODIlEDTOTHECODEBELOW
WHATWOULDTHE'5)LOOKLIKE
-%XWWRQEXWWRQ QHZ-%XWWRQ VKRFNPH 
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ EOLVV 
-%XWWRQEXWWRQ7KUHH QHZ-%XWWRQ KXK" 
SDQHODGG EXWWRQ 
SDQHODGG EXWWRQ7ZR 
SDQHODGG EXWWRQ7KUHH 

$RAWWHATYOU
THINKTHE'5)WOULD
LOOKLIKEIFYOURAN
THECODETOTHELEFT
4HENTRYIT

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
VWDFNHGHYHQLIWKHUHVURRP
WRSXWWKHPVLGHE\VLGH

8QOLNH)ORZ/D\RXW%R[/D\RXWFDQIRUFHD
QHZOLQHWRPDNHWKHFRPSRQHQWVZUDSWR
WKHQH[WOLQHHYHQLIWKHUHVURRPIRUWKHP
WRWKRUL]RQWDOO\
%XWQRZ\RXOOKDYHWRFKDQJHWKHSDQHOVOD\RXWPDQDJHUIURPWKH
GHIDXOW)ORZ/D\RXWWR%R[/D\RXW

SXEOLFYRLGJR ^
QHZ
-)UDPHIUDPH QHZ-)UDPH 
DJHUWREHD
Q
D
P
W
X
R
\
D
-3DQHOSDQHO QHZ-3DQHO 
O
&KDQJHWKHI%R[/D\RXW
SDQHOVHW%DFNJURXQG &RORUGDUN*UD\ 
R
H
F
Q
D
LQVW

SDQHOVHW/D\RXW QHZ%R[/D\RXW SDQHO%R[/D\RXW<B$;,6 


7KH%R[/D\RXW

QVWUXFWRUQHHGVWR
-%XWWRQEXWWRQ QHZ-%XWWRQ VKRFNPH 
WKHFRPSRQHQWLWFR
NQRZ
V
OD
-%XWWRQEXWWRQ7ZR QHZ-%XWWRQ EOLVV 
DQGZKLFKD[LVWRX \LQJRXW LHWKHSDQHO 
SDQHODGG EXWWRQ 
YHUWLFDOVWDFN  VH ZHXVH<B$;,6IRUD
SDQHODGG EXWWRQ7ZR 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW($67SDQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
`
HUDJDLQ WRQV
OLVQDUURZE
H
Q
D
S
H
K
RWKEXW
W
1RWLFHKRZGRHVQWQHHGWRILWOGWKHIUDPH
EHFDXVHLW OO\6RWKHSDQHOWR O\WKHODUJHVW
KRUL]RQWD HQRXJKURRPIRURQ
LWQHHGHG KRFNPH
EXWWRQV

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

A:

!*&RAMEISSPECIALBECAUSEITSWHERETHERUBBER
MEETSTHEROADINMAKINGSOMETHINGAPPEARONTHESCREEN
7HILEALLYOUR3WINGCOMPONENTSAREPURE*AVA A*&RAME
HASTOCONNECTTOTHEUNDERLYING/3INORDERTOACCESSTHE
DISPLAY4HINKOFTHECONTENTPANEASAPURE*AVALAYER
THATSITSONTOPOFTHE*&RAME/RTHINKOFITASTHOUGH*&RAME
ISTHEWINDOWFRAMEANDTHECONTENTPANEISTHEGLASS9OU
KNOW THEWINDOWPANE!NDYOUCANEVENSWAPTHECONTENT
PANEWITHYOUROWN*0ANEL TOMAKEYOUR*0ANELTHEFRAMES
CONTENTPANE USING

 /D\RXWPDQDJHUVFRQWUROWKHVL]HDQGORFDWLRQRI
FRPSRQHQWVQHVWHGZLWKLQRWKHUFRPSRQHQWV
 :KHQ\RXDGGDFRPSRQHQWWRDQRWKHUFRPSRQHQW
VRPHWLPHVUHIHUUHGWRDVDEDFNJURXQGFRPSRQHQW
EXWWKDWVQRWDWHFKQLFDOGLVWLQFWLRQ WKHDGGHG
FRPSRQHQWLVFRQWUROOHGE\WKHOD\RXWPDQDJHURIWKH
EDFNJURXQGFRPSRQHQW
 $OD\RXWPDQDJHUDVNVFRPSRQHQWVIRUWKHLU
SUHIHUUHGVL]HEHIRUHPDNLQJDGHFLVLRQDERXW
WKHOD\RXW'HSHQGLQJRQWKHOD\RXWPDQDJHUV
SROLFLHVLWPLJKWUHVSHFWDOOVRPHRUQRQHRIWKH
FRPSRQHQWVZLVKHV
 7KH%RUGHU/D\RXWPDQDJHUOHWV\RXDGGD
FRPSRQHQWWRRQHRIILYHUHJLRQV<RXPXVWVSHFLI\
WKHUHJLRQZKHQ\RXDGGWKHFRPSRQHQWXVLQJWKH
IROORZLQJV\QWD[

Licensed by
Eduard Simons
104038

P\)UDPHVHW&RQWHQW3DQH P\3DQHO 

Q:

:MDD=LHGAFLK

#AN)CHANGETHELAYOUTMANAGEROFTHEFRAME
7HATIF)WANTTHEFRAMETOUSEmOWINSTEADOFBORDER

DGG %RUGHU/D\RXW($67SDQHO 

A:

4HEEASIESTWAYTODOTHISISTOMAKEAPANEL BUILD
THE'5)THEWAYYOUWANTINTHEPANEL ANDTHENMAKETHAT
PANELTHEFRAMESCONTENTPANEUSINGTHECODEINTHEPREVI
OUSANSWERRATHERTHANUSINGTHEDEFAULTCONTENTPANE 

Q:

7HATIF)WANTADIFFERENTPREFERREDSIZE)STHEREA
SET3IZE METHODFORCOMPONENTS

A:

9ES THEREISASET3IZE BUTTHELAYOUTMANAGERSWILL


IGNOREIT4HERESADISTINCTIONBETWEENTHEPREFERREDSIZEOF
THECOMPONENTANDTHESIZEYOUWANTITTOBE4HEPREFERRED
SIZEISBASEDONTHESIZETHECOMPONENTACTUALLYNEEDS
THECOMPONENTMAKESTHATDECISIONFORITSELF 4HELAYOUT
MANAGERCALLSTHECOMPONENTSGET0REFERRED3IZE METHOD
ANDTHATMETHODDOESNTCAREIFYOUVEPREVIOUSLYCALLED
SET3IZE ONTHECOMPONENT

Q:

 :LWK%RUGHU/D\RXWFRPSRQHQWVLQWKHQRUWKDQG




#ANT)JUSTPUTTHINGSWHERE)WANTTHEM#AN)TURN
THELAYOUTMANAGERSOFF

A:

9EP/NACOMPONENTBYCOMPONENTBASIS YOUCANCALL
VHW/D\RXW QXOO ANDTHENITSUPTOYOUTOHARD CODE
THEEXACTSCREENLOCATIONSANDDIMENSIONS)NTHELONGRUN
THOUGH ITSALMOSTALWAYSEASIERTOUSELAYOUTMANAGERS




VRXWKJHWWKHLUSUHIHUUHGKHLJKWEXWQRWZLGWK
&RPSRQHQWVLQWKHHDVWDQGZHVWJHWWKHLUSUHIHUUHG
ZLGWKEXWQRWKHLJKW7KHFRPSRQHQWLQWKHFHQWHU
JHWVZKDWHYHULVOHIWRYHU XQOHVV\RXXVHSDFN 
7KHSDFN PHWKRGLVOLNHVKULQNZUDSIRUWKH
FRPSRQHQWVLWXVHVWKHIXOOSUHIHUUHGVL]HRIWKH
FHQWHUFRPSRQHQWWKHQGHWHUPLQHVWKHVL]HRIWKH
IUDPHXVLQJWKHFHQWHUDVDVWDUWLQJSRLQWEXLOGLQJ
WKHUHVWEDVHGRQZKDWVLQWKHRWKHUUHJLRQV
)ORZ/D\RXWSODFHVFRPSRQHQWVOHIWWRULJKWWRSWR
ERWWRPLQWKHRUGHUWKH\ZHUHDGGHGZUDSSLQJWRD
QHZOLQHRIFRPSRQHQWVRQO\ZKHQWKHFRPSRQHQWV
ZRQWILWKRUL]RQWDOO\
)ORZ/D\RXWJLYHVFRPSRQHQWVWKHLUSUHIHUUHGVL]HLQ
ERWKGLPHQVLRQV
%R[/D\RXWOHWV\RXDOLJQFRPSRQHQWVVWDFNHG
YHUWLFDOO\HYHQLIWKH\FRXOGILWVLGHE\VLGH/LNH
)ORZ/D\RXW%R[/D\RXWXVHVWKHSUHIHUUHGVL]HRI
WKHFRPSRQHQWLQERWKGLPHQVLRQV
%RUGHU/D\RXWLVWKHGHIDXOWOD\RXWPDQDJHUIRUD
IUDPH)ORZ/D\RXWLVWKHGHIDXOWIRUDSDQHO
,I\RXZDQWDSDQHOWRXVHVRPHWKLQJRWKHUWKDQIORZ
\RXKDYHWRFDOOVHW/D\RXW RQWKHSDQHO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

&RQVWUXFWRUV
-7H[W)LHOGHOG QHZ-7H[W)LHOG  

L[HOV
VQRWLGSWKRI
Q
P
OX
R
F


PHDQVLQHVWKHSUHIHUUHGZ
7KLVGHIWILHOG
WKHWH[

-7H[W)LHOGHOG 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[WLQWKHHOG

HOGVHOHFW$OO 

3XWWKHFXUVRUEDFNLQWKHHOG 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
WDNHVDOLWWOHFRQJXUDWLRQWRPDNHRQHEHFDXVHLWGRHVQWFRPHRXWRI
WKHER[ZLWKVFUROOEDUVRUOLQHZUDSSLQJ7RPDNHD-7H[W$UHDVFUROO\RX
KDYHWRVWLFNLWLQD6FUROO3DQH$6FUROO3DQHLVDQREMHFWWKDWUHDOO\ORYHV
WRVFUROODQGZLOOWDNHFDUHRIWKHWH[WDUHDVVFUROOLQJQHHGV

&RQVWUXFWRU

KHLJKW
HSUHIHUUHG
K
W
WK
V
W
H
V
V
H
OLQ
HIHUUHGZLG
U
S
H
K
W
V
W
H
PHDQV
FROXPQV V
PHDQV

-7H[W$UHDWH[W QHZ-7H[W$UHD  

WKH U
QGJLYHLW
D

IR
H
Q
D
3
F
OO
V
R
6FU LWVJRLQJWR UROO

D

H
N
D

0
0DNHLWKDYHDYHUWLFDOVFUROOEDURQO\
WKDW
WH[WDUHD
7HOOWKHVFUROOSDQHWR
-6FUROO3DQHVFUROOHU QHZ-6FUROO3DQH WH[W 
DYHUWLFDOVFUROOEDU XVHRQO\
WH[WVHW/LQH:UDS WUXH 
7XUQRQOLQHZUDSSLQJ

+RZWRXVHLW


VFUROOHUVHW9HUWLFDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV9(57,&$/B6&52//%$5B$/:$<6 
VFUROOHUVHW+RUL]RQWDO6FUROO%DU3ROLF\ 6FUROO3DQH&RQVWDQWV+25,=217$/B6&52//%$5B1(9(5 

,PSRUWDQW<RXJ
LYHWKHWH[WDUHD
VFUROOSDQHFRQ
WRW VFUROOSDQH
VW
UX
 WKURXJKWKH
GRQWDGGWKHWH FWRU WKHQDGGWKHVFKH
UROOSDQHWRWK
[WDUHDGLUHFWO\W
HSDQHO<RX
R
WK
H
SD
QHO
5HSODFHWKHWH[WWKDWVLQLW
SDQHODGG VFUROOHU 

WH[WVHW7H[W 1RWDOOZKRDUHORVWDUHZDQGHULQJ 
 $SSHQGWRWKHWH[WWKDWVLQLW

WH[WDSSHQG EXWWRQFOLFNHG 
 6HOHFW+LJKOLJKWWKHWH[WLQWKHHOG

WH[WVHOHFW$OO 

3XWWKHFXUVRUEDFNLQWKHHOG 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
ZRUGVJRRQD

VHSDUDWHOL

QHHDF WLPHWKHEXWW
RQLV
FOLFNHG2WKHUZLVHKW
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 

+RZWRXVHLW


/LVWHQIRUDQLWHPHYHQW ZKHQLWVVHOHFWHGRUGHVHOHFWHG
FKHFNDGG,WHP/LVWHQHU WKLV 

+DQGOHWKHHYHQW DQGQGRXWZKHWKHURUQRWLWVVHOHFWHG
SXEOLFYRLGLWHP6WDWH&KDQJHG ,WHP(YHQWHY ^
6WULQJRQ2U2II RII
LI FKHFNLV6HOHFWHG RQ2U2II RQ
6\VWHPRXWSULQWOQ &KHFNER[LVRQ2U2II 
`

 6HOHFWRUGHVHOHFWLWLQFRGH

FKHFNVHW6HOHFWHG WUXH 
FKHFNVHW6HOHFWHG IDOVH 

A:

'ETTINGTHEEXACTLAYOUT
YOUWANTFROMALAYOUTMAN
AGERCANBEACHALLENGE"UTTHINK
ABOUTWHATTHELAYOUTMANAGER
ISREALLYDOINGFORYOU%VENTHE
SEEMINGLYSIMPLETASKOFFIGURING
OUTWHERETHINGSSHOULDGOON
THESCREENCANBECOMPLEX&OR
EXAMPLE THELAYOUTMANAGERTAKES
CAREOFKEEPINGYOURCOMPONENTS
FROMOVERLAPPINGONEANOTHER
)NOTHERWORDS ITKNOWSHOWTO
MANAGETHESPACINGBETWEEN
COMPONENTSANDBETWEENTHE
EDGEOFTHEFRAME 3UREYOUCAN
DOTHATYOURSELF BUTWHATHAPPENS
IFYOUWANTCOMPONENTSTOBE
VERYTIGHTLYPACKED9OUMIGHTGET
THEMPLACEDJUSTRIGHT BYHAND
BUTTHATSONLYGOODFORYOUR*6-
7HY"ECAUSETHECOMPONENTS
CANBESLIGHTLYDIFFERENTFROM
PLATFORMTOPLATFORM ESPECIALLYIF
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

&RQVWUXFWRU

-/LVWFRQVWUXFWRUW
W\SH7KH\GRQWKD DNHVDQDUUD\RIDQ\REMHFW
6WULQJUHSUHVHQWDW YHWREH6WULQJVEXWD
LRQZLOODSSHDULQW
KHOLVW

6WULQJ>@OLVW(QWULHV ^DOSKDEHWDJDPPDGHOWD




HSVLORQ]HWDHWDWKHWD`
OLVW QHZ-/LVW OLVW(QWULHV 

+RZWRXVHLW


0DNHLWKDYHDYHUWLFDOVFUROOEDU

DNHD
UHD\RXP WKH
$
W
H[
7
K
LW
GG
HZ
7KLVLVMXVWOLN QGJLYHLWWKHOLVW WKHQD
O
D
QH
H
DQ
SD
WRWKH
-6FUROO3
27WKHOLVW 
VFUROOSDQH 1

-6FUROO3DQHVFUROOHU QHZ-6FUROO3DQH OLVW 


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 

+DQGOHHYHQWV QGRXWZKLFKWKLQJLQWKHOLVWZDVVHOHFWHG

W

:,&(LI\RXGRQ
<RXOOJHWWKHHYHQW7
SXWLQWKLVLIWHVW

SXEOLFYRLGYDOXH&KDQJHG /LVW6HOHFWLRQ(YHQWOVH ^

LI OVHJHW9DOXH,V$GMXVWLQJ ^
6WULQJVHOHFWLRQ  6WULQJ OLVWJHW6HOHFWHG9DOXH 

6\VWHPRXWSULQWOQ VHOHFWLRQ 

`
`

JHW6HOHFWHG9DOXH DFWX
UHWXUQVDQ2EMHFW$OLVWDOO\
OLPLWHGWRRQO\6WULQJREMHLVQW
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 parts optional. Were making the full BeatBox, GUI


and all. In the Saving Objects chapter, well learn how to
save and restore drum patterns. Finally, in the networking
chapter (Make a Connection), well 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:HGRQW
QHHGOLVWHQHUVIRUWKHLQGLYLGXDOFKHFNER[HVEHFDXVHZHDUHQW
WU\LQJWRFKDQJHWKHSDWWHUQVRXQGG\QDPLFDOO\ LHDVVRRQDVWKH
XVHUFKHFNVDER[ ,QVWHDGZHZDLWXQWLOWKHXVHUKLWVWKHVWDUW
EXWWRQDQGWKHQZDONWKURXJKDOOFKHFNER[HVWRJHWWKHLUVWDWH
DQGPDNHD0,',WUDFN

6HWXSWKH0,',V\VWHP \RXYHGRQHWKLVEHIRUH LQFOXGLQJJHWWLQJ


D6HTXHQFHUPDNLQJD6HTXHQFHDQGFUHDWLQJDWUDFN:HDUHXVLQJ
DVHTXHQFHUPHWKRGWKDWVQHZWR-DYDVHW/RRS&RXQW  7KLV
PHWKRGDOORZV\RXWRVSHFLI\KRZPDQ\WLPHV\RXZDQWDVHTXHQFH
WRORRS:HUHDOVRXVLQJWKHVHTXHQFHVWHPSRIDFWRUWRDGMXVWWKH
WHPSRXSRUGRZQDQGPDLQWDLQWKHQHZWHPSRIURPRQHLWHUDWLRQRI
WKHORRSWRWKHQH[W

:KHQWKHXVHUKLWVVWDUWWKHUHDODFWLRQEHJLQV7KHHYHQWKDQGOLQJ
PHWKRGIRUWKHVWDUWEXWWRQFDOOVWKHEXLOG7UDFN$QG6WDUW PHWKRG
,QWKDWPHWKRGZHZDONWKURXJKDOOFKHFNER[HV RQHURZDW
DWLPHDVLQJOHLQVWUXPHQWDFURVVDOOEHDWV WRJHWWKHLUVWDWH
WKHQXVHWKHLQIRUPDWLRQWREXLOGD0,',WUDFN XVLQJWKHKDQG\
PDNH(YHQW PHWKRGZHXVHGLQWKHSUHYLRXVFKDSWHU 2QFHWKHWUDFN
LVEXLOWZHVWDUWWKHVHTXHQFHUZKLFKNHHSVSOD\LQJ EHFDXVHZHUH
ORRSLQJLW XQWLOWKHXVHUKLWVVWRS

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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[^

-3DQHOPDLQ3DQHO
$UUD\/LVW-&KHFN%R[!FKHFNER[/LVW
6HTXHQFHUVHTXHQFHU
6HTXHQFHVHTXHQFH
7UDFNWUDFN
-)UDPHWKH)UDPH

$UUD\/LVW

:HVWRUHWKHFKHFNER[HVLQDQ

7KHVHDUHWKHQDPHVRIWKHLQVWUXPHQWVDVD6WULQJ
DUUD\IRUEXLOGLQJWKH*8,ODEHOV RQHDFKURZ

6WULQJ>@LQVWUXPHQW1DPHV ^%DVV'UXP&ORVHG+L+DW
2SHQ+L+DW$FRXVWLF6QDUH&UDVK&\PEDO+DQG&ODS
+LJK7RP+L%RQJR0DUDFDV:KLVWOH/RZ&RQJD
&RZEHOO9LEUDVODS/RZPLG7RP+LJK$JRJR
2SHQ+L&RQJD`
LQW>@LQVWUXPHQWV ^`


7KHVHUHSUHVHQWWKHDFWXDOGUXPNH

\V
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7KHGUXPFKDQQHOLVOLNHDSLDQRH[FHSW
QHZ%HDW%R[ EXLOG*8, 
HDFKNH\RQWKHSLDQRLVDGLIIHUHQWGU
XP
`
6RWKHQXPEHULVWKHNH\I

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[! 
%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 

$QHPSW\ERUGH
XVDPDUJLQ
EHWZHHQWKHHGJHUVRJLYIHV
ZKHUHWKHFRPSRQHQWVDWKHSDQHODQG
UHSODFHG
3XUHO\DHVWKHWLF

UHMXVWORWVRI*8, 
1RWKLQJVSHFLDOKHP
LWEHIRUH
FRGH<RXYHVHHQ RVWRI

-%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@ 
`

EDFNJURXQGDGG %RUGHU/D\RXW($67EXWWRQ%R[ 
EDFNJURXQGDGG %RUGHU/D\RXW:(67QDPH%R[ 



XSFRGH
6WLOOPRUH*8,VHW
OH
DE
1RWKLQJUHPDUN

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
KHPWR
PDLQ3DQHODGG F 
IDOVH VRWKH\DUHQWF
KHF
NHG
DQG
`HQGORRS
DGGWKHPWR
VHW8S0LGL 

WKH$UUD\/LVW$1'WR
WKH*8,SDQHO

WKH)UDPHVHW%RXQGV  
WKH)UDPHSDFN 
WKH)UDPHVHW9LVLEOH WUXH 
`FORVHPHWKRG

SXEOLFYRLGVHW8S0LGL ^
WU\^
VHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
VHTXHQFHURSHQ 
VHTXHQFH QHZ6HTXHQFH 6HTXHQFH334 
WUDFN VHTXHQFHFUHDWH7UDFN 
VHTXHQFHUVHW7HPSR,Q%30  

`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
`FORVHPHWKRG

7KHXVXDO0,',VHWXSVWXII
JHWWLQJWKH6HTXHQFHUWKH6 IRU
DQGWKH7UDFN$JDLQQRWKLQ HTXHQFH
JVSHFLDO

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WXUQFKHFNER[VWDWH 7R
FN
DQGDGGWKHPWRWKH UD
SXEOLFYRLGEXLOG7UDFN$QG6WDUW ^
LQW>@WUDFN/LVW QXOO

VHTXHQFHGHOHWH7UDFN WUDFN 
WUDFN VHTXHQFHFUHDWH7UDFN 


KHYDOXHVIHQRUWLV
W
OG
R
K
R
W
\
D
WDUU WV,IWKHLQVWUXP HQW
HDHOHPRHQ
OOEHD YDOXHDWWKDWHOHP R
D
:HOOPDNXP
VV
FU
D

W
GW
RQHLQVWU RHQSOD\RQWKDWEHDWWHQKH
V127VXSSRVH
L
W
W
XP
G
U
VH
VW
R
Q
S
L
S
VX
DW
NH\,IWKXW
LQD]HUR
ZLOOEHWKH
S

W
HD
E
W
D
K
W
Q
R
\
SOD
PDNHDIUHVKRQH
JHWULGRIWKHROGWUDFN

WF
52:6 LH%DVV&RQJRH

KH
W
RI
FK
HD
RU
I
KLV
W
GR
UXPHQWWKLV
SUHVHQWVZKLFKLQVWUU
D\KROGVWKH
6HWWKHNH\WKDWWFUH7
VD
QW
PH
UX
LQVW

LV %DVV+L+DWH UVIRKH
LQWNH\ LQVWUXPHQWV>L@
QW
UHDFKLQVWUXPH
DFWXDO0,',QXPEH
KLVURZ
IRU LQWM MM ^ KLVIRUHDFKRIWKH%($76IRUW
'RW
IRU LQWL LL ^
WUDFN/LVW QHZLQW>@


Licensed by
Eduard Simons
104038


-&KHFN%R[MF  -&KHFN%R[ FKHFNER[/LVWJHW M  L 
LI MFLV6HOHFWHG ^
WUDFN/LVW>M@ NH\
,VWKHFKHFNER[DWWKLVEHDWVHOHFWHG",I\HVSXW
`HOVH^
HLQWKLVVORWLQWKHDUUD\ WKHVORWWKDW
WKHNH\YDOX
WUDFN/LVW>M@ 
UHSUHVHQWVWKLVEHDW 2WKHUZLVHWKHLQVWUXPHQWLV
`
127VXSSRVHGWRSOD\DWWKLVEHDWVRVHWLWWR]HUR
`FORVHLQQHUORRS


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 

VHTXHQFHUVHW/RRS&RXQW VHTXHQFHU/223B&217,18286/< 
/HWV\RXVSHFLI\WKHQXPEHU
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
OLVWHQHUVIRUWKHEXWWRQV

SXEOLFFODVV0\8S7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^

RDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU 
VHTXHQFHUVHW7HPSR)DFWRU RDW WHPSR)DFWRU  
`
`FORVHLQQHUFODVV

7KH7HPSR)DFWRUVFDOHV
WKHVHTXHQFHUVWHPSRE\
WKHIDFWRUSURYLGHG7KH
GHIDXOWLVVRZHUH
DGMXVWLQJSHU
FOLFN

SXEOLFFODVV0\'RZQ7HPSR/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^

RDWWHPSR)DFWRU VHTXHQFHUJHW7HPSR)DFWRU 
VHTXHQFHUVHW7HPSR)DFWRU RDW WHPSR)DFWRU  
`
`FORVHLQQHUFODVV


WLPHIRU
RQHLQVWUXPHQWDWDWK
7KLVPDNHVHYHQWVIRUJKW
H%DVV
IRU
@
WDQLQW>
DOOEHDWV6RLWPL LQJH
WKHU
HL
ROG
OOK
ZL
UD\
SXEOLFYRLGPDNH7UDFNV LQW>@OLVW ^
DU
WKH
FKLQGH[
HD
DQG
P
GUX
]HUR
VD
LW
,I
UR
]H

KDWLQVWUXPHQWRUDSOD
IW
\R
NH
WKH
EH
\DWWKDW DW
IRU LQWL LL ^
LVQWVXSSRVHGWR WW
HQW
XP
VWU
LQ
WKH
LQWNH\ OLVW>L@
DGGL RWKHWUDFN
2WKHUZLVHPDNHDQHYHQWDQG


LI NH\  ^
WUDFNDGG PDNH(YHQW NH\L 
0DNHWKH127(21DQG
WUDFNDGG PDNH(YHQW NH\L 
1272))HYHQWVDQG 
`
DGGWKHPWRWKH7UDFN
`
`

SXEOLF0LGL(YHQWPDNH(YHQW LQWFRPGLQWFKDQLQWRQHLQWWZRLQWWLFN ^
0LGL(YHQWHYHQW QXOO
WU\^
6KRUW0HVVDJHD QHZ6KRUW0HVVDJH 
DVHW0HVVDJH FRPGFKDQRQHWZR 
7KLVLVWKHXWLOLW\
HYHQW QHZ0LGL(YHQW DWLFN 
PHWKRG
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
UHWXUQHYHQW
`

IURPODVW
FKHQ1RWKLQJQ
HZ

FKDSWHUV&RGH.LW

`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
HDFKRIWKHYHFRGHIUDJPHQWVZLWKWKHOD\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
ACTION0ERFORMED

-OREFUNTHANTEXT

)NNERSSQUEEZE

#OMPONENTSLANG

"ACKSTAGEWIDGET

!PPLYAWIDGET

2OMULINCOMMAND

-ACLOOK

*0ANELSDEFAULT

!RRANGE

"ORDERSRIGHT

0OLYMORPHICTEST

"ORDERSTOP

!HAPPENING

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

* -3DQHOSDQHO

-)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 


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
RQHPRUHOHIXOORI
GDWD,WKLQN,OOKDYHWRNLOOKLP+H

NQRZV,FDQVDYHZKROHREMHFWVEXW
GRHVKHOHWPH"12WKDWZRXOGEH
WRRHDV\:HOOZHOOMXVWVHHKRZ
KHIHHOVDIWHU,

2EMHFWVFDQEHIODWWHQHGDQGLQIODWHG/BJECTSHAVESTATEANDBEHAVIOR
"EHAVIORLIVESINTHECLASS BUTSTATELIVESWITHINEACHINDIVIDUALOBJECT3OWHATHAPPENSWHEN
ITSTIMETOSAVETHESTATEOFANOBJECT)FYOUREWRITINGAGAME YOUREGONNANEEDA3AVE
2ESTORE'AMEFEATURE)FYOUREWRITINGANAPPTHATCREATESCHARTS YOUREGONNANEEDA3AVE
/PEN&ILEFEATURE)FYOURPROGRAMNEEDSTOSAVESTATE YOUCANDOITTHEHARDWAY INTERROGATING
EACHOBJECT THENPAINSTAKINGLYWRITINGTHEVALUEOFEACHINSTANCEVARIABLETOAFILE INA
FORMATYOUCREATE/R YOUCANDOITTHEEASY//WAYYOUSIMPLYFREEZE 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
:ULWHDOHWKDWKROGVDWWHQHG VHULDOL]HG 
REMHFWV7KHQKDYH\RXUSURJUDPUHDGWKH
VHULDOL]HGREMHFWVIURPWKHOHDQGLQDWHWKHP
EDFNLQWROLYLQJEUHDWKLQJKHDSLQKDELWLQJREMHFWV

,I\RXUGDWDZLOOEHXVHGE\RWKHUSURJUDPV


:ULWHDSODLQWH[WOH
:ULWHDOHZLWKGHOLPLWHUVWKDWRWKHUSURJUDPVFDQSDUVH
)RUH[DPSOHDWDEGHOLPLWHGOHWKDWDVSUHDGVKHHWRU
GDWDEDVHDSSOLFDWLRQFDQXVH

4HESEARENTTHEONLYOPTIONS OFCOURSE9OUCANSAVEDATAINANY
FORMATYOUCHOOSE)NSTEADOFWRITINGCHARACTERS FOREXAMPLE
YOUCANWRITEYOURDATAASBYTES/RYOUCANWRITEOUTANYKIND
OF*AVAPRIMITIVEASA*AVAPRIMITIVETHEREAREMETHODSTOWRITE
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
WEAPONS9OUDONTWANTTOSTARTFROMSCRATCH
EACHTIMEYOULAUNCHTHEGAMEITTOOKYOU
FOREVERTOGETYOURCHARACTERSINTOPSHAPEFOR
ASPECTACULARBATTLE3O YOUNEEDAWAYTOSAVE
THESTATEOFTHECHARACTERS ANDAWAYTORESTORE
THESTATEWHENYOURESUMETHEGAME!NDSINCE
YOUREALSOTHEGAMEPROGRAMMER YOUWANTTHE
WHOLESAVEANDRESTORETHINGTOBEASEASYAND
FOOLPROOF ASPOSSIBLE


2SWLRQRQH

*DPH&KDUDFWHU

Imagine you
have three
g
characters ame
to save...

LQWSRZHU
6WULQJW\SH
:HDSRQ>@ZHDSRQV
JHW:HDSRQ
XVH:HDSRQ
LQFUHDVH3RZHU
PRUH

:ULWHWKHWKUHHVHULDOL]HG
FKDUDFWHUREMHFWVWRDOH
&UHDWHDOHDQGZULWHWKUHHVHULDOL]HG

SRZHU
W\SH7UROO
ZHDSRQVEDUH
KDQGVELJD[

FKDUDFWHUREMHFWV7KHOHZRQWPDNH
VHQVHLI\RXWU\WRUHDGLWDVWH[W
[Z/IUM+PIZIK\MZ

Ow 51XW_MZ4RI^ITIVO
;\ZQVO#C_MIXWV[\C4RI^ITIVO
;\ZQVO#`X\TN]ZC4RI^ITIVO;\ZQVO#>
c/`X\JW_\[_WZL\L][\[Yf\<ZWTT]Yf\J
IZMPIVL[\JQOI`[Yf`\5IOQKQIV]Yf\[XM
TT[\QV^Q[QJQTQ\a


R EMHFW

2SWLRQWZR
:ULWHDSODLQWH[WOH
&UHDWHDOHDQGZULWHWKUHHOLQHVRIWH[W
RQHSHUFKDUDFWHUVHSDUDWLQJWKHSLHFHV
RIVWDWHZLWKFRPPDV
-TNJW_[_WZLL][\
<ZWTTJIZMPIVL[JQOI`
5IOQKQIV[XMTT[QV^Q[QJQTQ\a

SRZHU
W\SH(OI
ZHDSRQVERZ
VZRUGGXVW
R EMHFW

SRZHU
W\SH0DJLFLDQ
ZHDSRQVVSHOOV
LQYLVLELOLW\
R EMHFW

7KHVHULDOL]HGI
EXWLWVPXFKHD LOHLVPXFKKDUGHUIRUKXPDQVWR
UHVWRUHWKHWKUHVLHU DQGVDIHU IRU\RXUSURJUD UHDG
UHDGLQJLQWKHR HREMHFWVIURPVHULDOL]DWLRQWK PWR
WRDWH[WILOH)EMHFWVYDULDEOHYDOXHVWKDWZHU DQIURP
\RXFRXOGDFFLGH RUH[DPSOHLPDJLQHDOOWKHZD\HVDYHG
RUGHU7KHW\S QWDOO\UHDGEDFNWKHYDOXHVLQW VLQZKLFK
ZKLOHWKH(OIEHFHPLJKWEHFRPHGXVWLQVWHDGRKHZURQJ
I(OI
RPHVDZHDSRQ
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

DPHVHUGRHVQDWWLF DOO\
,IWKHILOH0EH\*
DWHGDXWRP
H[LVWLWZLOO FUH
0DNHD)LOH2XWSXW6WUHDP
)LOH2XWSXW6WUHDPOH6WUHDP QHZ)LOH2XWSXW6WUHDP 0\*DPHVHU 

0DNHD)
NQRZVKRZLOWH2R XWSXW6WUHDPREMHFW
)LOH2XWSXW6
FRQQHFWWR
W
DQGFUHDWH
DILOH UHDP

Licensed by
Eduard Simons
104038

0DNHDQ2EMHFW2XWSXW6WUHDP

2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP OH6WUHDP 

REMHFWV
UHDPOHWV\RXZWRULDWHILOH,W
2EMHFW2XWSXW6W
\FRQQHFW
EXWLWFDQWGLUGHFDWOKHOSHU7KLVLVDFWXDOO\
IH
QHHGVWREH JRQHVWUHDPWRDQRWKHU
FDOOHGFKDLQLQ

:ULWHWKHREMHFW
RVZULWH2EMHFW FKDUDFWHU2QH 
RVZULWH2EMHFW FKDUDFWHU7ZR 
RVZULWH2EMHFW FKDUDFWHU7KUHH 

UDFWHU
UHIHUHQFHGE\7FKUKDHHDQG
WV
HF
EM
R
KH
W
HV
L]
DO
VHUL
UDFWHU
7ZRDQGFKD\*
2QHFKDUDFWHU
DPHVHU
0

LOH
I
KH
W
ZULWHVWKHPWR

&ORVHWKH2EMHFW2XWSXW6WUHDP
RVFORVH 

&ORVLQJWKHVWUH
WKHWRSFORVHVWKHRQH
XQGHUQHDWKVRWKDPHD)LWOH2
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

'HVWLQDWLRQ
6RXUFH

+WVVMK\QWV
[\ZMIU[ZMXZM[MV\
IKWVVMK\QWV
\WI[W]ZKMWZ
LM[\QVI\QWVNQTM
[WKSM\M\K_PQTM
KPIQV[\ZMIU[
KIV\KWVVMK\WV
\PMQZW_VIVLU][\
JMKPIQVML\WI
KWVVMK\QWV[\ZMIU

4HE*AVA)/!0)HASCONNECTIONSTREAMS THATREPRESENTCONNECTIONSTODESTINATIONSAND
SOURCESSUCHASlLESORNETWORKSOCKETS ANDCHAINSTREAMSTHATWORKONLYIFCHAINEDTO
OTHERSTREAMS
/FTEN ITTAKESATLEASTTWOSTREAMSHOOKEDTOGETHERTODOSOMETHINGUSEFULONETO
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
GIVESYOUTREMENDOUSmEXIBILITY)FYOUWEREFORCEDTOUSEONLYASINGLESTREAMCLASS YOUD
BEATTHEMERCYOFTHE!0)DESIGNERS HOPINGTHEYDTHOUGHTOFEVERYTHINGYOUMIGHTEVER
WANTTODO"UTWITHCHAINING YOUCANPATCHTOGETHERYOUROWNCUSTOMCHAINS

GHVWLQDWLRQ


REMHFWLVDWWHQHG VHULDOL]HG

LVFKDLQHGWR

LVZULWWHQWR
2EMHFW

REMHFWLVZULWWHQDVE\WHVWR

2EMHFW2XWSXW6WUHDP
DFKDLQVWUHDP


)LOH2XWSXW6WUHDP
DFRQQHFWLRQVWUHDP



)LOH
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

2EMHFWVRQWKHKHDSKDYHVWDWHWKH
YDOXHRIWKHREMHFWVLQVWDQFH
YDULDEOHV7KHVHYDOXHVPDNHRQH
LQVWDQFHRIDFODVVGLIIHUHQWIURP
DQRWKHULQVWDQFHRIWKHVDPHFODVV

H
SULPLWLY
R
Z
W

K
LW
2EMHFWFHZYDULDEOHV
LQVWDQ


ZLGWK

6HULDOL]HGREMHFWVVDYHWKHYDOXHV
RIWKHLQVWDQFHYDULDEOHVVRWKDW
DQLGHQWLFDOLQVWDQFH REMHFW FDQEH
EURXJKWEDFNWROLIHRQWKHKHDS









 2EMHFWVHULDOL]HG








UHVXFNHG
7KHYDOXHVD
SHGLQWR
RXWDQGSXP

P
D
WKHVWUH

KHLJKW



7KHLQVWDQFHYDULDEOHYD
IRUZLGWKDQGKHLJKWDUOXHV
H
VDYHGWRWKHILOHI
RR
VH
DORQJZLWKDOLWW PRUH U
LQIR
WKH-90QHHGVWOH
R
UH
VW
RU
H
WKHREMHFW OLNHZ
FODVVW\SHLV  KDWLWV

IRRVHU
)LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP IRRVHU 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 
RVZULWH2EMHFW P\)RR 

)RRP\)RR QHZ)RR 
P\)RRVHW:LGWK  
P\)RRVHW+HLJKW  

0DNHD)LOH2XWSXW6WUHDP DW
FRQQHFWV
WRWKHILOHIRRVHUWKHQWK
DLQDQ
2EMHFW2XWSXW6WUHDPWRLWFK
GWHOOWKH
2EMHFW2XWSXW6WUHDPWRZUDQ
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
7KH&DUREMHFWKDVWZR
LQVWDQFHYDULDEOHVWKDW
UHIHUHQFHWZRRWKHU
REMHFWV
(Q
JLQH EMHF
R

W

4HINKOFWHATANDHOWYOU
MIGHTNEEDTOSAVETHE#AR
]f_

laj]k

(QJLQH

& DU

7LUH> @


REMHFW

7L
UH
>

W

!NDWHATHAPPENSIFAN%NGINE
OBJECTHASAREFERENCETOA
#ARBURATOR!NDWHATSINSIDETHE
4IRE;=ARRAYOBJECT

MH
F

7HATHASTOHAPPENFORTHE#AR
OBJECTTOBESAVEDINSUCHAWAY
THATITCANBERESTOREDBACKTOITS
ORIGINALSTATE

@DUUD\RE

: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
UHIHUWRDUHVHULDOL]HG$QGDOOWKHREMHFWVWKRVH
REMHFWVUHIHUWRDUHVHULDOL]HGDQGWKHEHVW
SDUWLVLWKDSSHQVDXWRPDWLFDOO\

Serialization saves the


entire object graph.
All objects referenced
by instance variables,
starting with the
object being serialized.

7KLV.HQQHOREMHFWKDVDUHIHUHQFHWRD'RJ>@DUUD\REMHFW7KH
'RJ>@KROGVUHIHUHQFHVWRWZR'RJREMHFWV(DFK'RJREMHFWKROGV
DUHIHUHQFHWRD6WULQJDQGD&ROODUREMHFW7KH6WULQJREMHFWV
KDYHDFROOHFWLRQRIFKDUDFWHUVDQGWKH&ROODUREMHFWVKDYHDQLQW

:KHQ\RXVDYHWKH.HQQHODOORIWKLVLVVDYHG

6W

FW


)LGR

ULQ EMH
J R

kar]

\g_k

6WULQJ

OODU EMHF
R

' RJ

REMH

FW

6SLNH
ZYj^

'RJ

'RJ

'R
J> @

6W

ULQ EMH
J R

DUU

F
MH
D\RE

kar]
LQW

&R

fYe]
6WULQJ

[gd

W

^gg^

FW


R
LQJKDVW
(YHU\WK LQRUGHUWR 
EHVDYHG WKH.HQQHOEDFN
UHVWRUH VWDWH
WRWKLV

&ROODU

QQHOREM

W

.H

HF W

[gd

W

LQW

&R

fYe]

'RJ>@

OODU EMHF
R

&ROODU

REMH

FW

' 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.

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 

REMHFW2XWSXW6WUHDPZULWH2EMHFW P\%R[ 

LPSOHPHQW
7
6
8
0
H
U
H
RHVK
LPH
:KDWHYHUJ ULWZLOOIDLODWUXQW
R
OH
6HULDOL]DE


SDFNDJHVR
R
L
D
Y
D
M
H
K
LVLQW
6HULDOL]DEOHKHLPSRUW
XVD\
LPSRUWMDYDLR 
HPHQWEXWZKHQ\R
\RXQHHGW
1RPHWKRGVWRLPSO OHLWVD\VWRWKH-90
SXEOLFFODVV%R[LPSOHPHQWV6HULDOL]DEOH^ LPSOHPHQWV6HULDOL]DE

REMHFWVRIWKLVW\SH
LWV2.WRVHULDOL]H

SULYDWHLQWZLGWK
SULYDWHLQWKHLJKW

WKHVHWZRYDOXHVZLOOEH
VDYHG

SXEOLFYRLGVHW:LGWK LQWZ ^
ZLGWK Z
`
SXEOLFYRLGVHW+HLJKW LQWK ^
KHLJKW K
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
%R[P\%R[ QHZ%R[ 
P\%R[VHW:LGWK  
P\%R[VHW+HLJKW  

WLRQV

KURZH[FHS
,2RSHUDWLRQVFDQW

HU
DPHGIRRVHD
Q
H
LO
I
D
R
&RQQHFWW ,ILWGRHVQWPDN
LILWH[LVWVPHGIRRVHU
QHZILOHQD

WU\^
)LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP IRRVHU 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 
0DNHDQ2EMH
RVZULWH2EMHFW P\%R[ 
RVFORVH 
FKDLQHGWRW FW2XWSXW6WUHDP
KHFRQQHFWLR
`FDWFK ([FHSWLRQH[ ^
QVWUHDP
7
H
OO
LWWRZULWH
H[SULQW6WDFN7UDFH 
W
K
H
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
KDSSHQLIVRPHRIWKHREMHFWV
VWDWHGLGQWVDYHFRUUHFWO\"

(HHZZZ7KDW
FUHHSVPHRXWMXVWWKLQNLQJ
DERXWLW/LNHZKDWLID'RJFRPHV
EDFNZLWKQRZHLJKW2UQRHDUV2U
WKHFROODUFRPHVEDFNVL]HLQVWHDG
RI7KDWMXVWFDQWEHDOORZHG

(LWKHUWKHHQWLUH
REMHFWJUDSKLV
VHULDOL]HGFRUUHFWO\
RUVHULDOL]DWLRQIDLOV

LPSRUWMDYDLR 

3RQGREMHFWVFDQEHVHULDOL]HG
HLQVWDQFH
&ODVV3RQGKDXFVNRQ
YDULDEOHD'

SXEOLFFODVV3RQGLPSOHPHQWV6HULDOL]DEOH^
SULYDWH'XFNGXFN QHZ'XFN 

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
3RQGP\3RQG QHZ3RQG 
WU\^
)LOH2XWSXW6WUHDPIV QHZ)LOH2XWSXW6WUHDP 3RQGVHU 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP IV 

:KHQ\RXVHULD
RVZULWH2EMHFW P\3RQG 
REMHFW LWV'XFOL]NHLQVP\3RQG D3RQG
RVFORVH 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`
`

SXEOLFFODVV'XFN^
GXFNFRGHKHUH
`

DXWRPDWLFDOO\JHWVVHWDQFHYDULDEOH
ULDOL]HG

<LNHV'XFNLVQRWVHULDOL]DEOH
,WGRHVQWLPSOHPHQW6HULDOL]D
VRZKHQ\RXWU\WRVHULDOL]HDEOH
3RQGREMHFWLWIDLOVEHFDXVHWKH
3RQGV'XFNLQVWDQFHYDULDEOH 
FDQWEHVDYHG

<RXFDQWVHULDOL]H
D3RQGREMHFWLI
LWV'XFNLQVWDQFH
YDULDEOHUHIXVHVWR
EHVHULDOL]HG E\
QRWLPSOHPHQWLQJ
6HULDOL]DEOH 

RQG

WKHPDLQLQFODVV3
:KHQ\RXWU\HOSWR5UHJXQUHW
RZ+

)LOH(GLW:LQG

G
'XFN
MDYD3RQ
H([FHSWLRQ
HULDOL]DEO
W6
 
1R
R
YD
L
MD
MDYD
RQ G
RQ G PD LQ 3
3
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.

VHULDOL]DWLRQDQGILOH,2

,WVKRSHOHVV
WKHQ",PFRPSOHWHO\
VFUHZHGLIWKHLGLRWZKR
ZURWHWKHFODVVIRUP\LQVWDQFH
YDULDEOHIRUJRWWRPDNHLW
6HULDOL]DEOH"

0DUNDQLQVWDQFHYDULDEOHDVWUDQVLHQW
LILWFDQW RUVKRXOGQW EHVDYHG
)FYOUWANTANINSTANCEVARIABLETOBESKIPPEDBYTHE
SERIALIZATIONPROCESS MARKTHEVARIABLEWITHTHEWUDQVLHQW
KEYWORD
LPSRUWMDYDQHW 


FODVV&KDWLPSOHPHQWV6HULDOL]DEOH^
VD\VGRQW
WUDQVLHQLVWYDULDEOHGXULQJWUDQVLHQW6WULQJFXUUHQW,'
K
LW

W
VDYH DWLRQMXVWVNLS 
VHULDOL]
6WULQJXVHU1DPH

XVHU1DPHYDULDEOH
ZLOOEHVDYHGDVSDUW
RIWKHREMHFWVVW
GXULQJVHULDOL]DWLRQDWH

PRUHFRGH
`

)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
WHYISNTITTHEDEFAULTFORALLCLASSES
7HYDOESNTCLASS/BJECTIMPLEMENT
3ERIALIZABLE ANDTHENALLSUBCLASSES
WILLBEAUTOMATICALLY3ERIALIZABLE

A:

%VENTHOUGHMOSTCLASSESWILL
ANDSHOULD IMPLEMENT3ERIALIZABLE
YOUALWAYSHAVEACHOICE!NDYOU
MUSTMAKEACONSCIOUSDECISIONON
ACLASS BY CLASSBASIS FOREACHCLASS
YOUDESIGN TO@ENABLESERIALIZATION
BYIMPLEMENTING3ERIALIZABLE
&IRSTOFALL IFSERIALIZATIONWERETHE
DEFAULT HOWWOULDYOUTURNITOFF
)NTERFACESINDICATEFUNCTIONALITY NOT
ALACKOFFUNCTIONALITY SOTHEMODEL
OFPOLYMORPHISMWOULDNTWORK
CORRECTLYIFYOUHADTOSAY hIMPLEMENTS
.ON3ERIALIZABLEvTOTELLTHEWORLDTHAT
YOUCANNOTBESAVED

A:

9ES)FTHECLASSITSELFIS
EXTENDABLEIENOTFINAL YOUCAN
MAKEASERIALIZABLESUBCLASS ANDJUST
SUBSTITUTETHESUBCLASSEVERYWHERE
YOURCODEISEXPECTINGTHESUPERCLASS
TYPE2EMEMBER POLYMORPHISM
ALLOWSTHIS 7HICHBRINGSUPANOTHER
INTERESTINGISSUEWHATDOESITMEANIF
THESUPERCLASSISNOTSERIALIZABLE

Q:

9OUBROUGHTITUPWHATDOESIT
MEANTOHAVEASERIALIZABLESUBCLASS
OFANON SERIALIZABLESUPERCLASS

A:

7HYWOULD)EVERWRITEACLASS
THATWASNTSERIALIZABLE

&IRSTWEHAVETOLOOKATWHAT
HAPPENSWHENACLASSISDESERIALIZED
WELLTALKABOUTTHATONTHENEXTFEW
PAGES )NANUTSHELL WHENANOBJECT
ISDESERIALIZEDANDITSSUPERCLASSISNOT
SERIALIZABLE THESUPERCLASSCONSTRUCTOR
WILLRUNJUSTASTHOUGHANEWOBJECTOF
THATTYPEWEREBEINGCREATED)FTHERES
NODECENTREASONFORACLASSTONOT
BESERIALIZABLE MAKINGASERIALIZABLE
SUBCLASSMIGHTBEAGOODSOLUTION

A:

Q:

Q:

4HEREAREVERYFEWREASONS BUT
YOUMIGHT FOREXAMPLE HAVEASECURITY
ISSUEWHEREYOUDONTWANTAPASSWORD
OBJECTSTORED/RYOUMIGHTHAVEAN
OBJECTTHATMAKESNOSENSETOSAVE
BECAUSEITSKEYINSTANCEVARIABLESARE
THEMSELVESNOTSERIALIZABLE SOTHERES
NOUSEFULWAYFORYOUTOMAKEYOUR
CLASSSERIALIZABLE

Q:

)FACLASS)MUSINGISNT
SERIALIZABLE BUTTHERESNOGOOD
REASONEXCEPTTHATTHEDESIGNERJUST
FORGOTORWASSTUPID CAN)SUBCLASS
THE@BADCLASSANDMAKETHESUBCLASS
SERIALIZABLE

7HOA)JUSTREALIZED
SOMETHINGBIGIFYOUMAKEA
VARIABLE@TRANSIENT THISMEANSTHE
VARIABLESVALUEISSKIPPEDOVER
DURINGSERIALIZATION4HENWHAT
HAPPENSTOIT7ESOLVETHEPROBLEM
OFHAVINGANON SERIALIZABLEINSTANCE
VARIABLEBYMAKINGTHEINSTANCE
VARIABLETRANSIENT BUTDONTWE.%%$
THATVARIABLEWHENTHEOBJECTIS
BROUGHTBACKTOLIFE)NOTHERWORDS
ISNTTHEWHOLEPOINTOFSERIALIZATION
TOPRESERVEANOBJECTSSTATE

A:

9ES THISISANISSUE BUT


FORTUNATELYTHERESASOLUTION)FYOU
SERIALIZEANOBJECT ATRANSIENTREFERENCE
INSTANCEVARIABLEWILLBEBROUGHTBACK

ASNULL REGARDLESSOFTHEVALUEITHAD
ATTHETIMEITWASSAVED4HATMEANS
THEENTIREOBJECTGRAPHCONNECTEDTO
THATPARTICULARINSTANCEVARIABLEWONT
BESAVED4HISCOULDBEBAD OBVIOUSLY
BECAUSEYOUPROBABLYNEEDANON NULL
VALUEFORTHATVARIABLE
9OUHAVETWOOPTIONS
 7HENTHEOBJECTISBROUGHTBACK
REINITIALIZETHATNULLINSTANCEVARIABLE
BACKTOSOMEDEFAULTSTATE4HIS
WORKSIFYOURDESERIALIZEDOBJECTISNT
DEPENDENTONAPARTICULARVALUEFOR
THATTRANSIENTVARIABLE)NOTHERWORDS
ITMIGHTBEIMPORTANTTHATTHE$OG
HAVEA#OLLAR BUTPERHAPSALL#OLLAR
OBJECTSARETHESAMESOITDOESNT
MATTERIFYOUGIVETHERESURRECTED$OG
ABRANDNEW#OLLARNOBODYWILLKNOW
THEDIFFERENCE
 )FTHEVALUEOFTHETRANSIENTVARIABLE
DOESMATTERSAY IFTHECOLORANDDESIGN
OFTHETRANSIENT#OLLARAREUNIQUEFOR
EACH$OG THENYOUNEEDTOSAVETHE
KEYVALUESOFTHE#OLLARANDUSETHEM
WHENTHE$OGISBROUGHTBACKTO
ESSENTIALLYRE CREATEABRANDNEW#OLLAR
THATSIDENTICALTOTHEORIGINAL

Q:

7HATHAPPENSIFTWOOBJECTSIN
THEOBJECTGRAPHARETHESAMEOBJECT
,IKE IFYOUHAVETWODIFFERENT#AT
OBJECTSINTHE+ENNEL BUTBOTH#ATS
HAVEAREFERENCETOTHESAME/WNER
OBJECT$OESTHE/WNERGETSAVED
TWICE)MHOPINGNOT

A:

%XCELLENTQUESTION3ERIALIZATION
ISSMARTENOUGHTOKNOWWHENTWO
OBJECTSINTHEGRAPHARETHESAME)N
THATCASE ONLYONEOFTHEOBJECTSIS
SAVED ANDDURINGDESERIALIZATION ANY
REFERENCESTOTHATSINGLEOBJECTARE
RESTORED

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\
4HEWHOLEPOINTOFSERIALIZINGANOBJECTISSOTHATYOUCAN
RESTOREITBACKTOITSORIGINALSTATEATSOMELATERDATE INA
DIFFERENT@RUNOFTHE*6-WHICHMIGHTNOTEVENBETHESAME
*6-THATWASRUNNINGATTHETIMETHEOBJECTWASSERIALIZED 
$ESERIALIZATIONISALOTLIKESERIALIZATIONINREVERSE

GHVHULDOL]HG

VHULDOL]HG

HVHUGRHVQW
,IWKHILOH0HW\*DDP
H[FHSWLRQ
H[LVW\RXOOJ Q

0DNHD)LOH,QSXW6WUHDP

)LOH,QSXW6WUHDPOH6WUHDP QHZ)LOH,QSXW6WUHDP 0\*DPHVHU 

0DNHD)
NQRZVKRZLOWH,RQSXW6WUHDPREMHFW7
FRQQHFWWRD
K
QH[LVWLQJHI)LOLOH,QSXW6WUHDP
H

0DNHDQ2EMHFW,QSXW6WUHDP
2EMHFW,QSXW6WUHDPRV QHZ2EMHFW,QSXW6WUHDP OH6WUHDP 

V
OHWV\RXUHDGDREIMHLOHFW
P
HD
WU
W6
SX
,Q
FW
MH
2E
\FRQQHFWWR
EXWLWFDQWGLUFHFKDWOLQHGWRDFRQQHFWLRQ
,WQHHGVWREHLVFDVHD)LOH,QSXW6WUHDP
VWUHDPLQWK

UHDGWKHREMHFWV
2EMHFWRQH RVUHDG2EMHFW 
2EMHFWWZR RVUHDG2EMHFW 
2EMHFWWKUHH RVUHDG2EMHFW 

(DFKWLPH\RXVD\UHDG2EMHFW \
RXJHWWKHQH[W
REMHFWLQWKHVWUHDP6R
OOUHDGWKHPEDFNLQ
WKHVDPHRUGHULQZKLFKW\RX
JHWDELJIDWH[FHSWLRQ KH\ZHUHZULWWHQ<RXOO
REMHFWVWKDQ\RXZURWH LI\RXWU\WRUHDGPRUH

&DVWWKHREMHFWV
*DPH&KDUDFWHUHOI  *DPH&KDUDFWHU RQH
RI
7KHUHWXUQYDLVOXH
*DPH&KDUDFWHUWUROO  *DPH&KDUDFWHU WZR
\SH2EMHFW
W

FW
2EMH
*DPH&KDUDFWHUPDJLFLDQ  *DPH&KDUDFWHU WKUHHUHDGWOLNHZLWK$UUD\/LVW VR

MXV
EDFNWR
\RXKDYHWRFDNVWQRLW
LWUHDOO\LV
Z
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
COMEBACKEITHERNULLFOROBJECTREFERENCES ORASDEFAULT
PRIMITIVEVALUES



Licensed by
Eduard Simons
104038


LVUHDGE\



FODVVLVIRXQGDQGORDGHGVDYHG
LQVWDQFHYDULDEOHVUHDVVLJQHG

REMHFWLVUHDGDVE\WHV



)LOH

KH-90

W
H[FHSWLRQLI

Q
D

Z
R
U
K
W
LOO
7KLVVWHSZ RUORDGWKHFODVV

G
LQ
FDQWI

LVFKDLQHGWR

)LOH,QSXW6WUHDP
DFRQQHFWLRQVWUHDP

2EMHFW,QSXW6WUHDP
DFKDLQVWUHDP

2EMHFW

 7KHREMHFWLVUHDGIURPWKHVWUHDP

 7KH-90GHWHUPLQHV WKURXJKLQIRVWRUHGZLWK
WKHVHULDOL]HGREMHFW WKHREMHFWVFODVVW\SH

 7KH-90DWWHPSWVWRQGDQGORDGWKHRE
MHFWVFODVV,IWKH-90FDQWQGDQGRUORDG
WKHFODVVWKH-90WKURZVDQH[FHSWLRQDQG
WKHGHVHULDOL]DWLRQIDLOV

$QHZREMHFWLVJLYHQVSDFHRQWKHKHDSEXW
WKHVHULDOL]HGREMHFWVFRQVWUXFWRUGRHV
127UXQ2EYLRXVO\LIWKHFRQVWUXFWRUUDQLW
ZRXOGUHVWRUHWKHVWDWHRIWKHREMHFWEDFN
WRLWVRULJLQDOQHZVWDWHDQGWKDWVQRWZKDW
ZHZDQW:HZDQWWKHREMHFWWREHUHVWRUHG
WRWKHVWDWHLWKDGZKHQLWZDVVHULDOL]HGQRW
ZKHQLWZDVUVWFUHDWHG

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\RXFDQWVWRSLW
ZKLFKPHDQVDOOVXSHUFODVVHVEHJLQQLQJZLWK
WKHUVWQRQVHULDOL]DEOHRQHZLOOUHLQLWLDOL]H
WKHLUVWDWH

 7KHREMHFWVLQVWDQFHYDULDEOHVDUHJLYHQWKH
YDOXHVIURPWKHVHULDOL]HGVWDWH7UDQVLHQW
YDULDEOHVDUHJLYHQDYDOXHRIQXOOIRUREMHFW
UHIHUHQFHVDQGGHIDXOWV IDOVHHWF IRU
SULPLWLYHV

WKHUH DUH QR

Q:

'XPE 4XHVWLRQV

7HYDOESNTTHECLASSGETSAVEDASPARTOFTHEOB
JECT4HATWAYYOUDONTHAVETHEPROBLEMWITHWHETHER
THECLASSCANBEFOUND

A:

3URE THEYCOULDHAVEMADESERIALIZATIONWORKTHAT
WAY"UTWHATATREMENDOUSWASTEANDOVERHEAD!ND
WHILEITMIGHTNOTBESUCHAHARDSHIPWHENYOUREUSING
SERIALIZATIONTOWRITEOBJECTSTOAFILEONALOCALHARDDRIVE
SERIALIZATIONISALSOUSEDTOSENDOBJECTSOVERANETWORK
CONNECTION)FACLASSWASBUNDLEDWITHEACHSERIALIZED
SHIPPABLE OBJECT BANDWIDTHWOULDBECOMEAMUCHLARGER
PROBLEMTHANITALREADYIS
&OROBJECTSSERIALIZEDTOSHIPOVERANETWORK THOUGH THERE
ACTUALLYISAMECHANISMWHERETHESERIALIZEDOBJECTCANBE
@STAMPEDWITHA52,FORWHEREITSCLASSCANBEFOUND4HIS
ISUSEDIN*AVAS2EMOTE-ETHOD)NVOCATION2-) SOTHAT
YOUCANSENDASERIALIZEDOBJECTASPARTOF SAY AMETHOD

ARGUMENT ANDIFTHE*6-RECEIVINGTHECALLDOESNTHAVE
THECLASS ITCANUSETHE52,TOFETCHTHECLASSFROMTHE
NETWORKANDLOADIT ALLAUTOMATICALLY7ELLTALKABOUT2-)
INCHAPTER

Q:
A:

7HATABOUTSTATICVARIABLES!RETHEYSERIALIZED

.OPE2EMEMBER STATICMEANShONEPERCLASSvNOT
hONEPEROBJECTv3TATICVARIABLESARENOTSAVED ANDWHENAN
OBJECTISDESERIALIZED ITWILLHAVEWHATEVERSTATICVARIABLE
ITSCLASSCURRENTLYHAS4HEMORALDONTMAKESERIALIZABLEOB
JECTSDEPENDENTONADYNAMICALLY CHANGINGSTATICVARIABLE
)TMIGHTNOTBETHESAMEWHENTHEOBJECTCOMESBACK

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 (OIQHZ6WULQJ>@^ERZVZRUGGXVW` 
*DPH&KDUDFWHUWZR QHZ*DPH&KDUDFWHU 7UROOQHZ6WULQJ>@^EDUHKDQGVELJD[` 
*DPH&KDUDFWHUWKUHH QHZ*DPH&KDUDFWHU 0DJLFLDQQHZ6WULQJ>@^VSHOOVLQYLVLELOLW\` 
LPDJLQHFRGHWKDWGRHVWKLQJVZLWKWKHFKDUDFWHUVWKDWPLJKWFKDQJHWKHLUVWDWHYDOXHV

WU\^
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP QHZ)LOH2XWSXW6WUHDP *DPHVHU 

RVZULWH2EMHFW RQH 
RVZULWH2EMHFW WZR 
RVZULWH2EMHFW WKUHH 

RVFORVH 
`FDWFK ,2([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
HFDQW
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 
6\VWHPRXWSULQWOQ 2QHVW\SHRQH5HVWRUHJHW7\SH 
6\VWHPRXWSULQWOQ 7ZRVW\SHWZR5HVWRUHJHW7\SH 
6\VWHPRXWSULQWOQ 7KUHHVW\SHWKUHH5HVWRUHJHW7\SH 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
)LOH(GLW:LQGRZ+HOS5HVXVFLWDWH
`
MDYD*DPH6DYHU
SRZHU
W\SH7UROO
(OI
ZHDSRQVEDUH
KDQGVELJD[
7UROO
0DJLFLDQ

R EMHFW

WZRUNHG

&KHFNWRVHHLIL
SRZHU
W\SH(OI
ZHDSRQVERZ
VZRUGGXVW
R EMHFW

SRZHU
W\SH0DJLFLDQ
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
6WULQJW\SH
6WULQJ>@ZHDSRQV
SXEOLF*DPH&KDUDFWHU LQWS6WULQJW6WULQJ>@Z ^
SRZHU S
W\SH W
ZHDSRQV Z
`

RUWHVWLQJ
7KLVLVDEDVLFFODVVMXVWRQIWKDYHDQ
HG
Z
6HULDOL]DWLRQDQG OOHDYHWKDWWR
DFWXDOJDPHEXWZHO
\RXWRH[SHULPHQW

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

 <RXFDQVDYHDQREMHFWVVWDWHE\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]HGREMHFWVLQVWDQFH
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,WGRHVQWPDNHVHQVHWRVDYH
DVWDWLFYDULDEOHYDOXHDVSDUWRIDVSHFLILFREMHFWVVWDWHVLQFHDOO
REMHFWVRIWKDWW\SHVKDUHRQO\DVLQJOHYDOXHWKHRQHLQWKHFODVV

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
NEEDTOSAVEDATATOAPLAINOLDTEXTlLE)MAGINEYOUR*AVAPROGRAM
HASTOWRITEDATATOASIMPLETEXTlLETHATSOMEOTHERPERHAPSNON
*AVA PROGRAMNEEDSTOREAD9OUMIGHT FOREXAMPLE HAVEASERVLET
*AVACODERUNNINGWITHINYOURWEBSERVER THATTAKESFORMDATATHE
USERTYPEDINTOABROWSER ANDWRITESITTOATEXTlLETHATSOMEBODYELSE
LOADSINTOASPREADSHEETFORANALYSIS

:KDWWKHJDPHFKDUDFWHUGDWD
PLJKWORRNOLNHLI\RXZURWHLW
RXWDVDKXPDQUHDGDEOHWH[WILOH
-TNJW_[_WZLL][\
<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

LPSRUWMDYDLR 

RSDFNDJHI
HGWKHMDYDL

:HQH

FODVV:ULWH$)LOH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

W
WGRHVWQHRLW
[
W
R
R
)


H
D
,IWKHILOLOH:ULWHUZLOOFUH
H[LVW)

WU\^
)LOH:ULWHUZULWHU QHZ)LOH:ULWHU )RRW[W 


,2VWXIFIDWFK
7KHZULWH PHWKRGWDNHV

$//WKHHLQ DWU\ZULWHUZULWH KHOORIRR 
D6WULQJ
PXVWE KLQJFDQWKURZDQ
(YHU\W SWLRQ ZULWHUFORVH  &ORVHLW
ZKHQ\RXUHGRQH
,2([FH
`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[

IURQW

2EMEMBERTHOSEmASHCARDSYOUUSEDINSCHOOL7HEREYOU
HADAQUESTIONONONESIDEANDTHEANSWERONTHEBACK
4HEYARENTMUCHHELPWHENYOURETRYINGTOUNDERSTAND
SOMETHING BUTNOTHINGBEATS@EMFORRAWDRILL AND PRACTICE
ANDROTEMEMORIZATION7HENYOUHAVETOBURNINAFACT!ND
THEYREALSOGREATFORTRIVIAGAMES
7EREGOINGTOMAKEANELECTRONICVERSIONTHATHASTHREE
CLASSES

ROGID
LQGH[IVODKVLRQHG[
KFDUGV

HILUVW
:KDWVWKRXQWU\GXH
IRUHLJQF 'HWURLW
EDFN
VRXWKRI
0LFKLJDQ" &DQDGD 2QWDULR

 1UIZ#ARD"UILDER ASIMPLEAUTHORINGTOOLFORCREATINGAND
SAVINGASETOFE &LASHCARDS
 1UIZ#ARD0LAYER APLAYBACKENGINETHATCANLOADA
mASHCARDSETANDPLAYITFORTHEUSER

4XL]&DUG

 1UIZ#ARD ASIMPLECLASSREPRESENTINGCARDDATA7ELL
WALKTHROUGHTHECODEFORTHEBUILDERANDTHEPLAYER AND
HAVEYOUMAKETHE1UIZ#ARDCLASSYOURSELF USINGTHIS

4XL]&DUG TD
TXHVWLRQ
DQVZHU
JHW4XHVWLRQ
JHW$QVZHU

4XL]&DUG%XLOGHU

4XL]&DUG3OD\HU

+DVD)LOHPHQXZLWKD6DYHRSWLRQIRUVDYLQJ

+DVD)LOHPHQXZLWKD/RDGRSWLRQIRUORDGLQJD

WKHFXUUHQWVHWRIFDUGVWRDWH[WOH

VHWRIFDUGVIURPDWH[WOH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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[

PUBLICVOIDGO [
BUILDANDDISPLAYGUI

KH*8,LQFOXGLQJ
%XLOGVDQGGLVSODLVW\VHUWLQJHYHQWOLVWHQHUV
PDNLQJDQGUHJ

]

,QQHUFODVV
PRIVATECLASS.EXT#ARD,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
ADDTHECURRENTCARDTOTHELISTANDCLEARTHETEXTAREAS
]

WRQ
KLWV1H[W&DUGFEDUXWGLQ
U
VH
X
HQ
ZK
G
UH
JH
ULJ
DW
7
DQWVWRVWRUHWK
PHDQVWKHXVHUZ
QHZFDUG
DU
WKHOLVWDQGVW WD

]

,QQHUFODVV
PRIVATECLASS3AVE-ENU,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
BRINGUPAlLEDIALOGBOX
LETTHEUSERNAMEANDSAVETHESET
]
]

7ULJJHUHGZKHQXVHFK
RRVHV6DYHIURPWKH
)LOHPHQXPHDQV
WKHFDUGVLQWKHWFXKHUUXVHUZDQWVWRVDYHDOO
4XDQWXP0HFKD V6 HQWOLVWDVDVHW OLNH
HW+ROO\ZRRG7ULYLD
-DYD5XOHVHWF QLF


,QQHUFODVV
PRIVATECLASS.EW-ENU,ISTENERIMPLEMENTS!CTION,ISTENER[
PUBLICVOIDACTION0ERFORMED!CTION%VENTEV [
CLEAROUTTHECARDLIST ANDCLEAROUTTHETEXTAREAS
]
]

WKH)LOH
J1HZIURRVPWDUWD
Q
VL
R
R
K
F
\
E
7ULJJHUHG QVWKHXVHUZDQWVWXWWKHFDUG
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

,FRGH

VSHFLDODOWKRX
K
IUDPH QHZ-)UDPH 4XL]&DUG%XLOGHU 
JK\RXPHLJUHKW1ZRWKLQJ
WRORRND
-3DQHOPDLQ3DQHO QHZ-3DQHO 
DQG0HQXW,WWHPKH0HQX%DU0HQDXQW
)RQWELJ)RQW QHZ)RQW VDQVHULI)RQW%2/' 
VFRGH
TXHVWLRQ QHZ-7H[W$UHD  
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 
-0HQXOH0HQX 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
HQXWKHQSXWXEDUPDNHD)LOH

LW
HPVLQWRWKH QHZDQGVDYHPHQX
VDYH0HQX,WHPDGG$FWLRQ/LVWHQHU QHZ6DYH0HQX/LVWHQHU 
)LOHPHQX:H
PHQXWRWKH
OH0HQXDGG QHZ0HQX,WHP 
DG
OH0HQXDGG VDYH0HQX,WHP 
IUDPHWRXVHPHQXEDUWKHQWHOOGWWKHKH
W
K
PHQX%DUDGG OH0HQX 
LV
P
HQXE
LWHPVFDQILUH
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 
FDUG/LVWDGG FDUG 
KLV
ZDLWVRQW
G
Q

D
[
R

H
E
K
J
-)LOH&KRRVHUOH6DYH QHZ-)LOH&KRRVHU 
DILOHGLDFORKRRVHV6DYHIURDPWW
S
X
V
QG
J
D
LQ
Q
U
LR
%
U
OH6DYHVKRZ6DYH'LDORJ IUDPH 
HXVH LOHGLDORJQDYLJ \WKH
K
W
LO
W
Q
X
H
Q
VDYH)LOH OH6DYHJHW6HOHFWHG)LOH 
OL
$OOWKHI
RU\RXE
`
GLDORJER[DILOHHWFLVGRQHKILVHDV\
`
VHOHFWLQJ
HDOO\LVW

U
H&KRRVHU ,W

LO
-)^
SXEOLFFODVV1HZ0HQX/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
FDUG/LVWFOHDU 
FOHDU&DUG 
`
`
J
OILOHZULWDLQQGOHU 
D

X
W
F
D
H
K
W
SULYDWHYRLGFOHDU&DUG ^
WKDWGRHV
LQJ
QHUVHYHQWK
TXHVWLRQVHW7H[W 
7KHPHWK\RWG KH6DYH0HQX/LVRWEHMHFWWKHXVHULVVDY

H
E
H
J
G
LO
D
DQVZHUVHW7H[W 
H
FDOO XPHQWLVWKH) RQWKHQH[WS
TXHVWLRQUHTXHVW)RFXV 
7KHDUJRNDWWKH)LOHFODVV
`
OOOR
:H

SULYDWHYRLGVDYH)LOH )LOHOH ^


WU\^
%XIIHUHG:ULWHUZULWHU QHZ%XIIHUHG:ULWHU QHZ)LOH:ULWHU OH 

:HFKDLQD%XI
IRU 4XL]&DUGFDUGFDUG/LVW ^
)LOH:ULWHUWRPDIHNHUHZG:ULWHURQWRDQHZ
ZULWHUZULWH FDUGJHW4XHVWLRQ  
ZULWHUZULWH FDUGJHW$QVZHU ?Q 
:HOOWDONDERXWWKDWULWLQJPRUHHIILFLHQW
LQDIHZSDJHV 
`
ZULWHUFORVH 
`FDWFK ,2([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ FRXOGQWZULWHWKHFDUG/LVWRXW 
H[SULQW6WDFN7UDFH 
`
`
`






:DONWKURXJKW
FDUGVDQGZULWHKHWK$HPUUD\/LVWRI
RXWRQHFDUG
SHUOLQHZLWKW
VZHUVHSDUDWHGKHE\TDXHVWLRQDQGDQ
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
lLETHANJUSTUSINGA3TRINGlLENAME&OREXAMPLE MOST
CLASSESTHATTAKEA3TRINGlLENAMEINTHEIRCONSTRUCTOR
LIKE&ILE7RITEROR&ILE)NPUT3TREAM CANTAKEA&ILE
OBJECTINSTEAD9OUCANCONSTRUCTA&ILEOBJECT VERIFY
THATYOUVEGOTAVALIDPATH ETCANDTHENGIVETHAT&ILE
OBJECTTOTHE&ILE7RITEROR&ILE)NPUT3TREAM

0DNHD)LOHREMHFWUHSUHVHQWLQJDQ
H[LVWLQJOH

)LOHI QHZ)LOH 0\&RGHW[W 

0DNHDQHZGLUHFWRU\

)LOHGLU QHZ)LOH &KDSWHU 


GLUPNGLU 

/LVWWKHFRQWHQWVRIDGLUHFWRU\

LI GLULV'LUHFWRU\ ^
6WULQJ>@GLU&RQWHQWV GLUOLVW 
IRU LQWL LGLU&RQWHQWVOHQJWKL ^
6\VWHPRXWSULQWOQ GLU&RQWHQWV>L@ 
`
`


*HWWKHDEVROXWHSDWKRIDOHRUGLUHFWRU\

6\VWHPRXWSULQWOQ GLUJHW$EVROXWH3DWK 

8VHUV.DWK\'DWD*DPH)LOHW[W

Licensed by
Eduard Simons
104038

6RPHWKLQJV\RXFDQGRZLWKD)LOHREMHFW


$)LOHREMHFWUHSUHVHQWVWKHQDPH
DQGSDWKRIDOHRUGLUHFWRU\RQ
GLVNIRUH[DPSOH

%XWLWGRHV127UHSUHVHQWRUJLYH
\RXDFFHVVWRWKHGDWDLQWKHOH

7WKH
$QDGGUHVVLV12XDO
FW
D
VDPHDVWKH EMHFWLV
KRXVH$)LOHRGGUHVV
OLNHDVWUHHWD HQDPH
LWUHSUHVHQWVWK DSDU
DQGORFDWLRQRILWLVQW
WLFXODUILOHEXW
WKHILOHLWVHOI

KH
UHSUHVHQWVW
$)LOHREMHFW
H)LOHW[W
ILOHQDPH*DP *DPH)LOHW[W
-TNJW_[_WZLL][\
<ZWTTJIZMPIVL[JQOI`
5IOQKQIV[XMTT[QV^Q[QJQTQ\a

GRHV127
$)LOHREMH FW
JLYH\RX
UHSUHVHQW HVRU
WR WKH
V
GLUHFWDFFHWKHILOH
GDWDLQVLG

'HOHWHDOHRUGLUHFWRU\ 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<RXGKDYHWR
FDUU\HDFKWKLQJRXWWR\RXUFDURQHVRXS
FDQRUWRLOHWSDSHUUROODWDWLPH

EXIIHUVJL
SODFHWRJUYHRX\SRXDWHPSRUDU\KROGLQJ
OLNHWKHFDUW WKLQJVXQWLOWKHKROGHU
LVIXOO RXJ
IDUIHZHUW
HWWRPDNH
ULSVZKHQ\R<X
XVHDEXIIHU

GHVWLQDWLRQ
:KHQWKHEXIIHULVIXOOWKH

6WULQJLVSXWLQWRDEXIIHU
ZLWKRWKHU6WULQJV

*W]TLMZ
LVZULWWHQWR
6WULQJ

*W]TLMZ )[XMV
,MV^MZ

6WULQJVDUHDOOZULWWHQWR
LVFKDLQHGWR

$VSHQ'HQYHU%RXOGHU

%XIIHUHG:ULWHU
DFKDLQVWUHDPWKDW
ZRUNVZLWKFKDUDFWHUV

)LOH:ULWHU
DFRQQHFWLRQVWUHDP
WKDWZULWHVFKDUDFWHUV
DVRSSRVHGWRE\WHV

$VSHQ
'HQYHU
%RXOGHU

)LOH

%XIIHUHG:ULWHUZULWHU QHZ%XIIHUHG:ULWHU QHZ)LOH:ULWHU D)LOH 

4HECOOLTHINGABOUTBUFFERSISTHATTHEYREMUCHMOREEFlCIENTTHAN
WORKINGWITHOUTTHEM9OUCANWRITETOAlLEUSING&ILE7RITERALONE BY
CALLINGWRITESOME3TRING BUT&ILE7RITERWRITESEACHANDEVERYTHINGYOU
PASSTOTHElLEEACHANDEVERYTIME4HATSOVERHEADYOUDONTWANTOR
NEED SINCEEVERYTRIPTOTHEDISKISA"IG$EALCOMPAREDTOMANIPULATING
DATAINMEMORY"YCHAININGA"UFFERED7RITERONTOA&ILE7RITER THE
"UFFERED7RITERWILLHOLDALLTHESTUFFYOUWRITETOITUNTILITSFULL/NLYWHEN
THEBUFFERISFULLWILLTHE&ILE7RITERACTUALLYBETOLDTOWRITETOTHElLEONDISK

1RWLFHWKD
HGRQWHYHQ
QHHGWRNHHSWZ
D
WKH)LOH:ULWHU UHIHUHQFHWR
REMHFW7KH
RQO\WKLQJZ
H
FD
UHDERXWLVWKH
%XIIHUHG

WKHREMHFW:ZULHWHUEHFDXVHWKDWV
OO
FD
OO
P
HW
RQDQGZKHQZ
HFORVHWKHKR GV
%XIIHUHG:
UL
FDUHRIWKHUWHULWZLOOWDNH
HVWRIWKHFKD
LQ

)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
ANDA"UFFERED2EADERTOMAKETHEREADINGMOREEFlCIENT
4HEREADHAPPENSBYREADINGLINESINAWHILELOOP ENDINGTHELOOP
WHENTHERESULTOFAREAD,INE ISNULL4
HATSTHEMOSTCOMMON
STYLEFORREADINGDATAPRETTYMUCHANYTHINGTHATSNOTA3ERIALIZED
OBJECT READSTUFFINAWHILELOOPACTUALLYAWHILELOOPTEST
TERMINATINGWHENTHERESNOTHINGLEFTTOREADWHICHWEKNOW
BECAUSETHERESULTOFWHATEVERREADMETHODWEREUSINGISNULL 

SRUW

LPSRUWMDYDLR 

WWKHLP
'RQWIRUJH

$ILOHZLWKWZROLQHVRIWH[W
?PI\['
?PI\[

0\7H[WW[W

FODVV5HDG$)LOH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

$)LOH5HDGHULVDFRQQHFWLRQ

VWUHDP

IRU
FKDUDFWHUVWKDWFRQQHFWVW
WU\^
RDWH[WILOH
)LOHP\)LOH QHZ)LOH 0\7H[WW[W 
)LOH5HDGHUOH5HDGHU QHZ)LOH5HDGHU P\)LOH 
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU OH5HDGHU 

D
5HDGHUWPRRUH
H
LO
)

H
K
W

&KDLQ HG5HDGHUIRU JREDFN
%XIIHUQWUHDGLQJ,WOO ZKHQ
HIILFLH ILOHWRUHDGRQO\HFDXVHWKH
WRWKH IHULVHPSW\ E WKLQJLQLW 
WKHEXIPKDVUHDGHYHU\
SURJUD

DULDEOHWRKROG
0DNHD6WULWQJKHYOLQHLVUHDG
HDFKOLQHDV
6WULQJOLQH QXOO

ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^


6\VWHPRXWSULQWOQ OLQH 
`
7KLVVD\V5HDGDOL
6WULQJYDULDEOHOL QHRIWH[WDQGDVVLJQLWWR
UHDGHUFORVH 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`
`

WKH
EHFDXVHWKHUH $QH6:KLOHWKDWYDULDEOHLVQRWQXOO

VRPHWKLQJWRUHDG
OLQHWKDWZDVM:
SULQWRXWWKH
XVWUHDG
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
ANDPARSESINTOTWOPIECESQUESTIONANDANSWERANDCREATESANEW1UIZ#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[
SULYDWH-)UDPHIUDPH
SULYDWH-%XWWRQQH[W%XWWRQ
SULYDWHERROHDQLV6KRZ$QVZHU

-XVW*8,FRGHRQ
QRWKLQJVSHFLDO WKLVSDJH

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 
-0HQXOH0HQX 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^
$QVZHUERR DQI
VHHLIWKH\UH
ODJWR
VKRZWKHQH[WTXHVWLRQ
XUUHQWO\YLHZLQOHJ
RUDQDQVZHUF
LI FXUUHQW&DUG,QGH[FDUG/LVWVL]H ^
D
TX
HVWL
DQ
G

WKLQJGHSHQGLQJRQ GRWKHDSSURSULDWH RQ
WKHDQVZHU
VKRZ1H[W&DUG 

`HOVH^
WKHUHDUHQRPRUHFDUGV
GLVSOD\VHW7H[W 7KDWZDVODVWFDUG 
QH[W%XWWRQVHW(QDEOHG IDOVH 
`
`
`
`

SXEOLFFODVV2SHQ0HQX/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
-)LOH&KRRVHUOH2SHQ QHZ-)LOH&KRRVHU 
OH2SHQVKRZ2SHQ'LDORJ IUDPH 
KHP
ORDG)LOH OH2SHQJHW6HOHFWHG)LOH 
[DQGOHWWHQ
ER
J
OR
LD
G

LOH
I
`
%ULQJXSWKH
HWKHILOHWRRS
RV
KR
F
G
`
DQ
R
W
H
JDW

QDYL

SULYDWHYRLGORDG)LOH )LOHOH ^
FDUG/LVW QHZ$UUD\/LVW4XL]&DUG! 
WU\^
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU QHZ)LOH5HDGHU OH 
6WULQJOLQH QXOO
HUFKDLQHG
ZKLOH OLQH UHDGHUUHDG/LQH  QXOO ^
%XIIHUHG5HUHDGJLYLQJWKH
D
H
DN
0
PDNH&DUG OLQH 
LOH5HDG EMHFWWKHXVHU
WRDQHZ)W
`
)LOHR
UHDGHUFORVH 
)LOH5HDGHU KH RSHQILOHGLDORJ
`FDWFK ([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ FRXOGQWUHDGWKHFDUGOH 
H[SULQW6WDFN7UDFH 
`
QRZWLPHWRVWDUWE\VKRZLQJWKHUVWFDUG
VKRZ1H[W&DUG 
`
SULYDWHYRLGPDNH&DUG 6WULQJOLQH7R3DUVH ^
6WULQJ>@UHVXOW OLQH7R3DUVHVSOLW  
4XL]&DUGFDUG QHZ4XL]&DUG UHVXOW>@UHVXOW>@ 
FDUG/LVWDGG FDUG 
6\VWHPRXWSULQWOQ PDGHDFDUG 
`

SULYDWHYRLGVKRZ1H[W&DUG ^
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


FKRVHIURPWKH

LPHSDVVLQJWGKH
W
D
DW
H
LQ

O
D
KR
5HDG
DNH&DUG PLHWWLQWRD
OLQHWRWKHP
QV
XU
W
QG
D
WKDWSDUVHVDULWGDQGDGGVLWWRWKH
UHDO4XL]&
$UUD\/LVW

DVLQJOH
(DFKOLQHRIWH[WFRUUHVSRQGVWRRXW
WKH
UVH
RSD
YHW
IODVKFDUGEXWZHKD
V:H
LHFH
WHS
SDUD
DVVH
ZHU
DQV
DQG
WLRQ
TXHV
NWKH
EUHD
WR
WKRG
PH
XVHWKH6WULQJVSOLW
Q
VWLR
TXH
WKH
IRU
RQH
HQV
WRN
WZR
LQWR
OLQH

WKH
NDW
OORR
:HO
HU 
DQGRQHIRUWKHDQVZ
JH
WSD
QH[
WKH
GRQ
HWKR
VSOLW P

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\
,PDJLQH\RXKDYHDDVKFDUGOLNHWKLV

6DYHGLQDTXHVWLRQOHOLNHWKLV

?PI\Q[JT]MaMTTW_'OZMMV
?PI\Q[ZMLJT]M'X]ZXTM

TXHVWLRQ
TW_'

?PI\Q[JT]MaMT

DQVZHU

OZMMV

+RZGR\RXVHSDUDWHWKHTXHVWLRQDQGDQVZHU"
:KHQ\RXUHDGWKHOHWKHTXHVWLRQDQGDQVZHUDUHVPRRVKHG
WRJHWKHULQRQHOLQHVHSDUDWHGE\DIRUZDUGVODVK EHFDXVH
WKDWVKRZZHZURWHWKHOHLQWKH4XL]&DUG%XLOGHUFRGH 

6WULQJVSOLW OHWV\RXEUHDND6WULQJLQWRSLHFHV
7KHVSOLW PHWKRGVD\VJLYHPHDVHSDUDWRUDQG,OOEUHDNRXWDOO
WKHSLHFHVRIWKLV6WULQJIRU\RXDQGSXWWKHPLQD6WULQJDUUD\

WRNHQ

VHSDUDWRU

WRNHQ

6WULQJWR7HVW :KDWLVEOXH\HOORZ"JUHHQ

\HUDSSWKLV
,QWKH4XL]&DUHG3OLQODHORRNVOLNH
LVZKDWDVLQJO LQIURPWKHILOH
ZKHQLWVUHDG

7KHVSOLW PHWKRGWDNHVWKH
EUHDNDSDUWWKH6WULQJLQWR LQDQGXVHVLWWR
SLHFHV 1RWHVSOLW LV)$5PRUHWKLVFDVH WZR
SRZHUIXOWKDQ
ZKDWZHUHXVLQJLWIRUK
HUH
,W
FD
FRPSOH[SDUVLQJZLWKILOWHUVZ QGRH[WUHPHO\
LOGFDUGVHWF
/RRSWKURXJKWKH
DU
UD
\
DQ
GSULQWHDFKWRNHQ
SLHFH ,QWKLVH[

DPSOHWKHUHDUH
WRNHQV:KDWLV
EOXH\HOORZ"DRQO\WZR
QGJUHHQ

6WULQJ>@UHVXOW WR7HVWVSOLW  
IRU 6WULQJWRNHQUHVXOW ^
6\VWHPRXWSULQWOQ WRNHQ 
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
MILLIONCLASSESINTHEJAVAIOPACKAGE(OWTHEHECKDO
YOUKNOWWHICHONESTOUSE

A:

4HE)/!0)USESTHEMODULAR@CHAININGCONCEPTSO
THATYOUCANHOOKTOGETHERCONNECTIONSTREAMSANDCHAIN
STREAMSALSOCALLED@FILTERSTREAMS INAWIDERANGEOF
COMBINATIONSTOGETJUSTABOUTANYTHINGYOUCOULDWANT

0DNH LW 6WLFN
IOLETSARENEXT
2OSESAREFIRST V
ORTEXT
RITERSAREONLYF
2EADERSAND7

4HECHAINSDONTHAVETOSTOPATTWOLEVELSYOUCANHOOK
MULTIPLECHAINSTREAMSTOONEANOTHERTOGETJUSTTHERIGHT
AMOUNTOFPROCESSINGYOUNEED
-OSTOFTHETIME THOUGH YOULLUSETHESAME
SMALLHANDFULOFCLASSES)FYOUREWRITINGTEXTFILES
"UFFERED2EADERAND"UFFERED7RITERCHAINEDTO&ILE2EADER
AND&ILE7RITER AREPROBABLYALLYOUNEED)FYOUREWRITING
SERIALIZEDOBJECTS YOUCANUSE/BJECT/UTPUT3TREAMAND
/BJECT)NPUT3TREAMCHAINEDTO&ILE)NPUT3TREAMAND
&ILE/UTPUT3TREAM 
)NOTHERWORDS OFWHATYOUMIGHTTYPICALLYDOWITH
*AVA)/CANUSEWHATWEVEALREADYCOVERED

Q:
A:

7HATABOUTTHENEW)/NIOCLASSESADDEDIN

4HEJAVANIOCLASSESBRINGABIGPERFORMANCE
IMPROVEMENTANDTAKEGREATERADVANTAGEOFNATIVE
CAPABILITIESOFTHEMACHINEYOURPROGRAMISRUNNING
ON/NEOFTHEKEYNEWFEATURESOFNIOISTHATYOUHAVE
DIRECTCONTROLOFBUFFERS!NOTHERNEWFEATUREISNON
BLOCKING)/ WHICHMEANSYOUR)/CODEDOESNTJUSTSIT
THERE WAITING IFTHERESNOTHINGTOREADORWRITE3OME
OFTHEEXISTINGCLASSESINCLUDING&ILE)NPUT3TREAMAND
&ILE/UTPUT3TREAM TAKEADVANTAGEOFSOMEOFTHENEW
FEATURES UNDERTHECOVERS4HENIOCLASSESAREMORE
COMPLICATEDTOUSE HOWEVER SOUNLESSYOUREALLYNEEDTHE
NEWFEATURES YOUMIGHTWANTTOSTICKWITHTHESIMPLER
VERSIONSWEVEUSEDHERE0LUS IFYOURENOTCAREFUL NIOCAN
LEADTOAPERFORMANCELOSS.ON NIO)/ISPROBABLYRIGHT
FOROFWHATYOULLNORMALLYDO ESPECIALLYIFYOUREJUST
GETTINGSTARTEDIN*AVA
"UTYOUCANEASEYOURWAYINTOTHENIOCLASSES BYUSING
&ILE)NPUT3TREAMANDACCESSINGITSCHANNELTHROUGHTHE
GET#HANNEL METHODADDEDTO&ILE)NPUT3TREAMASOF
VERSION 

:MDD=LHGAFLK

 7RZULWHDWH[WILOHVWDUWZLWKD)LOH:ULWHU
FRQQHFWLRQVWUHDP

 &KDLQWKH)LOH:ULWHUWRD%XIIHUHG:ULWHUIRU
HIILFLHQF\

 $)LOHREMHFWUHSUHVHQWVDILOHDWDSDUWLFXODU






SDWKEXWGRHVQRWUHSUHVHQWWKHDFWXDO
FRQWHQWVRIWKHILOH
:LWKD)LOHREMHFW\RXFDQFUHDWHWUDYHUVH
DQGGHOHWHGLUHFWRULHV
0RVWVWUHDPVWKDWFDQXVHD6WULQJILOHQDPH
FDQXVHD)LOHREMHFWDVZHOODQGD)LOHREMHFW
FDQEHVDIHUWRXVH
7RUHDGDWH[WILOHVWDUWZLWKD)LOH5HDGHU
FRQQHFWLRQVWUHDP
&KDLQWKH)LOH5HDGHUWRD%XIIHUHG5HDGHUIRU
HIILFLHQF\
7RSDUVHDWH[WILOH\RXQHHGWREHVXUHWKH
ILOHLVZULWWHQZLWKVRPHZD\WRUHFRJQL]HWKH
GLIIHUHQWHOHPHQWV$FRPPRQDSSURDFKLVWR
XVHVRPHNLQGRIFKDUDFWHUWRVHSDUDWHWKH
LQGLYLGXDOSLHFHV
8VHWKH6WULQJVSOLW PHWKRGWRVSOLWD6WULQJ
XSLQWRLQGLYLGXDOWRNHQV$6WULQJZLWKRQH
VHSDUDWRUZLOOKDYHWZRWRNHQVRQHRQHDFK
VLGHRIWKHVHSDUDWRU7KHVHSDUDWRUGRHVQW
FRXQWDVDWRNHQ

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
YOUSTICKTOTHEMOSTCOMMONCONNECTIONCHAINCOMBINATIONS"UT
THERESONEISSUEYOUMIGHTREALLYCAREABOUT










9HUVLRQ&RQWUROLVFUXFLDO
)FYOUSERIALIZEANOBJECT YOUMUSTHAVETHECLASSINORDERTO
DESERIALIZEANDUSETHEOBJECT/+ THATSOBVIOUS"UTWHATMIGHT
BELESSOBVIOUSISWHATHAPPENSIFYOUCHANGETHECLASSINTHE
MEANTIME9IKES)MAGINETRYINGTOBRINGBACKA$OGOBJECTWHEN
ONEOFITSINSTANCEVARIABLESNON TRANSIENT HASCHANGEDFROMA
DOUBLETOA3TRING4HATVIOLATES*AVASTYPE SAFESENSIBILITIESINA"IG
7AY"UTTHATSNOTTHEONLYCHANGETHATMIGHTHURTCOMPATIBILITY
4HINKABOUTTHEFOLLOWING

<RXZULWHD'RJFODVV

Q
FODVVYHUVLR


,'

'RJFODVV

<RXVHULDOL]HD'RJREMHFW
XVLQJWKDWFODVV


'RJREMHFW

'RJREMHFW

&KDQJHVWRDFODVVWKDWFDQKXUWGHVHULDOL]DWLRQ

2EMHFWLVZLWK
VWDPSHG 
YHUVLRQ

$ELETINGANINSTANCEVARIABLE
#HANGINGTHEDECLAREDTYPEOFANINSTANCEVARIABLE

#HANGINGANON TRANSIENTINSTANCEVARIABLETOTRANSIENT










-OVINGACLASSUPORDOWNTHEINHERITANCEHIERARCHY
#HANGINGACLASSANYWHEREINTHEOBJECTGRAPH FROM3ERIALIZABLE
TONOT3ERIALIZABLEBYREMOVING@IMPLEMENTS3ERIALIZABLEFROMA
CLASSDECLARATION
#HANGINGANINSTANCEVARIABLETOSTATIC

<RXFKDQJHWKH'RJFODVV

'RJFODVV

<RXGHVHULDOL]HD'RJREMHFW
XVLQJWKHFKDQJHGFODVV

&KDQJHVWRDFODVVWKDWDUHXVXDOO\2.
!DDINGNEWINSTANCEVARIABLESTOTHECLASSEXISTINGOBJECTSWILL
DESERIALIZEWITHDEFAULTVALUESFORTHEINSTANCEVARIABLESTHEYDIDNT
HAVEWHENTHEYWERESERIALIZED
!DDINGCLASSESTOTHEINHERITANCETREE
2EMOVINGCLASSESFROMTHEINHERITANCETREE

'RJREMHFW

2EMHFWLV
VWDPSHGZLWK
YHUVLRQ

#HANGINGTHEACCESSLEVELOFANINSTANCEVARIABLEHASNOAFFECTON
THEABILITYOFDESERIALIZATIONTOASSIGNAVALUETOTHEVARIABLE
#HANGINGANINSTANCEVARIABLEFROMTRANSIENTTONON TRANSIENT
PREVIOUSLY SERIALIZEDOBJECTSWILLSIMPLYHAVEADEFAULTVALUEFORTHE
PREVIOUSLY TRANSIENTVARIABLES

FODVVYHUVLRQ,'











'RJFODVV

QLV
FODVVYHUVLR



6HUDLOL]DWLRQIDLOV
7KH-90VD\V\RXFDQW
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
BEINGDESERIALIZED IFTHECLASSHASCHANGEDSINCETHE
OBJECTWASSERIALIZED THECLASSCOULDHAVEADIFFERENT
SERIAL6ERSION5)$ ANDDESERIALIZATIONWILLFAIL"UTYOU
CANCONTROLTHIS

:KHQ\RXWKLQN\RXUFODVV
PLJKWHYROYHDIWHUVRPHRQHKDV
VHULDOL]HGREMHFWVIURPLW
 8VHWKHVHULDOYHUFRPPDQGOLQHWRRO

,I\RXWKLQNWKHUHLV$1<SRVVLELOLW\WKDW
\RXUFODVVPLJKWHYROYHSXWDVHULDOYHUVLRQ
,'LQ\RXUFODVV
7HEN*AVATRIESTODESERIALIZEANOBJECT ITCOMPARES
THESERIALIZEDOBJECTSSERIAL6ERSION5)$WITHTHATOFTHE
CLASSTHE*6-ISUSINGFORDESERIALIZINGTHEOBJECT&OR
EXAMPLE IFA$OGINSTANCEWASSERIALIZEDWITHAN)$OF
SAYINREALITYASERIAL6ERSION5)$ISMUCHLONGER
WHENTHE*6-DESERIALIZESTHE$OGOBJECTITWILLlRST
COMPARETHE$OGOBJECTSERIAL6ERSION5)$WITHTHE
$OGCLASSSERIAL6ERSION5)$)FTHETWONUMBERSDONT
MATCH THE*6-ASSUMESTHECLASSISNOTCOMPATIBLE
WITHTHEPREVIOUSLY SERIALIZEDOBJECT ANDYOULLGETAN
EXCEPTIONDURINGDESERIALIZATION
3O THESOLUTIONISTOPUTASERIAL6ERSION5)$
INYOURCLASS ANDTHENASTHECLASSEVOLVES THE
SERIAL6ERSION5)$WILLREMAINTHESAMEANDTHE*6-
WILLSAY h/+ COOL THECLASSISCOMPATIBLEWITHTHIS
SERIALIZEDOBJECTvEVENTHOUGHTHECLASSHASACTUALLY
CHANGED
4HISWORKSONLYIFYOURECAREFULWITHYOURCLASS
CHANGES)NOTHERWORDS YOUARETAKINGRESPONSIBILITY
FORANYISSUESTHATCOMEUPWHENANOLDEROBJECTIS
BROUGHTBACKTOLIFEWITHANEWERCLASS
4OGETASERIAL6ERSION5)$FORACLASS USETHESERIALVER
TOOLTHATSHIPSWITHYOUR*AVADEVELOPMENTKIT
)LOH(GLW:LQGRZ+HOSVHULDO.LOOHU

VHULDOYHU'RJ
'RJVWDWLFILQDOORQJ
VHULDO9HUVLRQ8,' 
/

WRJHWWKHYHUVLRQ,'IRU\RXUFODVV
)LOH(GLW:LQGRZ+HOSVHULDO.LOOHU

VHULDOYHU'RJ
'RJVWDWLFILQDOORQJ
VHULDO9HUVLRQ8,' 
/

 3DVWHWKHRXWSXWLQWR\RXUFODVV
SXEOLFFODVV'RJ^
VWDWLFQDOORQJVHULDO9HUVLRQ8,'
/
SULYDWH6WULQJQDPH
SULYDWHLQWVL]H
PHWKRGFRGHKHUH
`

 %HVXUHWKDWZKHQ\RXPDNHFKDQJHVWR
WKHFODVV\RXWDNHUHVSRQVLELOLW\LQ\RXU
FRGHIRUWKHFRQVHTXHQFHVRIWKHFKDQJHV
\RXPDGHWRWKHFODVV)RUH[DPSOHEH
VXUHWKDW\RXUQHZ'RJFODVVFDQGHDOZLWK
DQROG'RJEHLQJGHVHULDOL]HGZLWKGHIDXOW
YDOXHVIRULQVWDQFHYDULDEOHVDGGHGWRWKH
FODVVDIWHUWKH'RJZDVVHULDOL]HG

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
104038


FNVHULDOL]H,W
:KHQ\RXHQFWOLSDWWHUQZLOO
WKHFXUU 
EHVDYHG

UHVWRUHORDGVWKHV
SDWWHUQEDFNLQ DYHG
WKHFKHFNER[HV DQGUHVHWV

Lets 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
H
RG
[F
%R
HDW
WKH%
SXEOLFFODVV0\6HQG/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
ERROHDQ>@FKHFNER[6WDWH QHZERROHDQ>@
IRU LQWL LL ^

VHUFOLFNVWKH
,WDOOKDSSHQVZKHQWKHX
HV
EXWWRQDQGWKH$FWLRQ(YHQWILU

0DNHDERROHDQ UUD\
WRKROGWKH
VWDWHRIHDFKFKDHF
NER[

-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L  :DONWK


URXJK
LI FKHFNLV6HOHFWHG ^
$UUD\/LVWRIWKFKHHFFKNEHFNER[/LVW
FKHFNER[6WDWH>L@ WUXH
JHWWKHVWDWHRIHDF R[HV DQG
KRQHDQG
`
DGGLWWRWKHER
ROHDQDUUD\
`
WU\^
)LOH2XWSXW6WUHDPOH6WUHDP QHZ)LOH2XWSXW6WUHDP QHZ)LOH &KHFNER[VHU 
2EMHFW2XWSXW6WUHDPRV QHZ2EMHFW2XWSXW6WUHDP OH6WUHDP 
RVZULWH2EMHFW FKHFNER[6WDWH 
7KLVSDUWVDSLHFHR
`FDWFK ([FHSWLRQH[ ^
ZULWHVHULDOL]HWKHRQIFDNH-XVW
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
ODVV
%R
HDW
H%
LQVLGHWK

SXEOLFFODVV0\5HDG,Q/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
ERROHDQ>@FKHFNER[6WDWH QXOO
WU\^
)LOH,QSXW6WUHDPOH,Q QHZ)LOH,QSXW6WUHDP QHZ)LOH &KHFNER[VHU 
2EMHFW,QSXW6WUHDPLV QHZ2EMHFW,QSXW6WUHDP OH,Q 
FKHFNER[6WDWH  ERROHDQ>@ LVUHDG2EMHFW 
WLQWKHILOH WKH
5HDGWKHVLQJOHREMHFDVW
LWEDFNWRD

GF
DUUD\ DQ
DQ
ROH
ER
W 
`FDWFK ([FHSWLRQH[ ^H[SULQW6WDFN7UDFH `
DUUD\ UHPHPEHUUHDG2EMHF

ERROHDQ
2EMHFW
UHWXUQVDUHIHUHQFHRIW\SH

IRU LQWL LL ^


-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L 
LI FKHFNER[6WDWH>L@ ^
1RZUHVWRUHWKHVWDW IHDFK
FKHFNVHW6HOHFWHG WUXH 
RIWKH
FKHFNER[HVLQWKH$UUDHR
`HOVH^
LVWRIDFWXDO
FKHFNVHW6HOHFWHG IDOVH 
-&KHFN%R[REMHFWV FKH\/
FNER[/LVW 
`
`
VHTXHQFHUVWRS 
EXLOG7UDFN$QG6WDUW 
`FORVHPHWKRG
`FORVHLQQHUFODVV

J
1RZVWRSZKDWHYHULVFXUUHQWO\SOD\LQ

QHZ
WKH
XVLQJ
QFH
HTXH
KHV
LOGW
DQGUHEX
LVW
UD\/
H$U
LQWK
VWDWHRIWKHFKHFNER[HV

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

:KDWV/HJDO"
&LUFOHWKHFRGHIUDJPHQWV
WKDWZRXOGFRPSLOH DVVXPLQJ
WKH\UHZLWKLQDOHJDOFODVV 

)LOH5HDGHUOH5HDGHU QHZ)LOH5HDGHU 
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU OH5HDGHU 

)LOH2XWSXW6WUHDPI QHZ)LOH2XWSXW6WUHDP QHZ)LOH )RRVHU 


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

1dQ^OU_Q

4HISCHAPTEREXPLOREDTHEWONERFULWORLDOF
*AVA)/9OURJOBISTODECIDEWHETHEREACH
OFTHEFOLLOWING)/ RELATEDSTATEMENTSIS
TRUEORFALSE

&=[^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
WU\^

DPHLPSOHPHQWV

FODVV'XQJHRQ*

HZ
UHDPIRV Q
)LOH2XWSXW6W
VHU 
W6WUHDP GJ
)LOH2XWSX

VKRUWJHW= ^
UHWXUQ]

HSULQW6WDFN7UDFH 

RRVFORVH 

2EMHFW,QSXW6WUHDPRLV QH
2EMHFW,QSXW6WUHDP V 

LQWJHW; ^
UHWXUQ[

6\VWHPRXWSULQWOQ GJHW; GJHW< GJHW= 

SXEOLFLQW[ 
)LOH,QSXW6WUHDPV QHZ

U
VH
GJ
DP
WUH
WUDQVLHQWORQJ\ 
)LOH,QSXW6
SULYDWHVKRUW] 
ORQJJHW< ^
UHWXUQ\

RLVFORVH 

IRVZULWH2EMHFW G 

FODVV'X

QJHRQ7HV

W^

LPSRUWMDYDLR

`FDWFK ([FHSWL

RQH ^

G  'XQJHRQ*DPH RLVUHDG2EMHFW 

)LOH(GLW:LQGRZ+HOS7RUWXUH

MDYD'XQJHRQ7HVW



2EMHFW2XWSXW6WUHDPRRV QHZ
2EMHFW2XWSXW6WUHDP IRV 

RRVZULWH2EMHFW

G 

^

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

#HAINSTREAMSCANBEUSEDONTHEIROWNORWITHCONNECTIONSTREAMS

7UXH

)DOVH

!SINGLECALLTOWRITE/BJECT CANCAUSEMANYOBJECTSTOBESAVED

7UXH

!LLCLASSESARESERIALIZABLEBYDEFAULT

)DOVH

4HETRANSIENTMODIlERALLOWSYOUTOMAKEINSTANCEVARIABLESSERIALIZABLE

)DOVH

)FASUPERCLASSISNOTSERIALIZABLETHENTHESUBCLASSCANTBESERIALIZABLE

)DOVH

7HENOBJECTSAREDESERIALIZEDTHEYAREREADBACKINLAST IN lRSTOUTSEQUENCE )DOVH


7HENANOBJECTISDESERIALIZED ITSCONSTRUCTORDOESNOTRUN

"OTHSERIALIZATIONANDSAVINGTOATEXTlLECANTHROWEXCEPTIONS
"UFFERED7RITERSCANBECHAINEDTO&ILE7RITERS

&ILEOBJECTSREPRESENTlLES BUTNOTDIRECTORIES

7UXH

7UXH

9OUCANTFORCEABUFFERTOSENDITSDATABEFOREITSFULL
"OTHlLEREADERSANDlLEWRITERSCANOPTIONALLYBEBUFFERED

7UXH

)DOVH
)DOVH

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
*RRGWKLQJZHUH
QDOO\DWWKHDQVZHUV
,ZDVJHWWLQNLQGRI
WLUHGRIWKLVFKDSWHU

LPSRUWMDYDLR 
FODVV'XQJHRQ*DPHLPSOHPHQWV6HULDOL]DEOH^
SXEOLFLQW[ 
WUDQVLHQWORQJ\ 
SULYDWHVKRUW] 
LQWJHW; ^
UHWXUQ[
`
ORQJJHW< ^
UHWXUQ\
`
VKRUWJHW= ^
UHWXUQ]
`
`

)LOH(GLW:LQGRZ+HOS(VFDSH

MDYD'XQJHRQ7HVW



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,QSXW6WUHDPV QHZ)LOH,QSXW6WUHDP GJVHU 
2EMHFW,QSXW6WUHDPRLV QHZ2EMHFW,QSXW6WUHDP V 
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
LWVEHWWHUIRU

VHTXHQFH

VN\OHUIDVWD
QGIXQN\JRRG
IRU
VHTXHQFH
HYVWHUOLNHV
N\OHUEXWP
RUH
2DNHQIROGLVK

VN\OHU\RX:

DJHDQG
7\SHDPHHVVVHQG,WEXWWRQ
SUHVVWK RXUPHVVDJH
WRVHQG\XUFXUUHQWEHDW
$1'\R
SDWWHUQ

,6+7RRSHUN

9OUREWORKINGONACOMPUTERGAME9OUANDYOURTEAM
AREDOINGTHESOUNDDESIGNFOREACHPARTOFTHEGAME
5SINGA@CHATVERSIONOFTHE"EAT"OX YOURTEAMCAN
COLLABORATEYOUCANSENDABEATPATTERNALONGWITH
YOURCHATMESSAGE ANDEVERYBODYINTHE"EAT"OX#HAT
GETSIT3OYOUDONTJUSTGETTOREADTHEOTHER
PARTICIPANTSMESSAGES YOUGETTOLOADAND
PLAYABEATPATTERNSIMPLYBYCLICKINGTHE
MESSAGEINTHEINCOMINGMESSAGESAREA

GPHVVDJH
FOLFNLQJRQDUHFHUQLYH
KDWZHQW
W
WH
ORDGVWKHSDW
ZLWKLW

)NTHISCHAPTERWEREGOINGTOLEARNWHATIT
TAKESTOMAKEACHATCLIENTLIKETHIS7ERE
EVENGOINGTOLEARNALITTLEABOUTMAKINGA
CHATSERVER7ELLSAVETHEFULL"EAT"OX#HAT
FORTHE#ODE+ITCHEN BUTINTHISCHAPTERYOU
WILLWRITEA,UDICROUSLY3IMPLE#HAT#LIENTAND
6ERY3IMPLE#HAT3ERVERTHATSENDANDRECEIVE
TEXTMESSAGES

<RXFDQKDYHFRP WH
O\
DXWKHQWLFLQWHOOHFSOH
WX
DOO
\
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"'RQW
H[SHFW0(WR
DQVZHUWKDW

WKHUHDUHFXUUHQWO\
SDUWLFLSDQWVLQ
WKLVFKDWVHVVLRQ
&OLHQW$&OLHQW%
DQG&OLHQW&

7KH&OLHQWKDVWRNQRZ
DERXWWKH6HUYHU
7KH6HUYHUKDVWRNQRZ
DERXW$//WKH&OLHQWV

&OLHQW$

6HUYHU

:K\DP,
KHUH"'RQW
H[SHFW0(WR
DQVZHUWKDW

:K\DP,
KHUH"'RQW
H[SHFW0(WR
DQVZHUWKDW

Licensed by
Eduard Simons
104038
&OLHQW%

&OLHQW&

+RZLW:RUNV


&OLHQWFRQQHFWVWRWKHVHUYHU

6HUYHU,GOLNHWRFRQQHFW
WRWKHFKDWVHUYLFH

&OLHQW$

2.\RXUHLQ

 7KHVHUYHUPDNHVD

FRQQHFWLRQDQGDGGVWKHFOLHQW
WRWKHOLVWRISDUWLFLSDQWV

 $QRWKHUFOLHQWFRQQHFWV

&OLHQW$
:K\DP,KHUH"
'RQWH[SHFW
0(WRDQVZHU
WKDW6RZK\DP

&OLHQW$VHQGVDPHVVDJHWR
WKHFKDWVHUYLFH

 7KHVHUYHUGLVWULEXWHVWKH
PHVVDJHWR$//SDUWLFLSDQWV
LQFOXGLQJWKHRULJLQDOVHQGHU

:K\DP,KHUH"
'RQWH[SHFW
0(WRDQVZHU
WKDW6RZK\DP

3DUWLFLSDQWV
&OLHQW$

3DUWLFLSDQWV
&OLHQW$
&OLHQW%
6HUYHU

:KRWRRNWKHODYDODPS
IURPP\GRUPURRP"

&OLHQW$

0HVVDJH
UHFHLYHG
6HUYHU

:KRWRRNWKHODYDODPS
IURPP\GRUPURRP"

:K\DP,KHUH"
'RQWH[SHFW
0(WRDQVZHU
WKDW6RZK\DP

&OLHQW$

6HUYHU

6HUYHU

6HUYHU,GOLNHWRFRQQHFW
WRWKHFKDWVHUYLFH
2.\RXUHLQ

&OLHQW%

:DLWLQJIRU
FOLHQWUHTXHVWV

:K\DP,KHUH"
'RQWH[SHFW
0(WRDQVZHU
WKDW6RZK\DP

0HVVDJH
GLVWULEXWHGWR
DOOSDUWLFLSDQWV
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

0DNHDVRFNHWFRQQHFWLRQWR
DWSRUW

6HUYHU

&OLHQW$

FKDWVHUYHUDW

SRUW

6HQG
&OLHQWVHQGVDPHVVDJHWRWKHVHUYHU

ZULWHUSULQWOQ D0HVVDJH

6HUYHU

&OLHQW$

6HUYHU
PDFKLQHDW


5HFHLYH
&OLHQWJHWVDPHVVDJHIURPWKHVHUYHU

6WULQJV UHDGHUUHDG/LQH
&OLHQW$

6HUYHU
PDFKLQHDW

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
FRQQHFWLRQ\RXQHHG
WRNQRZWZRWKLQJV
DERXWWKHVHUYHUZKR
LWLVDQGZKLFKSRUW
LWVUXQQLQJRQ

4OCONNECTTOANOTHERMACHINE WENEEDA3OCKETCONNECTION
!3OCKETJAVANET3OCKETCLASS ISANOBJECTTHATREPRESENTS
ANETWORKCONNECTIONBETWEENTWOMACHINES7HATSA
CONNECTION!RELATIONSHIPBETWEENTWOMACHINES WHERETWO
PIECESOFSOFTWAREKNOWABOUTEACHOTHER-OSTIMPORTANTLY
THOSETWOPIECESOFSOFTWAREKNOWHOWTOCOMMUNICATEWITH
EACHOTHER)NOTHERWORDS HOWTOSENDBITSTOEACHOTHER
7EDONTCAREABOUTTHELOW LEVELDETAILS THANKFULLY BECAUSE
THEYREHANDLEDATAMUCHLOWERPLACEINTHE@NETWORKING
STACK)FYOUDONTKNOWWHATTHE@NETWORKINGSTACKIS DONT
WORRYABOUTIT)TSJUSTAWAYOFLOOKINGATTHELAYERSTHAT
INFORMATIONBITS MUSTTRAVELTHROUGHTOGETFROMA*AVA
PROGRAMRUNNINGINA*6-ONSOME/3 TOPHYSICALHARDWARE
ETHERNETCABLES FOREXAMPLE ANDBACKAGAINONSOMEOTHER
MACHINE3OMEBODYHASTOTAKECAREOFALLTHEDIRTYDETAILS
"UTNOTYOU4HATSOMEBODYISACOMBINATIONOF/3 SPECIlC
SOFTWAREANDTHE*AVANETWORKING!0)4HEPARTTHATYOUHAVE
TOWORRYABOUTISHIGH LEVELMAKETHATVERYHIGH LEVELAND
SHOCKINGLYSIMPLE2EADY

,QRWKHUZRUGV
,3DGGUHVVDQG7&3
SRUWQXPEHU

7&3SRUWQ

XPEHU

6RFNHWFKDW6RFNHW QHZ6RFNHW  

VHUYHU
,3DGGUHVVIRUWKH
7KHFKDWVHUYHULVDW
SRUW
:KHQ,QHHGWRWDONWRKLP
WKDWVZKHUH,OOVHQG
WKHPHVVDJH

7KLVFOLHQWLVDW

6RFNHWF
WRSRUWRQQHFWLRQ
RQWKHVHUY 
HUDW


QQHFWLRQ
6RFNHWRFRWKHFOLHQWDW
EDFNW SRUW



&OLHQW

SRUW
:KHQ,QHHGWRWDONWR
KLPWKDWVZKHUH,OOVHQG
WKHPHVVDJH

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[
I[XMKQNQKXZWOZIUWV\PM[MZ ^MZ

:HOONQRZQ7&3SRUWQXPEHUV
IRUFRPPRQVHUYHUDSSOLFDWLRQV

)73
9OURINTERNETWEB(440 SERVERRUNSONPORT4HATSA
STANDARD)FYOUVEGOTA4ELNETSERVER ITSRUNNINGONPORT
&400/0MAILSERVER3-404HE4IME
SERVERSITSAT4HINKOFPORTNUMBERSASUNIQUEIDENTIlERS
4HEYREPRESENTALOGICALCONNECTIONTOAPARTICULARPIECEOF
SOFTWARERUNNINGONTHESERVER4HATSIT9OUCANTSPINYOUR
HARDWAREBOXAROUNDANDlNDA4#0PORT&ORONETHING
YOUHAVEOFTHEMONASERVER  3OTHEY
OBVIOUSLYDONTREPRESENTAPLACETOPLUGINPHYSICALDEVICES
4HEYREJUSTANUMBERREPRESENTINGANAPPLICATION
7ITHOUTPORTNUMBERS THESERVERWOULDHAVENOWAYOF
KNOWINGWHICHAPPLICATIONACLIENTWANTEDTOCONNECTTO
!NDSINCEEACHAPPLICATIONMIGHTHAVEITSOWNUNIQUE
PROTOCOL THINKOFTHETROUBLEYOUDHAVEWITHOUTTHESE
IDENTIlERS7HATIFYOURWEBBROWSER FOREXAMPLE LANDED
ATTHE0/0MAILSERVERINSTEADOFTHE(440SERVER4HE
MAILSERVERWONTKNOWHOWTOPARSEAN(440REQUEST!ND
EVENIFITDID THE0/0SERVERDOESNTKNOWANYTHINGABOUT
SERVICINGTHE(440REQUEST
7HENYOUWRITEASERVERPROGRAM YOULLINCLUDECODETHAT
TELLSTHEPROGRAMWHICHPORTNUMBERYOUWANTITTORUNON
YOULLSEEHOWTODOTHISIN*AVAALITTLELATERINTHISCHAPTER 
)NTHE#HATPROGRAMWEREWRITINGINTHISCHAPTER WEPICKED
*USTBECAUSEWEWANTEDTO!NDBECAUSEITMETTHE
CRITERIATHATITBEANUMBERBETWEENAND7HY
"ECAUSETHROUGHARERESERVEDFORTHEWELL
KNOWNSERVICESLIKETHEONESWEJUSTTALKEDABOUT
!NDIFYOUREWRITINGSERVICESSERVERPROGRAMS TORUNON
ACOMPANYNETWORK YOUSHOULDCHECKWITHTHESYS ADMINS
TOlNDOUTWHICHPORTSAREALREADYTAKEN9OURSYS ADMINS
MIGHTTELLYOU FOREXAMPLE THATYOUCANTUSEANYPORT
NUMBERBELOW SAY )NANYCASE IFYOUVALUEYOURLIMBS
YOUWONTASSIGNPORTNUMBERSWITHABANDON5NLESSITS
YOURHOMENETWORK)NWHICHCASEYOUJUSTHAVETOCHECKWITH
YOURKIDS

7HOQHW

6073

  
6HUYHU



7LPH

  
+773
323
$VHUYHUFDQKDYHXSWR
GLIIHUHQWVHUYHUDSSVUXQQLQJ
RQHSHUSRUW
+7736

7KH7&3SRUW
QXPEHUVIURPWR
DUHUHVHUYHGIRUZHOO
NQRZQVHUYLFHV'RQW
XVHWKHPIRU\RXURZQ
VHUYHUSURJUDPV
7KHFKDWVHUYHUZHUH
ZULWLQJXVHVSRUW
:HMXVWSLFNHGD
QXPEHUEHWZHHQ
DQG
: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
NUMBEROFTHESERVERPROGRAMYOU
WANTTOTALKTO

3RUWQXPEHULV
VWRUHLQWKHPDOOWKHVSHFLILF

,3DGGUHVVLVWKHPDOO

A:

4HATDEPENDSONWHETHERTHE
PROGRAMISONEOFTHEWELL KNOWN
SERVICES)FYOURETRYINGTOCONNECT
TOAWELL KNOWNSERVICE LIKETHEONES
ONTHEOPPOSITEPAGE(440 3-40
&40 ETC YOUCANLOOKTHESEUPON
THEINTERNET'OOGLEh7ELL +NOWN
4#00ORTv /RASKYOURFRIENDLY
NEIGHBORHOODSYS ADMIN
"UTIFTHEPROGRAMISNTONEOFTHE
WELL KNOWNSERVICES YOUNEEDTO
FINDOUTFROMWHOEVERISDEPLOYING
THESERVICE!SKHIM/RHER4YPICALLY
IFSOMEONEWRITESANETWORKSERVICE
ANDWANTSOTHERSTOWRITECLIENTSFOR
IT THEYLLPUBLISHTHE)0ADDRESS PORT
NUMBER ANDPROTOCOLFORTHESERVICE
&OREXAMPLE IFYOUWANTTOWRITEA
CLIENTFORA'/GAMESERVER YOUCAN
VISITONEOFTHE'/SERVERSITESAND
FINDINFORMATIONABOUTHOWTOWRITEA
CLIENTFORTHATPARTICULARSERVER

Q:

#ANTHEREEVERBEMORETHAN
ONEPROGRAMRUNNINGONASINGLE
PORT)NOTHERWORDS CANTWO
APPLICATIONSONTHESAMESERVERHAVE
THESAMEPORTNUMBER

A:

.O)FYOUTRYTOBINDAPROGRAM
TOAPORTTHATISALREADYINUSE YOULL
GETA"IND%XCEPTION4OBINDAPROGRAM
TOAPORTJUSTMEANSSTARTINGUPA
SERVERAPPLICATIONANDTELLINGITTORUN
ONAPARTICULARPORT!GAIN YOULLLEARN
MOREABOUTTHISWHENWEGETTOTHE
SERVERPARTOFTHISCHAPTER

,3DGGUHVVLVOLNHVSHFLI\LQJD
SDUWLFXODUVKRSSLQJPDOOVD\
)ODWLURQV0DUNHWSODFH

3RUWQXPEHULVOLNHQDPLQJ
DVSHFLFVWRUHVD\
%REV&'6KRS

DLQ EDUEHOO
EU%UDLQ%DUEHOO
/+ YOUGOTA3OCKETCONNECTION4HECLIENTANDTHE
SERVERKNOWTHE)0ADDRESSAND4#0PORTNUMBERFOR
EACHOTHER.OWWHAT(OWDOYOUCOMMUNICATE
OVERTHATCONNECTION)NOTHERWORDS HOWDOYOU
MOVEBITSFROMONETOTHEOTHER)MAGINETHEKINDSOF
MESSAGESYOURCHATCLIENTNEEDSTOSENDANDRECEIVE

ZR
+RZGRWKHVHW

WR
N
DO
DFWXDOO\W
"
HU
WK
R
HDFK

&KDWVHUYHU
SURJUDP
&OLHQW

6HUYHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
*]NNMZML:MILMZ

LQSXWDQGRXWSXWVWUHDPV
WRDQGIURPWKH6RFNHW
FRQQHFWLRQV

4OCOMMUNICATEOVERA3OCKETCONNECTION YOUUSESTREAMS
2EGULAROLD)/STREAMS JUSTLIKEWEUSEDINTHELASTCHAPTER/NE
OFTHECOOLESTFEATURESIN*AVAISTHATMOSTOFYOUR)/WORKWONT
CAREWHATYOURHIGH LEVELCHAINSTREAMISACTUALLYCONNECTEDTO)N
OTHERWORDS YOUCANUSEA"UFFERED2EADERJUSTLIKEYOUDIDWHEN
YOUWEREWRITINGTOAlLE THEDIFFERENCEISTHATTHEUNDERLYING
CONNECTIONSTREAMISCONNECTEDTOA3OCKETRATHERTHANA&ILE

QRZ
HUZKLFK\RXN
LV
7KHSRUWQXPE2/
W
KD
W
\RX
EHFDXVHZH7 EHU'IRURXUFKDWVHUYHU
WKHSRUWQXP

0DNHD6RFNHWFRQQHFWLRQWRWKHVHUYHU

6RFNHWFKDW6RFNHW QHZ6RFNHW  


RWKHUZRULGVV WKH,3DGGUHVVIRU
FDQXVHWKLVZWKHRQHWKLVFRGHLV ORFDOKRVWLQ
VHUYHURQDV KHQ\RXUHWHVWLQJ\UXQQLQJRQ<RX
LQJOHVWDQG
R
DORQHPDFKXULQFHOLHQWDQG

0DNHDQ,QSXW6WUHDP5HDGHUFKDLQHGWRWKH6RFNHWV
ORZOHYHO FRQQHFWLRQ LQSXWVWUHDP

,QSXW6WUHDP5HDGHUVWUHDP QHZ,QSXW6WUHDP5HDGHU FKDW6RFNHWJHW,QSXW6WUHDP 

ZHHQDORZ
DEULGJHEHWQJ
LV
U
GH
HD
P5
HD
WU
FRPL IURPWKNHH
,QSXW6
 OLNHWKHRQHFW
P OL
OHYHOE\WHVWUHDDP
HOFKDUD HUVRWUXUHDWRSRI
HY
O
JK
KL
G
DQ

DV
6RFNHW
HDGHUZHUHDIWHU
WKH%XIIHUHG5DP
WKHFKDLQVWUH 

$OOZHKDYHWRGRLV$6.
WKHVRFNHWIRU
DQLQSXWVWUHDP,WV
DO
RZ
VWUHDPEXWZHUHM JR OHYHOFRQQHFWLRQ
QQDFKDLQLWWR
VRPHWKLQJPRUHWH[XVW
WIULHQGO\

IHUHG5HDGHUWRVWFKKHDLQHGWRWKHORZ
&KDLQWKH%XIHD
ZD
K
LF
ZK
U
KH6RFNHW
,QSXW6WUHDP5LRQGH
UHDPZHJRWIURPW
VW
FW
QH
RQ
OF
YH
OH

0DNHD%XIIHUHG5HDGHUDQGUHDG

%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU VWUHDP 


6WULQJPHVVDJH UHDGHUUHDG/LQH 

VRXUFH

GHVWLQDWLR

EXIIHUHGFKDUDFWHUV
EXIIHUHG
FKDUDFWHUV

&OLHQW

%XIIHUHG5HDGHU

E\WHVIURPVHUYHU

FRQYHUWHGWRFKDUDFWHUV

FKDLQHGWR

FKDUDFWHUV

FKDLQHGWR

,QSXW6WUHDP5HDGHU



'DWDRQWKH
VHUYHU

6RFNHWVLQSXWVWUHDP
ZHGRQWQHHGWRNQRZ
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
HVDPHDVLWZWDVRRWKQH
WKLVSDUWVWK
WH
UL
Z
RSSRVLWHSDJHLOOKDYWRHWRFRQQHFWWRLW
VW
H
Z
HU
VHUY

0DNHD6RFNHWFRQQHFWLRQWRWKHVHUYHU

6RFNHWFKDW6RFNHW QHZ6RFNHW  

0DNHD3ULQW:ULWHUFKDLQHGWRWKH6RFNHWVORZOHYHO
FRQQHFWLRQ RXWSXWVWUHDP
3ULQW:ULWHUZULWHU QHZ3ULQW:ULWHU FKDW6RFNHWJHW2XWSXW6WUHDP 

ZHHQ
VRZQEULGJHEHWIU
LW
V
D
WV
DF
U
WH
RPWKH
UL
3ULQW:
KHE\WHVLWJHWVFKDLQLQJD
W
QG
D
WD
GD
U
WH
DF
FKDU
XWSXWVWUHDP%\VWUHDPZH
6RFNHWVORZOHYHWOR
6RFNHWVRXWSXW
3ULQW:ULWHUWR VKHWRWKH6RFNHWFRQQHFWLRQ
FDQZULWH6WULQJ

7KH6RFNHWJLYHVXVDORZ
VWUHDPDQGZHFKDLQLWWR OHYHOFRQQHFWLRQ
WKH3ULQW:ULWHUE\
JLYLQJLWWRWKH3ULQ
W:ULWHUFRQVWUXFWR
U

:ULWH SULQW VRPHWKLQJ


ZULWHUSULQWOQ PHVVDJHWRVHQG 
ZULWHUSULQW DQRWKHUPHVVDJH 

GHVWLQDWLRQ

VRXUFH

E\WHVWRVHUYHU

FKDUDFWHUV
PHVVDJH

&OLHQW

GV
HQGRIZKDWLWVHQ
H
WK
W
D
QH
OL
HZ
Q
SULQWOQ DGGVD
WKHQHZOLQH
SULQW GRHVQWDGG

3ULQW:ULWHU

FKDLQHGWR


6RFNHWVRXWSXW
VWUHDP ZHGRQWQHHG

WRNQRZWKHDFWXDOFODVV

&KDWVHUYHU
SURJUDP

6HUYHU

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\
"EFOREWESTARTBUILDINGTHE#HATAPP
LETSSTARTWITHSOMETHINGALITTLESMALLER
4HE!DVICE'UYISASERVERPROGRAMTHAT
OFFERSUPPRACTICAL INSPIRATIONALTIPS
TOGETYOUTHROUGHTHOSELONGDAYSOF
CODING

7UHDW\RXUVHOIWR
DFROGRQH<RX
GHVHUYHLW

7EREBUILDINGACLIENTFOR4HE!DVICE
'UYPROGRAM WHICHPULLSAMESSAGE
FROMTHESERVEREACHTIMEITCONNECTS

7HOO\RXUERVV
WKHUHSRUWZLOO
KDYHWRZDLW7KHUHV
SRZGHUDW$VSHQ

7KDWVKDGHRI
JUHHQLVQWUHDOO\
ZRUNLQIRU\RX

7HATAREYOUWAITINGFOR7HOKNOWS
WHATOPPORTUNITIESYOUVEMISSED
WITHOUTTHISAPP

7KH$GYLFH*X\


&RQQHFW
&OLHQWFRQQHFWVWRWKHVHUYHUDQGJHWVDQ
LQSXWVWUHDPIURPLW

0DNHDVRFNHWFRQQHFWLRQWR
DWSRUW
VRFNHWJHW,QSXW6WUHDP
&OLHQW

DGYLFHVHUYHU
DW
SRUW
6HUYHU

5HDG
&OLHQWUHDGVDPHVVDJHIURPWKHVHUYHU

DGYLFH UHDGHUUHDG/LQH
&OLHQW$

DGYLFHVHUYHU
FRPSRVHV
DGYLFHDQG
VHQGVLW
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

,IQTa)L^QKM+TQMV\KWLM
7KLVSURJUDPPDNHVD6RFNHWPDNHVD%XIIHUHG5HDGHU ZLWKWKH
KHOSRIRWKHUVWUHDPV DQGUHDGVDVLQJOHOLQHIURPWKHVHUYHU
DSSOLFDWLRQ ZKDWHYHULVUXQQLQJDWSRUW 

MDYDQHW

FODVV6RFNHWLVLQ

LPSRUWMDYDLR 
LPSRUWMDYDQHW 

SXEOLFFODVV'DLO\$GYLFH&OLHQW^
SXEOLFYRLGJR ^
WU\^

QJKHUH

DORWFDQJRZUR

ZKDWHYHULV
FRQQHFWLRQWR
HKRVW
W
PDNHD6RFNHW
RQ KHVFDDPOKRVW


W
RU
S
RQ
J
UXQQLQ
QLQJRQ 7KHOR
WKLVFRGHLVUXQ

6RFNHWV QHZ6RFNHW  


,QSXW6WUHDP5HDGHUVWUHDP5HDGHU QHZ,QSXW6WUHDP5HDGHU VJHW,QSXW6WUHDP 
%XIIHUHG5HDGHUUHDGHU QHZ%XIIHUHG5HDGHU VWUHDP5HDGHU 

FKDLQD%XIIHUHG5HDGHUWR
DQ,QSXW6WUHDP5HDGHUWR
WKHLQSXWVWUHDPIURPWKH
6RFNHW

WKLVUHDG/LQ
H LV(;$&
W
7
6\VWHPRXWSULQWOQ 7RGD\\RXVKRXOGDGYLFH  KHVDPHDVLI\R
XZHUHXVL/QJ<D
%XIIHUHG5H
,QRWKHUZRUDGHUFKDLQHGWRD)
F
DOOD%XIIHUGVE\WKHWLPH\RX,/(
V
UHDGHUFORVH 
WKLVFORVHV$//WKHVWUHDP
HG:ULWHUPH
ZULWHUG
WK
WKHFKDUDRFHWVQWNQRZRUFDUHZRGKH WKH
HUVFDPHIUR
UH
`FDWFK ,2([FHSWLRQH[ ^
P
6WULQJDGYLFH UHDGHUUHDG/LQH 

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

ZULWHGUDZLQWKHFKDLQRIVWUHDPVWKHFOLHQW
XVHVWRUHDGIURPWKHVHUYHU

&OLHQW

GHVWLQDWLRQ

4OSENDTEXTTOA3OCKET

ZULWHGUDZLQWKHFKDLQRIVWUHDPVWKHFOLHQW
XVHVWRVHQGVRPHWKLQJWRWKHVHUYHU

&OLHQW

6HUYHU

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


6HUYHUDSSOLFDWLRQPDNHVD6HUYHU6RFNHWRQDVSHFLFSRUW

HW
6HUYHU6RFN

Licensed by
Eduard Simons
104038

6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  


7KLVVWDUWVWKHVHUYHUDSSOLFDWLRQOLVWHQLQJ

IRUFOLHQWUHTXHVWVFRPLQJLQIRUSRUW

&OLHQWPDNHVD6RFNHWFRQQHFWLRQWRWKHVHUYHUDSSOLFDWLRQ
6RFNHWVRFN QHZ6RFNHW  

&OLHQWNQRZVWKH,3DGGUHVVDQGSRUWQXPEHU

6RFNHW

SXEOLVKHGRUJLYHQWRKLPE\ZKRPHYHU



HW
6HUYHU6RFN


FRQJXUHVWKHVHUYHUDSSWREHRQWKDWSRUW

6HUYHUPDNHVDQHZ6RFNHWWRFRPPXQLFDWHZLWKWKLVFOLHQW
6RFNHWVRFN VHUYHU6RFNDFFHSW 
7KHDFFHSW PHWKRGEORFNV MXVWVLWVWKHUH ZKLOH
LWVZDLWLQJIRUDFOLHQW6RFNHWFRQQHFWLRQ:KHQD

6RFNHW


HW ZDLWLQJ
6HUYHU6RFQNH[WFOLHQW
IRUWKH

FOLHQWQDOO\WULHVWRFRQQHFWWKHPHWKRGUHWXUQV
DSODLQROG6RFNHW RQDGLIIHUHQWSRUW WKDWNQRZV
KRZWRFRPPXQLFDWHZLWKWKHFOLHQW LHNQRZVWKH

FOLHQWV,3DGGUHVVDQGSRUWQXPEHU 7KH6RFNHWLVRQ
DGLIIHUHQWSRUWWKDQWKH6HUYHU6RFNHWVRWKDWWKH
6HUYHU6RFNHWFDQJREDFNWRZDLWLQJIRURWKHUFOLHQWV




6RFNHW
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

LPSRUWMDYDLR 
LPSRUWMDYDQHW 

KHLPSRUWV
UHPHPEHUW

SXEOLFFODVV'DLO\$GYLFH6HUYHU^

VH6WULQJV
UHPHPEHUWKHDS
GE\
ZU
ZHUHZRUG USH
HYHU
1
WKHFRGHHGLWR
LGGOH
P
KH
W
LQ
UHWXUQ
W
KL
\
UD
DU
V
KL
IURPW
RID6WULQJ
GDLO\DGYLFHFRPHV

6WULQJ>@DGYLFH/LVW ^7DNHVPDOOHUELWHV*RIRUWKHWLJKWMHDQV1RWKH\GR127
PDNH\RXORRNIDW2QHZRUGLQDSSURSULDWH-XVWIRUWRGD\EHKRQHVW7HOO\RXU
ERVVZKDW\RX UHDOO\ WKLQN<RXPLJKWZDQWWRUHWKLQNWKDWKDLUFXW`
SXEOLFYRLGJR ^
WU\^
6HUYHU6RFNHWVHUYHU6RFN QHZ6HUYHU6RFNHW  

HQWORRS

SHUPDQ
7KHVHUYHUJRHVLQWRD
J FOLHQWUHTXHVWV
FLQ
UYL
VH
QG
 D
RU
ZDLWLQJI

6HUYHU6RFNHW
DSSOLFDWLRQOLVWPHQDNHVWKLVVHUYHU
RQSRUWR IRUFOLHQWUHTXHVWV
FRGHLVUXQQLQJRQQWKHPDFKLQHWKLV


WKHDFFHSWPHWKRGEORFNV MXVWVLWVWKHUH XQWLOD


UHTXHVWFRPHVLQDQGWKHQWKHPHWKRGUHWXUQVD
6RFNHW RQVRPHDQRQ\PRXVSRUW IRUFRPPXQLFDWLQJ
ZLWKWKHFOLHQW

ZKLOH WUXH ^

6RFNHWVRFN VHUYHU6RFNDFFHSW 

3ULQW:ULWHUZULWHU QHZ3ULQW:ULWHU VRFNJHW2XWSXW6WUHDP 
6WULQJDGYLFH JHW$GYLFH 
ZULWHUSULQWOQ DGYLFH 
QRZZHXVHWKH6RFNHWFRQQH
FWLRQWRWKHFOLHQWWR
ZULWHUFORVH 
PDNHD3ULQW:ULWHUDQ
GV
HQG
6\VWHPRXWSULQWOQ DGYLFH 
DGYLFHPHVVDJH7KHQZHF LW SULQWOQ D6WULQJ
ORVHWKH6RFNHWEHFDXVH
`
ZHUH

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

DLQ EDUEHOO
EU%UDLQ%DUEHOO
(OWDOESTHESERVERKNOWHOWTO
COMMUNICATEWITHTHECLIENT
4HECLIENTKNOWSTHE)0ADDRESSANDPORT
NUMBEROFTHESERVER BUTHOWISTHESERVER
ABLETOMAKEA3OCKETCONNECTIONWITHTHE
CLIENTANDMAKEINPUTANDOUTPUTSTREAMS 
4HINKABOUTHOWWHENWHERETHESERVER
GETSKNOWLEDGEABOUTTHECLIENT

 &OLHQWDQGVHUYHUDSSOLFDWLRQVFRPPXQLFDWHRYHUD6RFNHW
FRQQHFWLRQ

 $6RFNHWUHSUHVHQWVDFRQQHFWLRQEHWZHHQWZRDSSOLFDWLRQV
ZKLFKPD\ RUPD\QRW EHUXQQLQJRQWZRGLIIHUHQWSK\VLFDO
PDFKLQHV

 $FOLHQWPXVWNQRZWKH,3DGGUHVV RUGRPDLQQDPH DQG


7&3SRUWQXPEHURIWKHVHUYHUDSSOLFDWLRQ

 $7&3SRUWLVDELWXQVLJQHGQXPEHUDVVLJQHGWRD
VSHFLILFVHUYHUDSSOLFDWLRQ7&3SRUWQXPEHUVDOORZGLIIHUHQW
FOLHQWVWRFRQQHFWWRWKHVDPHPDFKLQHEXWFRPPXQLFDWH
ZLWKGLIIHUHQWDSSOLFDWLRQVUXQQLQJRQWKDWPDFKLQH

 7KHSRUWQXPEHUVIURPWKURXJKDUHUHVHUYHGIRU
ZHOONQRZQVHUYLFHVLQFOXGLQJ+773)736073HWF

WKHUH DUH QR

'XPE 4XHVWLRQV

 $FOLHQWFRQQHFWVWRDVHUYHUE\PDNLQJD6HUYHUVRFNHW

4HEADVICESERVERCODEONTHEOPPOSITE
PAGEHASA6%29SERIOUSLIMITATIONITLOOKS
LIKEITCANHANDLEONLYONECLIENTATATIME

 2QFHFRQQHFWHGDFOLHQWFDQJHWLQSXWDQGRXWSXWVWUHDPV

A:

 7RUHDGWH[WGDWDIURPWKHVHUYHUFUHDWHD%XIIHUHG5HDGHU

Q:

9ES THATSRIGHT)TCANTACCEPTAREQUEST
FROMACLIENTUNTILITHASFINISHEDWITHTHE
CURRENTCLIENTANDSTARTEDTHENEXTITERATIONOF
THEINFINITELOOPWHEREITSITSATTHEACCEPT
CALLUNTILAREQUESTCOMESIN ATWHICHTIMEIT
MAKESA3OCKETWITHTHENEWCLIENTANDSTARTS
THEPROCESSOVERAGAIN 

Q:

,ETMEREPHRASETHEPROBLEMHOWCAN
YOUMAKEASERVERTHATCANHANDLEMULTIPLE
CLIENTSCONCURRENTLY4HISWOULDNEVER
WORKFORACHATSERVER FORINSTANCE

A:

!H THATSSIMPLE REALLY5SESEPARATE
THREADS ANDGIVEEACHNEWCLIENT3OCKETTOA
NEWTHREAD7EREJUSTABOUTTOLEARNHOWTO
DOTHAT

6RFNHWV QHZ6RFNHW  

IURPWKHVRFNHW7KHVHDUHORZOHYHOFRQQHFWLRQVWUHDPV
VRFNJHW,QSXW6WUHDP 

FKDLQHGWRDQ,QSXW6WUHDP5HDGHUZKLFKLVFKDLQHGWRWKH
LQSXWVWUHDPIURPWKH6RFNHW

+
I

 ,QSXW6WUHDP5HDGHULVDEULGJHVWUHDPWKDWWDNHVLQ
E\WHVDQGFRQYHUWVWKHPWRWH[W FKDUDFWHU GDWD,WVXVHG
SULPDULO\WRDFWDVWKHPLGGOHFKDLQEHWZHHQWKHKLJKOHYHO
%XIIHUHG5HDGHUDQGWKHORZOHYHO6RFNHWLQSXWVWUHDP

 7RZULWHWH[WGDWDWRWKHVHUYHUFUHDWHD3ULQW:ULWHUFKDLQHG
GLUHFWO\WRWKH6RFNHWVRXWSXWVWUHDP&DOOWKHSULQW RU
SULQWOQ PHWKRGVWRVHQG6WULQJVWRWKHVHUYHU

 6HUYHUVXVHD6HUYHU6RFNHWWKDWZDLWVIRUFOLHQWUHTXHVWVRQ
DSDUWLFXODUSRUWQXPEHU

 :KHQD6HUYHU6RFNHWJHWVDUHTXHVWLWDFFHSWVWKHUHTXHVW
E\PDNLQJD6RFNHWFRQQHFWLRQZLWKWKHFOLHQW

\RXDUHKHUH



6
[M
QV
+
_
6
;
KI
KT
+
6
*
5

1\
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
ZRQWJHW LVYHUVLRQVRWKHUHV
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[WHOGDQG
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 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 


VWUHDPV MDYDLR
LPSRUWVIRUWQKHHW DQGWKH*8,
6RFNHW MDYD
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
UHODWHGWR
QJ
VHQG%XWWRQDGG$FWLRQ/LVWHQHU QHZ6HQG%XWWRQ/LVWHQHU 
KHUHDQGQRU,2
PDLQ3DQHODGG RXWJRLQJ 
QHWZRUNLQJ
PDLQ3DQHODGG VHQG%XWWRQ 
IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
VHW8S1HWZRUNLQJ 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 
ZHUHXVLQJORFDOKRV
`FORVHJR

WVR
\RXFDQWHVWW OLH
QW
DQGVHUYHURQRQKHHFPD
FKLQH

SULYDWHYRLGVHW8S1HWZRUNLQJ ^
WU\^
VRFN QHZ6RFNHW  
H6RFNHW
7KLVLVZKHUHZHPDNHWK
ZULWHU QHZ3ULQW:ULWHU VRFNJHW2XWSXW6WUHDP 
FDOOHG
LWV
U
LWH
:U
ULQW
DQGWKH3
6\VWHPRXWSULQWOQ QHWZRUNLQJHVWDEOLVKHG 
WEHIRUH
ULJK
RG
IURPWKHJR PHWK
`FDWFK ,2([FHSWLRQH[ ^
8,
S*
DS
WKH
GLVSOD\LQJ
H[SULQW6WDFN7UDFH 
`
`FORVHVHW8S1HWZRUNLQJ
SXEOLFFODVV6HQG%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WU\^
ZULWHUSULQWOQ RXWJRLQJJHW7H[W  1RZZHDFWXDOO\GRWKHZULWLQJ
ZULWHUXVK 
5HPHPEHUWKHZULWHULVFKDLQHGWR

WKHLQSXWVWUHDPIURPWKH6RFNHWVR
`FDWFK ([FHSWLRQH[ ^
ZKHQHYHUZHGRDSULQWOQ LWJRHV
H[SULQW6WDFN7UDFH 
RYHUWKHQHWZRUNWRWKHVHUYHU
`
RXWJRLQJVHW7H[W 
RXWJRLQJUHTXHVW)RFXV 
`
,I\RXZDQWWRWU\WKLVQRZW\SHLQ
`FORVH6HQG%XWWRQ/LVWHQHULQQHUFODVV
WKH5HDG\EDNHFKDWVHUYHUFRGH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ6LPSOH&KDW&OLHQW$ JR 
`
`FORVHRXWHUFODVV

OLVWHGDWWKHHQGRIWKLVFKDSWHU
)LUVWVWDUWWKHVHUYHULQRQHWHUPLQDO
1H[WXVHDQRWKHUWHUPLQDOWRVWDUW
WKLVFOLHQW
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

LQFRPLQJ
PHVVDJHV

7KH6HUYHUVHQGVDPHVVDJHWRDOO
FOLHQWSDUWLFLSDQWVDVVRRQDVWKH
PHVVDJHLVUHFHLYHGE\WKHVHUYHU
:KHQDFOLHQWVHQGVDPHVVDJHLW
GRHVQWDSSHDULQWKHLQFRPLQJ
PHVVDJHGLVSOD\DUHDXQWLOWKH
VHUYHUVHQGVLWWRHYHU\RQH

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

<RXNQRZE\QRZWKDWZHUH
JRLQJZLWKRSWLRQWKUHH
7EWANTSOMETHINGTORUNCONTINUOUSLY
CHECKINGFORMESSAGESFROMTHESERVER
BUTWITHOUTINTERRUPTINGTHEUSERSABILITYTO
INTERACTWITHTHE'5)3OWHILETHEUSERIS
HAPPILYTYPINGNEWMESSAGESORSCROLLING
THROUGHTHEINCOMINGMESSAGES WE
WANTSOMETHINGBEHINDTHESCENESTOKEEP
READINGINNEWINPUTFROMTHESERVER
4HATMEANSWElNALLYNEEDANEWTHREAD
!NEW SEPARATESTACK
7EWANTEVERYTHINGWEDIDINTHE3END
/NLYVERSIONVERSIONONE TOWORKTHE
SAMEWAY WHILEANEWPROCESSRUNSALONG
SIDETHATREADSINFORMATIONFROMTHE
SERVERANDDISPLAYSITINTHEINCOMINGTEXT
AREA
7ELL NOTQUITE5NLESSYOUHAVEMULTIPLE
PROCESSORSONYOURCOMPUTER EACHNEW
*AVATHREADISNOTACTUALLYASEPARATE
PROCESSRUNNINGONTHE/3"UTITALMOST
FEELSASTHOUGHITIS

7KUHDGW QHZ7KUHDG 
WVWDUW 

4HATSIT"YCREATINGANEW4HREADOBJECT
YOUVELAUNCHEDASEPARATETHREADOF
EXECUTION WITHITSVERYOWNCALLSTACK
%XCEPTFORONEPROBLEM
4HATTHREADDOESNTACTUALLYDOANYTHING
SOTHETHREADhDIESvVIRTUALLYTHEINSTANT
ITSBORN7HENATHREADDIES ITSNEW
STACKDISAPPEARSAGAIN%NDOFSTORY
3OWEREMISSINGONEKEYCOMPONENT
THETHREADSJOB)NOTHERWORDS WENEED
THECODETHATYOUWANTTOHAVERUNBYA
SEPARATETHREAD
-ULTIPLETHREADINGIN*AVAMEANSWE
HAVETOLOOKATBOTHTHETHREADANDTHEJOB
THATSRUNBYTHETHREAD!NDWELLALSO
HAVETOLOOKATTHE4HREADCLASSINTHE
JAVALANGPACKAGE2EMEMBER JAVALANG
ISTHEPACKAGEYOUGETIMPORTEDFOR
FREE IMPLICITLY ANDITSWHERETHECLASSES
MOSTFUNDAMENTALTOTHELANGUAGELIVE
INCLUDING3TRINGAND3YSTEM

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WVM<PZMILKTI[[
7ECANTALKABOUTTHREADWITHALOWER CASE@TAND4HREAD
WITHACAPITAL@47HENYOUSEETHREAD WERETALKING
ABOUTASEPARATETHREADOFEXECUTION)NOTHERWORDS
ASEPARATECALLSTACK7HENYOUSEE4HREAD THINKOF
THE*AVANAMINGCONVENTION7HAT IN*AVA STARTSWITHA
CAPITALLETTER#LASSESANDINTERFACES)NTHISCASE 4HREAD
ISACLASSINTHEJAVALANGPACKAGE!4HREADOBJECT
REPRESENTSATHREADOFEXECUTIONYOULLCREATEANINSTANCEOF
CLASS4HREADEACHTIMEYOUWANTTOSTARTUPANEWTHREAD
OFEXECUTION

WKUHDG
[ED] 

$7KUHDGLVD-DYD
FODVVWKDWUHSUHVHQWV
DWKUHDG
7RPDNHDWKUHDG
PDNHD7KUHDG

7KUHDG
GR0RUH 

\EDU 

JR 

[IRR 

GR6WXII 

PDLQ 

UXQ 

PDLQWKUHDG

$WKUHDGLVDVHSDUDWH
WKUHDGRIH[HFXWLRQ
,QRWKHUZRUGVD
VHSDUDWHFDOOVWDFN

DQRWKHUWKUHDG
VWDUWHGE\WKHFRGH

!THREADLOWER CASE@T ISASEPARATETHREADOFEXECUTION


4HATMEANSASEPARATECALLSTACK%VERY*AVAAPPLICATION
STARTSUPAMAINTHREADTHETHREADTHATPUTSTHE
MAIN METHODONTHEBOTTOMOFTHESTACK4HE*6-
ISRESPONSIBLEFORSTARTINGTHEMAINTHREADANDOTHER
THREADS ASITCHOOSES INCLUDINGTHEGARBAGECOLLECTION
THREAD !SAPROGRAMMER YOUCANWRITECODETOSTART
OTHERTHREADSOFYOUROWN

7KUHDG
YRLGMRLQ
YRLGVWDUW
VWDWLFYRLGVOHHS

MDYDODQJ7KUHDG
FODVV
4HREADCAPITAL@4 ISACLASSTHAT
REPRESENTSATHREADOFEXECUTION
)THASMETHODSFORSTARTINGA
THREAD JOININGONETHREADWITH
ANOTHER ANDPUTTINGATHREADTO
SLEEP)THASMOREMETHODSTHESE
AREJUSTTHECRUCIALONESWENEED
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
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

`

PDLQ

PDLQWKUHDG

DQHZWKUHDGVWDUWV
DQGEHFRPHVWKHDFWLYH
WKUHDG

PDLQ VWDUWVDQHZWKUHDG7KHPDLQ
WKUHDGLVWHPSRUDULO\IUR]HQZKLOHWKHQHZ
WKUHDGVWDUWVUXQQLQJ

WVWDUW
PDLQ

5XQQDEOHU QHZ0\7KUHDG-RE 
7KUHDGW QHZ7KUHDG U  \RXOOOHDU
QZ W
WVWDUW 
WKLVPHDQVLQKD
DPRPHQW MXVW
'RJG QHZ'RJ 


PDLQWKUHDG

UXQ
XVHUWKUHDG$

UHDGDJDLQ

HWK
WKHDFWLY

7KH-90VZLWFKHVEHWZHHQWKHQHZ
WKUHDG XVHUWKUHDG$ DQGWKHRULJLQDO
PDLQWKUHDGXQWLOERWKWKUHDGVFRPSOHWH

'RJ

[JR

PDLQ

UXQ

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 WKHWKUHDGVMRE
5XQQDEOHLVDQLQWHUIDFH\RXOOOHDUQDERXWRQWKHQH[WSDJH
<RXOOZULWHDFODVVWKDWLPSOHPHQWVWKH5XQQDEOHLQWHUIDFH
DQGWKDWFODVVLVZKHUH\RXOOGHQHWKHZRUNWKDWDWKUHDG
ZLOOSHUIRUP,QRWKHUZRUGVWKHPHWKRGWKDWZLOOEHUXQ
IURPWKHWKUHDGVQHZFDOOVWDFN

QDEOHRE

0DNHD7KUHDGREMHFW WKHZRUNHU DQG


JLYHLWD5XQQDEOH WKHMRE
7K

3DVVWKHQHZ5XQQDEOHREMHFWWRWKH7KUHDGFRQVWUXFWRU
7KLVWHOOVWKHQHZ7KUHDGREMHFWZKLFKPHWKRGWRSXWRQ
WKHERWWRPRIWKHQHZVWDFNWKH5XQQDEOHVUXQ PHWKRG

F W

7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE 

UHDGREMH

6WDUWWKH7KUHDG
P\7KUHDGVWDUW 

7K

F W

1RWKLQJKDSSHQVXQWLO\RXFDOOWKH7KUHDGV
VWDUW PHWKRG7KDWVZKHQ\RXJRIURP
KDYLQJMXVWD7KUHDGLQVWDQFHWRKDYLQJDQHZ
WKUHDGRIH[HFXWLRQ:KHQWKHQHZWKUHDG
VWDUWVXSLWWDNHVWKH5XQQDEOHREMHFWV
UXQ PHWKRGDQGSXWVLWRQWKHERWWRPRI
WKHQHZWKUHDGVVWDFN

UXQ

UHDGREMH

5X

Q QD

MHF
W

XQ

MH
FW

5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH 

EOHRE

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
DQG,OOJHWWRZRUN

5XQQDEOHLVWRD
7KUHDGZKDWDMRELVWR
DZRUNHU$5XQQDEOH
LVWKHMREDWKUHDGLV
VXSSRVHGWRUXQ

Licensed by
$5XQQDEOHKROGVWKH
PHWKRGWKDWJRHVRQ
WKHERWWRPRIWKHQHZ
Eduard Simons
WKUHDGVVWDFNUXQ 
104038
7KUHDG

!4HREADOBJECTNEEDSAJOB!JOBTHETHREADWILLRUNWHENTHE
THREADISSTARTED4HATJOBISACTUALLYTHElRSTMETHODTHATGOESON
RQO\RQH DQ
V
H
LQ
I
H
G

H
THENEWTHREADSSTACK ANDITMUSTALWAYSBEAMETHODTHATLOOKS
LQWHUIDF  5HPHPEHULWVOHVV
OH
E
D
Q
Q
X
LIKETHIS
5
UXQ
7KH
JDUG

SXEOLFYRLGUXQ ^
FRGHWKDWZLOOEHUXQE\WKHQHZWKUHDG

`

XEOLFYRLG
SXEOLFUH
PHWKRGS VRWKHPHWKRGLV KDWZD\
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
5XQQDEOHLVW
GWR
VR\RXGRQ QHH

SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^
SXEOLFYRLGUXQ ^
JR 
`

5XQQDEOHKDVRQO\RQHPHWKRGWR
LPSOHPHQWSXEOLFYRLGUXQ  Z
LWKQR
DUJXPHQWV 7KLVLVZKHUH\RXS
XWWKH
-2%WKHWKUHDGLVVXSSRVHGWRUXQ
7KLV
LVWKHPHWKRGWKDWJRHVDWWKHERWW
RP
RIWKHQHZVWDFN

SXEOLFYRLGJR ^
GR0RUH 
`

SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ WRSRWKHVWDFN 
`
`

FODVV7KUHDG7HVWHU^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH 
7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE 
P\7KUHDGVWDUW 


<RXZRQWJHWDQHZWKUHD
FDOOVWDUW RQWKH7KUHDGGRIH[HFXWLRQXQWLO\RX
QRWUHDOO\DWKUHDGXQWLO\RLQVWDQFH$WKUHDGLV
XVWDUWLW% RUHWKDW
LWVMXVWD7KUHDGLQV
WDQFHOLNHDQ\RWKHHI
EXWLWZRQWKDYHDQ\U
HDOWKUHDGQHVV UREMHFW

6\VWHPRXWSULQWOQ EDFNLQPDLQ 
`
`




DLQ EDUEHOO
EU%UDLQ%DUEHOO

GR0RUH

P\7KUHDGVWDUW
PDLQ

PDLQWKUHDG

JR
UXQ

QHZ
EOHLQVWDQFHLQWRWKH
3DVVWKHQHZ5XFXQWRQDU7KLVWHOOVWKHWKUHDG Z
7KUHDGFRQVWUWRSXWRQWKHERWWRPRIWKHQH 
ZKDWPHWKRG ZRUGVWKHILUVWPHWKRGWKDW
VWDFN,QRWKHU ZLOOUXQ
WKHQHZWKUHDG

:KDWGR\RXWKLQNWKHRXWSXWZLOOEHLI\RXUXQWKH
7KUHDG7HVWHUFODVV" ZHOOQGRXWLQDIHZSDJHV

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,1*

5811$%/(
WVWDUW 

6HOHFWHGWRUXQ

,PZDLWLQJWR
JHWVWDUWHG

&DQ,
VXSHUVL]H
WKDWIRU
\RX"

,PJRRGWRJR 

7KUHDGW QHZ7KUHDG U 

WVWDUW 

!4HREADINSTANCEHASBEEN
CREATEDBUTNOTSTARTED
)NOTHERWORDS THEREISA
4HREADOBJECT BUTNOTHREAD
OFEXECUTION

7HENYOUSTARTTHETHREAD IT
MOVESINTOTHERUNNABLESTATE
4HISMEANSTHETHREADISREADY
TORUNANDJUSTWAITINGFORITS
"IG#HANCETOBESELECTEDFOR
EXECUTION!TTHISPOINT THEREIS
ANEWCALLSTACKFORTHISTHREAD

4HISISTHESTATEALLTHREADSLUST
AFTER4OBE4HE#HOSEN/NE
4HE#URRENTLY2UNNING4HREAD
/NLYTHE*6-THREADSCHEDULER
CANMAKETHATDECISION9OU
CANSOMETIMESINmUENCETHAT
DECISION BUTYOUCANNOTFORCEA
THREADTOMOVEFROMRUNNABLE
TORUNNING)NTHERUNNING
STATE ATHREADAND/.,9THIS
THREAD HASANACTIVECALLSTACK
ANDTHEMETHODONTHETOPOF
THESTACKISEXECUTING

%XWWKHUHVPRUH2QFHWKHWKUHDGEHFRPHV
UXQQDEOHLWFDQPRYHEDFNDQGIRUWKEHWZHHQ
UXQQDEOHUXQQLQJDQGDQDGGLWLRQDOVWDWH
WHPSRUDULO\QRWUXQQDEOH DOVRNQRZQDVEORFNHG 

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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$%/(
4YPICALLY ATHREADMOVESBACKAND
FORTHBETWEENRUNNABLEANDRUNNING
ASTHE*6-THREADSCHEDULERSELECTSA
THREADTORUNANDTHENKICKSITBACK
OUTSOANOTHERTHREADGETSACHANCE

5811,1*
6HOHFWHGWRUXQ

6HQWEDFNWRUXQQDEOH
VRDQRWKHUWKUHDGFDQ
KDYHDFKDQFH

$WKUHDGFDQEHPDGH
WHPSRUDULO\QRWUXQQDEOH
4HETHREADSCHEDULERCANMOVEA
RUNNINGTHREADINTOABLOCKEDSTATE
FORAVARIETYOFREASONS&OREXAMPLE
THETHREADMIGHTBEEXECUTINGCODE
TOREADFROMA3OCKETINPUTSTREAM
BUTTHEREISNTANYDATATOREAD4HE
SCHEDULERWILLMOVETHETHREADOUT
OFTHERUNNINGSTATEUNTILSOMETHING
BECOMESAVAILABLE/RTHEEXECUTING
CODEMIGHTHAVETOLDTHETHREADTO
PUTITSELFTOSLEEPSLEEP /RTHE
THREADMIGHTBEWAITINGBECAUSEIT
TRIEDTOCALLAMETHODONANOBJECT
ANDTHATOBJECTWAS@LOCKED)NTHAT
CASE THETHREADCANTCONTINUEUNTIL
THEOBJECTSLOCKISFREEDBYTHETHREAD
THATHASIT
!LLOFTHOSECONDITIONSANDMORE
CAUSEATHREADTOBECOMETEMPORARILY
NOT RUNNABLE

5811$%/(

5811,1*

\
DU
RU H
S
%/2&.('
P DW H
WH VW
D EOH FRP
R
H
D
W
QW QQ QE Q
6H QUX WFD JDL
QR WLOL OHD
XQ QQDE
UX

VOHHSLQJZDLWLQJIRUDQRWKHUWKUHDGWRILQLVK
ZDLWLQJIRUGDWDWREHDYDLODEOHRQWKHVWUHDP
ZDLWLQJIRUDQREMHFWVORFN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
9OUCANTCONTROLTHESCHEDULER4HEREISNO!0)FOR
CALLINGMETHODSONTHESCHEDULER-OSTIMPORTANTLY
THEREARENOGUARANTEESABOUTSCHEDULING4HEREAREA
FEWALMOST GUARANTEES BUTEVENTHOSEAREALITTLEFUZZY
4HEBOTTOMLINEISTHISDONOTBASEYOURPROGRAMS
CORRECTNESSONTHESCHEDULERWORKINGINAPARTICULARWAY
4HESCHEDULERIMPLEMENTATIONSAREDIFFERENTFOR
DIFFERENT*6-S ANDEVENRUNNINGTHESAMEPROGRAM
ONTHESAMEMACHINECANGIVEYOUDIFFERENTRESULTS
/NEOFTHEWORSTMISTAKESNEW*AVAPROGRAMMERS
MAKEISTOTESTTHEIRMULTI THREADEDPROGRAMONA
SINGLEMACHINE ANDASSUMETHETHREADSCHEDULERWILL
ALWAYSWORKTHATWAY REGARDLESSOFWHERETHEPROGRAM
RUNS
3OWHATDOESTHISMEANFORWRITE ONCE RUN ANYWHERE
)TMEANSTHATTOWRITEPLATFORM INDEPENDENT*AVACODE
YOURMULTI THREADEDPROGRAMMUSTWORKNOMATTERHOW
THETHREADSCHEDULERBEHAVES4HATMEANSTHATYOUCANT
BEDEPENDENTON FOREXAMPLE THESCHEDULERMAKING
SUREALLTHETHREADSTAKENICE PERFECTLYFAIRANDEQUAL
TURNSATTHERUNNINGSTATE!LTHOUGHHIGHLYUNLIKELY
TODAY YOURPROGRAMMIGHTENDUPRUNNINGONA*6-
WITHASCHEDULERTHATSAYS h/+THREADlVE YOUREUP
ANDASFARAS)MCONCERNED YOUCANSTAYHEREUNTIL
YOUREDONE WHENYOURRUN METHODCOMPLETESv
4HESECRETTOALMOSTEVERYTHINGISSLEEP4HATS
RIGHT SLEEP0UTTINGATHREADTOSLEEP EVENFORAFEW
MILLISECONDS FORCESTHECURRENTLY RUNNINGTHREADTO
LEAVETHERUNNINGSTATE THUSGIVINGANOTHERTHREADA
CHANCETORUN4HETHREADSSLEEP METHODDOESCOME
WITHONEGUARANTEEASLEEPINGTHREADWILLNOTBECOME
THECURRENTLY RUNNINGTHREADBEFORETHETHELENGTHOF
ITSSLEEPTIMEHASEXPIRED&OREXAMPLE IFYOUTELLYOUR
THREADTOSLEEPFORTWOSECONDS MILLISECONDS
THATTHREADCANNEVERBECOMETHERUNNINGTHREADAGAIN
UNTILSOMETIMEAFTERTHETWOSECONDSHAVEPASSED

1XPEHUIRXU\RXYHKDG
HQRXJKWLPH%DFNWRUXQQDEOH
1XPEHUWZRORRNVOLNH\RXUHXS
2KQRZLWORRNVOLNH\RXUHJRQQDKDYH
WRVOHHS1XPEHUYHFRPHWDNHKLV
SODFH1XPEHUWZR\RXUHVWLOO
VOHHSLQJ

7KHWKUHDG
VFKHGXOHUPDNHVDOO
WKHGHFLVLRQVDERXW
ZKRUXQVDQGZKR
GRHVQW+HXVXDOO\
PDNHVWKHWKUHDGVWDNH
WXUQVQLFHO\%XW
WKHUHVQRJXDUDQWHH
DERXWWKDW+HPLJKW
OHWRQHWKUHDGUXQ
WRLWVKHDUWVFRQWHQW
ZKLOHWKHRWKHU
WKUHDGVVWDUYH

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^

3URGXFHGWKLVRXWSXW
)LOH(GLW:LQGRZ+HOS3LFN0H

MDYD7KUHDG7HVW'ULYH

SXEOLFYRLGUXQ ^
JR 
`

EDFNLQPDLQ
WRSRWKHVWDFN
MDYD7KUHDG7HVW'ULYH

SXEOLFYRLGJR ^
GR0RUH 
`

WRSRWKHVWDFN
EDFNLQPDLQ

SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ WRSRWKHVWDFN 
`
`

MDYD7KUHDG7HVW'ULYH
WRSRWKHVWDFN
EDFNLQPDLQ
MDYD7KUHDG7HVW'ULYH
WRSRWKHVWDFN

FODVV7KUHDG7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
5XQQDEOHWKUHDG-RE QHZ0\5XQQDEOH 
7KUHDGP\7KUHDG QHZ7KUHDG WKUHDG-RE 

EDFNLQPDLQ
MDYD7KUHDG7HVW'ULYH
WRSRWKHVWDFN
EDFNLQPDLQ

P\7KUHDGVWDUW 

MDYD7KUHDG7HVW'ULYH

6\VWHPRXWSULQWOQ EDFNLQPDLQ 
`
`

HV
RUGHUFKDQJ
H
K
W
Z
R
WKUHDG 
K
Z
H
QH
LF
1RW
HVWKH W
LP
HW
DLQ
P
R
6

O\
UDQGRP LUVWDQGVRPHWLPHV KHP
I
HV
K
LV
ILQ
HVILUVW
WKUHDGILQLVK

WRSRWKHVWDFN
EDFNLQPDLQ
MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ
WRSRWKHVWDFN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
QHZWKUHDG

7KHVFKHGXOHUVHQGV
WKHPDLQWKUHDGRXW
RIUXQQLQJDQGEDFN
WRUXQQDEOHVRWKDW
WKHQHZWKUHDGFDQ
UXQ

P\7KUHDGVWDUW

P\7KUHDGVWDUW

PDLQ

PDLQ

PDLQWKUHDG

PDLQWKUHDG

7KHVFKHGXOHUOHWV
WKHQHZWKUHDG
UXQWRFRPSOHWLRQ
SULQWLQJRXWWRSR
WKHVWDFN
GR0RUH

7KHQHZWKUHDGJRHV
DZD\EHFDXVHLWVUXQ 
FRPSOHWHG7KHPDLQ
WKUHDGRQFHDJDLQ
EHFRPHVWKHUXQQLQJ
WKUHDGDQGSULQWVEDFN
LQPDLQ

JR
PDLQ

UXQ

PDLQWKUHDG

QHZWKUHDG

WLPH

$QGVRPHWLPHVLWUXQVOLNHWKLV
PDLQ VWDUWVWKH
QHZWKUHDG

P\7KUHDGVWDUW

7KHVFKHGXOHU
VHQGVWKHQHZ
WKUHDGEDFNWR
UXQQDEOH

7KHVFKHGXOHUVHQGV
WKHPDLQWKUHDGRXW
RIUXQQLQJDQGEDFN
WRUXQQDEOHVRWKDW
WKHQHZWKUHDGFDQ
UXQ

7KHVFKHGXOHUOHWVWKH
QHZWKUHDGUXQIRUD
OLWWOHZKLOHQRWORQJ
HQRXJKIRUWKHUXQ 
PHWKRGWRFRPSOHWH

P\7KUHDGVWDUW

JR

JR

UXQ

UXQ

PDLQ

PDLQ

PDLQWKUHDG

PDLQWKUHDG

QHZWKUHDG

QHZWKUHDG

7KHVFKHGXOHU
VHOHFWVWKHPDLQ
WKUHDGWREHWKH
UXQQLQJWKUHDG
DJDLQ0DLQSULQWV
RXWEDFNLQPDLQ

7KHQHZWKUHDGUHWXUQV
WRWKHUXQQLQJVWDWH
DQGSULQWVRXWWRSR
WKHVWDFN
GR0RUH
JR

PDLQ

PDLQWKUHDG

UXQ
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
2UNNABLEIMPLEMENTATION BUTINSTEADJUSTMAKEA
SUBCLASSOF4HREADANDOVERRIDETHE4HREADSRUN
METHOD4HATWAY YOUCALLTHE4HREADSNO ARG
CONSTRUCTORWHENYOUMAKETHENEWTHREAD
4HREADTNEW4HREAD NO2UNNABLE

A:

9ES THATISANOTHERWAYOFMAKINGYOUROWN
THREAD BUTTHINKABOUTITFROMAN//PERSPECTIVE
7HATSTHEPURPOSEOFSUBCLASSING2EMEMBERTHAT
WERETALKINGABOUTTWODIFFERENTTHINGSHERETHE
4HREADANDTHETHREADSJOB&ROMAN//VIEW THOSE
TWOAREVERYSEPARATEACTIVITIES ANDBELONGINSEPARATE
CLASSES4HEONLYTIMEYOUWANTTOSUBCLASSEXTEND
THE4HREADCLASS ISIFYOUAREMAKINGANEWANDMORE
SPECIFICTYPEOF4HREAD)NOTHERWORDS IFYOUTHINKOF
THE4HREADASTHEWORKER DONTEXTENDTHE4HREADCLASS
UNLESSYOUNEEDMORESPECIFICWORKERBEHAVIORS"UTIF
ALLYOUNEEDISANEWJOBTOBERUNBYA4HREADWORKER
THENIMPLEMENT2UNNABLEINASEPARATE JOB SPECIFIC
NOTWORKER SPECIFIC CLASS
4HISISADESIGNISSUEANDNOTAPERFORMANCEOR
LANGUAGEISSUE)TSPERFECTLYLEGALTOSUBCLASS4HREAD
ANDOVERRIDETHERUN METHOD BUTITSRARELYAGOOD
IDEA

Q:

:MDD=LHGAFLK

 $WKUHDGZLWKDORZHUFDVHWLVDVHSDUDWHWKUHDGRI
H[HFXWLRQLQ-DYD

 (YHU\WKUHDGLQ-DYDKDVLWVRZQFDOOVWDFN
 $7KUHDGZLWKDFDSLWDO7LVWKHMDYDODQJ7KUHDG
FODVV$7KUHDGREMHFWUHSUHVHQWVDWKUHDGRI
H[HFXWLRQ

 $7KUHDGQHHGVDMREWRGR$7KUHDGVMRELVDQ
LQVWDQFHRIVRPHWKLQJWKDWLPSOHPHQWVWKH5XQQDEOH
LQWHUIDFH

 7KH5XQQDEOHLQWHUIDFHKDVMXVWDVLQJOHPHWKRGUXQ 
7KLVLVWKHPHWKRGWKDWJRHVRQWKHERWWRPRIWKHQHZ
FDOOVWDFN,QRWKHUZRUGVLWLVWKHILUVWPHWKRGWRUXQLQ
WKHQHZWKUHDG

 7RODXQFKDQHZWKUHDG\RXQHHGD5XQQDEOHWRSDVV
WRWKH7KUHDGVFRQVWUXFWRU

 $WKUHDGLVLQWKH1(:VWDWHZKHQ\RXKDYH
LQVWDQWLDWHGD7KUHDGREMHFWEXWKDYHQRW\HWFDOOHG
VWDUW 

 :KHQ\RXVWDUWDWKUHDG E\FDOOLQJWKH7KUHDGREMHFWV
VWDUW PHWKRG DQHZVWDFNLVFUHDWHGZLWKWKH
5XQQDEOHVUXQ PHWKRGRQWKHERWWRPRIWKHVWDFN
7KHWKUHDGLVQRZLQWKH5811$%/(VWDWHZDLWLQJWR
EHFKRVHQWRUXQ

#ANYOUREUSEA4HREADOBJECT#ANYOUGIVEIT
ANEWJOBTODOANDTHENRESTARTITBYCALLINGSTART
AGAIN

A:

.O/NCEATHREADSRUN METHODHASCOMPLETED
THETHREADCANNEVERBERESTARTED)NFACT ATTHAT
POINTTHETHREADMOVESINTOASTATEWEHAVENTTALKED
ABOUTDEAD)NTHEDEADSTATE THETHREADHAS
FINISHEDITSRUN METHODANDCANNEVERBERESTARTED
4HE4HREADOBJECTMIGHTSTILLBEONTHEHEAP ASA
LIVINGOBJECTTHATYOUCANCALLOTHERMETHODSONIF
APPROPRIATE BUTTHE4HREADOBJECTHASPERMANENTLY
LOSTITS@THREADNESS)NOTHERWORDS THEREISNOLONGERA
SEPARATECALLSTACK ANDTHE4HREADOBJECTISNOLONGER
ATHREAD)TSJUSTANOBJECT ATTHATPOINT LIKEALLOTHER
OBJECTS

 $WKUHDGLVVDLGWREH5811,1*ZKHQWKH-90V
WKUHDGVFKHGXOHUKDVVHOHFWHGLWWREHWKHFXUUHQWO\
UXQQLQJWKUHDG2QDVLQJOHSURFHVVRUPDFKLQHWKHUH
FDQEHRQO\RQHFXUUHQWO\UXQQLQJWKUHDG

 6RPHWLPHVDWKUHDGFDQEHPRYHGIURPWKH5811,1*
VWDWHWRD%/2&.(' WHPSRUDULO\QRQUXQQDEOH VWDWH
$WKUHDGPLJKWEHEORFNHGEHFDXVHLWVZDLWLQJIRUGDWD
IURPDVWUHDPRUEHFDXVHLWKDVJRQHWRVOHHSRU
EHFDXVHLWLVZDLWLQJIRUDQREMHFWVORFN

 7KUHDGVFKHGXOLQJLVQRWJXDUDQWHHGWRZRUNLQDQ\

"UT THEREAREDESIGNPATTERNSFORMAKINGAPOOLOF
THREADSTHATYOUCANKEEPUSINGTOPERFORMDIFFERENT
JOBS"UTYOUDONTDOITBYRESTARTING ADEADTHREAD

SDUWLFXODUZD\VR\RXFDQQRWEHFHUWDLQWKDWWKUHDGV
ZLOOWDNHWXUQVQLFHO\<RXFDQKHOSLQIOXHQFHWXUQWDNLQJ
E\SXWWLQJ\RXUWKUHDGVWRVOHHSSHULRGLFDOO\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
&OREXAMPLE
7KUHDGVOHHS  

WILLKNOCKATHREADOUTOFTHERUNNINGSTATE AND
KEEPITOUTOFTHERUNNABLESTATEFORTWOSECONDS
4HETHREADCANTBECOMETHERUNNINGTHREAD
AGAINUNTILAFTERATLEASTTWOSECONDSHAVEPASSED
!BITUNFORTUNATELY THESLEEPMETHODTHROWSAN
)NTERRUPTED%XCEPTION ACHECKEDEXCEPTION SOALL
CALLSTOSLEEPMUSTBEWRAPPEDINATRYCATCHOR
DECLARED 3OASLEEPCALLREALLYLOOKSLIKETHIS
WU\^
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`

3XW\RXUWKUHDGWRVOHHS
LI\RXZDQWWREHVXUH
WKDWRWKHUWKUHDGVJHWD
FKDQFHWRUXQ
:KHQWKHWKUHDGZDNHV
XSLWDOZD\VJRHVEDFN
WRWKHUXQQDEOHVWDWH
DQGZDLWVIRUWKHWKUHDG
VFKHGXOHUWRFKRRVHLW
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
UWZMXZMLQK\IJTM
2EMEMBEROUREARLIEREXAMPLETHATKEPTGIVINGUSDIFFERENT
RESULTSEACHTIMEWERANIT,OOKBACKANDSTUDYTHECODE
ANDTHESAMPLEOUTPUT3OMETIMESMAINHADTOWAITUNTILTHE
NEWTHREADlNISHEDANDPRINTEDhTOPOTHESTACKv WHILE
OTHERTIMESTHENEWTHREADWOULDBESENTBACKTORUNNABLE
BEFOREITWASlNISHED ALLOWINGTHEMAINTHREADTOCOMEBACK
INANDPRINTOUThBACKINMAINv(OWCANWElXTHAT3TOP
FORAMOMENTANDANSWERTHISQUESTIONh7HERECANYOUPUT
ASLEEP CALL TOMAKESURETHAThBACKINMAINvALWAYSPRINTS
BEFOREhTOPOTHESTACKv

7KLVLVZKDWZHZDQWDFRQVLVWHQWRUGHU
RISULQWVWDWHPHQWV
)LOH(GLW:LQGRZ+HOS6QRR]H%XWWRQ

MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ
WRSRWKHVWDFN
MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ
WRSRWKHVWDFN
MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ

7ELLWAITWHILEYOUWORKOUTANANSWERTHERESMORETHAN
ONEANSWERTHATWOULDWORK 

WRSRWKHVWDFN

&IGUREITOUT

EDFNLQPDLQ

MDYD7KUHDG7HVW'ULYH
WRSRWKHVWDFN

SXEOLFFODVV0\5XQQDEOHLPSOHPHQWV5XQQDEOH^
SXEOLFYRLGUXQ ^
JR 
`
SXEOLFYRLGJR ^
WU\^
7KUHDGVOHHS  
`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`

GR0RUH 
`

MDYD7KUHDG7HVW'ULYH
EDFNLQPDLQ
WRSRWKHVWDFN

FHWKHQHZLQ J
HZLOOIRUHQ
HU
K
QQ
S
HH
VO
J
LQ
OO
&D
HFXUU WO\UX
K
W
YH
D
OH
R
W
WKUHDG
VWDWH
HWKH
DGZLOOEHFGRPDJDLQDQGSULQW
UH
K
W
LQ
D
P
H
K
7
LQJWKUHD
LOOEHD
FXUUHQWO\LUXQQQPDLQ7KHQWKHUHZHI
HZH
RXWEDFN DERXWWZRVHFRQGV E RURU
DQG

H
RU
R0
I
G
SDXVH LVOLQHZKLFKFDOOV
JHWWRWK WRSRWKHVWDFN
SULQWVRXW

SXEOLFYRLGGR0RUH ^
6\VWHPRXWSULQWOQ WRSRWKHVWDFN 
`
`
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^

EOHLQVWDQF

H

QQD
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
DNHRQH5X
0
5XQ7KUHDGVUXQQHU QHZ5XQ7KUHDGV 
7KUHDGDOSKD QHZ7KUHDG UXQQHU 
0DNHWZRWKUHDGVZLWKWKHVDPH5XQQDEOH WKH
7KUHDGEHWD QHZ7KUHDG UXQQHU 
VDPHMREZHOOWDONPRUHDERXWWKHWZRWKUHDGV
DOSKDVHW1DPH $OSKDWKUHDG 
DQG
RQH5XQQDEOHLQDIHZSDJHV 
EHWDVHW1DPH %HWDWKUHDG 
1DPHWKHWKUHDG
DOSKDVWDUW 
V
EHWDVWDUW 
6WDUWWKHWKUHDGV
`

Licensed by
Eduard Simons
104038
RS
XQWKURXJKWKLVOR
U
LOO
Z
DG
UH
WK
K
DF
(
HDFKWLPH
SULQWLQJLWVQDPH

SXEOLFYRLGUXQ ^
IRU LQWL LL ^
6WULQJWKUHDG1DPH 7KUHDGFXUUHQW7KUHDG JHW1DPH 
6\VWHPRXWSULQWOQ WKUHDG1DPHLVUXQQLQJ 
`
`
`
)LOH(GLW:LQGRZ+HOS&HQWDXUL

?PI\_QTTPIXXMV'

3DUWRIWKHRXWSXWZKHQ
WKHORRSLWHUDWHV
WLPHV

7ILLTHETHREADSTAKETURNS7ILLYOUSEETHETHREADNAMES
ALTERNATING(OWOFTENWILLTHEYSWITCH7ITHEACHITERATION
!FTERlVEITERATIONS
9OUALREADYKNOWTHEANSWERWEDONTKNOW)TSUPTOTHE
SCHEDULER!NDONYOUR/3 WITHYOURPARTICULAR*6- ON
YOUR#05 YOUMIGHTGETVERYDIFFERENTRESULTS
2UNNINGUNDER/38*AGUAR WITHlVEORFEWER
ITERATIONS THE!LPHATHREADRUNSTOCOMPLETION THEN
THE"ETATHREADRUNSTOCOMPLETION6ERYCONSISTENT.OT
GUARANTEED BUTVERYCONSISTENT
"UTWHENYOUUPTHELOOPTOORMOREITERATIONS THINGS
STARTTOWOBBLE4HE!LPHATHREADMIGHTNOTGETTOCOMPLETE
ALLITERATIONSBEFORETHESCHEDULERSENDSITBACKTO
RUNNABLETOLETTHE"ETATHREADHAVEACHANCE

$OSKDWKUHDGLVUXQQLQJ
$OSKDWKUHDGLVUXQQLQJ
$OSKDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
$OSKDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%HWDWKUHDGLVUXQQLQJ
%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.

DUHQWWKUHDGVZRQGHUIXO"

:RZ7KUHDGVDUH
WKHJUHDWHVWWKLQJVLQFHWKH
0,1,&RRSHU,FDQWWKLQN
RIDVLQJOHGRZQVLGHWRXVLQJ
WKUHDGVFDQ\RX"

=UaM[<PMZM1;ILIZS[QLM

<PZMIL[KIVTMIL\WKWVK]ZZMVKaQ[[]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\]XVIVKM[IVL[TMMX
<WLIa[\ZW]JTMLXIQZ:aIVIVL5WVQKI[PIZMIJMLIVLI
JIVSIKKW]V\*]\VW\NWZTWVOQN_MKIV\VLI[WT]\QWV<PM
XZWJTMU'<PMKTI[[QK\_WXMWXTMWVMJIVSIKKW]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_MZMJW]VKQVOKPMKS[IVLOM\\QVOPQ\_Q\PW^MZLZIN\
NMM[
1\PW]OP\Q\_I[V\XW[[QJTM1\PW]OP\W]ZXZWKML]ZM_I[[INM*]\\PMV
\PQ[PIXXMVML"
:aIVVMMLML [WPMKPMKSML\PMJITIVKMQV\PMIKKW]V\
IVL[I_\PI\Q\_I[ 6WXZWJTMU;WPMXTIV[\W
_Q\PLZI_\PMUWVMa*]\Z[\PMNITT[I[TMMX 
)VL\PI\[_PMZM1KWUMQV_PQTM:aIV[[\QTTI[TMMXIVL
VW_1_IV\\W_Q\PLZI_ 1KPMKS\PMJITIVKMIVL
Q\[ JMKI][M:aIV[[\QTTI[TMMXIVLPI[V\aM\UILM
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_MZM[]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

5\DQDQG0RQLFDY
RIWKHWZRSHRSOH LFWLPV
DFFRXQWSUREOHP RQH
HU
5\DQIDOOVDVOHHSDIWH
QF
KHFKHFNVWKHEDOD VWKH
EXWEHIRUHKHPDNH ZDNHV
ZLWKGUDZDO:KHQKHPDNHV
XSKHLPPHGLDWHO\ XW
WKHZLWKGUDZOZLWKR DJDLQ
FKHFNLQJWKHEDODQFH

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
THREADS2YANAND-ONICA SHAREASINGLEOBJECTTHEBANK
ACCOUNT 

5XQQDEOH

4HECODEHASTWOCLASSES "ANK!CCOUNT AND


-ONICA!ND2YAN*OB4HE-ONICA!ND2YAN*OBCLASS
IMPLEMENTS2UNNABLE ANDREPRESENTSTHEBEHAVIORTHAT2YAN
AND-ONICABOTHHAVECHECKINGTHEBALANCEANDMAKING
WITHDRAWALS"UTOFCOURSE EACHTHREADFALLSASLEEPINBETWEEN
CHECKINGTHEBALANCEANDACTUALLYMAKINGTHEWITHDRAWAL

LQWEDODQFH

4HE-ONICA!ND2YAN*OBCLASSHASANINSTANCEVARIABLEOFTYPE
"ANK!CCOUNT THATREPRESENTSTHEIRSHAREDACCOUNT

JHW%DODQFH
ZLWKGUDZ

%DQN$FFRXQW

4HECODEWORKSLIKETHIS

5\DQ$QG0RQLFD-REWKH-RE QHZ5\DQ$QG0RQLFD-RE 

0DNHWZRWKUHDGVZLWKWKHVDPH5XQQDEOH
WKH5\DQ$QG0RQLFD-RELQVWDQFH
7KUHDGRQH QHZ7KUHDG WKH-RE 
7KUHDGWZR QHZ7KUHDG WKH-RE 

1DPHDQGVWDUWWKHWKUHDGV
RQHVHW1DPH 5\DQ 
WZRVHW1DPH 0RQLFD 
RQHVWDUW 
WZRVWDUW 

%DQN$FFRXQWDFFRXQW
UXQ
PDNH:LWKGUDZDO

0DNHRQHLQVWDQFHRI5\DQ$QG0RQLFD-RE
7KH5\DQ$QG0RQLFD-REFODVVLVWKH5XQQDEOH WKHMREWRGR 
DQGVLQFHERWK0RQLFDDQG5\DQGRWKHVDPHWKLQJ FKHFN
EDODQFHDQGZLWKGUDZPRQH\ ZHQHHGRQO\RQHLQVWDQFH

5\DQ$QG0RQLFD-RE

,QWKHUXQ PHWKRGGR
H[DFWO\ZKDW5\DQDQG
0RQLFDZRXOGGRFKHFN
WKHEDODQFHDQGLI
WKHUHVHQRXJKPRQH\
PDNHWKHZLWKGUDZDO
7KLVVKRXOGSURWHFW
DJDLQVWRYHUGUDZLQJWKH
DFFRXQW
([FHSW5\DQDQG
0RQLFDDOZD\VIDOO
DVOHHSDIWHUWKH\
FKHFNWKHEDODQFHEXW
EHIRUHWKH\QLVKWKH
ZLWKGUDZDO

:DWFKERWKWKUHDGVH[HFXWHWKHUXQ PHWKRG
FKHFNWKHEDODQFHDQGPDNHDZLWKGUDZDO
2QHWKUHDGUHSUHVHQWV5\DQWKHRWKHUUHSUHVHQWV0RQLFD
%RWKWKUHDGVFRQWLQXDOO\FKHFNWKHEDODQFHDQGWKHQPDNHD
ZLWKGUDZDOEXWRQO\LILWVVDIH
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
FODVV%DQN$FFRXQW^
WDUWVZLWKD
SULYDWHLQWEDODQFH 
7KHDFFRXQWV 

EDODQFHRI
SXEOLFLQWJHW%DODQFH ^
UHWXUQEDODQFH
`
SXEOLFYRLGZLWKGUDZ LQWDPRXQW ^
EDODQFH EDODQFHDPRXQW
`
`
SXEOLFFODVV5\DQ$QG0RQLFD-RELPSOHPHQWV5XQQDEOH^
SULYDWH%DQN$FFRXQWDFFRXQW QHZ%DQN$FFRXQW 

IWKH
1(LQVWDQFHRQO\
2
O\
RQ
H
E
LOO
QVR
7KHUHZ
D-RE7KDWPHD
5\DQ$QG0RQLF IWKHEDQNDFFRXQW%RWK
21(LQVWDQFHRFFHVVWKLVRQHDFFRXQW
WKUHDGVZLOOD

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
5\DQ$QG0RQLFD-REWKH-RE QHZ5\DQ$QG0RQLFD-RE 
,QVWDQWLDWHWKH
7KUHDGRQH QHZ7KUHDG WKH-RE 
5XQQDEOH MRE
0DNHWZRWKUH
7KUHDGWZR QHZ7KUHDG WKH-RE 
DG
V
RQHVHW1DPH 5\DQ 
MRE7KDWPHDQV JLYLQJHDFKWKUHDGWKHVDP
WZRVHW1DPH 0RQLFD 
DFFRXQWLQVWDQFHERWKWKUHDGVZLOOEHDFFHVVLQ H5XQQDEOH
J
RQHVWDUW 
YDULDEOHLQWKH
5XQQDEOHFODVV WKHRQH
WZRVWDUW 
`

KDQGWULHV
KUHDGORRSVWKURXJ$IWHUWKH
W
D
G
KR
HW
P

XQ
LRQ
,QWKHU
DOZLWKHDFKLWHUDW

WRPDNHDZLWKGUDZNVWKHEDODQFHRQFHDJDLQWRVHHLI
ZLWKGUDZDOLWFKHF GUDZQ
WKHDFFRXQWLVRYHU
HUHVQRW
&KHFNWKHDFFRXQWEDODQFHDQGLIWKJH,IWKHUH,6
HQRXJKPRQH\ZHMXVWSULQWDPHVVD DQGFRPSOHWH
HQRXJKZHJRWRVOHHSWKHQZDNHXS
SULYDWHYRLGPDNH:LWKGUDZDO LQWDPRXQW ^
WKHZLWKGUDZDOMXVWOLNH5\DQGLG
LI DFFRXQWJHW%DODQFH ! DPRXQW ^
SXEOLFYRLGUXQ ^
IRU LQW[ [[ ^
PDNH:LWKGUDZO  
LI DFFRXQWJHW%DODQFH  ^
6\VWHPRXWSULQWOQ 2YHUGUDZQ 
`
`
`

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\QRWHQRXJKIRU7KUHDGFXUUHQW7KUHDG JHW1DPH 
`
:HSXWLQDEXQFKRISULQW
`
VHH
ZKDWVKDSSHQLQJDVLWUXVWDWHPHQWVVRZHFDQ
`
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

+RZGLGWKLV
KDSSHQ"

5\DQLVDERXWWRZLWKGUDZ
5\DQLVJRLQJWRVOHHS
0RQLFDZRNHXS
0RQLFDFRPSOHWHVWKHZLWKGUDZO
0RQLFDLVDERXWWRZLWKGUDZ
0RQLFDLVJRLQJWRVOHHS
5\DQZRNHXS
5\DQFRPSOHWHVWKHZLWKGUDZO
5\DQLVDERXWWRZLWKGUDZ
5\DQLVJRLQJWRVOHHS
0RQLFDZRNHXS
0RQLFDFRPSOHWHVWKHZLWKGUDZO
0RQLFDLVDERXWWRZLWKGUDZ
0RQLFDLVJRLQJWRVOHHS
5\DQZRNHXS
5\DQFRPSOHWHVWKHZLWKGUDZO
5\DQLVDERXWWRZLWKGUDZ
5\DQLVJRLQJWRVOHHS
0RQLFDZRNHXS
0RQLFDFRPSOHWHVWKHZLWKGUDZO
6RUU\QRWHQRXJKIRU0RQLFD
6RUU\QRWHQRXJKIRU0RQLFD
6RUU\QRWHQRXJKIRU0RQLFD
6RUU\QRWHQRXJKIRU0RQLFD
6RUU\QRWHQRXJKIRU0RQLFD
5\DQZRNHXS
5\DQFRPSOHWHVWKHZLWKGUDZO
2YHUGUDZQ
6RUU\QRWHQRXJKIRU5\DQ
2YHUGUDZQ
6RUU\QRWHQRXJKIRU5\DQ
2YHUGUDZQ
6RUU\QRWHQRXJKIRU5\DQ
2YHUGUDZQ

7KHPDNH:LWKGUDZDO PHWKRG
DOZD\VFKHFNVWKHEDODQFH
EHIRUHPDNLQJDZLWKGUDZDO
EXWVWLOOZHRYHUGUDZWKH
DFFRXQW
+HUHVRQHVFHQDULR
5\DQFKHFNVWKHEDODQFHVHHVWKDW
WKHUHVHQRXJKPRQH\DQGWKHQIDOOV
DVOHHS
0HDQZKLOH0RQLFDFRPHVLQDQGFKHFNV
WKHEDODQFH6KHWRRVHHVWKDWWKHUHV
HQRXJKPRQH\6KHKDVQRLGHDWKDW
5\DQLVJRLQJWRZDNHXSDQGFRPSOHWHD
ZLWKGUDZDO
0RQLFDIDOOVDVOHHS
5\DQZDNHVXSDQGFRPSOHWHVKLV
ZLWKGUDZDO
0RQLFDZDNHVXSDQGFRPSOHWHVKHU
ZLWKGUDZDO%LJ3UREOHP,QEHWZHHQWKH
WLPHZKHQVKHFKHFNHGWKHEDODQFHDQG
PDGHWKHZLWKGUDZDO5\DQZRNHXSDQG
SXOOHGPRQH\IURPWKHDFFRXQW
0RQLFDVFKHFNRIWKHDFFRXQWZDV
QRWYDOLGEHFDXVH5\DQKDGDOUHDG\
FKHFNHGDQGZDVVWLOOLQWKHPLGGOHRI
PDNLQJDZLWKGUDZDO
0RQLFDPXVWEHVWRSSHGIURPJHWWLQJ
LQWRWKHDFFRXQWXQWLO5\DQZDNHVXSDQG
QLVKHVKLVWUDQVDFWLRQ$QGYLFHYHUVD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
 7KHUHVDORFNDVVRFLDWHGZLWKWKHEDQN
DFFRXQWWUDQVDFWLRQ FKHFNLQJWKHEDODQFH
DQGZLWKGUDZLQJPRQH\ 7KHUHVRQO\
RQHNH\DQGLWVWD\VZLWKWKHORFNXQWLO
VRPHERG\ZDQWVWRDFFHVVWKHDFFRXQW

:KHQ5\DQZDQWVWRDFFHVVWKHEDQN
DFFRXQW WRFKHFNWKHEDODQFHDQGZLWKGUDZ
PRQH\ KHORFNVWKHORFNDQGSXWVWKHNH\
LQKLVSRFNHW1RZQRERG\HOVHFDQDFFHVV
WKHDFFRXQWVLQFHWKHNH\LVJRQH

5\DQNHHSVWKHNH\LQKLVSRFNHWXQWLOKH
QLVKHVWKHWUDQVDFWLRQ+HKDVWKHRQO\
NH\VR0RQLFDFDQWDFFHVVWKHDFFRXQW
RUWKHFKHFNERRN XQWLO5\DQXQORFNVWKH
DFFRXQWDQGUHWXUQVWKHNH\
1RZHYHQLI5\DQIDOOVDVOHHSDIWHUKH
FKHFNVWKHEDODQFHKHKDVDJXDUDQWHH
WKDWWKHEDODQFHZLOOEHWKHVDPHZKHQKH
ZDNHVXSEHFDXVHKHNHSWWKHNH\ZKLOHKH
ZDVDVOHHS

7KHEDQNDFFRXQW
WUDQVDFWLRQLV
XQORFNHGZKHQ
QRERG\LVXVLQJ
WKHDFFRXQW

:KHQ5\DQ
ZDQWVWRDFFHVV
WKHDFFRXQWKH
VHFXUHVWKHORFN
DQGWDNHVWKHNH\

:KHQ5\DQLV
QLVKHGKH
XQORFNVWKHORFN
DQGUHWXUQVWKH
NH\1RZWKHNH\
LVDYDLODEOHIRU
0RQLFD RU5\DQ
DJDLQ WRDFFHVV
WKHDFFRXQW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WAKEUPANDlNISHTHEWITHDRAWALBEFOREANYOTHERTHREADCANCHECKTHE
ACCOUNTBALANCE
5SETHEV\QFKURQL]HGKEYWORDTOMODIFYAMETHODSOTHATONLY
ONETHREADATATIMECANACCESSIT
4HATSHOWYOUPROTECTTHEBANKACCOUNT9OUDONTPUTALOCKON
THEBANKACCOUNTITSELFYOULOCKTHEMETHODTHATDOESTHEBANKING
TRANSACTION4HATWAY ONETHREADGETSTOCOMPLETETHEWHOLE
TRANSACTION STARTTOlNISH EVENIFTHATTHREADFALLSASLEEPINTHE
MIDDLEOFTHEMETHOD
3OIFYOUDONTLOCKTHEBACKACCOUNT THENWHATEXACTLYISLOCKED)S
ITTHEMETHOD4HE2UNNABLEOBJECT4HETHREADITSELF

7KHV\QFKURQL]HG
NH\ZRUGPHDQVWKDW
DWKUHDGQHHGVDNH\
LQRUGHUWRDFFHVVWKH
V\QFKURQL]HGFRGH
7RSURWHFW\RXUGDWD
OLNHWKHEDQNDFFRXQW 
V\QFKURQL]HWKH
PHWKRGVWKDWDFWRQ
WKDWGDWD

7ELLLOOKATTHATONTHENEXTPAGE)NCODE THOUGH ITSQUITE


SIMPLEJUSTADDTHESYNCHRONIZEDMODIlERTOYOURMETHOD
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\QRWHQRXJKIRU7KUHDGFXUUHQW7KUHDG JHW1DPH 
`
`

1RWHIRU\RXSK\VLFVVDYY\UHDGHUV\HVWKHFRQYHQWLRQRIXVLQJWKHZRUGDWRPLFKHUHGRHVQRWUHIOHFW
WKHZKROHVXEDWRPLFSDUFWLFOHWKLQJ7KLQN1HZWRQQRW(LQVWHLQZKHQ\RXKHDUWKHZRUGDWRPLFLQWKH
FRQWH[WRIWKUHDGVRUWUDQVDFWLRQV+H\LWVQRW285FRQYHQWLRQ,I:(ZHUHLQFKDUJHZHGDSSO\
+HLVHQEHUJV8QFHUWDLQW\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
LOCKISUNLOCKED ANDYOUCANIMAGINEAVIRTUAL
KEYSITTINGWITHIT/BJECTLOCKSCOMEINTOPLAY
ONLYWHENTHEREARESYNCHRONIZEDMETHODS
7HENANOBJECTHASONEORMORESYNCHRONIZED
METHODS ATHREADCANENTERASYNCHRONIZED
METHODONLYIFTHETHREADCANGETTHEKEYTOTHE
OBJECTSLOCK

+H\WKLVREMHFWV
WDNH0RQH\ PHWKRGLV
V\QFKURQL]HG,QHHGWRJHW
WKLVREMHFWVNH\EHIRUH,
FDQJRLQ

4HELOCKSARENOTPERMETHOD THEY
AREPEROBJECT)FANOBJECTHASTWO
SYNCHRONIZEDMETHODS ITDOESNOT
SIMPLYMEANTHATYOUCANTHAVETWO
THREADSENTERINGTHESAMEMETHOD)T
MEANSYOUCANTHAVETWOTHREADSENTERING
ANYOFTHESYNCHRONIZEDMETHODS
4HINKABOUTIT)FYOUHAVEMULTIPLE
METHODSTHATCANPOTENTIALLYACTONAN
OBJECTSINSTANCEVARIABLES ALLTHOSEMETHODS
NEEDTOBEPROTECTEDWITHSYNCHRONIZED
4HEGOALOFSYNCHRONIZATIONISTOPROTECT
CRITICALDATA"UTREMEMBER YOUDONTLOCKTHE
DATAITSELF YOUSYNCHRONIZETHEMETHODSTHAT
ACCESSTHATDATA
3OWHATHAPPENSWHENATHREADISCRANKING
THROUGHITSCALLSTACKSTARTINGWITHTHERUN
METHOD ANDITSUDDENLYHITSASYNCHRONIZED
METHOD4HETHREADRECOGNIZESTHATITNEEDS
AKEYFORTHATOBJECTBEFOREITCANENTERTHE
METHOD)TLOOKSFORTHEKEYTHISISALLHANDLED
BYTHE*6-THERESNO!0)IN*AVAFORACCESSING
OBJECTLOCKS ANDIFTHEKEYISAVAILABLE THE
THREADGRABSTHEKEYANDENTERSTHEMETHOD
&ROMTHATPOINTFORWARD THETHREADHANGSON
TOTHATKEYLIKETHETHREADSLIFEDEPENDSON
IT4HETHREADWONTGIVEUPTHEKEYUNTILIT
COMPLETESTHESYNCHRONIZEDMETHOD3OWHILE
THATTHREADISHOLDINGTHEKEY NOOTHERTHREADS
CANENTERANYOFTHATOBJECTSSYNCHRONIZED
METHODS BECAUSETHEONEKEYFORTHATOBJECT
WONTBEAVAILABLE

(YHU\-DYDREMHFWKDVDORFN
$ORFNKDVRQO\RQHNH\
0RVWRIWKHWLPHWKHORFNLV
XQORFNHGDQGQRERG\FDUHV
%XWLIDQREMHFWKDV
V\QFKURQL]HGPHWKRGVD
WKUHDGFDQHQWHURQHRIWKH
V\QFKURQL]HGPHWKRGV21/<
LIWKHNH\IRUWKHREMHFWVORFN
LVDYDLODEOH,QRWKHUZRUGV
RQO\LIDQRWKHUWKUHDGKDVQW
DOUHDG\JUDEEHGWKHRQHNH\

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

<PMLZMILML4W[\=XLI\MXZWJTMU
(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^
SULYDWHLQWEDODQFH

LPHV
XQVODWQFHRQ
U

G
D
H
U
K
W
HDFK HQWLQJWKHED
LQFUHP HUDWLRQ
HDFKLW

SXEOLFYRLGUXQ ^
IRU LQWL LL ^
LQFUHPHQW 
6\VWHPRXWSULQWOQ EDODQFHLVEDODQFH 
`
`
SXEOLFYRLGLQFUHPHQW ^
LQWL EDODQFH
EDODQFH L
`
`

+HUHVWKHFUXFLD
DGGLQJWRZKDWHOSDUW :HLQFUHPHQWWKHEDODQF
7,0(:(5($' YHUWKHYDOXHRIEDODQFHZDV$ HE\
WKH&855(17YD ,7 UDWKHUWKDQDGGLQJWRZ 77+(
KDWHYHU
OXHLV

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

Licensed by
Eduard Simons
104038

 7KUHDG%UXQVIRUDZKLOH

3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
>QRZWKUHDG%LVVHQWEDFNWRUXQQDEOH
EHIRUHLWVHWVWKHYDOXHRIEDODQFHWR@

 7KUHDG$UXQVDJDLQSLFNLQJXSZKHUHLWOHIWRII

3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV
3XWWKHYDOXHRIEDODQFHLQWRYDULDEOHL
%DODQFHLVVRLLVQRZ
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV

 7KUHDG%UXQVDJDLQDQGSLFNVXSH[DFWO\ZKHUHLWOHIWRII
6HWWKHYDOXHRIEDODQFHWRWKHUHVXOWRIL
1RZEDODQFHLV

<LNHV

7KUHDG$XSGDWHGLWWREXW
QRZ%FDPHEDFNDQGVWHSSHG
RQWRSRIWKHXSGDWH$PDGH
DVLI$VXSGDWHQHYHUKDSSHQHG

:HORVWWKHODVWXSGDWHV
WKDW7KUHDG$PDGH
7KUHDG%KDGSUHYLRXVO\
GRQHDUHDGRIWKHYDOXH
RIEDODQFHDQGZKHQ%
ZRNHXSLWMXVWNHSWJRLQJ
DVLILWQHYHUPLVVHGDEHDW
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
ASONEUNBREAKABLEUNIT

SXEOLFV\QFKURQL]HGYRLGLQFUHPHQW ^
LQWL EDODQFH
EDODQFH L
`

2QFHDWKUHDGHQWHUV
WKHPHWKRGZHKDYH
WRPDNHVXUHWKDWDOO
WKHVWHSVLQWKHPHWKRG
FRPSOHWH DVRQH
DWRPLFSURFHVV EHIRUH
DQ\RWKHUWKUHDGFDQ
HQWHUWKHPHWKRG

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

3OUNDSLIKEITSAGOODIDEATOSYNCHRONIZE
EVERYTHING JUSTTOBETHREAD SAFE

A:

.OPE ITSNOTAGOODIDEA3YNCHRONIZATIONDOESNT
COMEFORFREE&IRST ASYNCHRONIZEDMETHODHASACERTAIN
AMOUNTOFOVERHEAD)NOTHERWORDS WHENCODEHITSA
SYNCHRONIZEDMETHOD THERESGOINGTOBEAPERFORMANCEHIT
ALTHOUGHTYPICALLY YOUDNEVERNOTICEIT WHILETHEMATTEROF
hISTHEKEYAVAILABLEvISRESOLVED
3ECOND ASYNCHRONIZEDMETHODCANSLOWYOURPROGRAM
DOWNBECAUSESYNCHRONIZATIONRESTRICTSCONCURRENCY)N
OTHERWORDS ASYNCHRONIZEDMETHODFORCESOTHERTHREADSTO
GETINLINEANDWAITTHEIRTURN4HISMIGHTNOTBEAPROBLEM
INYOURCODE BUTYOUHAVETOCONSIDERIT



SXEOLFYRLGJR ^
GR6WXII 

GR6WXII GRHVQWQHHGWR
EHV\QFKURQL]HGVRZHGRQW 
V\QFKURQL]HWKHZKROHPHWKRG

V\QFKURQL]HG WKLV ^
FULWLFDO6WXII 
PRUH&ULWLFDO6WXII 
`
`

4HIRD ANDMOSTFRIGHTENING SYNCHRONIZEDMETHODSCANLEAD


TODEADLOCK3EEPAGE
!GOODRULEOFTHUMBISTOSYNCHRONIZEONLYTHEBARE
MINIMUMTHATSHOULDBESYNCHRONIZED!NDINFACT YOU
CANSYNCHRONIZEATAGRANULARITYTHATSEVENSMALLERTHAN
AMETHOD7EDONTUSEITINTHEBOOK BUTYOUCANUSETHE
SYNCHRONIZEDKEYWORDTOSYNCHRONIZEATTHEMOREFINE
GRAINEDLEVELOFONEORMORESTATEMENTS RATHERTHANATTHE
WHOLE METHODLEVEL

1RZRQO\WKHVH P
HWKRGFDOOVDUHJURXSHG
LQWRRQHDWRPLFWXQZR

LW
:
V\QFKURQL]HGNH\ZRUG KHQ\RXXVHWKH
:
UDWKHUWKDQLQ WK ,7+,1DPHWKRG
RGGHFODUDWLRQ
KDYHWRSURYLGHDDQPH
UJXPHQWWKDWLVW\KHRX 
REMHFWZKRVHNH\WD
KHWKUHDGQHHGVWRJH
W
$OWKRXJKWKHUHDUHRWK
HU
Z
D\
VW
RGRLW RX
ZLOODOPRVWDOZD\ \QFK
URQL]HRQWKHFXU\
REMHFW WKLV 7KVV
UHQW
VWKHVDPHREM
ORFNLIWKHZKROHDW
PHWKRGZHUHV\QFHFKUWRQ\RXG
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%LVVHQWLQWRDREMHFWORFNQRWDYDLODEOHORXQJH@

 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
DEADLOCK)TMIGHTASSUME FOREXAMPLE THATDEADLOCKMIGHT
HAVEOCCURREDWHENTWOTRANSACTIONSARETAKINGTOOLONGTO
COMPLETE"UTUNLIKE*AVA THEAPPLICATIONSERVERCANDOA
hTRANSACTIONROLLBACKvTHATRETURNSTHESTATEOFTHEROLLED BACK
TRANSACTIONTOWHEREITWASBEFORETHETRANSACTIONTHEATOMIC
PART BEGAN

$OOLWWDNHVIRU
GHDGORFNDUHWZR
REMHFWVDQGWZR
WKUHDGV
IRR

*AVAHASNOMECHANISMTOHANDLEDEADLOCK)TWONTEVENKNOW
DEADLOCKOCCURRED3OITSUPTOYOUTODESIGNCAREFULLY)FYOU
lNDYOURSELFWRITINGMUCHMULTITHREADEDCODE YOUMIGHT
WANTTOSTUDYh*AVA4HREADSvBY3COTT/AKSAND(ENRY7ONG
FORDESIGNTIPSONAVOIDINGDEADLOCK/NEOFTHEMOSTCOMMON
TIPSISTOPAYATTENTIONTOTHEORDERINWHICHYOURTHREADSARE
STARTED

EDU

$VLPSOHGHDGORFNVFHQDULR


7KUHDG$HQWHUVD
V\QFKURQL]HGPHWKRG
RIREMHFWIRRDQGJHWV
WKHNH\
IRR

7KUHDG$JRHVWR
VOHHSKROGLQJWKH
IRRNH\

IRR
EDU

7KUHDG%HQWHUVD
V\QFKURQL]HGPHWKRG
RIREMHFWEDUDQGJHWV
WKHNH\

EDU
7KUHDG%WULHVWRHQWHU
DV\QFKURQL]HGPHWKRG
RIREMHFWIRREXWFDQW
JHWWKDWNH\ EHFDXVH
$KDVLW %JRHV
WRWKHZDLWLQJORXQJH
XQWLOWKHIRRNH\LV
DYDLODEOH%NHHSVWKH
EDUNH\

$
IRR

7KUHDG$ZDNHVXS VWLOO
KROGLQJWKHIRRNH\ 
DQGWULHVWRHQWHUD
V\QFKURQL]HGPHWKRGRQ
REMHFWEDUEXWFDQWJHW
WKDWNH\EHFDXVH%KDV
LW$JRHVWRWKHZDLWLQJ
ORXQJHXQWLOWKHEDUNH\LV
DYDLODEOH LWQHYHUZLOOEH
7KUHDG$FDQWUXQXQWLO
LWFDQJHWWKHEDUNH\
EXW%LVKROGLQJWKHEDU
NH\DQG%FDQWUXQXQWLOLW
JHWVWKHIRRNH\WKDW$LV
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
DOWKRXJKWKHUHVQRJXDUDQWHHWKDWZKHQDWKUHDGZDNHVXSLWOOJRWRWKH
HQGRIWKHUXQQDEOHOLQH,WPLJKWIRUH[DPSOHJRULJKWEDFNWRWKHIURQW
,QPRVWFDVHVDSSURSULDWHO\WLPHGVOHHS FDOOVDUHDOO\RXQHHGWRNHHS
\RXUWKUHDGVVZLWFKLQJQLFHO\

 <RXFDQQDPHDWKUHDGXVLQJWKH \HWDQRWKHUVXUSULVH VHW1DPH 


PHWKRG$OOWKUHDGVJHWDGHIDXOWQDPHEXWJLYLQJWKHPDQH[SOLFLWQDPH
FDQKHOS\RXNHHSWUDFNRIWKUHDGVHVSHFLDOO\LI\RXUHGHEXJJLQJZLWK
SULQWVWDWHPHQWV

 <RXFDQKDYHVHULRXVSUREOHPVZLWKWKUHDGVLIWZRRUPRUHWKUHDGVKDYH
DFFHVVWRWKHVDPHREMHFWRQWKHKHDS

 7ZRRUPRUHWKUHDGVDFFHVVLQJWKHVDPHREMHFWFDQOHDGWRGDWD
FRUUXSWLRQLIRQHWKUHDGIRUH[DPSOHOHDYHVWKHUXQQLQJVWDWHZKLOHVWLOO
LQWKHPLGGOHRIPDQLSXODWLQJDQREMHFWVFULWLFDOVWDWH

 7RPDNH\RXUREMHFWVWKUHDGVDIHGHFLGHZKLFKVWDWHPHQWVVKRXOGEH
WUHDWHGDVRQHDWRPLFSURFHVV,QRWKHUZRUGVGHFLGHZKLFKPHWKRGV
PXVWUXQWRFRPSOHWLRQEHIRUHDQRWKHUWKUHDGHQWHUVWKHVDPHPHWKRG
RQWKHVDPHREMHFW

 8VHWKHNH\ZRUGV\QFKURQL]HGWRPRGLI\DPHWKRGGHFODUDWLRQ
ZKHQ\RXZDQWWRSUHYHQWWZRWKUHDGVIURPHQWHULQJWKDWPHWKRG

 (YHU\REMHFWKDVDVLQJOHORFNZLWKDVLQJOHNH\IRUWKDWORFN0RVWRIWKH
WLPHZHGRQWFDUHDERXWWKDWORFNORFNVFRPHLQWRSOD\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

<HVWKHUHUHDOO\,6DQ
HQGWRWKLVFKDSW
%XWQRW\HW HU

LPSRUWMDYDLR 
LPSRUWMDYDQHW 
LPSRUWMDYDXWLO 
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDDZW 
LPSRUWMDYDDZWHYHQW 
SXEOLFFODVV6LPSOH&KDW&OLHQW^
-7H[W$UHDLQFRPLQJ
-7H[W)LHOGRXWJRLQJ
%XIIHUHG5HDGHUUHDGHU
3ULQW:ULWHUZULWHU
6RFNHWVRFN
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
6LPSOH&KDW&OLHQWFOLHQW QHZ6LPSOH&KDW&OLHQW 
FOLHQWJR 
`
SXEOLFYRLGJR ^

HHQ
8,FRGH\RXHSYHWVWKH
*
\
WO
RV
P
LV
V
KL
7
VSHFLDOH[F
EHIRUH1RWSKLDUQJWZKHUHZHVWDUWWKH
KLJKOLJKWHG WKUHDG
QHZUHDGHU

-)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 
:HUHVWDUWLQJDQHZWK
UHDG
PDLQ3DQHODGG RXWJRLQJ 
XVLQJDQHZLQQHU
VVDV
PDLQ3DQHODGG VHQG%XWWRQ 
WKH5XQQDEOH MRE FOD
IRUWKH
VHW8S1HWZRUNLQJ 
WKUH
7KUHDGUHDGHU7KUHDG QHZ7KUHDG QHZ,QFRPLQJ5HDGHU 
UHDGHU7KUHDGVWDUW 

IUDPHJHW&RQWHQW3DQH DGG %RUGHU/D\RXW&(17(5PDLQ3DQHO 
IUDPHVHW6L]H  
IUDPHVHW9LVLEOH WUXH 

`FORVHJR

DG7KHWKU GVMRELV
WRUHDGIURPWKHHDVH
HUV
VRFNHWVWUHDPGLVSOD\UYLQJ
DQ\LQFRPLQJPHVVDJHVLQ 
VFUROOLQJWH[WDUHD WKH

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 
VRFNHWWRJHUHWHWDOUHDG\XVLQJ
KH
W
QJ
VL
X
UH
`FDWFK ,2([FHSWLRQH[ ^
H
:
DPV:HZ

H[SULQW6WDFN7UDFH 
DQGRXWSXWVVWWUUHHDPWRVHQGWRWKHVHUYVHU
R
P
XW
HD
`
WS
WU
RX
V
H
WK
VLQJWKHLQSXW
`FORVHVHW8S1HWZRUNLQJ
EXWQRZZHUHX
UHDGFDQJHW

WK
HZUHDGHUYH
WKDWWKHQUR
U
HU
V
KH
PHVVDJHVI PW

SXEOLFFODVV6HQG%XWWRQ/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WU\^
ZULWHUSULQWOQ RXWJRLQJJHW7H[W 
ZULWHUXVK 
1RWKLQJQHZKHUH:KHQWKHXVHU

FOLFNV
WKHVHQGEXWWRQWKLVPHW
KRG
`FDWFK ([FHSWLRQH[ ^
VH
QGV
FRQWHQWVRIWKHWH[WILHOGWR WKH
H[SULQW6WDFN7UDFH 
WKHVHUYHU
`
RXWJRLQJVHW7H[W 
RXWJRLQJUHTXHVW)RFXV 
`
`FORVHLQQHUFODVV
SXEOLFFODVV,QFRPLQJ5HDGHULPSOHPHQWV5XQQDEOH^
SXEOLFYRLGUXQ ^
6WULQJPHVVDJH
WU\^

WKUHDGGRHV
7KLVLVZKDWWKH
GLWVWD\VLQD
,QWKHUXQ PDVHWZKRKDWLWJHWVIURP
ORRS DVORQJVQRWQXOO UHDGLQJD
ZKLOH PHVVDJH UHDGHUUHDG/LQH  QXOO ^
WKHVHUYHUL HDQGDGGLQJHDFKOLQH
6\VWHPRXWSULQWOQ UHDGPHVVDJH 
OLQHDWDWLPOLQJWH[WDUHD DORQJ
LQFRPLQJDSSHQG PHVVDJH?Q 
WRWKHVFURO LQHFKDUDFWHU 

ZLWKDQHZO
`FORVHZKLOH
`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
LPSRUWMDYDLR 
LPSRUWMDYDQHW 
LPSRUWMDYDXWLO 

7RUXQWKHFKDWFOLHQW\RXQHHGWZR
WHUPLQDOV)LUVWODXQFKWKLVVHUYHU
IURPRQHWHUPLQDOWKHQODXQFKWKH
FOLHQWIURPDQRWKHUWHUPLQDO

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 UHDGPHVVDJH 
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 
ZULWHUXVK 
`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
VARIABLESTATE)FYOUHAVESTATIC
METHODSTHATCHANGETHESTATICVARIABLE
STATE CANYOUSTILLUSESYNCHRONIZATION

A:

9ES2EMEMBERTHATSTATIC
METHODSRUNAGAINSTTHECLASSANDNOT
AGAINSTANINDIVIDUALINSTANCEOFTHECLASS
3OYOUMIGHTWONDERWHOSEOBJECTSLOCK
WOULDBEUSEDONASTATICMETHOD!FTER
ALL THEREMIGHTNOTEVENBEANYINSTANCES
OFTHATCLASS&ORTUNATELY JUSTASEACH
OBJECTHASITSOWNLOCK EACHLOADEDCLASS
HASALOCK4HATMEANSTHATIFYOUHAVE
THREE$OGOBJECTSONYOURHEAP YOUHAVE
ATOTALOFFOUR$OG RELATEDLOCKS4HREE
BELONGINGTOTHETHREE$OGINSTANCES
ANDONEBELONGINGTOTHE$OGCLASSITSELF
7HENYOUSYNCHRONIZEASTATICMETHOD
*AVAUSESTHELOCKOFTHECLASSITSELF3OIF
YOUSYNCHRONIZETWOSTATICMETHODSINA
SINGLECLASS ATHREADWILLNEEDTHECLASS
LOCKTOENTEREITHEROFTHEMETHODS

Q:

7HATARETHREADPRIORITIES)VE
HEARDTHATSAWAYYOUCANCONTROL
SCHEDULING

A:

4HREADPRIORITIESMIGHTHELP
YOUINFLUENCETHESCHEDULER BUTTHEY
STILLDONTOFFERANYGUARANTEE4HREAD
PRIORITIESARENUMERICALVALUESTHATTELL
THESCHEDULERIFITCARES HOWIMPORTANTA
THREADISTOYOU)NGENERAL THESCHEDULER
WILLKICKALOWERPRIORITYTHREADOUTOFTHE
RUNNINGSTATEIFAHIGHERPRIORITYTHREAD
SUDDENLYBECOMESRUNNABLE"UTONE
MORETIME SAYITWITHMENOW hTHERE
ISNOGUARANTEEv7ERECOMMENDTHAT
YOUUSEPRIORITIESONLYIFYOUWANTTO
INFLUENCEPERFORMANCE BUTNEVER EVER
RELYONTHEMFORPROGRAMCORRECTNESS

Q:

7HYDONTYOUJUSTSYNCHRONIZE
ALLTHEGETTERSANDSETTERSFROMTHE
CLASSWITHTHEDATAYOURETRYINGTO
PROTECT,IKE WHYCOULDNTWEHAVE
SYNCHRONIZEDJUSTTHECHECK"ALANCE
ANDWITHDRAW METHODSFROMCLASS
"ANK!CCOUNT INSTEADOFSYNCHRONIZING
THEMAKE7ITHDRAWAL METHODFROM
THE2UNNABLESCLASS

A:

!CTUALLY WESHOULDHAVE
SYNCHRONIZEDTHOSEMETHODS TOPREVENT
OTHERTHREADSFROMACCESSINGTHOSE
METHODSINOTHERWAYS7EDIDNTBOTHER
BECAUSEOUREXAMPLEDIDNTHAVEANY
OTHERCODEACCESSINGTHEACCOUNT
"UTSYNCHRONIZINGTHEGETTERS
ANDSETTERSORINTHISCASETHE
CHECK"ALANCE ANDWITHDRAW ISNT
ENOUGH2EMEMBER THEPOINTOF
SYNCHRONIZATIONISTOMAKEASPECIFIC
SECTIONOFCODEWORK!4/-)#!,,9)N
OTHERWORDS ITSNOTJUSTTHEINDIVIDUAL
METHODSWECAREABOUT ITSMETHODS
THATREQUIREMORETHANONESTEPTO
COMPLETE4HINKABOUTIT)FWEHADNOT
SYNCHRONIZEDTHEMAKE7ITHDRAWAL
METHOD 2YANWOULDHAVECHECKEDTHE
BALANCEBYCALLINGTHESYNCHRONIZED
CHECK"ALANCE ANDTHENIMMEDIATELY
EXITEDTHEMETHODANDRETURNEDTHEKEY
/FCOURSEHEWOULDGRABTHEKEYAGAIN
AFTERHEWAKESUP SOTHATHECANCALL
THESYNCHRONIZEDWITHDRAW METHOD
BUTTHISSTILLLEAVESUSWITHTHESAME
PROBLEMWEHADBEFORESYNCHRONIZATION
2YANCANCHECKTHEBALANCE GOTOSLEEP
AND-ONICACANCOMEINANDALSOCHECK
THEBALANCEBEFORE2YANHASACHANCETO
WAKESUPANDCOMPLETESHISWITHDRAWAL
3OSYNCHRONIZINGALLTHEACCESSMETHODS
ISPROBABLYAGOODIDEA TOPREVENT
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
104038
GDQFHEHDW

R
JHWVVHQWW

H
J
D
VV
H
P

U

\RX
OD\HUVDORQJ
WKHRWKHUS XUUHQWEHDW
ZLWK\RXUF HQ\RXKLW
SDWWHUQZK
VHQG,W

$QG\JURRYH

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW

This is the last version of the BeatBox!

LQFRPLQJPH
SOD\HUV&OLFVVDJHVIURP
WKHSDWWHUQ NRQHWRORDG
ZLWKLWDQG WKDWJRHV
6WDUWWRS WKHQFOLFN
OD\LW

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
1dQ^OU_Q

SXEOLFFODVV7HVW7KUHDGV^

FODVV$FFXP^

!WORKING*AVAPROGRAMISSCRAMBLEDUPONTHEFRIDGE#AN
YOUADDTHECODESNIPPETSONTHENEXTPAGETOTHEEMPTY
CLASSESBELOW TOMAKEAWORKING*AVAPROGRAMTHATPRO
DUCESTHEOUTPUTLISTED3OMEOFTHECURLYBRACESFELLONTHE
FLOORANDTHEYWERETOOSMALLTOPICKUP SOFEELFREETOADDAS
MANYOFTHOSEASYOUNEED

FODVV7KUHDG2QH

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 

WZRDJHW&RXQW

KUHDG W 
7KUHDGRQH QHZ7

6\VWHPRXWSULQWOQ

G([FHSWLRQH[ ^`
`FDWFK ,QWHUUXSWH



Z7KUHDG7ZR
WU\^
7KUHDG7ZRW QH

FRXQWHU DGG

UHWXUQFRXQWHU
7KUHDGW
Z

R QHZ
7KU

HDG W 

RQHVWDUW 

LPSOHPHQWV5XQQDEOH^

7KUHDGVOHHS  

$FFXPD $FFXPJHW$FFXP 

G([FHSWLRQH[ ^`

`FDWFK ,QWHUUXSWH

SXEOLFVWDWLF$FFXPJHW$FFXP ^

SULYDWHVWDWLF$FF
SULYDWHLQWFRXQ

DXSGDWH&RXQWHU

WHU 


XPD QHZ$FFXP

Q 
SXEOLFYRLGUX

7KUHDGV
OHHS 


 

IRU LQW[ [


[ 

LPSOHPHQWV5XQQDEOH^

DXSGDWH&RXQWHU 

SXEOLFL

QWJHW&R

XQW ^

UHWXUQD

6\VWHPRXWSULQW

OQ RQHDJHW&

SXEOLFYRLGXSGD
WH&RXQ

RXQW 

WHU LQWDGG ^

IRU LQW[ [


[ 

WU\^

WZRVWDUW 

Q ^

SXEOLFYRLGUX

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

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

%XERCISE3OLUTIONS

SXEOLFFODVV7HVW7KUHDGV^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
7KUHDG2QHW QHZ7KUHDG2QH 
7KUHDG7ZRW QHZ7KUHDG7ZR 
7KUHDGRQH QHZ7KUHDG W 
7KUHDGWZR QHZ7KUHDG W 
RQHVWDUW 
WZRVWDUW 

QFH

DWLFLQVWD
FUHDWHDVWFFXP
RIFODVV$

`
`

PRIVATESTATIC!CCUMANEW!CCUM FUHDWHVD

FODVV$FFXP^
SULYDWHVWDWLF$FFXPD QHZ$FFXP 
SULYDWHLQWFRXQWHU 
SULYDWH$FFXP ^`

7KUHDGVIURPWZRGLIIHUHQWFODVVHVDUHXSGDWLQJ
WKHVDPHREMHFWLQDWKLUGFODVVEHFDXVHERWK
WKUHDGVDUHDFFHVVLQJDVLQJOHLQVWDQFHRI$FFXP
7KHOLQHRIFRGH
VWDWLFLQVWDQFHRI$FFXP UHPHPEHUVWDWLFPHDQV
RQHSHUFODVV DQGWKHSULYDWHFRQVWUXFWRULQ
$FFXPPHDQVWKDWQRRQHHOVHFDQPDNHDQ$FFXP
REMHFW7KHVHWZRWHFKQLTXHV SULYDWHFRQVWUXFWRU
DQGVWDWLFJHWWHUPHWKRG XVHGWRJHWKHUFUHDWH
ZKDWVNQRZQDVD6LQJOHWRQDQ22SDWWHUQWR
UHVWULFWWKHQXPEHURILQVWDQFHVRIDQREMHFW
WKDWFDQH[LVWLQDQDSSOLFDWLRQ 8VXDOO\WKHUHV
MXVWDVLQJOHLQVWDQFHRID6LQJOHWRQKHQFHWKH
QDPH EXW\RXFDQXVHWKHSDWWHUQWRUHVWULFWWKH
LQVWDQFHFUHDWLRQLQZKDWHYHUZD\\RXFKRRVH

RU

QVWUXFW
$SULYDWHFR

SXEOLFVWDWLF$FFXPJHW$FFXP ^
UHWXUQD
`
SXEOLFYRLGXSGDWH&RXQWHU LQWDGG ^
FRXQWHU DGG
`
SXEOLFLQWJHW&RXQW ^
UHWXUQFRXQWHU
`
`
FODVV7KUHDG2QHLPSOHPHQWV5XQQDEOH^
$FFXPD $FFXPJHW$FFXP 

FODVV7KUHDG7ZRLPSOHPHQWV5XQQDEOH^
$FFXPD $FFXPJHW$FFXP 
SXEOLFYRLGUXQ ^
IRU LQW[ [[ ^
DXSGDWH&RXQWHU  

SXEOLFYRLGUXQ ^

WU\^

IRU LQW[ [[ ^

7KUHDGVOHHS  

DXSGDWH&RXQWHU  

`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^`

WU\^

`

7KUHDGVOHHS  

6\VWHPRXWSULQWOQ WZRDJHW&RXQW 

`FDWFK ,QWHUUXSWHG([FHSWLRQH[ ^`

`

`

6\VWHPRXWSULQWOQ RQHDJHW&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
$V6DUDKMRLQHGWKHRQERDUGGHYHORSPHQWWHDPVGHVLJQUHYLHZPHHWLQJVKHJD]HGRXW
WKHSRUWDODWVXQULVHRYHUWKH,QGLDQ2FHDQ(YHQWKRXJKWKHVKLSVFRQIHUHQFHURRPZDV
LQFUHGLEO\FODXVWURSKRELFWKHVLJKWRIWKHJURZLQJEOXHDQGZKLWHFUHVFHQWRYHUWDNLQJQLJKWRQ
WKHSODQHWEHORZOOHG6DUDKZLWKDZHDQGDSSUHFLDWLRQ

)LYH0LQXWH 
7KLVPRUQLQJVPHHWLQJZDVIRFXVHGRQWKHFRQWUROV\VWHPVIRUWKHRUELWHUVDLUORFNV
0\VWHU\ $VWKHQDOFRQVWUXFWLRQSKDVHVZHUHQHDULQJWKHLUHQGWKHQXPEHURIVSDFHZDONVZDV
VFKHGXOHGWRLQFUHDVHGUDPDWLFDOO\DQGWUDIFZDVKLJKERWKLQDQGRXWRIWKHVKLSV
DLUORFNV*RRGPRUQLQJ6DUDKVDLG7RP<RXUWLPLQJLVSHUIHFWZHUHMXVWVWDUWLQJ
WKHGHWDLOHGGHVLJQUHYLHZ

 $V\RXDOONQRZVDLG7RP(DFKDLUORFNLVRXWWWHGZLWKVSDFHKDUGHQHG*8,
WHUPLQDOVERWKLQVLGHDQGRXW:KHQHYHUVSDFHZDONHUVDUHHQWHULQJRUH[LWLQJWKHRUELWHU
WKH\ZLOOXVHWKHVHWHUPLQDOVWRLQLWLDWHWKHDLUORFNVHTXHQFHV6DUDKQRGGHG7RPFDQ
\RXWHOOXVZKDWWKHPHWKRGVHTXHQFHVDUHIRUHQWU\DQGH[LW"7RPURVHDQGRDWHGWRWKH
ZKLWHERDUG)LUVWKHUHVWKHH[LWVHTXHQFHPHWKRGVSVHXGRFRGH7RPTXLFNO\ZURWHRQWKH
ERDUG
RUELWHU$LUORFN([LW6HTXHQFH 


YHULI\3RUWDO6WDWXV 



SUHVVXUL]H$LUORFN 

RSHQ,QQHU+DWFK 

FRQUP$LUORFN2FFXSLHG 

FORVH,QQHU+DWFK 

GHFRPSUHVV$LUORFN 

RSHQ2XWHU+DWFK 

FRQUP$LUORFN9DFDWHG 

FORVH2XWHU+DWFK 


7RHQVXUHWKDWWKHVHTXHQFHLVQRWLQWHUUXSWHGZHKDYHV\QFKURQL]HGDOORIWKH
PHWKRGVFDOOHGE\WKHRUELWHU$LUORFN([LW6HTXHQFH PHWKRG7RPH[SODLQHG:HGKDWHWR
VHHDUHWXUQLQJVSDFHZDONHULQDGYHUWHQWO\FDWFKDEXGG\ZLWKKLVVSDFHSDQWVGRZQ
(YHU\RQHFKXFNOHGDV7RPHUDVHGWKHZKLWHERDUGEXWVRPHWKLQJGLGQWIHHOULJKW
WR6DUDKDQGLWQDOO\FOLFNHGDV7RPEHJDQWRZULWHWKHHQWU\VHTXHQFHSVHXGRFRGHRQWKH
ZKLWHERDUG:DLWDPLQXWH7RPFULHG6DUDK,WKLQNZHYHJRWDELJDZLQWKHH[LW
VHTXHQFHGHVLJQOHWVJREDFNDQGUHYLVLWLWLWFRXOGEHFULWLFDO


: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
VWUXFWXUHV

6KHHVKDQGDOO
WKLVWLPH,FRXOGKDYHMXVWOHW
-DYDSXWWKLQJVLQDOSKDEHWLFDO
RUGHU"7KLUGJUDGHUHDOO\
VXFNV:HQHYHUOHDUQ
DQ\WKLQJXVHIXO

6RUWLQJLVDVQDSLQ-DYD9OUHAVEALLTHETOOLSFORCOLLECTINGANDMANIPULATING
YOURDATAWITHOUTHAVINGTOWRITEYOUROWNSORTALGORITHMSUNLESSYOUREREADINGTHISRIGHT
NOWSITTINGINYOUR#OMPUTER3CIENCECLASS INWHICHCASE TRUSTUSYOUARE3/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`
#ONGRATULATIONSONYOURNEWJOBMANAGINGTHEAUTOMATED
JUKEBOXSYSTEMAT,OUS$INER4HERESNO*AVAINSIDETHE
JUKEBOXITSELF BUTEACHTIMESOMEONEPLAYSASONG THE
SONGDATAISAPPENDEDTOASIMPLETEXTlLE
9OURJOBISTOMANAGETHEDATATOTRACKSONGPOPULARITY
GENERATEREPORTS ANDMANIPULATETHEPLAYLISTS9OURENOT
WRITINGTHEENTIREAPPSOMEOFTHEOTHERSOFTWAREDEVELOPER
WAITERSAREINVOLVEDASWELL BUTYOURERESPONSIBLEFORMANAGING
ANDSORTINGTHEDATAINSIDETHE*AVAAPP!NDSINCE,OUHASATHING
AGAINSTDATABASES THISISSTRICTLYANIN MEMORYDATACOLLECTION!LL
YOUGETISTHElLETHEJUKEBOXKEEPSADDINGTO9OURJOBISTOTAKEIT
FROMTHERE
9OUVEALREADYlGUREDOUTHOWTOREADANDPARSETHElLE ANDSOFAR
YOUVEBEENSTORINGTHEDATAINAN!RRAY,IST

6RQJ/LVWW[W

3LQN0RRQ1LFN'UDNH
6RPHUVDXOW=HUR
6KLYD0RRQ3UHP-RVKXD
&LUFOHV%7
'HHS&KDQQHO$IUR&HOWV
3DVVHQJHU+HDGPL[
/LVWHQ7DKLWL

&KDOOHQJH
6RUWWKHVRQJVLQDOSKDEHWLFDORUGHU
9OUHAVEALISTOFSONGSINAlLE WHEREEACHLINE
REPRESENTSONESONG ANDTHETITLEANDARTISTARE
SEPARATEDWITHAFORWARDSLASH3OITSHOULDBESIMPLE
TOPARSETHELINE ANDPUTALLTHESONGSINAN!RRAY,IST
9OURBOSSCARESONLYABOUTTHESONGTITLES SOFORNOW
YOUCANSIMPLYMAKEALISTTHATJUSTHASTHESONGTITLES
"UTYOUCANSEETHATTHELISTISNOTINALPHABETICAL
ORDERWHATCANYOUDO

H
KHMXNHER[GHYLF
7KLVLVWKHIULOHFRWGHPXVWUHDGWKHILOH
ZULWHV<RX DWHWKHVRQJGDWD
WKHQPDQLSXO

9OUKNOWTHATWITHAN!RRAY,IST THEELEMENTSARE
KEPTINTHEORDERINWHICHTHEYWEREINSERTEDINTOTHE
LIST SOPUTTINGTHEMINAN!RRAY,ISTWONTTAKECAREOF
ALPHABETIZINGTHEM UNLESSMAYBETHERESASORT
METHODINTHE!RRAY,ISTCLASS

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
:HOOVWRUHWKWHRIVR6WULQJV
DQ$UUD\/LV

SXEOLFFODVV-XNHER[^


$UUD\/LVW6WULQJ!VRQJ/LVW QHZ$UUD\/LVW6WULQJ! 


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


QHZ-XNHER[ JR 
JWKH

`
VWDUWVORDGLQQW
DW
WK
G
KR
HW
VRI

P
KH
WH
7
QSULQWVWKHFRQ

SXEOLFYRLGJR ^

ILOHDQGWKHW
W
D\/LV


JHW6RQJV 
WKHVRQJ/LV $UU


6\VWHPRXWSULQWOQ VRQJ/LVW 

`
QG

UHDGWKHILOHD

FLDOKHUHMXKRVWGIRUHDFKOLQH
1RWKLQJVSHG6
PHW
FDOOWKHDG RQJ










YRLGJHW6RQJV ^

WU\^

 )LOHOH 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]
UHDNW OLQH
SLHFHV WRVNEHRWKWKHWLWOHDQG\D

UWLVW LQWKRHW
QV XVLQJWKH
ZR
VSOLW PHWK
RG

YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^

6WULQJ>@WRNHQV OLQH7R3DUVHVSOLW  

VRQJ/LVWDGG WRNHQV>@  
`
:HRQO\ZDQWWK
HVRQJWLWOHVR

DGGR

QO\WKHILUVWWRN

HQWRWKH
6RQJ/LVW WKH
$UUD\/LVW 

)LOH(GLW:LQGRZ+HOS'DQFH

MDYD-XNHER[
>3LQN0RRQ6RPHUVDXOW
6KLYD0RRQ&LUFOHV
'HHS&KDQQHO3DVVHQJHU
/LVWHQ@

WVRXWZLWKWKH
7KHVRQJ/LVWSULQ
WKH\
VRQJVLQWKHRUGHWKUHLQ$UZKUDLFK
LVW ZKLFK
\/
ZHUHDGGHGWR HUWKHVRQJVDUHLQ
LVWKHVDPHRUG QDOWH[WILOH 
ZLWKLQWKHRULJL
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
7ALKINGUPTHEINHERITANCEHIERARCHYDIDNTHELPEITHERITSCLEARTHATYOUCANTCALLASORT
METHODONTHE!RRAY,IST

$UUD\/LVWKDVDORW
RIPHWKRGV
EXWWKHUHVQRWKLQJ
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
THEREAREOTHERSFORSPECIALOCCASIONS3OMEOFTHEKEY
U\LQJ
COLLECTIONCLASSESINCLUDE
WZRUU\DERXWW

Licensed by

Eduard Simons

104038

 7UHH6HW
.HHSVWKHHOHPHQWVVRUWHGDQGSUHYHQWVGXSOLFDWHV

'RQ
WKHURQHV
WROHDUQWKH:VHHROOJRLQWR
ULJKWQRZ DOLWWOHODWHU
PRUHGHWDLOV

 +DVK0DS
/HWV\RXVWRUHDQGDFFHVVHOHPHQWVDVQDPHYDOXHSDLUV

 /LQNHG/LVW
'HVLJQHGWRJLYHEHWWHUSHUIRUPDQFHZKHQ\RXLQVHUWRUGHOHWH
HOHPHQWVIURPWKHPLGGOHRIWKHFROOHFWLRQ ,QSUDFWLFHDQ
$UUD\/LVWLVVWLOOXVXDOO\ZKDW\RXZDQW



+DVK6HW



/LQNHG+DVK0DS

3UHYHQWVGXSOLFDWHVLQWKHFROOHFWLRQDQGJLYHQDQHOHPHQWFDQ
ILQGWKDWHOHPHQWLQWKHFROOHFWLRQTXLFNO\

/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

MDYDXWLO&ROOHFWLRQV

!NDTHATSGREATWHENYOUNEEDASETWELL
TALKABOUTSETSINAFEWMINUTES ORWHEN
YOUKNOWTHATTHELISTMUSTALWAYSSTAY
SORTEDALPHABETICALLY

VWLQDWLRQ/LVWVRXUFH
SXEOLFVWDWLFYRLGFRS\ /LVWGH

SXEOLFVWDWLF/LVWHPSW\/LVW
LOO2EMHFWREM7R)LOO,W:LWK
/NTHEOTHERHAND IFYOUDONTNEEDTHE
SXEOLFVWDWLFYRLGILOO /LVWOLVW7R)
LISTTOSTAYSORTED 4REE3ETMIGHTBEMORE
OOHFWLRQF2EMHFWR
SXEOLFVWDWLFLQWIUHTXHQF\ &R
EXPENSIVETHANYOUNEEDEVERYTIMEYOU
WOLVW
INSERTINTOA4REE3ET THE4REE3ETHASTOTAKE
SXEOLFVWDWLFYRLGUHYHUVH /LV
THETIMETOlGUREOUTWHEREINTHETREETHENEW
WLQWGLVWDQFH
SXEOLFVWDWLFYRLGURWDWH /LVWOLV
ELEMENTMUSTGO7ITH!RRAY,IST INSERTSCAN
/LVWOLVW
BEBLINDINGLYFASTBECAUSETHENEWELEMENT SXEOLFVWDWLFYRLGVKXIIOH
W
JUSTGOESINATTHEEND
SXEOLFVWDWLFYRLGVRUW /LVWOLV
MHFWQHZ9DO
H$OO /LVWOLVW2EMHFWROG9DO2E
SXEOLFVWDWLFERROHDQUHSODF
PDQ\PRUHPHWKRGV

Q:

"UTYOU#!.ADDSOMETHINGTOAN
!RRAY,ISTATASPECIlCINDEXINSTEADOFJUSTAT
THEENDTHERESANOVERLOADEDADD METHOD
THATTAKESANINTALONGWITHTHEELEMENTTOADD
3OWOULDNTITBESLOWERTHANINSERTINGATTHEEND

A:

9ES ITSSLOWERTOINSERTSOMETHINGINAN!RRAY,IST
SOMEWHEREOTHERTHANATTHEEND3OUSINGTHEOVERLOADED
ADDINDEX ELEMENT METHODDOESNTWORKASQUICKLYASCALLING
THEADDELEMENT WHICHPUTSTHEADDEDELEMENTATTHEEND
"UTMOSTOFTHETIMEYOUUSE!RRAY,ISTS YOUWONTNEEDTOPUT
SOMETHINGATASPECIFICINDEX

+PPPWKHUH,6DVR
UW PHWKRG
LQWKH&ROOHFWLRQVFOD
VV,WWDNHV
D/LVWDQGVLQFH$UU
D\/LVW
LPSOHPHQWVWKH/LVWLQ
WHUIDFH
$UUD\/LVW,6$/LVW
7KDQNV
WRSRO\PRUSKLVP\RX
FDQSDVVDQ
$UUD\/LVWWRDPHWK
RGGHFODUHG
WRWDNH/LVW

Q:

)SEETHERESA,INKED,ISTCLASS SOWOULDNTTHATBEBETTERFOR
DOINGINSERTSSOMEWHEREINTHEMIDDLE!TLEASTIF)REMEMBERMY$ATA
3TRUCTURESCLASSFROMCOLLEGE

A:

9ES GOODSPOT4HE,INKED,ISTCANBEQUICKERWHENYOUINSERTOR
REMOVESOMETHINGFROMTHEMIDDLE BUTFORMOSTAPPLICATIONS THEDIFFERENCE
BETWEENMIDDLEINSERTSINTOA,INKED,ISTAND!RRAY,ISTISUSUALLYNOTENOUGH
TOCAREABOUTUNLESSYOUREDEALINGWITHAHUGENUMBEROFELEMENTS7ELL
LOOKMOREAT,INKED,ISTINAFEWMINUTES

KHUHDO&ROOHFWLRQV
1RWHWKLVLV127W LHGLWKHUHE\OHDYLQJ
FODVV$3,ZHVLPSOLI LQIRUPDWLRQ ZKLFK
RXWWKHJHQHULFW\SH JHV 
\RXOOVHHLQDIHZSD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 

7KH&ROOHFWLRQVVRUW 
SXEOLFFODVV-XNHER[^

PHWKRGVRUWVDOLVWRI

$UUD\/LVW6WULQJ!VRQJ/LVW QHZ$UUD\/LVW6WULQJ! 

6WULQJVDOSKDEHWLFDOO\

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^


QHZ-XNHER[ JR 

`


SXEOLFYRLGJR ^



JHW6RQJV 
LF&ROOHFWLRQVW WKH
&DOOWKHVWDW


6\VWHPRXWSULQWOQ VRQJ/LVW 
KRGWKHQSULQ


























`




`

&ROOHFWLRQVVRUW VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ/LVW  

VRUW PHW KHVHFRQGSULQWRXW


OLVWDJDLQ7HWLFDORUGHU
LVLQDOSKDE

YRLGJHW6RQJV ^

WU\^

 )LOHOH 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[
>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS
&KDQQHO3DVVHQJHU/LVWHQ@
>&LUFOHV'HHS&KDQQHO/LVWHQ3DVVHQJHU3LQN
0RRQ6KLYD0RRQ6RPHUVDXOW@

W
%HIRUHFDOOLQJVRU

$IWHUFDOOLQJVRUW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
3TRINGS SOTHATEACH3ONGCANHAVEMOREDATA4HENEWJUKEBOX
DEVICEOUTPUTSMOREINFORMATION SOTHISTIMETHElLEWILLHAVEFOUR
PIECESTOKENS INSTEADOFJUSTTWO
4HE3ONGCLASSISREALLYSIMPLE WITHONLYONEINTERESTINGFEATURE
THEOVERRIDDENTO3TRING METHOD2EMEMBER THETO3TRING
METHODISDElNEDINCLASS/BJECT SOEVERYCLASSIN*AVAINHERITSTHE
METHOD!NDSINCETHETO3TRING METHODISCALLEDONANOBJECT
WHENITSPRINTED3YSTEMOUTPRINTLNAN/BJECT YOUSHOULD
OVERRIDEITTOPRINTSOMETHINGMOREREADABLETHANTHEDEFAULT
UNIQUEIDENTIlERCODE7HENYOUPRINTALIST THETO3TRING
METHODWILLBECALLEDONEACHOBJECT

6RQJ/LVW0RUHW[W
3LQN0RRQ1LFN'UDNH
6RPHUVDXOW=HUR
6KLYD0RRQ3UHP-RVKXD
&LUFOHV%7
'HHS&KDQQHO$IUR&HOWV
3DVVHQJHU+HDGPL[
/LVWHQ7DKLWL

7KHQHZVRQJILOHKROGVIRXU
DWWULEXWHVLQVWHDGRIMXVWWZ
$QGZHZDQW$//RIWKHPLQR
RXU
OLVWVRZHQHHGWRPDNHD6RQJ
FODVVZLWKLQVWDQFHYDULDEOHVIRUDOO
IRXUVRQJDWWULEXWHV

FODVV6RQJ^

6WULQJWLWOH
LDEOHVIRUWKH
)RXULQVWDQFHWUYLEDUXWHVLQWKHILOH

6WULQJDUWLVW
IRXUVRQJDW

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
XVHZKHQ\RXGRD6\VWHP

SXEOLF6WULQJWR6WULQJ ^
RXWSULQWOQ D6RQJ2EMHF
W 
Z
HZ


UHWXUQWLWOH
:KHQ\RXGRD6\VWHPRXWSU DQWWRVHHWKHWLWOH
LQWOQ D/LVW2I QJV LWFDO

`
WKHWR6WULQJ PHWKRG
OV
RI($&+HOHPHQWLQ6RWK
`

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[
9OURCODECHANGESONLYALITTLETHElLE)/CODEISTHESAME
ANDTHEPARSINGISTHESAME3TRINGSPLIT EXCEPTTHISTIME
THEREWILLBEFOURTOKENSFOREACHSONGLINE ANDALLFOURWILLBE
USEDTOCREATEANEW3ONGOBJECT!NDOFCOURSETHE!RRAY,IST
WILLBEOFTYPE3ONGINSTEADOF3TRING

LPSRUWMDYDXWLO 
LPSRUWMDYDLR 
SXEOLFFODVV-XNHER[^

RQJ
Q$UUD\/LVWJRI6
&KDQJHWRDHD
LQ
WU
6
RI
REMHFWVLQVW G

$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\^

 )LOHOH 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[MDYDFDQQRWQGV\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 ITMEANSGENERICSAFEATUREADDEDTO*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
7ELLJUSTSAYITRIGHTHEREVIRTUALLYALLOFTHECODEYOUWRITETHATDEALS
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

DVQ
ULFVWKHUHZR
%HIRUHJHQHDU
IDQ
SH
W\
H
:,7+287JHQHULFV
ZD\WRGHFO RHLWWKVDGG PHWKRG
D\/LVWV
2EMHFWVJR,1DVDUHIHUHQFHWR $UURNW\SH2EMHFW
WR
6RFFHU%DOO)LVK*XLWDUDQG
&DUREMHFWV

$UUD\/LVW

2EMHFW

2EMHFW

2EMHFW

2EMHFW

$QGFRPH287DVDUHIHUHQFHRIW\SH2EMHFW

:LWKJHQHULFV\RXFDQ
FUHDWHW\SHVDIHFROOHFWLRQV
ZKHUHPRUHSUREOHPVDUH
FDXJKWDWFRPSLOHWLPH
LQVWHDGRIUXQWLPH
:LWKRXWJHQHULFVWKH
FRPSLOHUZRXOGKDSSLO\OHW
\RXSXWD3XPSNLQLQWRDQ
$UUD\/LVWWKDWZDVVXSSRVHG
WRKROGRQO\&DWREMHFWV

:,7+JHQHULFV
2EMHFWVJR,1DVDUHIHUHQFHWR
RQO\)LVKREMHFWV

$UUD\/LVW)LVK!

1RZZLW JH
QHULFV\RXF
REMHFWVLQKW
DQS
K
REMHFWVFRP H$UUD\/LVW)LVXKW!RQO\)LVK
H
R
X
<RXGRQWK WDV)LVKUHIHU VRWKH
VWLFNLQJD DYHWRZRUU\DE HQFHV
ZKDW\RXJ9H RONVZDJHQLQWKHURHXWVRPHRQH
DEOHWRD)LVWRXWZRQWUHDOO\ERUWKDW
HFDVW
KUHIHUHQFH


$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
7HENYOUMAKEAN!RRAY,IST YOUHAVETOTELLITTHETYPE
OFOBJECTSYOULLALLOWINTHELIST JUSTASYOUDOWITHPLAIN
OLDARRAYS

'HFODULQJDQGDVVLJQLQJYDULDEOHVRIJHQHULFW\SHV
(OWDOESPOLYMORPHISMREALLYWORKWITHGENERIC
TYPES)FYOUHAVEAN!RRAY,IST!NIMALREFERENCE
VARIABLE CANYOUASSIGNAN!RRAY,IST$OGTOIT7HAT
ABOUTA,IST!NIMALREFERENCE#ANYOUASSIGNAN
!RRAY,IST!NIMALTOIT9OULLSEE

QHZ$UUD\/LVW6RQJ!

/LVW6RQJ!VRQJ/LVW 
QHZ$UUD\/LVW6RQJ!

'HFODULQJ DQGLQYRNLQJ PHWKRGVWKDWWDNHJHQHULFW\SHV


)FYOUHAVEAMETHODTHATTAKESASAPARAMETER SAY AN
!RRAY,ISTOF!NIMALOBJECTS WHATDOESTHATREALLYMEAN
#ANYOUALSOPASSITAN!RRAY,ISTOF$OGOBJECTS7ELL
LOOKATSOMESUBTLEANDTRICKYPOLYMORPHISMISSUESTHAT
AREVERYDIFFERENTFROMTHEWAYYOUWRITEMETHODSTHAT
TAKEPLAINOLDARRAYS

YRLGIRR /LVW6RQJ!OLVW
[IRR VRQJ/LVW

4HISISACTUALLYTHESAMEPOINTAS BUTTHATSHOWSYOU
HOWIMPORTANTWETHINKITIS

Q:

"UTDONT)ALSONEEDTOLEARNHOWTOCREATEMY/7.GENERIC
CLASSES7HATIF)WANTTOMAKEACLASSTYPETHATLETSPEOPLE
INSTANTIATINGTHECLASSDECIDETHETYPEOFTHINGSTHATCLASSWILLUSE

A:

9OUPROBABLYWONTDOMUCHOFTHAT4HINKABOUTITTHE!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
TOLOOKATINAGENERIlEDCLASSARE
 4HECLASSDECLARATION
 4HEMETHODDECLARATIONSTHATLETYOUADDELEMENTS

7KLQNRI(DVDVWDQGLQIRU
WKHW\SHRIHOHPHQW\RXZDQW
WKLVFROOHFWLRQWRKROGDQG
UHWXUQ (LVIRU(OHPHQW

8QGHUVWDQGLQJ$UUD\/LVWGRFXPHQWDWLRQ
2UZKDWVWKHWUXHPHDQLQJRI("

RUWKH
FHKROGHUI
OD
S
D
LV

\
(
Q
7KH \SH\RXXVHZKH R\X/LVW
5($/W QGFUHDWHDQ$UUD
GHFODUHD

$UUD\/LVW V
DVXEFODVVRI$
VRZKDWHYHULW
EVW
$UUD\/LVWLV \SH\RXVSHFLI\IRUUDWFW/LVW
DX
KH
W
RP
DWLFDO
W\SHRIWKH$
EVWUDFW/LVWO\XVHGIRUWKH

SXEOLFFODVV$UUD\/LVW(!H[WHQGV$EVWUDFW/LVW(!LPSOHPHQWV/LVW(!^


SXEOLFERROHDQDGG (R

(LV
+HUHVWKHLPSRUWDQWSDUW:KDWHYHUHDOOR
ZHG
\RXU
LQJV
IWK
LQGR
DWN
HVZK
UPLQ
GHWH
LVW
WRDGGWRWKH$UUD\/
`

7KHW\SH WKHYDOXHRI(! 
EHFRPHVWKHW\SHRIWKH/LVW
LQWHUIDFHDVZHOO

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
H[WH
(!^
SXEOLFFODVV$UUD\/LVW(!H[WHQGV$EVWUDFW/LVW

`


SXEOLFERROHDQDGG (R
PRUHFRGH

Licensed by
Eduard Simons
104038

,VWUHDWHGE\WKHFRPSLOHUDV

SXEOLFFODVV$UUD\/LVW6WULQJ!H[WHQGV$EVWUDFW/LVW6WULQJ!^

`

SXEOLFERROHDQDGG 6WULQJR
PRUHFRGH


)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:
A:

)Sh%vTHEONLYTHINGYOUCANPUTTHERE"ECAUSETHEDOCSFORSORTUSEDh4v

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
LWV
UWRIWKHDXFOVH
DVV
7HENYOUDECLAREATYPEPARAMETERFORTHECLASS YOU
CANSIMPLYUSETHATTYPEANYPLACETHATYOUDUSEA
REALCLASSORINTERFACETYPE4HETYPEDECLAREDINTHE
METHODARGUMENTISESSENTIALLYREPLACEDWITHTHETYPE
YOUUSEWHENYOUINSTANTIATETHECLASS

8VLQJDW\SHSDUDPHWHUWKDWZDV127GHILQHGLQWKHFODVVGHFODUDWLRQ
SXEOLF7H[WHQGV$QLPDO!YRLGWDNH7KLQJ $UUD\/LVW7!OLVW 
)FTHECLASSITSELFDOESNTUSEATYPEPARAMETER YOUCANSTILL
SPECIFYONEFORAMETHOD BYDECLARINGITINAREALLYUNUSUAL
BUTAVAILABLE SPACEBEFORETHERETURNTYPE4HISMETHODSAYS
THAT4CANBEhANYTYPEOF!NIMALv

+HUHZH QXV
H7
7HDUOLHFD
ULQWKHPHW!EK HFDXVHZHGHFODUHG
RGGHFODUDWLR
Q

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

:DLWWKDWFDQWEHULJKW,I\RXFDQ
WDNHDOLVWRI$QLPDOZK\GRQW\RX
MXVW6$<WKDW":KDWVZURQJZLWKMXVW
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
7KLVVWLOOGRHVQW
H[SODLQZK\WKHVRUWPHWKRG
IDLOHGRQDQ$UUD\/LVWRI6RQJV
EXWZRUNHGIRUDQ$UUD\/LVWRI
6WULQJV

5HPHPEHUZKHUHZHZHUH
)LOH(GLW:LQGRZ+HOS%XPPHU

MDYDF-XNHER[MDYD
-XNHER[MDYDFDQQRWQGV\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 
HZKHQ
HDNV,WZRUNHGILQ


6\VWHPRXWSULQWOQ VRQJ/LVW 
VRRQDVZH
7KLVLVZKHUHLWEU
DV
W
EX
!
LQJ
WU
6
/LVW


&ROOHFWLRQVVRUW VRQJ/LVW 
HG
SDVVHGLQDQ$UUD\
DLO
I
LW
J!
RQ
VW6


6\VWHPRXWSULQWOQ VRQJ/LVW 

WULHGWRVRUWDQ$UUD\/L

`

YRLGJHW6RQJV ^


WU\^


 )LOHOH 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

7KLVVD\V:KDWHYHU7LVPXVW
EHRIW\SH&RPSDUDEOH

,JQRUHWKLVSDUWIRUQRZ%XW
LI\RXFDQWLWMXVWPHDQV
WKDWWKHW\SHSDUDPHWHUIRU
&RPSDUDEOHPXVWEHRIW\SH7
RURQHRI7VVXSHUW\SHV

<RXFDQSDVVLQRQO\D/LVW RU
VXEW\SHRIOLVWOLNH$UUD\/LVW 
WKDWXVHVDSDUDPHWHUL]HGW\SH
WKDWH[WHQGV&RPSDUDEOH

8P,MXVWFKHFNHGWKHGRFVIRU
6WULQJDQG6WULQJGRHVQW(;7(1'
&RPSDUDEOHLW,03/(0(176LW
&RPSDUDEOHLVDQLQWHUIDFH6RLWVQRQVHQVH
WRVD\7H[WHQGV&RPSDUDEOH!

SXEOLFQDOFODVV6WULQJH[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
ALLOWONLYCLASSESTHATIMPLEMENTAPARTICULARINTERFACE3O
HERESASITUATIONWHEREWENEEDONEKINDOFSYNTAXTOWORK
FORBOTHSITUATIONSINHERITANCEANDIMPLEMENTATION)NOTHER
WORDS THATWORKSFORBOTHEXTENDSANDIMPLEMENTS
!NDTHEWINNINGWORDWASEXTENDS"UTITREALLYMEANShIS Av
ANDWORKSREGARDLESSOFWHETHERTHETYPEONTHERIGHTISAN
INTERFACEORACLASS

,QJHQHULFVWKHNH\ZRUG
H[WHQGVUHDOO\PHDQVLVD
DQGZRUNVIRU%27+FODVVHV
DQGLQWHUIDFHV

&RPSDUDEOHLVDQLQWHUIDFHVRWKLV WKDW
5($//<UHDGV7PXVWEHDW\SH 
LPSOHPHQWVWKH&RPSDUDEOHLQWHUIDFH
SXEOLFVWDWLF7H[WHQGV&RPSDUDEOH"VXSHU7!!YRLGVRUW /LVW7!OLVW

,WGRHVQWPDWWHUZKHWKHUWKHWKLQJRQWKHULJKWLV
DFODVVRULQWHUIDFH\RXVWLOOVD\H[WHQGV

Q:
A:

7HYDIDNTTHEYJUSTMAKEANEWKEYWORD hISv

!DDINGANEWKEYWORDTOTHELANGUAGEISA2%!,,9BIGDEALBECAUSE
ITRISKSBREAKING*AVACODEYOUWROTEINANEARLIERVERSION4HINKABOUT
ITYOUMIGHTBEUSINGAVARIABLEhISvWHICHWEDOUSEINTHISBOOKTOREPRE
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
3ONGCLASSIMPLEMENTS#OMPARABLE SINCETHATSTHEWAYTHESORT
METHODWASDECLARED!QUICKCHECKOFTHE!0)DOCSSHOWSTHE
#OMPARABLEINTERFACEISREALLYSIMPLE WITHONLYONEMETHODTO
IMPLEMENT

MDYDODQJ&RPSDUDEOH

7KHELJTXHVWLRQLVZKDW
PDNHVRQHVRQJOHVVWKDQ
HTXDOWRRUJUHDWHUWKDQ
DQRWKHUVRQJ"
<RXFDQWLPSOHPHQWWKH
&RPSDUDEOHLQWHUIDFHXQWLO\RX
PDNHWKDWGHFLVLRQ

SXEOLFLQWHUIDFH&RPSDUDEOH7!^
LQW
FRPSDUH7R 7R 

`

6KDUSHQ \RXU SHQFLO


!NDTHEMETHODDOCUMENTATIONFORCOMPARE4O SAYS

5HWXUQV
DQHJDWLYHLQWHJHU]HURRUD
SRVLWLYHLQWHJHUDVWKLVREMHFW
LVOHVVWKDQHTXDOWRRUJUHDWHU
WKDQWKHVSHFLHGREMHFW

7RITEINYOURIDEAANDPSEUDOCODEOR
BETTER 2%!,CODE FORIMPLEMENTINGTHE
COMPARE4O METHODINAWAYTHATWILL
SORT THE3ONGOBJECTSBYTITLE
(INTIFYOUREONTHERIGHTTRACK ITSHOULD
TAKELESSTHANLINESOFCODE

)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

WKHW\SHWKDW
8VXDOO\WKHVHPDWFKZHUHVSHFLI\LQJGDJ
DLQVW
SDUH
FRP
DQEH
ODVVF
LQJF
WKHLPSOHPHQW
RPSDUHGWR
7KLVPHDQVWKDW6RQJREMHFWVFDQEHFIVRU
WLQJ
RVHR
SXUS
RWKHU6RQJREMHFWVIRUWKH

FODVV6RQJLPSOHPHQWV&RPSDUDEOH6RQJ!^
6WULQJWLWOH
6WULQJDUWLVW
6WULQJUDWLQJ
SDUH7R 
7KHVRUW PHWKRGVHQGVD6RQJWRFRP6RQ
6WULQJESP
JRQ
WKH
HVWR
PSDU
WRVHHKRZWKDW6RQJFR

HG
LQYRN
ZDV
KRG
PHW
WKH
ZKLFK
SXEOLFLQWFRPSDUH7R 6RQJV ^

UHWXUQWLWOHFRPSDUH7R VJHW7LWOH 
`
6RQJ 6WULQJW6WULQJD6WULQJU6WULQJE ^
WLWOH W
DUWLVW D
UDWLQJ U
ESP E
`
SXEOLF6WULQJJHW7LWOH ^
UHWXUQWLWOH
`

6LPSOH:HMXVWSDVVWKHZRUN
RQWRWKHWLWOH6WULQJREMHFWV
VLQFHZHNQRZ6WULQJVKDYHD
FRPSDUH7R PHWKRG

WKHQFDOOVVRUW
7KLVWLPHLWZRUNHG,WSULQWVWKHOLVWUGHU
E\WLWOH
LFDOR
DEHW
DOSK
JVLQ
6RQ
WKH
ZKLFKSXWV

SXEOLF6WULQJJHW$UWLVW ^
UHWXUQDUWLVW
`

MDYD-XNHER[

SXEOLF6WULQJJHW5DWLQJ ^
UHWXUQUDWLQJ
`

>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS
&KDQQHO3DVVHQJHU/LVWHQ@

SXEOLF6WULQJJHW%SP ^
UHWXUQESP
`

SXEOLF6WULQJWR6WULQJ ^
UHWXUQWLWOH
`
`

)LOH(GLW:LQGRZ+HOS$PELHQW

>&LUFOHV'HHS&KDQQHO/LVWHQ3DVVHQJHU3LQN
0RRQ6KLYD0RRQ6RPHUVDXOW@

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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]\
4HERESANEWPROBLEM,OUWANTSTWODIFFERENTVIEWSOFTHESONGLIST
ONEBYSONGTITLEANDONEBYARTIST

7KDWVQRWJRRGHQRXJK
6RPHWLPHV,ZDQWLWWRVRUW
E\DUWLVWLQVWHDGRIWLWOH

"UTWHENYOUMAKEACOLLECTIONELEMENTCOMPARABLEBYHAVINGIT
IMPLEMENT#OMPARABLE YOUGETONLYONECHANCETOIMPLEMENTTHE
COMPARE4O METHOD3OWHATCANYOUDO
4HEHORRIBLEWAYWOULDBETOUSEAmAGVARIABLEINTHE3ONGCLASS
ANDTHENDOANIFTESTINCOMPARE4O ANDGIVEADIFFERENTRESULT
DEPENDINGONWHETHERTHEmAGISSETTOUSETITLEORARTISTFORTHE
COMPARISON
"UTTHATSANAWFULANDBRITTLESOLUTION ANDTHERESSOMETHINGMUCH
BETTER3OMETHINGBUILTINTOTHE!0)FORJUSTTHISPURPOSEWHENYOU
WANTTOSORTTHESAMETHINGINMORETHANONEWAY
/RRNDWWKH&ROOHFWLRQVFODVV$3,DJDLQ7KHUHVD
VHFRQGVRUW PHWKRGDQGLWWDNHVD&RPSDUDWRU

R
LVRYHUORDGHGW
G
R
K
HW
P

W
U
7KHVR
DWRU
OOHGD&RPSDU
FD
J
LQ
K
HW
P
VR
WDNH
WR
ILJXUHRXWKRZ Q

I
HO
V
R
W
H
W
R
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
!NELEMENTINALISTCANCOMPAREITSELFTOANOTHEROF
ITSOWNTYPEINONLYONEWAY USINGITSCOMPARE4O
METHOD"UTA#OMPARATORISEXTERNALTOTHEELEMENT
TYPEYOURECOMPARINGITSASEPARATECLASS3OYOUCAN
MAKEASMANYOFTHESEASYOULIKE7ANTTOCOMPARE
SONGSBYARTIST-AKEAN!RTIST#OMPARATOR3ORTBYBEATS
PERMINUTE-AKEA"0-#OMPARATOR

MDYDXWLO&RPSDUDWRU
SXEOLFLQWHUIDFH&RPSDUDWRU7!^
LQWFRPSDUH 7R7R 
`

4HENALLYOUNEEDTODOISCALLTHEOVERLOADEDSORT
METHODTHATTAKESTHE,ISTANDTHE#OMPARATORTHATWILL
HELPTHESORT METHODPUTTHINGSINORDER
4HESORT METHODTHATTAKESA#OMPARATORWILLUSETHE
#OMPARATORINSTEADOFTHEELEMENTSOWNCOMPARE4O
METHOD WHENITPUTSTHEELEMENTSINORDER)NOTHER
WORDS IFYOURSORT METHODGETSA#OMPARATOR ITWONT
EVENCALLTHECOMPARE4O METHODOFTHEELEMENTS
INTHELIST4HESORT METHODWILLINSTEADINVOKETHE
COMPARE METHODONTHE#OMPARATOR
3O THERULESARE

,QYRNLQJWKHRQHDUJXPHQWVRUW /LVWR PHWKRG


PHDQVWKHOLVWHOHPHQWVFRPSDUH7R PHWKRG
GHWHUPLQHVWKHRUGHU6RWKHHOHPHQWVLQWKHOLVW
0867LPSOHPHQWWKH&RPSDUDEOHLQWHUIDFH

,QYRNLQJVRUW /LVWR&RPSDUDWRUF PHDQVWKH


OLVWHOHPHQWVFRPSDUH7R PHWKRGZLOO127EH
FDOOHGDQGWKH&RPSDUDWRUVFRPSDUH PHWKRG
ZLOOEHXVHGLQVWHDG7KDWPHDQVWKHHOHPHQWV
LQWKHOLVWGR127QHHGWRLPSOHPHQWWKH
&RPSDUDEOHLQWHUIDFH

Q:

3ODOESTHISMEANTHATIFYOUHAVEACLASSTHAT
DOESNTIMPLEMENT#OMPARABLE ANDYOUDONTHAVETHE
SOURCECODE YOUCOULDSTILLPUTTHETHINGSINORDERBY
CREATINGA#OMPARATOR

,I\RXSDVVD&RPSDUDWRUWRWKH
VRUW PHWKRGWKHVRUWRUGHULV
GHWHUPLQHGE\WKH&RPSDUDWRU
UDWKHUWKDQWKHHOHPHQWVRZQ
FRPSDUH7R PHWKRG

Q:
A:

"UTWHYDOESNTEVERYCLASSIMPLEMENT#OMPARABLE

$OYOUREALLYBELIEVETHATEVERYTHINGCANBEORDERED
)FYOUHAVEELEMENTTYPESTHATJUSTDONTLENDTHEMSELVESTO
ANYKINDOFNATURALORDERING THENYOUDBEMISLEADINGOTHER
4HATSRIGHT4HEOTHEROPTIONIFITSPOSSIBLE WOULDBE PROGRAMMERSIFYOUIMPLEMENT#OMPARABLE!NDYOUARENT
TAKINGAHUGERISKBYNOTIMPLEMENTING#OMPARABLE SINCE
TOSUBCLASSTHEELEMENTANDMAKETHESUBCLASSIMPLEMENT
APROGRAMMERCANCOMPAREANYTHINGINANYWAYTHATHE
#OMPARABLE
CHOOSESUSINGHISOWNCUSTOM#OMPARATOR

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.

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
Eduard Simons
104038

LPSRUWMDYDXWLO 
LPSRUWMDYDLR 

SXEOLFFODVV-XNHER[^
$UUD\/LVW6RQJ!VRQJ/LVW QHZ$UUD\/LVW6RQJ! 
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ-XNHER[ JR 
`

&UHDWHDQHZLQQHUFODVVWKDWLPSOHPHQWV
&RPSDUDWRU QRWHWKDWLWVW\SH RLQJ
SDUDPHWHUPDWFKHVWKHW\SHZHUHJ
WRFRPSDUHLQWKLVFDVH6RQJREMHFWV

FODVV$UWLVW&RPSDUHLPSOHPHQWV&RPSDUDWRU6RQJ!^
SXEOLFLQWFRPSDUH 6RQJRQH6RQJWZR ^
UHWXUQRQHJHW$UWLVW FRPSDUH7R WZRJHW$UWLVW 
`
:HUHOHWWLQJWKH6WULQJ
`
7KLVEHFRPHVD6WULQJ WKHDUWLVW


SXEOLFYRLGJR ^

JHW6RQJV 
6\VWHPRXWSULQWOQ VRQJ/LVW 
&ROOHFWLRQVVRUW VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ/LVW 

GRWKHDFWXDOFRPSDULVRQYDULDEOHV IRUDUWLVW 
NQRZKRZWRDOSKDEHWL]HWVLQFH6WULQJVDOUHDG\
KHPVHOYHV

0DNHDQLQVWDQFHRIWKH

$UWLVW&RPSDUHDUWLVW&RPSDUH QHZ$UWLVW&RPSDUH &RPSDUDWRULQQHUFODVV


&ROOHFWLRQVVRUW VRQJ/LVWDUWLVW&RPSDUH 
6\VWHPRXWSULQWOQ VRQJ/LVW 

`

YRLGJHW6RQJV ^
,2FRGHKHUH
`

YRLGDGG6RQJ 6WULQJOLQH7R3DUVH ^
SDUVHOLQHDQGDGGWRVRQJOLVW
` 
`

,QYRNHVRUW S VLQJLW


WKHOLVW
DQGDUHIHUHQFHDVWR
FXVWRP&RPSDUDWRUWREKHQHZ
MHFW

.OTEWEVEMADESORT BY TITLETHEDEFAULTSORT BY


KEEPINGTHECOMPARE4O METHODIN3ONGUSETHE
TITLES"UTANOTHERWAYTODESIGNTHISWOULDBETO
IMPLEMENTBOTHTHETITLESORTINGANDARTISTSORTINGAS
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

6KDUSHQ \RXU SHQFLO

LPSRUWBBBBBBBBBBBBBBBBBB
SXEOLFFODVV6RUW0RXQWDLQV^
/LQNHG/LVWBBBBBBBBBBBBBBPWQ QHZ/LQNHG/LVWBBBBBBBBBBBB 
FODVV1DPH&RPSDUHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
`
FODVV+HLJKW&RPSDUHBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQ BBBBBBBBBBBBBBBBBBBBBBBBBB 
`
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ6RUW0RXQWDLQ JR 
`
SXEOLFYRLGJR ^
PWQDGG QHZ0RXQWDLQ /RQJV 
PWQDGG QHZ0RXQWDLQ (OEHUW 
PWQDGG QHZ0RXQWDLQ 0DURRQ 
PWQDGG QHZ0RXQWDLQ &DVWOH 

2EVERSE%NGINEER
$VVXPHWKLVFRGHH[LVWVLQ
DVLQJOHILOH<RXUMRELV
WRILOOLQWKHEODQNVVRWKH
WKHSURJUDPZLOOFUHDWHWKH
RXWSXWVKRZQ
.OTEANSWERSAREATTHEENDOF
THECHAPTER

6\VWHPRXWSULQWOQ DVHQWHUHG?QPWQ 
1DPH&RPSDUHQF QHZ1DPH&RPSDUH 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQWOQ E\QDPH?QPWQ 
+HLJKW&RPSDUHKF QHZ+HLJKW&RPSDUH 
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
6\VWHPRXWSULQWOQ E\KHLJKW?QPWQ 
`
`
FODVV0RXQWDLQ^
BBBBBBBBBBBBBBBBBB

/UTPUT

BBBBBBBBBBBBBBBBB
)LOH(GLW:LQGRZ+HOS7KLV2QHV)RU%RE

BBBBBBBBBBBBBBBBBBBBBB^
BBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBB
`
BBBBBBBBBBBBBBBBBBBBBBBBB^
BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
`
`

MDYD6RUW0RXQWDLQV
DVHQWHUHG
>/RQJV(OEHUW0DURRQ&DVWOH@
E\QDPH
>&DVWOH(OEHUW/RQJV0DURRQ@
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
ANEWPROBLEMWEDIDNTNOTICEWITHATESTSAMPLEOFTHEJUKEBOXTEXTlLETHESORTEDLIST
CONTAINSDUPLICATES
)TAPPEARSTHATTHEDINERJUKEBOXJUSTKEEPSWRITINGTOTHElLEREGARDLESSOFWHETHERTHE
SAMESONGHASALREADYBEENPLAYEDANDTHUSWRITTEN TOTHETEXTlLE4HE3ONG,IST-ORETXT
JUKEBOXTEXTlLEISACOMPLETERECORDOFEVERYSONGTHATWASPLAYED ANDMIGHTCONTAINTHE
SAMESONGMULTIPLETIMES
)LOH(GLW:LQGRZ+HOS7RR0DQ\1RWHV

MDYD-XNHER[
>3LQN0RRQ1LFN'UDNH6RPHUVDXOW=HUR6KLYD0RRQ3UHP
-RVKXD&LUFOHV%7'HHS&KDQQHO$IUR&HOWV3DVVHQJHU
+HDGPL[/LVWHQ7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL
&LUFOHV%7@

%HIRUHVRUWLQJ

>&LUFOHV%7&LUFOHV%7'HHS&KDQQHO$IUR&HOWV/LVWHQ
7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL3DVVHQJHU
+HDGPL[3LQN0RRQ1LFN'UDNH6KLYD0RRQ3UHP-RVKXD
6RPHUVDXOW=HUR@

$IWHUVRUWLQJXVLQJ
WKH6RQJVRZQ KRG
FRPSDUH7R PHW
VRUWE\WLWOH 

>'HHS&KDQQHO$IUR&HOWV&LUFOHV%7&LUFOHV%73DVVHQJHU
JXVLQJ
+HDGPL[3LQN0RRQ1LFN'UDNH6KLYD0RRQ3UHP-RVKXD/LVWHQ $IWHUVRUWLQ PSDUH
&R
LVW
UW
WKH$
7DKLWL/LVWHQ7DKLWL/LVWHQ7DKLWL6RPHUVDXOW
&RPSDUDWRU VRUWE\
=HUR@
DUWLVWQDPH 
6RQJ/LVW0RUHW[W
3LQN0RRQ1LFN'UDNH
6RPHUVDXOW=HUR
6KLYD0RRQ3UHP-RVKXD
&LUFOHV%7
'HHS&KDQQHO$IUR&HOWV
3DVVHQJHU+HDGPL[
/LVWHQ7DKLWL
/LVWHQ7DKLWL
/LVWHQ7DKLWL
&LUFOHV%7

7KH6RQJ/LVW0RU
LWEHFDXVHWKHMX HWH[WILOHQRZKDVGXSOLFDW
NHER[PDFKLQHLV
HV Q
SOD\HGLQR
ZULWL YHU\VLRQ
J
WKUHHWLPHVLUGQHUD6RPHERG\GHFLGHGWRSQJODH
WKDWKDGEHHQSO URZIROORZHGE\&LUFOHV\D/LVWHQ
D\HGHDUOLHU
VRQJ
:HFDQWFKDQJHW
EHFDXVHVRPHWLPHV KHZD\WKHWH[WILOHLVZUL
LQIRUPDWLRQ:H ZHUHJRLQJWRQHHGDOOWK WWHQ
DW
KDYHWRFKDQJHW
KHMDYDFRGH 

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
WKHVDPHREMHFW

6(7ZKHQXQLTXHQHVVPDWWHUV

/LVW

12GXSOLFDWHV

&ROOHFWLRQVWKDWGRQRWDOORZGXSOLFDWHV
6HWVNQRZZKHWKHUVRPHWKLQJLVDOUHDG\LQWKHFROOHFWLRQ
<RXFDQQHYHUKDYHPRUHWKDQRQHHOHPHQWUHIHUHQFLQJ
WKHVDPHREMHFW RUPRUHWKDQRQHHOHPHQWUHIHUHQFLQJ
WZRREMHFWVWKDWDUHFRQVLGHUHGHTXDOZHOOORRNDWZKDW
REMHFWHTXDOLW\PHDQVLQDPRPHQW 

0$3ZKHQILQGLQJVRPHWKLQJE\NH\PDWWHUV
&ROOHFWLRQVWKDWXVHNH\YDOXHSDLUV
0DSVNQRZWKHYDOXHDVVRFLDWHGZLWKDJLYHQNH\<RX
FDQKDYHWZRNH\VWKDWUHIHUHQFHWKHVDPHYDOXHEXW\RX
FDQQRWKDYHGXSOLFDWHNH\V$OWKRXJKNH\VDUHW\SLFDOO\
6WULQJQDPHV VRWKDW\RXFDQPDNHQDPHYDOXHSURSHUW\
OLVWVIRUH[DPSOH DNH\FDQEHDQ\REMHFW

6HW

XSOLFDWHNH\V

'XSOLFDWHYDOXHV2.EXW12G

%DOO%DOO)LVK&DU
%DOO
)LVK&DU

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
STILLCOLLECTIONS EVENTHOUGHTHEYDONT
INCLUDEJAVAUTIL#OLLECTIONINTHEIR
INHERITANCETREE
.OTETHISISNOTTHECOMPLETE
COLLECTION!0)THEREAREOTHER
CLASSESANDINTERFACES BUT
THESEARETHEONESWECARE
MOSTABOUT

&ROOHFWLRQ
LQWHUIDFH

/LVW
LQWHUIDFH

6HW
LQWHUIDFH

6RUWHG6HW
LQWHUIDFH

/LQNHG+DVK6HW

7UHH6HW

+DVK6HW

$UUD\/LVW

/LQNHG/LVW

9HFWRU

.(<
EXTENDS
IMPLEMENTS
+DVK6HW
6HW

0DS
LQWHUIDFH

IMPLEMENTATIONCLASS
INTERFACE

0DSVGRQWH[WHQGIURP
MDYDXWLO&ROOHFWLRQEXW
WKH\UHVWLOOFRQVLGHUHG
WREHSDUWRIWKH
FROOHFWLRQVIUDPHZRUN
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 ^

JHW6RQJV 

VW

UD\/L
:HGLGQWFKDQJHJHW6RQJV VRLWVWLOOSXWVWKHVRQJVLQDQ$U

6\VWHPRXWSULQWOQ VRQJ/LVW 
&ROOHFWLRQVVRUW VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ/LVW 

+HUHZHFUHDWHDQHZ+DVK6HW
SDUDPHWHUL]HGWRKROG6RQJV

+DVK6HW6RQJ!VRQJ6HW QHZ+DVK6HW6RQJ! 

VRQJ6HWDGG$OO VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ6HW 
`
JHW6RQJV DQGDGG6RQJ PHWKRGV
`

+DVK6HWKDVDVLPSOHDGG$OO PH
WKRGWKDWFDQ
WLRQDQGXVHLWWRSRSXODWH

WKH+DVK6HW,WVWKHVDP
HDVLIZHDGGHGHDFK
VRQJRQHDWDWLPH H[FHSW
PXFKVLPSOHU 

WDNHDQRWKHUFROOHF

)LOH(GLW:LQGRZ+HOS*HW%HWWHU0XVLF

MDYD-XNHER[
>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV'HHS&KDQQHO
3DVVHQJHU/LVWHQ/LVWHQ/LVWHQ&LUFOHV@
>&LUFOHV&LUFOHV'HHS&KDQQHO/LVWHQ/LVWHQ/LVWHQ
3DVVHQJHU3LQN0RRQ6KLYD0RRQ6RPHUVDXOW@
>3LQN0RRQ/LVWHQ6KLYD0RRQ&LUFOHV/LVWHQ'HHS&KDQQHO
3DVVHQJHU&LUFOHV/LVWHQ6RPHUVDXOW@

7KH6HWGLGQWKHOS
$QGLWORVWLWVVRUWRUGHU
:HVWLOOKDYHDOOWKHGXSOLFDWHV  ZKHQZHSXWWKHOLVWLQWRDERXW

%HIRUHVRUWLQJ
WKH$UUD\/LVW

$IWHUVRUWLQJ
WKH$UUD\/LVW
E\WLWOH 
$IWHUSXWWLQJLW
LQWRD+DVK6HW
DQGSULQWLQJWKH
+DVK6HW ZHGLGQW
FDOOVRUW DJDLQ 

+DVK6HWEXWZHOOZRUU\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
WUXHDQGERWKIRRDQGEDUPXVW
UHWXUQWKHVDPHYDOXHIURP
KDVK&RGH )RUD6HWWRWUHDW
WZRREMHFWVDVGXSOLFDWHV\RX
PXVWRYHUULGHWKHKDVK&RGH 
DQGHTXDOV PHWKRGVLQKHULWHG
IURPFODVV2EMHFWVRWKDW\RX
FDQPDNHWZRGLIIHUHQWREMHFWV
EHYLHZHGDVHTXDO

&IRST WEHAVETOASKWHATMAKESTWO3ONGREFERENCES
DUPLICATES4HEYMUSTBECONSIDEREDEQUAL)SITSIMPLYTWO
REFERENCESTOTHEVERYSAMEOBJECT ORISITTWOSEPARATEOBJECTS
THATBOTHHAVETHESAMETITLE
4HISBRINGSUPAKEYISSUEREFERENCEEQUALITYVSOBJECTEQUALITY

5HIHUHQFHHTXDOLW\
 7ZRUHIHUHQFHVRQHREMHFWRQWKHKHDS
7ZRUHIHUHQFHVWKDWUHIHUWRWKHVDPHREMHFWRQ
WKHKHDSDUHHTXDO3HULRG,I\RXFDOOWKHKDVK&RGH PHWKRGRQ
ERWKUHIHUHQFHV\RXOOJHWWKHVDPHUHVXOW,I\RXGRQWRYHUULGHWKH
KDVK&RGH PHWKRGWKHGHIDXOWEHKDYLRU UHPHPEHU\RXLQKHULWHG
WKLVIURPFODVV2EMHFW LVWKDWHDFKREMHFWZLOOJHWDXQLTXHQXPEHU
PRVWYHUVLRQVRI-DYDDVVLJQDKDVKFRGHEDVHGRQWKHREMHFWV
PHPRU\DGGUHVVRQWKHKHDSVRQRWZRREMHFWVZLOOKDYHWKHVDPH
KDVKFRGH 
,I\RXZDQWWRNQRZLIWZRUHIHUHQFHVDUHUHDOO\UHIHUULQJWRWKHVDPH
REMHFWXVHWKH RSHUDWRUZKLFK UHPHPEHU FRPSDUHVWKHELWVLQ
WKHYDULDEOHV,IERWKUHIHUHQFHVSRLQWWRWKHVDPHREMHFWWKHELWVZLOO
EHLGHQWLFDO

WLWOH&LUFOHV
KDVK&RGH

^gg
6RQJ

ZYj
6RQJ

LI IRR

EDU ^

ERWKUHIHUHQFHVDUHUHIHUULQJ
WRWKHVDPHREMHFWRQWKHKHDS
`

2EMHFWHTXDOLW\
 7ZRUHIHUHQFHVWZRREMHFWVRQWKHKHDSEXW

WLWOH&LUFOHV
KDVK&RGH

WKHREMHFWVDUHFRQVLGHUHGPHDQLQJIXOO\HTXLYDOHQW
,I\RXZDQWWRWUHDWWZRGLIIHUHQW6RQJREMHFWVDVHTXDO IRU
H[DPSOHLI\RXGHFLGHGWKDWWZR6RQJVDUHWKHVDPHLIWKH\KDYH
PDWFKLQJWLWOHYDULDEOHV \RXPXVWRYHUULGHERWKWKHKDVK&RGH 
DQGHTXDOV PHWKRGVLQKHULWHGIURPFODVV2EMHFW
$VZHVDLGDERYHLI\RXGRQWRYHUULGHKDVK&RGH WKHGHIDXOW
EHKDYLRU IURP2EMHFW LVWRJLYHHDFKREMHFWDXQLTXHKDVKFRGH
YDOXH6R\RXPXVWRYHUULGHKDVK&RGH WREHVXUHWKDWWZR
HTXLYDOHQWREMHFWVUHWXUQWKHVDPHKDVKFRGH%XW\RXPXVWDOVR
RYHUULGHHTXDOV VRWKDWLI\RXFDOOLWRQHLWKHUREMHFWSDVVLQJLQ
WKHRWKHUREMHFWDOZD\VUHWXUQVWUXH

WLWOH&LUFOHV
KDVK&RGH

^gg
6RQJ

LI IRRHTXDOV EDU  IRRKDVK&RGH 

ZYj
6RQJ
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
OBJECTSHASHCODEVALUETODETERMINEWHERETOPUT
THEOBJECTINTHE3ET"UTITALSOCOMPARESTHEOBJECTS
HASHCODETOTHEHASHCODEOFALLTHEOTHEROBJECTSIN
THE(ASH3ET ANDIFTHERESNOMATCHINGHASHCODE
THE(ASH3ETASSUMESTHATTHISNEWOBJECTISNOTA
DUPLICATE
)NOTHERWORDS IFTHEHASHCODESAREDIFFERENT THE
(ASH3ETASSUMESTHERESNOWAYTHEOBJECTSCANBE
EQUAL
3OYOUMUSTOVERRIDEHASH#ODE TOMAKESURETHE
OBJECTSHAVETHESAMEVALUE
"UTTWOOBJECTSWITHTHESAMEHASH#ODE MIGHTNOT
BEEQUALMOREONTHISONTHENEXTPAGE SOIFTHE
,QHHGWRNQRZ
LI\RXUKDVKFRGH
YDOXHVDUHWKHVDPH

(ASH3ETlNDSAMATCHINGHASHCODEFORTWOOBJECTS
ONEYOUREINSERTINGANDONEALREADYINTHESETTHE
(ASH3ETWILLTHENCALLONEOFTHEOBJECTSEQUALS
METHODSTOSEEIFTHESEHASHCODE MATCHEDOBJECTS
REALLYAREEQUAL
!NDIFTHEYREEQUAL THE(ASH3ETKNOWSTHATTHE
OBJECTYOUREATTEMPTINGTOADDISADUPLICATEOF
SOMETHINGINTHE3ET SOTHEADDDOESNTHAPPEN
9OUDONTGETANEXCEPTION BUTTHE(ASH3ETSADD
METHODRETURNSABOOLEANTOTELLYOUIFYOUCARE
WHETHERTHENEWOBJECTWASADDED3OIFTHEADD
METHODRETURNSFALSE YOUKNOWTHENEWOBJECTWASA
DUPLICATEOFSOMETHINGALREADYINTHESET

2EMHFW\RXUHWU\LQJWR
DGGWRWKH+DVK6HW

KDVK&RGH

WLWOH&LUFOHV
KDVK&RGH



^gg

+DVK6HW

6RQJ

KDVK&R
GH
ZYj
6RQJ

<RXUKDVKFRGHV
DUHWKHVDPHEXWDUH
\RX5($//<HTXDO"



WLWOH&LUFOHV
KDVK&RGH

2EMHFWDOUHDG\,1
WKH+DVK6HW

HTXDOV ED
U
WLWOH&LUFOHV
KDVK&RGH
^gg

WUXH

2EMHFW\RXUHWU\LQJ
WRDGGUXQVLWVHTXDOV 
PHWKRGFRPSDULQJLWVHOI
WREDUDQGUHWXUQVWUXH

6RQJ

+DVK6HW
ZYj
6RQJ

WLWOH&LUFOHV
KDVK&RGH

2EMHFWDOUHDG\,1
WKH+DVK6HW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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!^
6WULQJWLWOH
6WULQJDUWLVW
6WULQJUDWLQJ
6WULQJESP

OOLQJWKLV
Q\RQHHOVHRFD
D
U
R

HW
6
QJ
VK
D
7KH+ VHQGVLWDQRWKHU6 
PHWKRG 

SXEOLFERROHDQHTXDOV 2EMHFWD6RQJ ^

6RQJV  6RQJ D6RQJ


UHWXUQJHW7LWOH HTXDOV VJHW7LWOH 
`
SXEOLFLQWKDVK&RGH ^

UHWXUQWLWOHKDVK&RGH 
`


DWWLWOHLVD6V WU LQJ
WK
LV
V
HZ
Q
7
$
5(
DO
TX
7KH*
YHDQRYHUULGGHQLVHDVNRQH
DQG6WULQJVKDOZ
GR
R
W
YH
KD
WLWOH
PHWKRG6RDO XDH
RWKHRWKHUVRQJV
WLWOHLILWVHT OW

6DPHGHDOKHUH H6WU
LQJFODVVKDVDQRYHUULGGH
KDVK&RGH PHWKRWK
Q
G
VR
\R
FDOOLQJKDVK&RGH RQWKHWXFDQMXVWUHWXUQWKHUHVXOWRI
LWO
DQGHTXDOV DUHXVLQJWKH H1RWLFHKRZKDVK&RGH 
6$0(LQVWDQFHYDULDEOH


SXEOLFLQWFRPSDUH7R 6RQJV ^
UHWXUQWLWOHFRPSDUH7R VJHW7LWOH 
`

6RQJ 6WULQJW6WULQJD6WULQJU6WULQJE ^
WLWOH W
DUWLVW D
UDWLQJ U
ESP E
`
SXEOLF6WULQJJHW7LWOH ^
UHWXUQWLWOH
`
SXEOLF6WULQJJHW$UWLVW ^
UHWXUQDUWLVW
`
SXEOLF6WULQJJHW5DWLQJ ^
UHWXUQUDWLQJ
`
SXEOLF6WULQJJHW%SP ^
UHWXUQESP
`

SXEOLF6WULQJWR6WULQJ ^
UHWXUQWLWOH
`
`

1RZLWZRUNV1RGXSOLFDWHVZKHQZH
SULQWRXWWKH+DVK6HW%XWZHGLGQW
FDOOVRUW DJDLQDQGZKHQZHSXW
WKH$UUD\/LVWLQWRWKH+DVK6HWWKH
+DVK6HWGLGQWSUHVHUYHWKHVRUWRUGHU

)LOH(GLW:LQGRZ+HOS5HERRW:LQGRZV

MDYD-XNHER[
>3LQN0RRQ6RPHUVDXOW6KLYD0RRQ&LUFOHV
'HHS&KDQQHO3DVVHQJHU/LVWHQ/LVWHQ
/LVWHQ&LUFOHV@
>&LUFOHV&LUFOHV'HHS&KDQQHO/LVWHQ
/LVWHQ/LVWHQ3DVVHQJHU3LQN0RRQ6KLYD
0RRQ6RPHUVDXOW@
>3LQN0RRQ/LVWHQ6KLYD0RRQ&LUFOHV
'HHS&KDQQHO3DVVHQJHU6RPHUVDXOW@

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 
DQGHTXDOV
7KH$3,GRFVIRUFODVV2EMHFWVWDWHWKH
UXOHV\RX0867IROORZ

,IWZRREMHFWVDUHHTXDOWKH\0867
KDYHPDWFKLQJKDVKFRGHV

,IWZRREMHFWVDUHHTXDOFDOOLQJ
HTXDOV RQHLWKHUREMHFW0867UHWXUQ
WUXH,QRWKHUZRUGVLI DHTXDOV E WKHQ
EHTXDOV D 

6RLI\RXRYHUULGHHTXDOV \RX0867
RYHUULGHKDVK&RGH 

Q:

(OWCOMEHASHCODESCANBETHESAME
EVENIFOBJECTSARENTEQUAL

A:

(ASH3ETSUSEHASHCODESTOSTORETHEELE
MENTSINAWAYTHATMAKESITMUCHFASTERTOACCESS
)FYOUTRYTOFINDANOBJECTINAN!RRAY,ISTBYGIVING
THE!RRAY,ISTACOPYOFTHEOBJECTASOPPOSEDTO
ANINDEXVALUE THE!RRAY,ISTHASTOSTARTSEARCHING
FROMTHEBEGINNING LOOKINGATEACHELEMENTIN
THELISTTOSEEIFITMATCHES"UTA(ASH3ETCANFIND
ANOBJECTMUCHMOREQUICKLY BECAUSEITUSESTHE
HASHCODEASAKINDOFLABELONTHEhBUCKETvWHERE
ITSTOREDTHEELEMENT3OIFYOUSAY h)WANTYOU
TOFINDANOBJECTINTHESETTHATSEXACTLYLIKETHIS
ONEvTHE(ASH3ETGETSTHEHASHCODEVALUEFROM
THECOPYOFTHE3ONGYOUGIVEITSAY  AND
THENTHE(ASH3ETSAYS h/H )KNOWEXACTLYWHERE
THEOBJECTWITHHASHCODEISSTOREDv ANDIT
GOESRIGHTTOTHEBUCKET

Licensed by
Eduard Simons
104038

,IWZRREMHFWVKDYHWKHVDPHKDVKFRGH
YDOXHWKH\DUH127UHTXLUHGWREHHTXDO
%XWLIWKH\UHHTXDOWKH\0867KDYHWKH
VDPHKDVKFRGHYDOXH

'XPE 4XHVWLRQV

7KHGHIDXOWEHKDYLRURIKDVK&RGH 
LVWRJHQHUDWHDXQLTXHLQWHJHUIRUHDFK
REMHFWRQWKHKHDS6RLI\RXGRQWRYHUULGH
KDVK&RGH LQDFODVVQRWZRREMHFWVRI
WKDWW\SHFDQ(9(5EHFRQVLGHUHGHTXDO

7KHGHIDXOWEHKDYLRURIHTXDOV LVWR
GRDQ FRPSDULVRQ,QRWKHUZRUGVWR
WHVWZKHWKHUWKHWZRUHIHUHQFHVUHIHUWRD
VLQJOHREMHFWRQWKHKHDS6RLI\RXGRQW
RYHUULGHHTXDOV LQDFODVVQRWZRREMHFWV
FDQ(9(5EHFRQVLGHUHGHTXDOVLQFH
UHIHUHQFHVWRWZRGLIIHUHQWREMHFWVZLOO
DOZD\VFRQWDLQDGLIIHUHQWELWSDWWHUQ

DHTXDOV E PXVWDOVRPHDQWKDW
DKDVK&RGH  EKDVK&RGH
%XWDKDVK&RGH  EKDVK&RGH
GRHV127KDYHWRPHDQDHTXDOV E

4HISISNTTHEWHOLESTORYYOUGETINACOMPUTER
SCIENCECLASS BUTITSENOUGHFORYOUTOUSE(ASH
3ETSEFFECTIVELY)NREALITY DEVELOPINGAGOODHASH
CODEALGORITHMISTHESUBJECTOFMANYA0H$THESIS
ANDMORETHANWEWANTTOCOVERINTHISBOOK
4HEPOINTISTHATHASHCODESCANBETHESAME
WITHOUTNECESSARILYGUARANTEEINGTHATTHEOBJECTS
AREEQUAL BECAUSETHEhHASHINGALGORITHMvUSEDIN
THEHASH#ODE METHODMIGHTHAPPENTORETURN
THESAMEVALUEFORMULTIPLEOBJECTS!NDYES THAT
MEANSTHATMULTIPLEOBJECTSWOULDALLLANDINTHE
SAMEBUCKETINTHE(ASH3ETBECAUSEEACHBUCKET
REPRESENTSASINGLEHASHCODEVALUE BUTTHATSNOT
THEENDOFTHEWORLD)TMIGHTMEANTHATTHE(ASH
3ETISJUSTALITTLELESSEFFICIENTORTHATITSFILLED
WITHANEXTREMELYLARGENUMBEROFELEMENTS BUT
IFTHE(ASH3ETFINDSMORETHANONEOBJECTINTHE
SAMEHASHCODEBUCKET THE(ASH3ETWILLSIMPLY
USETHEEQUALS METHODTOSEEIFTHERESAPERFECT
MATCH)NOTHERWORDS HASHCODEVALUESARESOME
TIMESUSEDTONARROWDOWNTHESEARCH BUTTOFIND
THEONEEXACTMATCH THE(ASH3ETSTILLHASTOTAKE
ALLTHEOBJECTSINTHATONEBUCKETTHEBUCKETFOR
ALLOBJECTSWITHTHESAMEHASHCODE ANDTHENCALL
EQUALS ONTHEMTOSEEIFTHEOBJECTITSLOOKINGFOR
ISINTHATBUCKET

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 
`

SXEOLFYRLGJR ^

JHW6RQJV 
6\VWHPRXWSULQWOQ VRQJ/LVW 
&ROOHFWLRQVVRUW VRQJ/LVW 
6\VWHPRXWSULQWOQ VRQJ/LVW 

7UHH6HW6RQJ!VRQJ6HW QHZ7UHH6HW6RQJ! 
VRQJ6HWDGG$OO VRQJ/LVW 

RI+DVK6HW
H6HWLQVWHDGRQ
UH
7
D
RU
H
DW
WL
DQ
VW
F
,Q
H6HW VWUXMHFW
UH
7
J
DU

QR
H
FW
WK
&DOOLQJ HWZLOOXVHWKH6RQJRE V
PHDQVWKHV PHWKRGIRUWKHVRUW
FRPSDUH7R

LQD&RPSDUDWRU
G
VH
DV
S
YH
KD
G
XO
:HFR

:HFDQDGGDOOWKHVRQJVI WKH+
6\VWHPRXWSULQWOQ VRQJ6HW 
DVK6HW
XVLQJDGG$OO  2UZHFRXOGURP
`
KDYHDGGHGWKH
VRQ
JVL
QGL
YLGX
DOO\XVLQJVRQ WDGG MXVW

WKHZD\ZHDGGHGVRQJVWJ6H
YRLGJHW6RQJV ^
RWKH$UUD\/LVW
WU\^
)LOHOH 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


,OOKATTHISCODE
2EADITCAREFULLY THEN
ANSWERTHEQUESTIONS
BELOW.OTETHERE
ARENOSYNTAXERRORS
INTHISCODE

LPSRUWMDYDXWLO 
SXEOLFFODVV7HVW7UHH^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ7HVW7UHH JR 
`
SXEOLFYRLGJR ^
%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
SDJHGLGQWLPSOHPHQW&RPSDUDEOHVRLW
ZRXOGQWZRUNDWUXQWLPH7KLQNDERXWLWWKH
SRRU7UHH6HWVVROHSXUSRVHLQOLIHLVWRNHHS
\RXUHOHPHQWVVRUWHGDQGRQFHDJDLQLWKDG
QRLGHDKRZWRVRUW%RRNREMHFWV,WGRHVQWIDLO
DWFRPSLOHWLPHEHFDXVHWKH7UHH6HWDGG 
PHWKRGGRHVQWWDNHD&RPSDUDEOHW\SH7KH
7UHH6HWDGG PHWKRGWDNHVZKDWHYHUW\SH
\RXXVHGZKHQ\RXFUHDWHGWKH7UHH6HW,Q
RWKHUZRUGVLI\RXVD\QHZ7UHH6HW%RRN! 
WKHDGG PHWKRGLVHVVHQWLDOO\DGG %RRN $QG
WKHUHVQRUHTXLUHPHQWWKDWWKH%RRNFODVV
LPSOHPHQW&RPSDUDEOH%XWLWIDLOVDWUXQWLPH
ZKHQ\RXDGGWKHVHFRQGHOHPHQWWRWKHVHW
7KDWVWKHILUVWWLPHWKHVHWWULHVWRFDOORQHRI
WKHREMHFWVFRPSDUH7R PHWKRGVDQGFDQW

25
 <RXXVHWKH7UHH6HWV
RYHUORDGHGFRQVWUXFWRU
WKDWWDNHVD&RPSDUDWRU
7UHH6HWZRUNVDORWOLNHWKHVRUW 
PHWKRG\RXKDYHDFKRLFHRIXVLQJWKH
HOHPHQWVFRPSDUH7R PHWKRGDVVXPLQJ
WKHHOHPHQWW\SHLPSOHPHQWHGWKH
&RPSDUDEOHLQWHUIDFH25\RXFDQXVH
DFXVWRP&RPSDUDWRUWKDWNQRZVKRZ
WRVRUWWKHHOHPHQWVLQWKHVHW7RXVHD
FXVWRP&RPSDUDWRU\RXFDOOWKH7UHH6HW
FRQVWUXFWRUWKDWWDNHVD&RPSDUDWRU

FODVV%RRNLPSOHPHQWV&RPSDUDEOH^
6WULQJWLWOH
SXEOLF%RRN 6WULQJW ^
WLWOH W
`
SXEOLFLQWFRPSDUH7R 2EMHFWE ^
%RRNERRN  %RRN E
UHWXUQ WLWOHFRPSDUH7R ERRNWLWOH 
`
`

SXEOLFFODVV%RRN&RPSDUHLPSOHPHQWV&RPSDUDWRU%RRN! ^
SXEOLFLQWFRPSDUH %RRNRQH%RRNWZR ^
UHWXUQ RQHWLWOHFRPSDUH7R WZRWLWOH 
`
`
FODVV7HVW^
SXEOLFYRLGJR ^
%RRNE QHZ%RRN +RZ&DWV:RUN 
%RRNE QHZ%RRN 5HPL[\RXU%RG\ 
%RRNE QHZ%RRN )LQGLQJ(PR 
%RRN&RPSDUHE&RPSDUH QHZ%RRN&RPSDUH 
7UHH6HW%RRN!WUHH QHZ7UHH6HW%RRN! E&RPSDUH 
WUHHDGG QHZ%RRN +RZ&DWV:RUN 
WUHHDGG QHZ%RRN )LQGLQJ(PR 
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__MTT][MI5 IX
,ISTSAND3ETSAREGREAT BUTSOMETIMESA-APISTHEBESTCOLLECTIONNOT#OLLECTION
WITHACAPITALh#vREMEMBERTHAT-APSAREPARTOF*AVACOLLECTIONSBUTTHEYDONT
IMPLEMENTTHE#OLLECTIONINTERFACE 
)MAGINEYOUWANTACOLLECTIONTHATACTSLIKEAPROPERTYLIST WHEREYOUGIVEITANAME
ANDITGIVESYOUBACKTHEVALUEASSOCIATEDWITHTHATNAME!LTHOUGHKEYSWILLOFTENBE
3TRINGS THEYCANBEANY*AVAOBJECTOR THROUGHAUTOBOXING APRIMITIVE 

YDOXH
NH\

%DOO%DOO%DOO%DOO
%DOO
)LVK&DU

0DS

(DFKHOHPHQWLQD0DSLVDFWXDOO\
7:2REMHFWVDNH\DQGDYDOXH
<RXFDQKDYHGXSOLFDWHYDOXHVEXW
127GXSOLFDWHNH\V

0DSH[DPSOH
LPSRUWMDYDXWLO 

+DVK0DSQHHGV7:2W\SHSDUDPHWH
UV
RQHIRUWKHNH\DQGRQHIRU
WKHYDOXH

SXEOLFFODVV7HVW0DS^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

+DVK0DS6WULQJ,QWHJHU!VFRUHV QHZ+DVK0DS6WULQJ,QWHJHU! 
VFRUHVSXW .DWK\ 
VFRUHVSXW %HUW 
VFRUHVSXW 6N\OHU 

8VHSXW LQVWHDGRIDGG QGQRZ


RIFRXUVH
LWWDNHVWZRDUJXPHQWV NH D
\YDOXH 

6\VWHPRXWSULQWOQ VFRUHV 
6\VWHPRXWSULQWOQ VFRUHVJHW %HUW 
`
`

7KHJHW PHWKRGWDNHVDNH\DQG
UHWXUQVWKHYDOXH LQWKLVFDVHDQ,Q
WHJHU 

)LOH(GLW:LQGRZ+HOS:KHUH$P,

MDYD7HVW0DS
^6N\OHU %HUW .DWK\ `


:KHQ\RXSULQWD0DSLWJLYHV\RXW
LQEUDFHV^`LQVWHDGRIWKHEUDF KHNH\ YDOXH
NHWV>@\RXVHH
ZKHQ\RXSULQWOLVWVDQGVHWV

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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[
2EMEMBEREARLIERINTHECHAPTERWETALKEDABOUTHOWMETHODS
THATTAKEARGUMENTSWITHGENERICTYPESCANBEWEIRD!NDWE
MEANWEIRDINTHEPOLYMORPHICSENSE)FTHINGSSTARTTOFEEL
STRANGEHERE JUSTKEEPGOINGITTAKESAFEWPAGESTOREALLYTELL
THEWHOLESTORY
7ELLSTARTWITHAREMINDERONHOWARRAYARGUMENTSWORK
POLYMORPHICALLY ANDTHENLOOKATDOINGTHESAMETHINGWITH
GENERICLISTS4HECODEBELOWCOMPILESANDRUNSWITHOUTERRORS

+HUHVKRZLWZRUNVZLWKUHJXODUDUUD\V

,QRWKHUZRUGVLIDPHWKRGLV
GHFODUHGDV

YRLGIRR $QLPDO>@D ^`


$VVXPLQJ'RJH[WHQGV$QLPDO
\RXDUHIUHHWRFDOOERWK

IRR DQ$QLPDO$UUD\ 
IRR D'RJ$UUD\ 

LPSRUWMDYDXWLO 
SXEOLFFODVV7HVW*HQHULFV^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ7HVW*HQHULFV JR 
`

,IDPHWKRGDUJXPHQWLVDQDUUD\
RI$QLPDOVLWZLOODOVRWDNHDQ
DUUD\RIDQ\$QLPDOVXEW\SH

'HFODUHDQGFUHDWHDQ$QLPD UD\

WKDWKROGVERWKGRJVDQGFDWODU
V

SXEOLFYRLGJR ^
$QLPDO>@DQLPDOV ^QHZ'RJ QHZ&DW QHZ'RJ `
'RJ>@GRJV ^QHZ'RJ QHZ'RJ QHZ'RJ `
'HFODUHDQGFUHDWHD'RJDUUD\
WDNH$QLPDOV DQLPDOV 
&DOOWDNH$QLPDOV XVLQJERWK
WKDWKROGVRQO\'RJV WKHFRPSLOHU
WDNH$QLPDOV GRJV 
DUUD\W\SHVDVDUJXPHQWV
ZRQWOHW\RXSXWD&DWLQ 
`

SXEOLFYRLGWDNH$QLPDOV $QLPDO>@DQLPDOV ^
7KHFUXFLDOSRLQWLVWKDWWKHWDNH$
QLPDOV 
IRU $QLPDODDQLPDOV ^
PHWKRGFDQWDNHDQ$QLPDO>@RUD'
DHDW 
'RJ,6$$QLPDO3RO\PRUSKLVPLQ RJ>@VLQFH
DFWLRQ
5HP
`
HPEHUZHFDQFDOO21/<WKHPHW
KRG
VG
HFOD
UHGLQW\SH
DQLPDOVLQFHWKHDQLPDOVSDUDPH
`

WHULVRIW\SH$QLPDODUUD\
DQGZHGLGQWGRDQ\FDVWLQJ :K
7KDWDUUD\PLJKWKROGERWK'RJVDDWZRXOGZHFDVWLWWR"
QG&DWV

DEVWUDFWFODVV$QLPDO^
YRLGHDW ^
6\VWHPRXWSULQWOQ DQLPDOHDWLQJ 
`
`
FODVV'RJH[WHQGV$QLPDO^
7KHVLPSOLILHG$QLPDO
YRLGEDUN ^`
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 
:HKDYHWRDGGRQHDWDWLPHVLQFH
DQLPDOVDGG QHZ&DW 
WKHUHVQR
DQLPDOVDGG QHZ'RJ 
VKRUWFXWV\QWD[OLN

HWKHUHLVIRUDUUD\FUHDWLRQ

WDNH$QLPDOV DQLPDOV 
`

7KLVLVWKHVDPHFRGHH[FHSWQRZ
WKHDQLPDOV
YDULDEOHUHIHUVWRDQ$UUD\/LVWLQVW
HDGRIDUUD\

SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW 
7KHPHWKRGQRZWDNHVDQ$UUD\/LV
`
LQVWHDGRIDQDUUD\EXWHYHU\WKLQJW
HOVHLV
`
WKHVDPH5

HPHPEHUWKDWIR RSV\QWD[
ZRUNVIRUERWKDUUD\VDQGFROOUOR
HFWLRQV

&RPSLOHVDQGUXQVMXVWQH
)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 
GRJVDGG QHZ'RJ 
WDNH$QLPDOV GRJV 
`

0DNHD'RJ$UUD\/LVWDQGSXWDFR

XSOHGRJVLQ

: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
MDYDXWLO$UUD\/LVW'RJ!
WDNH$QLPDOV GRJV 
A
HUURU

,WORRNHGVRULJKW
EXWZHQWVRZURQJ

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
\RXUHVD\LQJ,FDQWGRWKDWLI,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!NIMALSOTHATYOUCANPUTALLTYPESOF
ANIMALSINASINGLE!NIMAL!RRAY,IST
"UTIFYOUPASSEDA$OG!RRAY,ISTONEMEANTTOHOLD/.,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\ZRQWOHW
\RXSDVVD'RJ$UUD\/LVWLQWRDPHWKRGWKDW
WDNHVDQ$QLPDO$UUD\/LVWWRVWRS\RXIURP
SRVVLEO\SXWWLQJD&DWLQZKDWZDVDFWXDOO\D'RJOLVW
WKHQZK\GRHVLWZRUNZLWKDUUD\V"'RQW\RXKDYH
WKHVDPHSUREOHPZLWKDUUD\V"&DQW\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

:KHZ $WOHDVWWKH
-90VWRSSHGLW

MDYD7HVW*HQHULFV
([FHSWLRQLQWKUHDGPDLQMDYDODQJ$UUD\6WRUH([FHSWLRQ
&DW
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

:RXOGQWLWEHGUHDP\LIWKHUHZHUH
DZD\WRVWLOOXVHSRO\PRUSKLFFROOHFWLRQ
W\SHVDVPHWKRGDUJXPHQWVVRWKDWP\
YHWHULQDU\SURJUDPFRXOGWDNH'RJOLVWV
DQG&DWOLVWV"7KDWZD\,FRXOGORRSWKURXJK
WKHOLVWVDQGFDOOWKHLULPPXQL]H PHWKRG
EXWLWZRXOGVWLOOKDYHWREHVDIHVRWKDW\RX
FRXOGQWDGGD&DWLQWRWKH'RJOLVW%XW,
JXHVVWKDWVMXVWDIDQWDV\

Licensed by
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
USEAWILDCARDADDEDTOTHE*AVALANGUAGEEXPLICITLYFORTHISREASON
SXEOLFYRLGWDNH$QLPDOV $UUD\/LVW"H[WHQGV$QLPDO!DQLPDOV ^
IRU $QLPDODDQLPDOV ^
DHDW 
`
`

3ONOWYOUREWONDERING h7HATSTHEDIFFERENCE$ONTYOUHAVE
THESAMEPROBLEMASBEFORE4HEMETHODABOVEISNTDOING
ANYTHINGDANGEROUSCALLINGAMETHODANY!NIMALSUBTYPEIS
GUARANTEEDTOHAVEBUTCANTSOMEONESTILLCHANGETHISTOADDA
#ATTOTHEANIMALSLIST EVENTHOUGHITSREALLYAN!RRAY,IST$OG
!NDSINCEITSNOTCHECKEDAGAINATRUNTIME HOWISTHISANY
DIFFERENTFROMDECLARINGITWITHOUTTHEWILDCARDv

5HPHPEHUWKHNH\ZRUGH[WHQGV
KHUHPHDQVHLWKHUH[WHQGV25
LPSOHPHQWVGHSHQGLQJRQWKH
W\SH6RLI\RXZDQWWRWDNH
DQ$UUD\/LVWRIW\SHVWKDW
LPSOHPHQWWKH3HWLQWHUIDFH
\RXGGHFODUHLWDV
$UUD\/LVW"H[WHQGV3HW!

!NDYOUDBERIGHTFORWONDERING4HEANSWERIS./7HENYOU
USETHEWILDCARDINYOURDECLARATION THECOMPILERWONTLET
YOUDOANYTHINGTHATADDSTOTHELIST
:KHQ\RXXVHDZLOGFDUGLQ\RXUPHWKRG
DUJXPHQWWKHFRPSLOHUZLOO6723\RXIURPGRLQJ
DQ\WKLQJWKDWFRXOGKXUWWKHOLVWUHIHUHQFHGE\WKH
PHWKRGSDUDPHWHU
<RXFDQVWLOOLQYRNHPHWKRGVRQWKHHOHPHQWVLQ
WKHOLVWEXW\RXFDQQRWDGGHOHPHQWVWRWKHOLVW
,QRWKHUZRUGV\RXFDQGRWKLQJVZLWKWKHOLVW
HOHPHQWVEXW\RXFDQWSXWQHZWKLQJVLQWKHOLVW
6R\RXUHVDIHDWUXQWLPHEHFDXVHWKHFRPSLOHU
ZRQWOHW\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
HAVETWOARGUMENTSBOTHOFWHICHARELISTSOFATYPETHAT
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
$UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW$QLPDO! 
Q

$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW'RJ! 
Q


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
$UUD\/LVW2EMHFW!REMV QHZ$UUD\/LVW'RJ! 
Q


 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

3OLUTIONTOTHE2EVERSE
%NGINEERSHARPENEXERCISE

LPSRUWMDYDXWLO 
SXEOLFFODVV6RUW0RXQWDLQV^
/LQNHG/LVW0RXQWDLQ!PWQ QHZ/LQNHG/LVW0RXQWDLQ! 
FODVV1DPH&RPSDUHLPSOHPHQWV&RPSDUDWRU0RXQWDLQ!^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQRQHQDPHFRPSDUH7R WZRQDPH 
`
`
FODVV+HLJKW&RPSDUHLPSOHPHQWV&RPSDUDWRU0RXQWDLQ!^
SXEOLFLQWFRPSDUH 0RXQWDLQRQH0RXQWDLQWZR ^
UHWXUQ WZRKHLJKWRQHKHLJKW 
`
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ6RUW0RXQWDLQ JR 
`
SXEOLFYRLGJR ^
PWQDGG QHZ0RXQWDLQ /RQJV 
PWQDGG QHZ0RXQWDLQ (OEHUW 
PWQDGG QHZ0RXQWDLQ 0DURRQ 
PWQDGG QHZ0RXQWDLQ &DVWOH 

HKHLJKWOLVWLV
'LG\RXQRWLFHWKDVHWTXWKHQFH"
LQ'(6&(1',1*

6\VWHPRXWSULQWOQ DVHQWHUHG?QPWQ 
1DPH&RPSDUHQF QHZ1DPH&RPSDUH 
&ROOHFWLRQVVRUW PWQQF 
6\VWHPRXWSULQWOQ E\QDPH?QPWQ 
+HLJKW&RPSDUHKF QHZ+HLJKW&RPSDUH 
&ROOHFWLRQVVRUW PWQKF 
6\VWHPRXWSULQWOQ E\KHLJKW?QPWQ 
`
`
FODVV0RXQWDLQ^
6WULQJQDPH
LQWKHLJKW
0RXQWDLQ 6WULQJQLQWK ^

/UTPUT
)LOH(GLW:LQGRZ+HOS7KLV2QHV)RU%RE

MDYD6RUW0RXQWDLQV
DVHQWHUHG

QDPH Q

>/RQJV(OEHUW0DURRQ&DVWOH@

KHLJKW K
`

E\QDPH

SXEOLF6WULQJWR6WULQJ  ^
UHWXUQQDPHKHLJKW
`

>&DVWOH(OEHUW/RQJV0DURRQ@
E\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
$UUD\/LVW'RJ!GRJV QHZ$UUD\/LVW$QLPDO! 
Q

$UUD\/LVW$QLPDO!DQLPDOV QHZ$UUD\/LVW'RJ! 
Q


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
$UUD\/LVW2EMHFW!REMV QHZ$UUD\/LVW'RJ! 
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.

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

,WVWLPHWROHWJR9OUWROTEYOURCODE9OUTESTEDYOURCODE9OUREFINEDYOURCODE
9OUTOLDEVERYONEYOUKNOWTHATIFYOUNEVERSAWALINEOFCODEAGAIN THATDBEFINE"UTINTHE
END YOUVECREATEDAWORKOFART4HETHINGACTUALLYRUNS"UTNOWWHAT(OWDOYOUGIVEITTO
ENDUSERS7HATEXACTLYDOYOUGIVETOENDUSERS7HATIFYOUDONTEVENKNOWWHOYOUREND
USERSARE)NTHESEFINALTWOCHAPTERS WELLEXPLOREHOWTOORGANIZE PACKAGE ANDDEPLOYYOUR
*AVACODE7ELLLOOKATLOCAL SEMI LOCAL ANDREMOTEDEPLOYMENTOPTIONSINCLUDINGEXECUTABLE
JARS *AVA7EB3TART 2-) AND3ERVLETS)NTHISCHAPTER WELLSPENDMOSTOFOURTIMEONORGANIZING
ANDPACKAGINGYOURCODETHINGSYOULLNEEDTOKNOWREGARDLESSOFYOURULTIMATEDEPLOYMENT
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
APPLICATION3ONOWITSTIMETOGETYOURPROGRAMINSHAPE
FORDEPLOYMENTINTO4HE/UTSIDE7ORLD)NTHISCHAPTER
WELLLOOKATLOCALDEPLOYMENTS INCLUDING%XECUTABLE*ARS
ANDTHEPART LOCALPART REMOTETECHNOLOGYCALLED*AVA7EB
3TART)NTHENEXTCHAPTER WELLLOOKATTHEMOREREMOTE
DEPLOYMENTOPTIONS INCLUDING2-)AND3ERVLETS

'HSOR\PHQWRSWLRQV
)LOH(GLW9LHZ

+773

)LOH(GLW9LHZ

+773

([HFXWDEOH
-DU

:HE6WDUW

)LOH(GLW9LHZ

50,

$-DYDSURJUDPLVDEXQFK
RIFODVVHV7KDWVWKH
RXWSXWRI\RXUGHYHORSPHQW
7KHUHDOTXHVWLRQLVZKDW
WRGRZLWKWKRVHFODVVHV
ZKHQ\RXUHGRQH

6HUYOHWV

50,DSS

/RFDO &RPELQDWLRQ5HPRWH


/RFDO
7KHHQWLUHDSSOLFDWLRQUXQVRQWKH
HQGXVHUVFRPSXWHUDVDVWDQGDORQH
SUREDEO\*8,SURJUDPGHSOR\HGDV
DQH[HFXWDEOH-$5 ZHOOORRNDW-$5
LQDIHZSDJHV

&RPELQDWLRQRIORFDODQGUHPRWH
7KHDSSOLFDWLRQLVGLVWULEXWHGZLWKD
FOLHQWSRUWLRQUXQQLQJRQWKHXVHUV
ORFDOV\VWHPFRQQHFWHGWRDVHUYHU
ZKHUHRWKHUSDUWVRIWKHDSSOLFDWLRQ
DUHUXQQLQJ

5HPRWH
7KHHQWLUH-DYDDSSOLFDWLRQUXQVRQD
VHUYHUV\VWHPZLWKWKHFOLHQWDFFHVVLQJ
WKHV\VWHPWKURXJKVRPHQRQ-DYD
PHDQVSUREDEO\DZHEEURZVHU

DLQ EDUEHOO
EU%UDLQ%DUEHOO
7HATARETHEADVANTAGESAND
DISADVANTAGESOFDELIVERINGYOUR
*AVAPROGRAMASALOCAL STAND
ALONEAPPLICATIONRUNNINGON
THEEND USERSCOMPUTER
7HATARETHEADVANTAGESAND
DISADVANTAGESOFDELIVERINGYOUR
*AVAPROGRAMASWEB BASED
SYSTEMWHERETHEUSERINTERACTS
WITHAWEBBROWSER ANDTHE
*AVACODERUNSASSERVLETSONTHE
SERVER

"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

,WV
QDOO\GRQH

1UIOQVM\PQ[[KMVIZQW
"OBSHAPPILYATWORKONTHElNALPIECESOFHISCOOLNEW
*AVAPROGRAM!FTERWEEKSOFBEINGINTHEh)M JUST
ONE COMPILE AWAYvMODE THISTIMEHESREALLY
DONE4HEPROGRAMISAFAIRLYSOPHISTICATED
'5)APP BUTSINCETHEBULKOFITIS3WING
CODE HESMADEONLYNINECLASSESOFHIS
OWN

Licensed by
Eduard Simons
104038
!TLAST ITSTIMETODELIVERTHEPROGRAMTOTHE
CLIENT(ElGURESALLHEHASTODOISCOPYTHE
NINECLASSlLES SINCETHECLIENTALREADYHAS
THE*AVA!0)INSTALLED(ESTARTSBYDOINGAN
OVONTHEDIRECTORYWHEREALLHISlLESARE

: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
FROMTHEBEGINNING KEEPINGTHESOURCECODEANDCOMPILED
CODESEPARATE)NOTHERWORDS MAKINGSUREHISCOMPILEDCLASS
lLESDIDNTLANDINTHESAMEDIRECTORYASHISSOURCECODE

%XW,WKRXJKW,GLGQWKDYH
DFKRLFHDERXWSXWWLQJWKHFODVV
OHVLQZLWKWKHVRXUFHOHV
:KHQ\RXFRPSLOHWKH\MXVWJR
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

WHOOVWKHFRPSLO RSX
WWKH
FRPSLOHGFRGH FHUODVWVI
LOHV 
LQWRWKHFODVVHVGLUHFW
RU\
WKDWVRQHGLUHFW
EDFNGRZQDJDLQIRUUR\PXSDQG
FXUUHQWZRUNLQJGLUHFWWKH
RU\

0\3URMHFW

VWLOO
WKHODVWWKLQJWLKHVMDYD
RI
H
WKHQDP SLOH
ILOHWRFRP

FRPSLOHGFRGH
ODQGVKHUH

FODVVHV
"YUSINGTHEGmAG YOUGETTODECIDEWHICHDIRECTORYTHE
COMPILEDCODELANDSIN RATHERTHANACCEPTINGTHEDEFAULTOF
CLASSlLESLANDINGINTHESAMEDIRECTORYASTHESOURCECODE
UXQ\RXUPDLQ 
4OCOMPILEALLTHEJAVAlLESINTHESOURCEDIRECTORY USE
I

URPKHUH

MDYDFGFODVVHV MDYD

5XQQLQJ\RXUFRGH

MDYDFRPSLOHV$//
VRXUFHILOHVLQWKH
FXUUHQWGLUHFWRU\

FG0\3URMHFWFODVVHV
UXQ\RXUSURJUDPI
MDYD0LQL

WKHFODVVHVGLUHFWRURP
U\

 FKDSWHU










0\$SSFODVV

FRPSLOHIURPU\
7+,6GLUHFWR

VRXUFH

/RUSHU
LXUHHXJXH
WDWYHUR
FRQVH
HXJXHUR/RUH
GRHOLTXLV
GRGHOGLS

0\$SSMDYD

WURXEOHVKRRWLQJQRWHHYHU\WKLQJLQWKLVFKDSWHUDVVXPHVWKDWWKH
FXUUHQWZRUNLQJGLUHFWRU\ LHWKH LVLQ\RXUFODVVSDWK,I\RX
KDYHH[SOLFLWO\VHWDFODVVSDWKHQYLURQPHQWYDULDEOHEHFHUWDLQ 
WKDWLWFRQWDLQVWKH

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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):

-$5

!*!2lLEISA*AVA!2CHIVE)TSBASEDONTHEPKZIPlLEFORMAT ANDITLETSYOUBUNDLE
ALLYOURCLASSESSOTHATINSTEADOFPRESENTINGYOURCLIENTWITHCLASSlLES YOUHAND
OVERJUSTASINGLE*!2lLE)FYOUREFAMILIARWITHTHETARCOMMANDON5.)8 YOULL
RECOGNIZETHEJARTOOLCOMMANDS.OTEWHENWESAY*!2INALLCAPS WEREREFERRING
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\RXUFODVVOHVDUHLQ
WKHFODVVHVGLUHFWRU\
:HUHJRLQJWRUHQHWKLVLQDIHZSDJHVEXW
IRUQRZNHHSDOO\RXUFODVVOHVVLWWLQJLQWKH
GLUHFWRU\QDPHGFODVVHV

FODVVHV



























0\$SSFODVV

&UHDWHDPDQLIHVWW[WOHWKDWVWDWHV
ZKLFKFODVVKDVWKHPDLQ PHWKRG
0DNHDWH[WOHQDPHGPDQLIHVWW[WWKDWKDVD
RQHOLQH
0DLQ&ODVV0\$SS

0DLQ&ODVV0\L$SS

0\3URMHFW

GRQWSXWWKHFODVV
RQWKHHQG

3UHVVWKHUHWXUQNH\DIWHUW\SLQJWKH0DLQ
&ODVVOLQHRU\RXUPDQLIHVWPD\QRWZRUN
FRUUHFWO\3XWWKHPDQLIHVWOHLQWRWKHFODVVHV
GLUHFWRU\





FODVVHV





PDQLIHVWW[W

0DLQ&ODVV0LQL$SS

PDQLIHVWW[W

5XQWKHMDUWRROWRFUHDWHD-$5OH
WKDWFRQWDLQVHYHU\WKLQJLQWKHFODVVHV
GLUHFWRU\SOXVWKHPDQLIHVW
FG0LQL3URMHFWFODVVHV
MDUFYPIPDQLIHVWW[WDSSMDU FODVV
25
MDUFYPIPDQLIHVWW[WDSSMDU0\$SSFODVV

FODVVHV







0DLQ&ODVV0LQL$SS

DSSMDU

QRVRXUFH
FRGH MDYD 
LQWKH-$5

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

+773

([HFXWDEOH
*8,FOLHQW
-DU

:HE6WDUW

)LOH(GLW9LHZ

+773

50,

0RVWORFDO-DYD
DSSVDUHGHSOR\HGDV
H[HFXWDEOH-$5ILOHV

6HUYOHWV

50,DSS

/RFDO &RPELQDWLRQ5HPRWH

:]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

FODVVHV

H-$5VR
7KH-90KDVWRVHHWK
7KH
DWK
VVS
FOD
XU
\R
LWPXVWEHLQ
YLVLEOH
$5
HHDVLHVWZD\WRPDNHWKJGLUHFWR
U\
NLQ
ZRU
XU
LVWRPDNH\R
LV
$5
WKHSODFHZKHUHWKH-

FG0\3URMHFWFODVVHV







MDYDMDUDSSMDU

0DLQ&ODVV0LQL$SS

DSSMDU

7KHMDU
-90\RXUIHODJLJWHOOVWKH
-$5LQVWHDGR YLQJLWD
IDFODVV

-$5IDRLQU
LV
K
W

H
LG
V
LQ
ORRNV
IRU0
7KH-90HVWZLWKDQHQWU\R QH\RXJHW
G
LI
DPDQ LWGRHVQWILQ
&ODVV,I HH[FHSWLRQ
DUXQWLP

$EPENDINGONHOWYOUROPERATINGSYSTEMISCONlGURED YOU
MIGHTEVENBEABLETOSIMPLYDOUBLE CLICKTHE*!2lLETOLAUNCH
IT4HISWORKSONMOSTmAVORSOF7INDOWS AND-AC/389OU
CANUSUALLYMAKETHISHAPPENBYSELECTINGTHE*!2ANDTELLING
THE/3TOh/PENWITHvORWHATEVERTHEEQUIVALENTISONYOUR
OPERATINGSYSTEM 

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:
A:

7HYCANT)JUST*!2UPANENTIREDIRECTORY

4HE*6-LOOKSINSIDETHE*!2ANDEXPECTSTOFIND
WHATITNEEDSRIGHTTHERE)TWONTGODIGGINGINTOOTHER
DIRECTORIES UNLESSTHECLASSISPARTOFAPACKAGE ANDEVEN
THENTHE*6-LOOKSONLYINTHEDIRECTORIESTHATMATCHTHE
PACKAGESTATEMENT

Q:
A:

7HATDIDYOUJUSTSAY

9OUCANTPUTYOURCLASSFILESINTOSOMEARBITRARY
DIRECTORYAND*!2THEMUPTHATWAY"UTIFYOURCLASSES
BELONGTOPACKAGES YOUCAN*!2UPTHEENTIREPACKAGE
DIRECTORYSTRUCTURE)NFACT YOUMUST7ELLEXPLAINALLTHISON
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
PREVIOUSPAGES JUSTALITTLE TOPUTCLASSESINTOAPACKAGE AND
TO*!2THEENTIREPACKAGE0AYVERYCLOSEATTENTIONTOTHE
SUBTLEANDPICKYDETAILS%VENTHETINIESTDEVIATIONCANS TOP
YOURCODEFROMCOMPILINGANDORRUNNING

MDYDWH[W1XPEHU)RUPDW
MDYDXWLO$UUD\/LVW
MDYDDZW)ORZ/D\RXW
MDYDDZWHYHQW$FWLRQ(YHQW

8IKSIOM[XZM^MV\KTI[[VIUMKWVNTQK\[
!LTHOUGHPACKAGESARENTJUSTFORPREVENTINGNAMECOLLISIONS
THATSAKEYFEATURE9OUMIGHTWRITEACLASSNAMED#USTOMER
ANDACLASSNAMED!CCOUNTANDACLASSNAMED3HOPPING#ART
!NDWHATDOYOUKNOW HALFOFALLDEVELOPERSWORKINGIN
ENTERPRISEE COMMERCEHAVEPROBABLYWRITTENCLASSESWITH
THOSENAMES)NAN//WORLD THATSJUSTDANGEROUS)FPARTOF
THEPOINTOF//ISTOWRITEREUSABLECOMPONENTS DEVELOPERS
NEEDTOBEABLETOPIECETOGETHERCOMPONENTSFROMA
VARIETYOFSOURCES ANDBUILDSOMETHINGNEWOUTOFTHEM
9OURCOMPONENTSHAVETOBEABLETO@PLAYWELLWITHOTHERS
INCLUDINGTHOSEYOUDIDNTWRITEOREVENKNOWABOUT
2EMEMBERWAYBACKINCHAPTERWHENWEDISCUSSEDHOW
APACKAGENAMEISLIKETHEFULLNAMEOFACLASS TECHNICALLY
KNOWNASTHEFULLY QUALIlEDNAME#LASS!RRAY,ISTISREALLY
JAVAUTIL!RRAY,IST *"UTTONISREALLYJAVAXSWING*"UTTON AND
3OCKETISREALLYJAVANET3OCKET.OTICETHATTWOOFTHOSECLASSES
!RRAY,ISTAND3OCKET BOTHHAVEJAVAASTHEIRhlRSTNAMEv
)NOTHERWORDS THElRSTPARTOFTHEIRFULLY QUALIlEDNAMES
IShJAVAv4HINKOFAHIERARCHYWHENYOUTHINKOFPACKAGE
STRUCTURES ANDORGANIZEYOURCLASSESACCORDINGLY

MDYDQHW6RFNHW

MDYD






QHW

WH[W

1XPEHU)RUPDW






$UUD\/LVW

DZW
XWLO







6RFNHW






)ORZ/D\RXW

HYHQW






$FWLRQ(YHQW
:KDWGRHVWKLVSLFWXUHORRNOLNHWR
\RX"'RHVQWLWORRNDZKROHORWOLNH
DGLUHFWRU\KLHUDUFK\"

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\
TXDQWXPEDNLQJFODVV

:K\WKDWVWKHVDPHQDPH
,ZDVWKLQNLQJRIIRUP\
VXEDWRPLFLURQLQJFODVV
*XHVV,OOMXVWKDYHWRFRPH
XSZLWKVRPHWKLQJHOVH

8ZM^MV\QVOXIKSIOMVIUMKWVNTQK\[
0UTTINGYOURCLASSINAPACKAGEREDUCESTHECHANCESOFNAMING
CONmICTSWITHOTHERCLASSES BUTWHATSTOSTOPTWOPROGRAMMERS
FROMCOMINGUPWITHIDENTICALPACKAGENAMES)NOTHERWORDS
WHATSTOSTOPTWOPROGRAMMERS EACHWITHACLASSNAMED!CCOUNT
FROMPUTTINGTHECLASSINAPACKAGENAMEDSHOPPINGCUSTOMERS
"OTHCLASSES INTHATCASE WOULDSTILLHAVETHESAMENAME
SHOPPINGCUSTOMERS!CCOUNT

3DFNDJHVFDQSUHYHQWQDPH
FRQIOLFWVEXWRQO\LI\RX
FKRRVHDSDFNDJHQDPH
WKDWVJXDUDQWHHGWREH
XQLTXH7KHEHVWZD\WR
GRWKDWLVWRSUHIDFH\RXU
SDFNDJHVZLWK\RXUUHYHUVH
GRPDLQQDPH
FRPKHDGUVWERRNV%RRN

SDFNDJHQDPH

PH

D
FODVVQ

3UNSTRONGLYSUGGESTSAPACKAGENAMINGCONVENTIONTHATGREATLY
REDUCESTHATRISKPREPENDEVERYCLASSWITHYOURREVERSEDOMAIN
NAME2EMEMBER DOMAINNAMESAREGUARANTEEDTOBEUNIQUE
4WODIFFERENTGUYSCANBENAMED"ARTHOLOMEW3IMPSON BUTTWO
DIFFERENTDOMAINSCANNOTBENAMEDDOHCOM

5HYHUVHGRPDLQSDFNDJHQDPHV
FRPKHDGUVWMDYDSURMHFWV&KDUW

RXUUHYHUVH
VWDUWWKHSDFNDJHZLWK\
W  
GR
\D
GE
DWH
GRPDLQVHSDU
WLRQDO
L]D
JDQ
RU
RZQ
XU
\R
GG
QD
WKH
DW
WK
WHU
VWUXFWXUHDI


QDPHL]LVHG

V
V
D
O
F

WKH \VFDSLWDO
DOZD

SURMHFWV&KDUWPLJKWEHDFRPPRQ
QDPHEXWDGGLQJFRPKHD
UVWMDYD
PHDQVZHKDYHWRZRUU\DGIL
ERX
RXURZQLQKRXVHGHYHORSHUV WRQO\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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


&KRRVHDSDFNDJHQDPH
:HUHXVLQJFRPKHDGUVWMDYDDVRXU
H[DPSOH7KHFODVVQDPHLV3DFNDJH([HUFLVH
VRWKHIXOO\TXDOLHGQDPHRIWKHFODVVLVQRZ
FRPKHDGUVWMDYD3DFNDJH([HUFLVH

<RXPXVWSXWDFODVV
LQWRDGLUHFWRU\
VWUXFWXUHWKDWPDWFKHV
WKHSDFNDJHKLHUDUFK\

3XWDSDFNDJHVWDWHPHQWLQ\RXUFODVV
,WPXVWEHWKHUVWVWDWHPHQWLQWKHVRXUFH
FRGHOHDERYHDQ\LPSRUWVWDWHPHQWV7KHUH
FDQEHRQO\RQHSDFNDJHVWDWHPHQWSHUVRXUFH
FRGHOHVRDOOFODVVHVLQDVRXUFHOHPXVW
EHLQWKHVDPHSDFNDJH7KDWLQFOXGHVLQQHU
FODVVHVRIFRXUVH

0\3URMHFW

SDFNDJHFRPKHDGUVWMDYD
LPSRUWMDYD[VZLQJ 

FODVVHV

6HWXSDPDWFKLQJGLUHFWRU\VWUXFWXUH
,WVQRWHQRXJKWRVD\\RXUFODVVLVLQDSDFNDJH
E\PHUHO\SXWWLQJDSDFNDJHVWDWHPHQWLQ
WKHFRGH<RXUFODVVLVQWWUXO\LQDSDFNDJH
XQWLO\RXSXWWKHFODVVLQDPDWFKLQJGLUHFWRU\
VWUXFWXUH6RLIWKHIXOO\TXDOLHGFODVVQDPH
LVFRPKHDGUVWMDYD3DFNDJH([HUFLVH\RX
PXVWSXWWKH3DFNDJH([HUFLVHVRXUFHFRGHLQD
GLUHFWRU\QDPHGKHDGUVWMDYDZKLFKPXVWEHLQ
DGLUHFWRU\QDPHGFRP
,WLVSRVVLEOHWRFRPSLOHZLWKRXWGRLQJWKDWEXW
WUXVWXVLWVQRWZRUWKWKHRWKHUSUREOHPV
\RXOOKDYH.HHS\RXUVRXUFHFRGHLQDGLUHFWRU\
VWUXFWXUHWKDWPDWFKHVWKHSDFNDJHVWUXFWXUH
DQG\RXOODYRLGDWRQRISDLQIXOKHDGDFKHVGRZQ
WKHURDG

SDFNDJHVWUXFWXUH

SXEOLFFODVV3DFNDJH([HUFLVH^
OLIHDOWHULQJFRGHKHUH
`

FRP

KHDGILUVWMDYD










3DFNDJH([HUFLVHFODVV

VRXUFH

FRP

KHDGILUVWMDYD

/RUSHU
LXUHHXJXH
WDWYHUR
FRQVH
HXJXHUR/RUH
GRHOLTXLV
GRGHOGLS

3DFNDJH([HUFLVHMDYD

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


FG0\3URMHFWVRXUFH

RU\ 'R127FGGRZQ
VWD\LQWKHVRXUFHGLUHFW
DYDILOHLV
LQWRWKHGLUHFWRU\ZKHUHWKHM

MDYDFGFODVVHVFRPKHDGUVWMDYD3DFNDJH([HUFLVHMDYD

WHOOVWKHFRPSLO RSX
WWKH
FRPSLOHGFRGH FHUODVWVI
LOH
LQWRWKHFODVVHVGLUHFW V 
RU\

ZLWKLQWKHULJKWSDF
JH
VWUXFWXUH<HVLWNQND
RZV

VSHFLI\
1RZ\RXKDYHRWR
WWRWKH
WKH3$7+WHILJHOH
DFWXDOVRXUF

4OCOMPILEALLTHEJAVAlLESINTHECOMHEADlRSTJAVA
PACKAGE USE
MDYDFGFODVVHVFRPKHDGUVWMDYD MDYD


WLOOUXQ
\RXOOVKHUH
IURP

0\3URMHFW

FODVVHV

\RXOOVWLOOFRPSLOH
IURPKHUH

VRXUFH

FRPSLOHVHYHU VRXU
FH MDYD 
ILOHLQWKLVGL\
UHFWRU\
5XQQLQJ\RXUFRGH
FG0\3URMHFWFODVVHV

UXQ\RXUSUR I
URP
WKHFODVVHVGJULUDP
HFWRU\

MDYDFRPKHDGUVWMDYD3DFNDJH([HUFLVH

<RX0867J
VHHWKDWDQGLYLPHPWKHIXOO\TXDOLILHGFODVVQDPH7
HGLDWHO\ORRNLQVLG
FODVVHV DQG
HLWVFX HQWGLKHUH-90ZLOO
FWRU\
LWH[SHFWVWRH[ILSHQGFWWRILQGDGLUHFWRU\QDPUUHG
WKHUHLWH[SHFWVW DGLUHFWRU\QDPHGKHDGILUVWFRPZKHUH
GLUHFWRU\RUHYHQ RILQGWKHFODVV,IWKHFODVV MDYDDQGLQ
LQFODVVHVLWZR
LVLQWKHFRP
QWZRUN 

FRP

KHDGILUVWMDYD







3DFNDJH([HUFLVHFODVV

FRP

KHDGILUVWMDYD

/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

3DFNDJH([HUFLVHMDYD

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
#OMPILINGWITHTHEGmAGISWONDERFULBECAUSENOTONLYDOESIT
LETYOUSENDYOURCOMPILEDCLASSlLESINTOADIRECTORYOTHERTHAN
THEONEWHERETHESOURCElLEIS BUTITALSOKNOWSTOPUTTHECLASS
INTOTHECORRECTDIRECTORYSTRUCTUREFORTHEPACKAGETHECLASSISIN
"UTITGETSEVENBETTER
,ETSSAYTHATYOUHAVEANICE
DIRECTORYSTRUCTUREALLSETUPFORYOUR
0\3URMHFW
SOURCECODE"UTYOUHAVENTSET
UPAMATCHINGDIRECTORYSTRUCTURE
FORYOURCLASSESDIRECTORY.OTA
PROBLEM#OMPILINGWITH
DTELLSTHECOMPILERTONOT
JUST PUT YOUR CLASSES INTO
FODVVHV
CORRECT DIRECTORY TREE BUT TO
THE DIRECTORIES IF THEY DONT

VWUXFWXUH
,IWKHSDFNDJHGLUHFWRU\
ODVVHV
HF
WK
GHU
XQ
LVW
H[
GRHVQW
EXLOGWKH
LOO
UZ
SLOH
FRP
GLUHFWRU\WKH
DJ
G
GLUHFWRULHVLI\RXXVHWKH IO
HWR
6R\RXGRQWDFWXDOO\KDY
FWRULHVXQGHU
LUH
HG
WK
SK\VLFDOO\FUHDWH
U\$QGLQ
WKHFODVVHVURRWGLUHFWR
UGRLW
SLOH
RP
HF
WK
IDFWLI\RXOHW

\SR
DW
RI
FH
KDQ
RF
VQ
WKHUH

WKHUH DUH QR

'XPE 4XHVWLRQV

Q:

)TRIEDTOCDINTOTHE
DIRECTORYWHEREMYMAINCLASS
WAS BUTNOWTHE*6-SAYSITCANT
lNDMYCLASS"UTITSRIGHT4(%2%
INTHECURRENTDIRECTORY

A:

VRXUFH THE

BUILD
EXIST
FRP

KHDGILUVWMDYD

/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

3DFNDJH([HUFLVHMDYD

7KHGDJWHOOVWKHFRPSLOHU
3XWWKHFODVVLQWRLWVSDFNDJH
GLUHFWRU\VWUXFWXUHXVLQJWKH
FODVVVSHFLHGDIWHUWKHGDV
WKHURRWGLUHFWRU\%XWLIWKH
GLUHFWRULHVDUHQWWKHUHFUHDWH
WKHPUVWDQGWKHQSXWWKHFODVV
LQWKHULJKWSODFH

/NCEYOURCLASSISINA
PACKAGE YOUCANTCALLITBYITS
@SHORTNAME9OU-534SPECIFY
ATTHECOMMAND LINE THEFULLY
QUALIFIEDNAMEOFTHECLASSWHOSE
MAIN METHODYOUWANTTORUN
"UTSINCETHEFULLY QUALIFIEDNAME
INCLUDESTHEPACKAGESTRUCTURE
*AVAINSISTSTHATTHECLASSBEINA
MATCHINGDIRECTORYSTRUCTURE3OIF
ATTHECOMMAND LINEYOUSAY
MDYDFRPIRR%RRN
THE*6-WILLLOOKINITSCURRENT
DIRECTORYANDTHERESTOFITS
CLASSPATH FORADIRECTORYNAMED
hCOMv)TWILLNOTLOOKFORACLASS
NAMED"OOK UNTILITHASFOUND
ADIRECTORYNAMEDhCOMvWITHA
DIRECTORYINSIDENAMEDhFOOv/NLY
THENWILLTHE*6-ACCEPTTHATITS
FOUNDTHECORRECT"OOKCLASS)FIT
FINDSA"OOKCLASSANYWHEREELSE
ITASSUMESTHECLASSISNTINTHE
RIGHTSTRUCTURE EVENIFITIS4HE
*6-WONTFOREXAMPLE LOOKBACK
UPTHEDIRECTORYTREETOSAY h/H )
CANSEETHATABOVEUSISADIRECTORY
NAMEDCOM SOTHISMUSTBETHE
RIGHTPACKAGEv

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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[

-$5

7HENYOURCLASSISINAPACKAGE THEPACKAGEDIRECTORYSTRUCTURE
MUSTBEINSIDETHE*!29OUCANTJUSTPOPYOURCLASSESINTHE
*!2THEWAYWEDIDPRE PACKAGES!NDYOUMUSTBESURETHATYOU
DONTINCLUDEANYOTHERDIRECTORIESABOVEYOURPACKAGE4HE
lRSTDIRECTORYOFYOURPACKAGEUSUALLYCOM MUSTBETHElRST
DIRECTORYWITHINTHE*!2)FYOUWERETOACCIDENTALLYINCLUDETHE
DIRECTORYABOVETHEPACKAGEEGTHEhCLASSESvD
IRECTORY THE*!2
WOULDNTWORKCORRECTLY

0DNLQJDQH[HFXWDEOH-$5


FODVVHV

0DNHVXUHDOORI\RXUFODVVOHVDUH
ZLWKLQWKHFRUUHFWSDFNDJHVWUXFWXUH
XQGHUWKHFODVVHVGLUHFWRU\

FRP







KHDGILUVWMDYD

3DFNDJH([HUFLVHFODVV

&UHDWHDPDQLIHVWW[WOHWKDWVWDWHV
ZKLFKFODVVKDVWKHPDLQ PHWKRG
DQGEHVXUHWRXVHWKHIXOO\TXDOLHG
FODVVQDPH

0DLQ&ODVV0LQL$SS

FODVVHV

PDQLIHVWW[W

0DNHDWH[WOHQDPHGPDQLIHVWW[WWKDWKDVD
VLQJOHOLQH

FRP

0DLQ&ODVVFRPKHDGUVWMDYD3DFNDJH([HUFLVH
3XWWKHPDQLIHVWOHLQWRWKHFODVVHVGLUHFWRU\







KHDGILUVWMDYD

3DFNDJH([HUFLVHFODVV

5XQWKHMDUWRROWRFUHDWHD-$5OH
WKDWFRQWDLQVWKHSDFNDJHGLUHFWRULHV
SOXVWKHPDQLIHVW
7KHRQO\WKLQJ\RXQHHGWRLQFOXGHLVWKHFRP
GLUHFWRU\DQGWKHHQWLUHSDFNDJH DQGDOOFODVVHV 
ZLOOJRLQWRWKH-$5

FG0\3URMHFWFODVVHV

FODVVHV

FRP

\LVWKH
$OO\RXVSFHWFRLIU\$QG\RXOO
FRPGLUH \WKLQJLQLW
SDFN([MDU
JHWHYHU

MDUFYPIPDQLIHVWW[WSDFN([MDUFRP

KHDGILUVWMDYD







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
COMMAND LINE THEJARTOOLCANDOMORETHANJUSTCREATEANDRUNA
*!29OUCANEXTRACTTHECONTENTSOFA*!2JUSTLIKE@UNZIPPINGOR
@UNTARRING 

LQWRD
H-$5I6LONH\OHU
K
W

W
X
S

H
Z
QDPHG
GLUHFWRU\

)MAGINEYOUVEPUTTHEPACK%XJARINTOADIRECTORYNAMED3KYLER
6N\OHU

MDUFRPPDQGVIRUOLVWLQJDQGH[WUDFWLQJ


/LVWWKHFRQWHQWVRID-$5

Licensed by
Eduard Simons
104038

MDUWISDFN([MDU

SDFN([MDU

WIVWDQG
VKRZPHDVWIDRU7DEOH)LOHDVLQ
EOHRIWKH-$
5ILOH

\
WRPDWLFDOO
X
D
O
R
R
W

U
WKHMD 0(7$,1) 
EXLOGVD U\DQGSXWVWKH
GLUHFWRVWLQVLGH
PDQLIH

)LOH(GLW:LQGRZ+HOS3LFNOH

FG6N\OHU
MDUWISDFN([MDU
0(7$,1)
0(7$,1)0$1,)(670)
FRP
FRPKHDGILUVWMDYD
FRPKHDGILUVWMDYD
3DFNDJH([HUFLVHFODVV

0(7$,1)

FRP

0DLQ&ODVV0LQL$SS

KHDGILUVWMDYD
0$1,)(670)

([WUDFWWKHFRQWHQWVRID-$5 LHXQMDU
FG6N\OHU
MDU[ISDFN([MDU

3DFNDJH([HUFLVHFODVV
6N\OHU

FW)LOHDQGLW
[IVWDQGVIRU([WUDQJ
RUXQWDUULQJ
SSL
Q]L
ZRUNVMXVWOLNHX
[MDU\RXOO
,I\RXH[WUDFWWKHSDFN(HFW
RU\DQGWKH
GLU
,1)
VHHWKH0(7$
XUUHQW
FRPGLUHFWRU\GLUHFWRU\LQ\RXUF
GLUHFWRU\







0(7$,1)

FRP

0DLQ&ODVV0LQL$SS

KHDGILUVWMDYD

0$1,)(670)






0(7$,1)VWDQGVIRUPHWD
LQIRUPDWLRQ7KHMDUWRROFUHDWHV
WKH0(7$,1)GLUHFWRU\DV
ZHOODVWKH0$1,)(670)OH
,WDOVRWDNHVWKHFRQWHQWVRI
\RXUPDQLIHVWOHDQGSXWVLW
LQWRWKH0$1,)(670)OH6R
\RXUPDQLIHVWOHGRHVQWJRLQWR
WKH-$5EXWWKHFRQWHQWVRILW
DUHSXWLQWRWKHUHDOPDQLIHVW
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

0\3URMHFW

FODVVHV

0DLQ&ODVV0LQL$SS

VRXUFH

'IVENTHEPACKAGEDIRECTORYSTRUCTUREINTHIS
PICTURE lGUREOUTWHATYOUSHOULDTYPEATTHE
COMMAND LINETOCOMPILE RUN CREATEA*!2 AND
EXECUTEA*!2!SSUMEWEREUSINGTHESTANDARD
WHERETHEPACKAGEDIRECTORYSTRUCTURESTARTSJUST
BELOWSOURCEANDCLASSES)NOTHERWORDS THESOURCE
ANDCLASSESDIRECTORIESARENOTPARTOFTHEPACKAGE

PDQLIHVWW[W
MDYDUDQFK

MDYDUDQFK

&RPSLOH
FGVRXUFH
MDYDFBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

FRZV

FRZV

5XQ






)RRIFODVV

/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

)RRIMDYD

FGBBBBBBBBBBB
MDYDBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB

&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

Q:

:MDD=LHGAFLK

7HATHAPPENSIFYOUTRY
TORUNANEXECUTABLE*!2 AND
THEEND USERDOESNTHAVEJAVA
INSTALLED

 2UJDQL]H\RXUSURMHFWVRWKDW\RXUVRXUFHFRGHDQGFODVVILOHVDUHQRWLQ

A:

 2UJDQL]LQJ\RXUFODVVHVLQWRSDFNDJHVSUHYHQWVQDPLQJFROOLVLRQVZLWK

.OTHINGWILLRUN SINCE
WITHOUTA*6- *AVACODECANT
RUN4HEEND USERMUSTHAVE*AVA
INSTALLED

Q:

(OWCAN)GET*AVA
INSTALLEDONTHEEND USERS
MACHINE
)DEALLY YOUCANCREATEACUSTOM
INSTALLERANDDISTRIBUTEITALONG
WITHYOURAPPLICATION3EVERAL
COMPANIESOFFERINSTALLERPRO
GRAMSRANGINGFROMSIMPLETO
EXTREMELYPOWERFUL!NINSTALLER
PROGRAMCOULD FOREXAMPLE DE
TECTWHETHERORNOTTHEEND USER
HASANAPPROPROPRIATEVERSION
OF*AVAINSTALLED ANDIFNOT
INSTALLANDCONFIGURE*AVABEFORE
INSTALLINGYOURAPPLICATION
)NSTALLSHIELD )NSTALL!NYWHERE
AND$EPLOY$IRECTORALLOFFER*AVA
INSTALLERSOLUTIONS
!NOTHERCOOLTHINGABOUTSOME
OFTHEINSTALLERPROGRAMSISTHAT
YOUCANEVENMAKEADEPLOY
MENT#$ 2/-THATINCLUDES
INSTALLERSFORALLMAJOR*AVA
PLATFORMS SOONE#$TORULE
THEMALL)FTHEUSERSRUNNINGON
3OLARIS FOREXAMPLE THE3OLARIS
VERSIONOF*AVAISINSTALLED/N
7INDOWS THE7INDOWS VER
SION ETC)FYOUHAVETHEBUDGET
THISISBYFARTHEEASIESTWAYFOR
YOUREND USERSTOGETTHERIGHT
VERSIONOF*AVAINSTALLEDAND
CONFIGURED

WKHVDPHGLUHFWRU\

 $VWDQGDUGRUJDQL]DWLRQVWUXFWXUHLVWRFUHDWHDSURMHFWGLUHFWRU\DQGWKHQ
SXWDVRXUFHGLUHFWRU\DQGDFODVVHVGLUHFWRU\LQVLGHWKHSURMHFWGLUHFWRU\
RWKHUFODVVHVLI\RXSUHSHQG\RXUUHYHUVHGRPDLQQDPHRQWRWKHIURQWRI
DFODVVQDPH

 7RSXWDFODVVLQDSDFNDJHSXWDSDFNDJHVWDWHPHQWDWWKHWRSRIWKH
VRXUFHFRGHILOHEHIRUHDQ\LPSRUWVWDWHPHQWV
SDFNDJHFRPZLFNHGO\VPDUW

 7REHLQDSDFNDJHDFODVVPXVWEHLQDGLUHFWRU\VWUXFWXUHWKDWH[DFWO\
PDWFKHVWKHSDFNDJHVWUXFWXUH)RUDFODVVFRPZLFNHGO\VPDUW)RR
WKH)RRFODVVPXVWEHLQDGLUHFWRU\QDPHGZLFNHGO\VPDUWZKLFKLVLQD
GLUHFWRU\QDPHGFRP

 7RPDNH\RXUFRPSLOHGFODVVODQGLQWKHFRUUHFWSDFNDJHGLUHFWRU\
VWUXFWXUHXQGHUWKHFODVVHVGLUHFWRU\XVHWKHGFRPSLOHUIODJ
FGVRXUFH
MDYDFGFODVVHVFRPZLFNHGO\VPDUW)RRMDYD

 7RUXQ\RXUFRGHFGWRWKHFODVVHVGLUHFWRU\DQGJLYHWKHIXOO\TXDOLILHG
QDPHRI\RXUFODVV
FGFODVVHV
MDYDFRPZLFNHGO\VPDUW)RR

 <RXFDQEXQGOH\RXUFODVVHVLQWR-$5 -DYD$5FKLYH ILOHV-$5LVEDVHG


RQWKHSN]LSIRUPDW

 <RXFDQPDNHDQH[HFXWDEOH-$5ILOHE\SXWWLQJDPDQLIHVWLQWRWKH-$5
WKDWVWDWHVZKLFKFODVVKDVWKHPDLQ PHWKRG7RFUHDWHDPDQLIHVWILOH
PDNHDWH[WILOHZLWKDQHQWU\OLNHWKHIROORZLQJ IRUH[DPSOH 
0DLQ&ODVVFRPZLFNHGO\VPDUW)RR

 %HVXUH\RXKLWWKHUHWXUQNH\DIWHUW\SLQJWKH0DLQ&ODVVOLQHRU\RXU
PDQLIHVWILOHPD\QRWZRUN

 7RFUHDWHD-$5ILOHW\SH
MDUFYIPPDQLIHVWW[W0\-DUMDUFRP

 7KHHQWLUHSDFNDJHGLUHFWRU\VWUXFWXUH DQGRQO\WKHGLUHFWRULHVPDWFKLQJ
WKHSDFNDJH PXVWEHLPPHGLDWHO\LQVLGHWKH-$5ILOH

 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.

ZRXOGQWLWEHGUHDP\

([HFXWDEOH-$5OHV
DUHQLFHEXWZRXOGQWLWEHGUHDP\
LIWKHUHZHUHDZD\WRPDNHDULFKVWDQG
DORQHFOLHQW*8,WKDWFRXOGEHGLVWULEXWHG
RYHUWKH:HE"6RWKDW\RXZRXOGQWKDYHWR
SUHVVDQGGLVWULEXWHDOOWKRVH&'520V$QG
ZRXOGQWLWEHMXVWZRQGHUIXOLIWKHSURJUDP
FRXOGDXWRPDWLFDOO\XSGDWHLWVHOIUHSODFLQJ
MXVWWKHSLHFHVWKDWFKDQJHG"7KHFOLHQWV
ZRXOGDOZD\VEHXSWRGDWHDQG\RXGQHYHU
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

([HFXWDEOH
-DU

+773
+773

:HE6WDUW
:HE6WDUW

)LOH(GLW9LHZ

50,

50,DSS

+773
6HUYOHWV

/RFDO &RPELQDWLRQ5HPRWH

2I^I?MJ;\IZ\
7ITH*AVA7EB3TART*73 YOURAPPLICATIONISLAUNCHEDFORTHE
lRSTTIMEFROMA7EBBROWSERGETIT7EB3TART BUTITRUNSASA
STAND ALONEAPPLICATIONWELL ALMOST WITHOUTTHECONSTRAINTSOFTHE
BROWSER!NDONCEITSDOWNLOADEDTOTHEEND USERSMACHINEWHICH
HAPPENSTHElRSTTIMETHEUSERACCESSESTHEBROWSERLINKTHATSTARTS
THEDOWNLOAD ITSTAYSTHERE
*AVA7EB3TARTIS AMONGOTHERTHINGS ASMALL*AVAPROGRAMTHATLIVES
ONTHECLIENTMACHINEANDWORKSMUCHLIKEABROWSERPLUG INTHE
WAY SAY !DOBE!CROBAT2EADEROPENSWHENYOURBROWSERGETSAPDF
lLE 4HIS*AVAPROGRAMISCALLEDTHE*AVA7EB3TART@HELPERAPP
ANDITSKEYPURPOSEISTOMANAGETHEDOWNLOADING UPDATING AND
LAUNCHINGEXECUTING OFYOUR*73APPS
7HEN*73DOWNLOADSYOURAPPLICATIONANEXECUTABLE*!2 IT
INVOKESTHEMAIN METHODFORYOURAPP!FTERTHAT THEEND USERCAN
LAUNCHYOURAPPLICATIONDIRECTORYFROMTHE*73HELPERAPPWITHOUT
HAVINGTOGOBACKTHROUGHTHE7EBPAGELINK

(QGXVHUVODXQFKD-DYD
:HE6WDUWDSSE\FOLFNLQJ
RQDOLQNLQD:HE
SDJH%XWRQFHWKHDSS
GRZQORDGVLWUXQVRXWVLGH
WKHEURZVHUMXVWOLNHDQ\
RWKHUVWDQGDORQH-DYD
DSSOLFDWLRQ,QIDFWD
-DYD:HE6WDUWDSSLVMXVW
DQH[HFXWDEOH-$5WKDWV
GLVWULEXWHGRYHUWKH:HE

"UTTHATSNOTTHEBESTPART4HEAMAZINGTHINGABOUT*73ISITS
ABILITYTODETECTWHENEVENASMALLPARTOFAPPLICATIONSAY ASINGLE
CLASSlLE HASCHANGEDONTHESERVER ANDWITHOUTANYEND USER
INTERVENTIONDOWNLOADANDINTEGRATETHEUPDATEDCODE
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 DMQOSOH 

FOLFN

JLYHPH0\$SSMQOS

7KH:HESDJHOLQN
DKUHI 0\$SSMQOS!&OLFND!


/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS 0\$SSMDU

7KH:HEVHUYHU +773 JHWVWKH


UHTXHVWDQGVHQGVEDFNDMQOSOH
WKLVLV127WKH-$5 

:HE6HUYHU

FOLFN

7KHMQOSOHLVDQ;0/GRFXPHQWWKDW
VWDWHVWKHQDPHRIWKHDSSOLFDWLRQV
H[HFXWDEOH-$5OH

/RUSHU

/RUSHU

LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS

0\$SSMQOS 0\$SSMDU

-DYD:HE6WDUW


-DYD:HE6WDUW DVPDOOKHOSHUDSS
RQWKHFOLHQW LVVWDUWHGXSE\WKH
EURZVHU7KH-:6KHOSHUDSSUHDGV
WKHMQOSOHDQGDVNVWKHVHUYHUIRU
WKH0\$SSMDUOH

JLYHPH0\$SSMDU
-:6

LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS 0\$SSMDU

7KH:HEVHUYHUVHUYHVXSWKH
UHTXHVWHGMDUOH

:HE6HUYHU

-:6

/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMDU

-DYD:HE6WDUWJHWVWKH-$5DQG
VWDUWVWKHDSSOLFDWLRQE\FDOOLQJWKH
VSHFLHGPDLQ  PHWKRG MXVWOLNHDQ
H[HFXWDEOH-$5 

:HE6HUYHU
/RUSHU

0\$SSMQOS 0\$SSMDU

+HOOR:HE6WDUW WKHDSSLQWKH-$5


:HE6HUYHU

+HOOR

1H[WWLPHWKHXVHUZDQWVWRUXQWKLVDSSKHFDQ
RSHQWKH-DYD:HE6WDUWDSSOLFDWLRQDQGIURP
WKHUHODXQFK\RXUDSSZLWKRXWHYHQEHLQJRQOLQH

/RUSHU
LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS 0\$SSMDU

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
8-,DOCUMENTTHATHASSEVERALDIFFERENTTHINGSYOUCANPUTIN
BUTASAMINIMUM ITSHOULDLOOKLIKETHIS

URRW
LI\WKHVHUYHU
F
H
S
V

X
R
WKH

KHUH\
WDJLVWZDUWVWXIILVWRQVRZHUHXVLQHEJ

H
V
D
E
H
G
V
Z
7KHFRHUH\RXUZHEVRQRXUORFDOKR
"[POYHUVLRQ HQFRGLQJ XWI"!
)RU OG
RIZK WHVWLQJWKLV DGGUHVV VHUYHUWKLVZRX
:HUH FDOORRSEDFN WHUQHWZHE FRP
WKHOR DSSVRQRXULQLFNHGO\VPDUW
MQOSVSHF 
VWDUW KWWSZZZZ
VD\
FRGHEDVH KWWSaNDWK\
WKH
WKHMQOSILOHUHODWLYHWR
7KLVLVWKHORFDWLRQRIVK
LV
KUHI 0\$SSMQOS!
OS
SMQ
$S
0\
RZVWKDW
FRGHEDVH7KLVH[DPSOHLUHFWR
U\RIWKHZHEVHUYHUQRW
WG
URR
KH
QW
OHL
DYDLODE
QHVWHGLQVRPHRWKHUGLUHFWRU\
LQIRUPDWLRQ!
WLWOH!NDWK\$SSWLWOH!
YHQGRU!:LFNHGO\6PDUWYHQGRU!
KRPHSDJHKUHI LQGH[KWPO!

DSSPLJKW
IWKHVHWDJVRU\RXUDUH
%HVXUHWRLQFOXGHDOORKH
XVHGE\
JV
WD
RQ
RUPDWL
QRWZRUNFRUUHFWO\7RVWLQI
HXVHU
WK
KHQ
JZ
\LQ
SOD
GLV
RU
O\I
WKH-:6KHOSHUDSSP YLRXVO\GRZQORDGHGDSSOLFDWLRQ
ZDQWVWRUHODXQFKDSUH

GHVFULSWLRQ!+HDG)LUVW:HE6WDUWGHPRGHVFULSWLRQ!
LFRQKUHI NDWK\VJLI!
RILQHDOORZHG!
LQIRUPDWLRQ!


UXQ\RXUSURJUDPZLWKRXW
OLQH
7KLVPHDQVWKHXVHUFDQ
RII
LV
VHU
HX
WK
,I
QHW
WHU
N
EHLQJFRQQHFWHGWRWKHLQ
ZRU
W
ZRQ
UH
DWX
LQJIH
LWPHDQVWKHDXWRPDWLFXSGDW

UHVRXUFHV!
MVHYHUVLRQ !
MDUKUHI 0\$SSMDU!
UHVRXUFHV!

YHUVLRQ
7KLVVD\VWKDW\RXUDSSQHHGV

RI-DYDRUJUHDWHU

7KHQDPH \
RXUH[HFXWDEOHRWKHU-$5RI
$5
I
LOH
HYHQVRXQGVDQGVDVZHOOWKDWKROGR<WKRXHUPLJKWKDYH
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

:ULWHDMQOSOH

LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

0\$SSMQOS

3ODFH\RXU-$5DQGMQOS
OHVRQ\RXU:HEVHUYHU

:HE6HUYHU
/RUSHU
LXUH
HXJXH

/RUSHU WDWYHUR
FRQVH
LXUH
HXJXHUR
HXJXH
WDWYHUR
FRQVH

URRKWPO
0\$SSMQOS 0\$SSMDU

$GGDQHZPLPHW\SHWR\RXU:HEVHUYHU
:HE6HUYHU

DSSOLFDWLRQ[MDYDMQOSOH
7KLVFDXVHVWKHVHUYHUWRVHQGWKHMQOSOHZLWKWKH
FRUUHFWKHDGHUVRWKDWZKHQWKHEURZVHUUHFHLYHV
WKHMQOSOHLWNQRZVZKDWLWLVDQGNQRZVWRVWDUW
WKH-:6KHOSHUDSS

FRQJXUH
PLPHW\SH

/RUSHU

LXUH
HXJXH
WDWYHUR
FRQVH
HXJXHUR

&UHDWHD:HESDJHZLWKDOLQN
WR\RXUMQOSOH
0\-:6$SSKWPO
+70/!
%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

7HATS
&IRST

1dQ^OU_Q

,OOKATTHESEQUENCEOFEVENTSBELOW AND
PLACETHEMINTHEORDERINWHICHTHEY
OCCURINA*73APPLICATION





WKH:HEVHUYHUVHQGV
D-$5
ILOHWRWKH-:6KHOSH
UDSS
UDSSUHTXHVWV
WKH-:6KHOSH
ILOH
WKH-$5
WKH:HEVHUYHUVHQGVD
WKH-:6KHOSHUDSSLQYRNHV
MQOS
ILOHWRWKHEURZVHU
WKH-$5VPDLQ PHWKRG

VWDUWVXS
WKH:HEEURZVHU
SS
UD
OSH
KH
WKH-:6

XVHUFOLFNVD:HESDJHOLQN

EURZVHUUHTXHVWVDMQOSILOH
IURPWKH:HEVHUYHU






WKHUH DUH QR

'XPE 4XHVWLRQV

Q:
A:

(OWIS*AVA7EB3TARTDIFFERENTFROMANAPPLET

VWDQGDORQHFOLHQWDSSOLFDWLRQIURPWKH:HE

!PPLETSCANTLIVEOUTSIDEOFA7EBBROWSER!NAPPLETIS
DOWNLOADEDFROMTHE7EBASPARTOFA7EBPAGERATHERTHAN
SIMPLYFROMA7EBPAGE)NOTHERWORDS TOTHEBROWSER THEAPPLET
ISJUSTLIKEA*0%'ORANYOTHERRESOURCE4HEBROWSERUSESEITHERA
*AVAPLUG INORTHEBROWSERSOWNBUILT IN*AVAFARLESSCOMMON
TODAY TORUNTHEAPPLET!PPLETSDONTHAVETHESAMELEVELOF
FUNCTIONALITYFORTHINGSSUCHASAUTOMATICUPDATING ANDTHEYMUST
ALWAYSBELAUNCHEDFROMTHEBROWSER7ITH*73APPLICATIONS ONCE
THEYREDOWNLOADEDFROMTHE7EB THEUSERDOESNTEVENHAVETO
BEUSINGABROWSERTORELAUNCHTHEAPPLICATIONLOCALLY)NSTEAD
THEUSERCANSTARTUPTHE*73HELPERAPP ANDUSEITTOLAUNCHTHE
ALREADY DOWNLOADEDAPPLICATIONAGAIN

Q:
A:

:MDD=LHGAFLK

 -DYD:HE6WDUWWHFKQRORJ\OHWV\RXGHSOR\D

7HATARETHESECURITYRESTRICTIONSOF*73

*73APPSHAVESEVERALLIMITATIONSINCLUDINGBEING
RESTRICTEDFROMREADINGANDWRITINGTOTHEUSERSHARDDRIVE"UT
*73HASITSOWN!0)WITHASPECIALOPENANDSAVEDIALOGBOXSO
THAT WITHTHEUSERSPERMISSION YOURAPPCANSAVEANDREADITS
OWNFILESINASPECIAL RESTRICTEDAREAOFTHEUSERSDRIVE

 -DYD:HE6WDUWLQFOXGHVDKHOSHUDSSWKDWPXVW
EHLQVWDOOHGRQWKHFOLHQW DORQJZLWK-DYD 

 $-DYD:HE6WDUW -:6 DSSKDVWZRSLHFHV


DQH[HFXWDEOH-$5DQGDMQOSILOH

 $MQOSILOHLVDVLPSOH;0/GRFXPHQWWKDW
GHVFULEHV\RXU-:6DSSOLFDWLRQ,WLQFOXGHV
WDJVIRUVSHFLI\LQJWKHQDPHDQGORFDWLRQRIWKH
-$5DQGWKHQDPHRIWKHFODVVZLWKWKHPDLQ 
PHWKRG

 :KHQDEURZVHUJHWVDMQOSILOHIURPWKHVHUYHU
EHFDXVHWKHXVHUFOLFNHGRQDOLQNWRWKHMQOS
ILOH WKHEURZVHUVWDUWVXSWKH-:6KHOSHUDSS

 7KH-:6KHOSHUDSSUHDGVWKHMQOSILOHDQG
UHTXHVWVWKHH[HFXWDEOH-$5IURPWKH:HE
VHUYHU

 :KHQWKH-:6JHWVWKH-$5LWLQYRNHVWKH
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

1dQ^OU_Q

7EEXPLOREDPACKAGING DEPLOYMENT AND*73


INTHISCHAPTER9OURJOBISTODECIDEWHETHER
EACHOFTHEFOLLOWINGSTATEMENTSISTRUEORFALSE

&=[^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

















Licensed by
Eduard Simons
104038













!NYTHINGINTHEBOOK
ISFAIRGAMEFORTHIS
ONE








































!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

!RRANGEWELL

.OTBEHAVIOR

*AVABRANCH

3OCKETSSUITE

%NCAPSULATEDRETURNER 'OODASNEW
3HIPTHISONE

0AIRSEVENT

3WINGSLANG

-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



WKH:HEVHUYHUVHQGVDMQOS
ILOHWRWKHEURZVHU



WKH:HEEURZVHUVWDUWVXS
WKH-:6KHOSHUDSS



UDSSUHTXHVWV
WKH-:6KHOSH
WKH-$5ILOH



WKH:HEVHUYHUVHQGV
D-$5
ILOHWRWKH-:6KHOSH
UDSS



WKH-:6KHOSHUDSSLQYRNHV
WKH-$5VPDLQ PHWKRG

%XERCISE
3OLUTIONS

7UXH
)DOVH
)DOVH
7UXH
)DOVH
)DOVH
7UXH
)DOVH
)DOVH
)DOVH
7UXH
7UXH
7UXH
7UXH
)DOVH
)DOVH
)DOVH

4HE*AVACOMPILERHASAmAG D THATLETSYOUDECIDEWHEREYOURCLASSlLESSHOULDGO
!*!2ISASTANDARDDIRECTORYWHEREYOURCLASSlLESSHOULDRESIDE
7HENCREATINGA*AVA!RCHIVEYOUMUSTCREATEAlLECALLEDJAR MF
4HESUPPORTINGlLEINA*AVA!RCHIVEDECLARESWHICHCLASSHASTHEMAIN METHOD
*!2lLESMUSTBEUNZIPPEDBEFORETHE*6-CANUSETHECLASSESINSIDE
!TTHECOMMANDLINE *AVA!RCHIVESAREINVOKEDUSINGTHE ARCHmAG
0ACKAGESTRUCTURESAREMEANINGFULLYREPRESENTEDUSINGHIERARCHIES
5SINGYOURCOMPANYSDOMAINNAMEISNOTRECOMMENDEDWHENNAMINGPACKAGES
$IFFERENTCLASSESWITHINASOURCElLECANBELONGTODIFFERENTPACKAGES
7HENCOMPILINGCLASSESINAPACKAGE THE PmAGISHIGHLYRECOMMENDED
7HENCOMPILINGCLASSESINAPACKAGE THEFULLNAMEMUSTMIRRORTHEDIRECTORYTREE
*UDICIOUSUSEOFTHE DmAGCANHELPTOASSURETHATTHEREARENOTYPOSINYOURTREE
%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

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
&RPSXWLQJ

(YHU\RQHVD\VORQJ
GLVWDQFHUHODWLRQVKLSVDUHKDUG
EXWZLWK50,LWVHDV\1R
PDWWHUKRZIDUDSDUWZHUHDOO\
DUH50,PDNHVLWVHHPOLNH
ZHUHWRJHWKHU

%HLQJUHPRWHGRHVQWKDYHWREHDEDGWKLQJ3URE 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

+773

([HFXWDEOH
-DU

:HE6WDUW

)LOH(GLW9LHZ
)LOH(GLW9LHZ

50,
50,

50,DSS
50,DSS

+773
6HUYOHWV

/RFDO &RPELQDWLRQ5HPRWH

RQHKHD

SWZRR

5M\PWLKITT[IZMIT_Ia[JM\ _MMV
\ _WWJRMK\[WV\PM[IUMPMIX
3OFARINTHISBOOK EVERYMETHODWEVEINVOKEDHASBEENON
ANOBJECTRUNNINGINTHESAMEVIRTUALMACHINEASTHECALLER
)NOTHERWORDS THECALLINGOBJECTANDTHECALLEETHEOBJECT
WEREINVOKINGTHEMETHODON LIVEONTHESAMEHEAP

EMHFWV

I
WXI
6
GR

%DU MHFW
RE

FODVV)RR^

YRLGJR ^
%DUE QHZ%DU 

)RR MHFW
RE

EGR6WXII 
`
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
)RRI QHZ)RR 
IJR 
`

,QPRVWDSSOLFDWLRQVZKHQRQHREMHFW
FDOOVDPHWKRGRQDQRWKHUERWKREMHFWV
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
W
OD
X
FDOF

Imagine two computers...


-90

WLQ\ZLPS\
VORZDWFDOFXOSDDWLQIXOO\
LRQV

-90

/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

6H


& OL
HQWREMHFW

UYLFHREMHF

&UHDWHFOLHQWDQGVHUYHUKHOSHUV7KH\OOKDQGOHDOO
WKHORZOHYHOQHWZRUNLQJDQG,2GHWDLOVVR\RXUFOLHQW
DQGVHUYLFHFDQSUHWHQGOLNHWKH\UHLQWKHVDPHKHDS

6HUYHUKHDS

&OLHQWKHDS


& OL
HQWREMHFW

& OL
HQWKHOSHU

6H

W

6HUYHUKHDS

&OLHQWKHDS

UYLFHKHOS

6H

W

UYLFHREMHF

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\PMPMTXMZ[
4HE@HELPERSARETHEOBJECTSTHATACTUALLYDOTHECOMMUNICATING
4HEYMAKEITPOSSIBLEFORTHECLIENTTOACTASTHOUGHITSCALLINGA
METHODONALOCALOBJECT)NFACT ITIS4HECLIENTCALLSAMETHODON
THECLIENTHELPER ASIFTHECLIENTHELPERWERETHEACTUALSERVICE4HECLIENT
HELPERISAPROXYFORTHE2EAL4HING
)NOTHERWORDS THECLIENTOBJECTTHINKSITSCALLINGAMETHODON
THEREMOTESERVICE BECAUSETHECLIENTHELPERISPRETENDINGTOBE
THESERVICEOBJECT0RETENDINGTOBETHETHINGWITHTHEMETHODTHECLIENT
WANTSTOCALL
"UTTHECLIENTHELPERISNTREALLYTHEREMOTESERVICE!LTHOUGHTHE
CLIENTHELPERACTSLIKEITBECAUSEITHASTHESAMEMETHODTHATTHE
SERVICEISADVERTISING THECLIENTHELPERDOESNTHAVEANYOFTHE
ACTUALMETHODLOGICTHECLIENTISEXPECTING)NSTEAD THECLIENT
HELPERCONTACTSTHESERVER TRANSFERSINFORMATIONABOUTTHEMETHOD
CALLEG NAMEOFTHEMETHOD ARGUMENTS ETC ANDWAITSFORA
RETURNFROMTHESERVER

<RXUFOLHQWREMHFWJHWVWR
DFWOLNHLWVPDNLQJUHPRWH
PHWKRGFDOOV%XWZKDW
LWVUHDOO\GRLQJLVFDOOLQJ
PHWKRGVRQDKHDSORFDO
SUR[\REMHFWWKDWKDQGOHV
DOOWKHORZOHYHOGHWDLOVRI
6RFNHWVDQGVWUHDPV

/NTHESERVERSIDE THESERVICEHELPERRECEIVESTHEREQUESTFROM
THECLIENTHELPERTHROUGHA3OCKETCONNECTION UNPACKSTHE
INFORMATIONABOUTTHECALL ANDTHENINVOKESTHEREALMETHODON
THEREALSERVICEOBJECT3OTOTHESERVICEOBJECT THECALLISLOCAL)TS
COMINGFROMTHESERVICEHELPER NOTAREMOTECLIENT
4HESERVICEHELPERGETSTHERETURNVALUEFROMTHESERVICE PACKSIT
UP ANDSHIPSITBACKOVERA3OCKETSOUTPUTSTREAM TOTHECLIENT
HELPER4HECLIENTHELPERUNPACKSTHEINFORMATIONANDRETURNSTHE
VALUETOTHECLIENTOBJECT


& OL
HQWREMHFW

& OL
HQWKHOSHU

6H

H
UYLFHKHOS

6H

W

LQNV
&OLHQWREMHFWRWKWKH
W
LWVWDONLQJ H,W
5HDO6HUYLF OLHQW
WKLQNVWKHFHWKLQJ
KHOSHULVWK XDOO\
WKDWFDQDFWZRUN
GRWKHUHDO

6HUYHUKHDS

&OLHQWKHDS

HQGV
&OLHQWKHOSHUUYSULFHW
XW
E
H
VH
WREHWKH R[\IRUWKH
LWVMXVWDSU
5HDO7KLQJ

UYLFHREMHF

6HUYLFHKHOSHUJHWVWKH
UHTXHVWIURPWKHFOLHQW
KHOSHUXQSDFNVLWDQG
FDOOVWKHPHWKRGRQWKH
5HDO6HUYLFH


REMHFW,6VWKH

H
LF
Y
U
H
6
7KH HDO6HUYLFH,W KRG
WKH5 ZLWKWKHPHW KH
REMHFW FWXDOO\GRHVW
WKDWD HWKRGZRUN
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
6HUYHUKHDS

&OLHQWKHDS
GR%LJ7KLQJ


& OL
HQWREMHFW

UYLFHKHOS

6H

W

6H

& OL
HQWKHOSHU

UYLFHREMHF

Licensed by
Eduard Simons
104038

&OLHQWKHOSHUSDFNDJHVXSLQIRUPDWLRQDERXWWKHFDOO
DUJXPHQWVPHWKRGQDPHHWF DQGVKLSVLWRYHUWKH
QHWZRUNWRWKHVHUYLFHKHOSHU
&OLHQWKHDS

FOLHQWZDQWVWRFDOODPHWKRG

6HUYHUKHDS

GR%LJ7KLQJ


& OL
HQWREMHFW

UYLFHKHOS

6H

W

6H

UYLFHREMHF

6HUYLFHKHOSHUXQSDFNVWKHLQIRUPDWLRQIURPWKHFOLHQWKHOSHU
QGVRXWZKLFKPHWKRGWRFDOO DQGRQZKLFKREMHFW DQG
LQYRNHVWKHUHDOPHWKRGRQWKHUHDOVHUYLFHREMHFW
FOLHQWZDQWVWRFDOODPHWKRG

GR%LJ7KLQJ

GR%LJ7KLQJ


FW

& OL
HQWREMH

& OL
HQWKHOSHU

6HUYHUKHDS

6H

H
UYLFHKHOS

6H

W

&OLHQWKHDS

&OL
HQWKHOSHU

UYLFHREMHF

WKH
5HPHPEHUWKLWKVHLV5($/
REMHFWZLWKF7KHJX\
PHWKRGORJL HUHDOZRUN
WKDWGRHVWK

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
OBJECTSFORYOU ANDITEVENKNOWSHOWTOMAKETHE
CLIENTHELPERLOOKLIKETHE2EAL3ERVICE)NOTHER
WORDS 2-)KNOWSHOWTOGIVETHECLIENTHELPER
OBJECTTHESAMEMETHODSYOUWANTTOCALLONTHE
REMOTESERVICE
0LUS 2-)PROVIDESALLTHERUNTIMEINFRASTRUCTURETO
MAKEITWORK INCLUDINGALOOKUPSERVICESOTHATTHE
CLIENTCANlNDANDGETTHECLIENTHELPERTHEPROXY
FORTHE2EAL3ERVICE 
7ITH2-) YOUDONTWRITEANYOFTHENETWORKING
OR)/CODEYOURSELF4HECLIENTGETSTOCALLREMOTE
METHODSIETHEONESTHE2EAL3ERVICEHAS JUST
LIKENORMALMETHODCALLSONOBJECTSRUNNINGINTHE
CLIENTSOWNLOCAL*6-
!LMOST
4HEREISONEDIFFERENCEBETWEEN2-)CALLSANDLOCAL
NORMAL METHODCALLS2EMEMBERTHATEVENTHOUGH
TOTHECLIENTITLOOKSLIKETHEMETHODCALLISLOCAL
THECLIENTHELPERSENDSTHEMETHODCALLACROSSTHE
NETWORK3OTHEREISNETWORKINGAND)/!NDWHAT
DOWEKNOWABOUTNETWORKINGAND)/METHODS
4HEYRERISKY

4HEYTHROWEXCEPTIONSALLOVERTHEPLACE
3O THECLIENTDOESHAVETOACKNOWLEDGETHERISK4HE
CLIENTHASTOACKNOWLEDGETHATWHENITCALLSAREMOTE
METHOD EVENTHOUGHTOTHECLIENTITSJUSTALOCALCALL
TOTHEPROXYHELPEROBJECT THECALLULTIMATELYINVOLVES
3OCKETSANDSTREAMS4HECLIENTSORIGINALCALLISLOCAL
BUTTHEPROXYTURNSITINTOAREMOTECALL!REMOTECALL
JUSTMEANSAMETHODTHATSINVOKEDONANOBJECTON
ANOTHER*6-(OWTHEINFORMATIONABOUTTHATCALL
GETSTRANSFERREDFROMONE*6-TOANOTHERDEPENDS
ONTHEPROTOCOLUSEDBYTHEHELPEROBJECTS
7ITH2-) YOUHAVEACHOICEOFPROTOCOLS*2-0OR
))/0*2-0IS2-)S@NATIVEPROTOCOL THEONEMADE
JUSTFOR*AVA TO *AVAREMOTECALLS))/0 ONTHEOTHER
HAND ISTHEPROTOCOLFOR#/2"!#OMMON/BJECT
2EQUEST"ROKER!RCHITECTURE ANDLETSYOUMAKE
REMOTECALLSONTHINGSWHICHARENTNECESSARILY*AVA
OBJECTS#/2"!ISUSUALLYMUCHMOREPAINFULTHAN
2-) BECAUSEIFYOUDONTHAVE*AVAONBOTHENDS
THERESANAWFULLOTOFTRANSLATIONANDCONVERSIONTHAT
HASTOHAPPEN
"UTTHANKFULLY ALLWECAREABOUTIS*AVA TO *AVA SO
WERESTICKINGWITHPLAINOLD REMARKABLYEASY2-)

,Q50,WKHFOLHQWKHOSHULVDVWXE
DQGWKHVHUYHUKHOSHULVDVNHOHWRQ
6HUYHUKHDS

&OLHQWKHDS


& OL
HQWREMHFW

6H

UYLFHKHOS

6H

W

& OL
HQWKHOSHU

50,6.(/(721

50,678%

UYLFHREMHF

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

6HUYHU

4HISISANOVERVIEWOFTHElVESTEPSFORMAKINGTHEREMOTE
SERVICETHATRUNSONTHESERVER $ONTWORRY EACHSTEPIS
EXPLAINEDINDETAILOVERTHENEXTFEWPAGES

6WHSRQH
0DNHD5HPRWH,QWHUIDFH

SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
5HPRWH^`

4HEREMOTEINTERFACEDElNESTHEMETHODS
THATACLIENTCANCALLREMOTELY)TSWHAT
0\5HPRWHMDYD
THECLIENTWILLUSEASTHEPOLYMORPHICCLASS
TYPEFORYOURSERVICE"OTHTHE3TUBA ND
ACTUALSERVICEWILLIMPLEMENTTHIS

WKH
HGHILQDHWV\RX
F
D
I
U
H
W
LQ
7KLV HPHWKRGVWK
UHPRW OLHQWVWRFDOO
ZDQWF

6WHSWZR
0DNHD5HPRWH,PSOHPHQWDWLRQ
4HISISTHECLASSTHATDOESTHE2EAL7ORK
)THASTHEREALIMPLEMENTATIONOFTHE
REMOTEMETHODSDElNEDINTHEREMOTE
INTERFACE)TSTHEOBJECTTHATTHECLIENT
WANTSTOCALLMETHODSON

SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
5HPRWH^`

0\5HPRWH,PSOMDYD

VSLWVRXWWZ QH
Z
FODVVHVIRUWR
KHOSHUREMHFWVKH

WKHDFWXDO
5XQQLQJUPLFDJDLQVW
ODVV
VHUYLFHLPSOHPHQWDWLRQF

6WHSWKUHH
*HQHUDWHWKHVWXEVDQGVNHOHWRQVXVLQJUPLF
4HESEARETHECLIENTANDSERVER@HELPERS
9OUDONTHAVETOCREATETHESECLASSESOREVER
LOOKATTHESOURCECODETHATGENERATESTHEM
)TSALLHANDLEDAUTOMATICALLYWHENYOU
RUNTHERMICTOOLTHATSHIPSWITHYOUR*AVA
DEVELOPMENTKIT

7KHFODVV
7KH5HDO6HUYLFHW
WGR
GV
ZLWKWKHPHWKR LPKD
PHQWV
SOH
,W
N
RU
WKHUHDOZ

FH
ID
WKHUHPRWHLQWHU







)LOH(GLW:LQGRZ+HOS(DW

UPLF0\5HPRWH,PSO

0\5HPRWH,PSOB6WXEFODVV






0\5HPRWH,PSOB6NHOFODVV

6WHSIRXU
6WDUWWKH50,UHJLVWU\ UPLUHJLVWU\
4HERMIREGISTRYISLIKETHEWHITEPAGESOFA
PHONEBOOK)TSWHERETHEUSERGOESTOGET
THEPROXYTHECLIENTSTUBHELPEROBJECT 

)LOH(GLW:LQGRZ+HOS'ULQN

UPLUHJLVWU\

D
UXQWKLVHLQWHUPLQDO
VHSDUDW

6WHSYH
6WDUWWKHUHPRWHVHUYLFH
9OUHAVETOGETTHESERVICEOBJECTUPANDRUNNING
9OURSERVICEIMPLEMENTATIONCLASSINSTANTIATESAN
INSTANCEOFTHESERVICEANDREGISTERSITWITHTHE2-)
REGISTRY2EGISTERINGITMAKESTHESERVICEAVAILABLEFOR
CLIENTS

)LOH(GLW:LQGRZ+HOS%H0HUU\

MDYD0\5HPRWH,PSO

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
INTERFACE

SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^

'HFODUHWKDWDOOPHWKRGVWKURZD5HPRWH([FHSWLRQ

KDVWR
<RXULQWHUIDFWHLWVIRU
DQQRXQFHWKDKRGFDOOV$Q
UHPRWHPHW QWLPSOHPHQW
LQWHUIDFHFDWLWFDQH[WHQG
DQ\WKLQJEX DFHV
RWKHULQWHUI

4HEREMOTEINTERFACEISTHEONETHECLIENTUSESASTHEPOLYMORPHICTYPE
FORTHESERVICE)NOTHERWORDS THECLIENTINVOKESMETHODSONSOMETHING
THATIMPLEMENTSTHEREMOTEINTERFACE4HATSOMETHINGISTHESTUB OF
COURSE ANDSINCETHESTUBISDOINGNETWORKINGAND)/ ALLKINDSOF"AD
4HINGSCANHAPPEN4HECLIENTHASTOACKNOWLEDGETHERISKSBYHANDLING
ORDECLARINGTHEREMOTEEXCEPTIONS)FTHEMETHODSINANINTERFACE
DECLAREEXCEPTIONS ANYCODECALLINGMETHODSONAREFERENCEOFTHATTYPE
THEINTERFACETYPE MUSTHANDLEORDECLARETHEEXCEPTIONS

LPSRUWMDYDUPL 

LVLQMDYDUPL
WKH5HPRWHLQWHUIDFH

SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^
SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ
`

%HVXUHDUJXPHQWVDQGUHWXUQYDOXHVDUHSULPLWLYHVRU6HULDOL]DEOH

(YHU\UHPRWHPHWKRGF LV
FRQVLGHUHGULVN\'HFODDOO

5HPRWH([FHSWLRQRQHYHUULQJ
\
PHWKRGIRUFHVWKHFOLH
WRSD\DWWHQWLRQDQG QW
DFNQRZOHGJHWKDWWKLQJV
PLJKWQRWZRUN

!RGUMENTSANDRETURNVALUESOFAREMOTEMETHODMUSTBEEITHERPRIMITIVE
OR3ERIALIZABLE4HINKABOUTIT!NYARGUMENTTOAREMOTEMETHODHASTO
BEPACKAGEDUPANDSHIPPEDACROSSTHENETWORK ANDTHATSDONETHROUGH
3ERIALIZATION3AMETHINGWITHRETURNVALUES)FYOUUSEPRIMITIVES 3TRINGS
ANDTHEMAJORITYOFTYPESINTHE!0)INCLUDINGARRAYSANDCOLLECTIONS
YOULLBElNE)FYOUAREPASSINGAROUNDYOUROWNTYPES JUSTBESURETHAT
YOUMAKEYOURCLASSESIMPLEMENT3ERIALIZABLE

SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ

7KLVUHWXUQYDOXHLVJRQQDEHVKLSSH
RYHUWKHZLUHIURPWKHVHUYHUEDFNG
WR
WKHFOLHQWVRLWPXVWEH6HULD
EOH
7KDWVKRZDUJVDQGUHWXUQYDOL]D
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


,PSOHPHQWWKH5HPRWHLQWHUIDFH

SXEOLFLQWHUIDFH
0\5HPRWHH[WHQGV
5HPRWH^`

0\5HPRWH,PSOMDYD

9OURSERVICEHASTOIMPLEMENTTHEREMOTEINTERFACETHEONE
WITHTHEMETHODSYOURCLIENTISGOINGTOCALL
SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^
SXEOLF6WULQJVD\+HOOR ^
UHWXUQ6HUYHUVD\V+H\ 7KHFRPSLOHUZLOOPDNHVXUHWKDW
\RXYHLPSOHPHQWHGDOOWKHPHWKR
`
IUR
PWKHLQWHUIDFH\RXLPSOHPHQWGV
PRUHFRGHLQFODVV
,Q
WKLVFDVHWKHUHVRQO\RQH
`


([WHQG8QLFDVW5HPRWH2EMHFW
)NORDERTOWORKASAREMOTESERVICEOBJECT YOUROBJECTNEEDSSOME
FUNCTIONALITYRELATEDTO@BEINGREMOTE4HESIMPLESTWAYISTOEXTEND
5NICAST2EMOTE/BJECTFROMTHEJAVARMISERVERPACKAGE ANDLETTHAT
CLASSYOURSUPERCLASS DOTHEWORKFORYOU
SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^

:ULWHDQRDUJFRQVWUXFWRUWKDWGHFODUHVD5HPRWH([FHSWLRQ
9OURNEWSUPERCLASS 5NICAST2EMOTE/BJECT HASONELITTLEPROBLEMITS
CONSTRUCTORTHROWSA2EMOTE%XCEPTION4HEONLYWAYTODEALWITHTHISIS
TODECLAREACONSTRUCTORFORYOURREMOTEIMPLEMENTATION JUSTSOTHATYOU
HAVEAPLACETODECLARETHE2EMOTE%XCEPTION2EMEMBER WHENACLASSIS
INSTANTIATED ITSSUPERCLASSCONSTRUCTORISALWAYSCALLED)FYOURSUPERCLASS
CONSTRUCTORTHROWSANEXCEPTION YOUHAVENOCHOICEBUTTODECLARETHAT
XWDQ\WKLQJLQ
YOURCONSTRUCTORALSOTHROWSANEXCEPTION
<RXGRQWKDYHWRS
HHGD
SXEOLF0\5HPRWH,PSO WKURZV5HPRWH([FHSWLRQ^`

XMXVWQ
WKHFRQVWUXFWRHUWK<R
\RXUVXSHUFODVV
DW
ZD\WRGHFODU URZVDQH[FHSWLRQ
FRQVWUXFWRUWK

5HJLVWHUWKHVHUYLFHZLWKWKH50,UHJLVWU\
.OWTHATYOUVEGOTAREMOTESERVICE YOUHAVETOMAKEITAVAILABLETO
REMOTECLIENTS9OUDOTHISBYINSTANTIATINGITANDPUTTINGITINTOTHE2-)
REGISTRYWHICHMUSTBERUNNINGORTHISLINEOFCODEFAILS 7HENYOU
REGISTERTHEIMPLEMENTATIONOBJECT THE2-)SYSTEMACTUALLYPUTSTHESTUBIN
THEREGISTRY SINCETHATSWHATTHECLIENTREALLYNEEDS2EGISTERYOURSERVICE
USINGTHESTATICREBIND METHODOFTHEJAVARMI.AMINGCLASS
FDQXVH
H WKDWFOLHQWVLVW
DP
Q
D
LFH
UY
VH
U
HULW
RX
\
*LYH
WU\^
WKHUHJLVWU\ D\RQGXUELHJQGWKH
WRORRNLWXSLQHJ
0\5HPRWHVHUYLFH QHZ0\5HPRWH,PSO 
U\:KHQ
ZLWKWKH50,U50LVW,VZDSVWKHVHUYLFHIRUWKH
1DPLQJUHELQG 5HPRWH+HOORVHUYLFH 
W
HF
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
QRWWKHUHPRWHLQWHUIDFH

FODVV

VSLWVRXWWZ QH
Z
FODVVHVIRUWR
KHOSHUREMHFWVKH

VD\
4HERMICTOOL THATCOMESWITHTHE*AVASOFTWARE
1RWLFHWKDW\RXGWRQKHW
DVVQDPH
FO
VW
-X
G
HQ
DEVELOPMENTKIT TAKESASERVICEIMPLEMENTATIONAND RQWKH
CREATESTWONEWCLASSES THESTUBANDTHESKELETON
)LOH(GLW:LQGRZ+HOS:KXIH
)TUSESANAMINGCONVENTIONTHATISTHENAMEOF
UPLF0\5HPRWH,PSO
YOURREMOTEIMPLEMENTATION WITHEITHER?3TUBOR
0\5HPRWH,PSOB6WXEFODVV
?3KELETONADDEDTOTHEEND4HEREAREOTHEROPTIONS
WITHRMIC INCLUDINGNOTGENERATINGSKELETONS
SEEINGWHATTHESOURCECODEFORTHESECLASSESLOOKED
LIKE ANDEVENUSING))/0ASTHEPROTOCOL4HEWAY
0\5HPRWH,PSOB6NHOFODVV
WEREDOINGITHEREISTHEWAYYOULLUSUALLYDOIT
4HECLASSESWILLLANDINTHECURRENTDIRECTORYIE
WHATEVERYOUDIDACDTO 2EMEMBER RMICMUST
BEABLETOSEEYOURIMPLEMENTATIONCLASS SOYOULL
PROBABLYRUNRMICFROMTHEDIRECTORYWHEREYOUR
REMOTEIMPLEMENTATIONIS7EREDELIBERATELYNOT
USINGPACKAGESHERE TOMAKEITSIMPLER)NTHE2EAL
7ORLD YOULLNEEDTOACCOUNTFORPACKAGEDIRECTORY
STRUCTURESANDFULLY QUALIlEDNAMES 












6WHSIRXUUXQUPLUHJLVWU\


%ULQJXSDWHUPLQDODQGVWDUWWKHUPLUHJLVWU\
"ESUREYOUSTARTITFROMAD
IRECTORYTHATHASACCESS
TOYOURCLASSES4HESIMPLESTWAYISTOSTARTITFROM
YOUR@CLASSESDIRECTORY

)LOH(GLW:LQGRZ+HOS+XK"

UPLUHJLVWU\

6WHSYHVWDUWWKHVHUYLFH


%ULQJXSDQRWKHUWHUPLQDODQGVWDUW\RXUVHUYLFH
4HISMIGHTBEFROMAMAIN METHODINYOURREMOTE
IMPLEMENTATIONCLASS ORFROMASEPARATELAUNCHERCLASS
)NTHISSIMPLEEXAMPLE WEPUTTHESTARTERCODEINTHE
IMPLEMENTATIONCLASS INAMAINMETHODTHATINSTANTIATES
THEOBJECTANDREGISTERSITWITH2-)REGISTRY

)LOH(GLW:LQGRZ+HOS+XK"

MDYD0\5HPRWH,PSO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

QG5HPRWH
5HPRWH([FHSWLRQDYD
UPLSDFNDJH
MD
LQ
LQWHUIDFHDUH
LPSRUWMDYDUPL 
<RXULQWHUIDFH0867H[WHQG
SXEOLFLQWHUIDFH0\5HPRWHH[WHQGV5HPRWH^
MDYDUPL5HPRWH
$OORI\RXUUHPRWHPHWKRGVPXVW
SXEOLF6WULQJVD\+HOOR WKURZV5HPRWH([FHSWLRQ
GHFODUHD5HPRWH([FHSWLRQ
`

7KH5HPRWHVHUYLFH WKHLPSOHPHQWDWLRQ 

LPSRUWMDYDUPL 
LPSRUWMDYDUPLVHUYHU 


WLVLQWKH
F
MH
E
2
H
W
R
P
WKH
8QLFDVWL5VHHUYHUSDFNDJH
HPRWH2EMHFWLV
5
VW
FD
QL
P
8
J
U
LQ
FW
D
MH
Y
QG
MD
H[WH
HDUHPRWHRE
HDVLHVWZD\WRPDN

SXEOLFFODVV0\5HPRWH,PSOH[WHQGV8QLFDVW5HPRWH2EMHFWLPSOHPHQWV0\5HPRWH^

SXEOLF6WULQJVD\+HOOR ^
UHWXUQ6HUYHUVD\V+H\
`

<RXKDYHWRLPSOHPHQWDOOWKH
LQWHUIDFHPHWKRGVRIFRXUVH%XW
QRWLFHWKDW\RXGR127KDYHWR
GHFODUHWKH5HPRWH([FHSWLRQ

\RXUVXSHUFODVVFRQVWUXFWRU IRUDQH[FHSWLRQVR
8QLFDVW5HPRWH2EMHFW GHFODUHV
UEHFDXVHLWPHDQV
<28PXVWZULWHDFRQVWUXFWRQJU
LVN\FRGH LWV
FDOOL
ULV
WKDW\RXUFRQVWUXFWR
U
XFWR
QVWU
VXSHUFR

SXEOLF0\5HPRWH,PSO WKURZV5HPRWH([FHSWLRQ^`

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WU\^
0\5HPRWHVHUYLFH QHZ0\5HPRWH,PSO 
1DPLQJUHELQG 5HPRWH+HOORVHUYLFH 
`FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
`
`

\RX0867LPSOHP
HQW\RXU
UHPRWHLQWHUI
DFH

0DNHWKHUHPRW EMHF
WWKHQELQGLWWRWKH
UPLUHJLVWU\XVLQJHR

W
KH
VW
QDPH\RXUHJLVWHULWXQ DWLF1DPLQJUHELQG 7KH
GH
U
LV
WKHQDPHF
QHHGWRORRNLWXSLQWKH
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
THESTUBTHATGOESWITHTHATNAMEv

7KLVPXVWEH
WKDWWKHVHUYLWFHKHQDPH
UHJLVWHUHGXQGHUZDV

ORRNXS LVDVWDWLFPHWKRGRI
WKH1DPLQJFODVV

0\5HPRWHVHUYLFH  0\5HPRWH 1DPLQJORRNXS UPL5HPRWH+HOOR 

<RXKDYHWRFDVWLWWRWKH
LQWHUIDFHVLQFHWKHORRNXS
PHWKRGUHWXUQVW\SH2EMHFW

7KHFOLHQWDOZD\VXVHVWKH
UHPRWHLPSOHPHQWDWLRQDVWKH
W\SHRIWKHVHUYLFH,QID
FW
WKHFOLHQWQHYHUQHHGVWRNQ
WKHDFWXDOFODVVQDPHRI\RXRZ
U
UHPRWHVHUYLFH

\RXUKRVWQDPHRU,3
DGGUHVVJRHVKHUH

6HUYHU

&OLHQW


FW

& OL
HQWREMH

6 WX E

6 NH O
VWX
HWRQ
EU
HW
XU
QH
G

6H

W


HOOR 
VD\+

UYLFHREMHF

 OR
RNX
S 

50,UHJLVWU\ RQVHUYHU
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
LPSRUWMDYDUPL 

7KH1DPLQJFODV
UHPLUHJLVWU\ORRNV IRUGRLQJWKH
MDYDUPLSDFNDJH XS LVLQWKH

SXEOLFFODVV0\5HPRWH&OLHQW^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ0\5HPRWH&OLHQW JR 
`
SXEOLFYRLGJR ^

\SH
JLVWU\DVVWW
H
U
H
K
W
I
WR
FD
,WFRPHVVRRXGRQWIRUJHWWKH

W
F
2EMH

WU\^
0\5HPRWHVHUYLFH  0\5HPRWH 1DPLQJORRNXS UPL5HPRWH+HOOR 

\RXQHHGWKH,3
GWR
RUKRVWQDPH DGGUHVV DQGWKHQDPHWXKHVHVHUYLFH
ELQGUHELQG
,WORRNVMXVWOLNHDUHJX
ODU
R
OGPHWKRG
FDOO ([FHSWLW VWD
FNQRZOHGJHWKH
5HPRWH([FHSWLRQPX

6WULQJV VHUYLFHVD\+HOOR 
6\VWHPRXWSULQWOQ V 
`FDWFK ([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.

50,FODVVILOHV

*M[]ZMMIKPUIKPQVMPI[\PMKTI[[
NQTM[Q\VMML[
4HETOPTHREETHINGSPROGRAMMERSDOWRONGWITH2-)ARE
 &ORGETTOSTARTRMIREGISTRYBEFORESTARTINGREMOTESERVICE
WHENYOUREGISTERTHESERVICEUSING.AMINGREBIND THE
RMIREGISTRYMUSTBERUNNING
 &ORGETTOMAKEARGUMENTSANDRETURNTYPESSERIALIZABLE
YOUWONTKNOWUNTILRUNTIMETHISISNOTSOMETHINGTHE
COMPILERWILLDETECT
 &ORGETTOGIVETHESTUBCLASSTOTHECLIENT

6 NH O
HWRQ
6 WX E


& OL
HQWREMHFW

'RQWIRUJHWWKHFOLHQW
XVHVWKHLQWHUIDFHWRFDOO
PHWKRGVRQWKHVWXE7KH
FOLHQW-90QHHGVWKHVWXE
FODVVEXWWKHFOLHQWQHYHU
UHIHUVWRWKHVWXEFODVV
LQFRGH7KHFOLHQWDOZD\V
XVHVWKHUHPRWHLQWHUIDFH
DVWKRXJKWKHUHPRWH
LQWHUIDFH:(5(WKH
DFWXDOUHPRWHREMHFW

UYLFHREMHF

6 WX E







&OLHQWFODVV

6H

W

6HUYHU

&OLHQW







0\5HPRWH,PSOB6WXEFODVV






0\5HPRWHFODVV

IDFH

RWHLQWHU
7KHUHP







0\5HPRWH,PSOFODVV






0\5HPRWH,PSOB6NHOFODVV







0\5HPRWH,PSOB6WXEFODVV






0\5HPRWHFODVV

6HUYHUQHHGVERWKWKH6WXEDQG6NHOHWRQ
FODVVHVDVZHOODVWKHVHUYLFHDQGWKH
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

7HATS
&IRST



,OOKATTHESEQUENCEOFEVENTSBELOW AND
PLACETHEMINTHEORDERINWHICHTHEY
OCCURINA*AVA2-)APPLICATION




7KHFOLHQWJHWVWKHV
WXEIURP
WKH50,UHJLVWU\
G
KR
HW
P
KH
VW
7KHVWXEVHQG
FDOOWRWKHVHUYHU
NHVDPHWKRG
7KHFOLHQWLQYR
RQWKHVWXE
7KHFOLHQWGRHVDORRNX
7KHUHPRWHVHUYLFHLVUHJLV
SRQ
WKH50,5HJLVWU\
WHUHGZLWKWKH50,UHJLVWU\



Licensed by
Eduard Simons
104038

7KH50,UHJLVWU\LVVWDUWHG

7KHUHPRWHVHUYLFH UHPRWH
LPSOHPHQWDWLRQ LVLQVWDQWLDWHG







:MDD=LHGAFLK

 $QREMHFWRQRQHKHDSFDQQRWJHWDQRUPDO-DYD

UHIHUHQFHWRDQREMHFWRQDGLIIHUHQWKHDS ZKLFKPHDQV
UXQQLQJRQDGLIIHUHQW-90

 -DYD5HPRWH0HWKRG,QYRFDWLRQ 50, PDNHVLWVHHPOLNH


\RXUHFDOOLQJDPHWKRGRQDUHPRWHREMHFW LHDQREMHFW
LQDGLIIHUHQW-90 EXW\RXDUHQW

 :KHQDFOLHQWFDOOVDPHWKRGRQDUHPRWHREMHFWWKH
FOLHQWLVUHDOO\FDOOLQJDPHWKRGRQDSUR[\RIWKHUHPRWH
REMHFW7KHSUR[\LVFDOOHGDVWXE

 $VWXELVDFOLHQWKHOSHUREMHFWWKDWWDNHVFDUHRIWKHORZ

 <RXUUHPRWHVHUYLFHVKRXOGH[WHQG8QLFDVW5HPRWH2EMHFW
7HFKQLFDOO\WKHUHDUHRWKHUZD\VWRFUHDWHDUHPRWHRE
MHFWEXWH[WHQGLQJ8QLFDVW5HPRWH2EMHFWLVWKHVLPSOHVW 

 <RXUUHPRWHVHUYLFHFODVVPXVWKDYHDFRQVWUXFWRU
DQGWKHFRQVWUXFWRUPXVWGHFODUHD5HPRWH([FHSWLRQ
EHFDXVHWKHVXSHUFODVVFRQVWUXFWRUGHFODUHVRQH 

 <RXUUHPRWHVHUYLFHPXVWEHLQVWDQWLDWHGDQGWKHREMHFW
UHJLVWHUHGZLWKWKH50,UHJLVWU\

 7RUHJLVWHUDUHPRWHVHUYLFHXVHWKHVWDWLF
1DPLQJUHELQG 6HUYLFH1DPHVHUYLFH,QVWDQFH 

OHYHOQHWZRUNLQJGHWDLOV VRFNHWVVWUHDPVVHULDOL]DWLRQ
HWF E\SDFNDJLQJDQGVHQGLQJPHWKRGFDOOVWRWKH
VHUYHU

 7KH50,UHJLVWU\PXVWEHUXQQLQJRQWKHVDPHPDFKLQH

 7REXLOGDUHPRWHVHUYLFH LQRWKHUZRUGVDQREMHFWWKDW

 7KHFOLHQWORRNVXS\RXUUHPRWHVHUYLFHXVLQJWKHVWDWLF

DUHPRWHFOLHQWFDQXOWLPDWHO\FDOOPHWKRGVRQ \RXPXVW
VWDUWZLWKDUHPRWHLQWHUIDFH

 $UHPRWHLQWHUIDFHPXVWH[WHQGWKHMDYDUPL5HPRWH
LQWHUIDFHDQGDOOPHWKRGVPXVWGHFODUH
5HPRWH([FHSWLRQ

DVWKHUHPRWHVHUYLFHEHIRUH\RXWU\WRUHJLVWHUDUHPRWH
REMHFWZLWKWKH50,UHJLVWU\
1DPLQJORRNXS UPL0\+RVW1DPH6HUYLFH1DPH 

 $OPRVWHYHU\WKLQJUHODWHGWR50,FDQWKURZD
5HPRWH([FHSWLRQ FKHFNHGE\WKHFRPSLOHU 7KLV
LQFOXGHVUHJLVWHULQJRUORRNLQJXSDVHUYLFHLQWKHUHLJVWU\
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
QHZGHFLVLRQVXSSRUW
V\VWHP

,KHDUG\RXUH[
ZLIHVWLOOXVHV
SODLQVRFNHWV
,XVHLW
IRUVHULRXV%WR%
HFRPPHUFHEDFN
HQGVUXQQLQJRQ-((
WHFKQRORJ\

:HYH JRWDQ
(-%EDVHGKRWHO
UHVHUYDWLRQV\VWHP
$QG(-%XVHV50,
,MXVWFDQWLPDJLQH
OLIHZLWKRXWRXU-LQL
HQDEOHGKRPHQHWZRUN
DQGDSSOLFDQFHV

0H WRR+RZ
GLGDQ\RQHJHW
E\",MXVWORYH50,
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
)LOH(GLW9LHZ

+773

([HFXWDEOH
-DU

:HE6WDUW

)LOH(GLW9LHZ

50,

50,DSS

UHPRWHGHSOR\PHQWZLWK50,

+773
+773
6HUYOHWV
6HUYOHWV
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


&OLHQWOOVRXWDUHJLVWUDWLRQIRUPDQGFOLFNVVXEPLW
7KH+773VHUYHU LHZHEVHUYHU JHWVWKHUHTXHVWVHHVWKDW
LWVIRUDVHUYOHWDQGVHQGVWKHUHTXHVWWRWKHVHUYOHW
:HE%URZVHU
FOLHQW

:HE6HUYHU
FOLHQWUHTXHVWV5HJLVWHU6HUYOHW






;h[l
I^ml
.DWK\
6LHUUD

0\6HUYOHWFODVV

6HUYOHW -DYDFRGH UXQVDGGVGDWDWRWKHGDWDEDVH


FRPSRVHVDZHESDJH ZLWKFXVWRPLQIR DQGVHQGVLWEDFNWR
WKHFOLHQWZKHUHLWGLVSOD\VLQWKHEURZVHU

:HE%URZVHU
FOLHQW

:HE6HUYHU
FOLHQWUHTXHVWV5HJLVWHU6HUYOHW






MaZgdl
DZmar
Lb^kkZ

0\6HUYOHWFODVV
KHUHVDFRQUPDWLRQSDJH

+70/!
%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


)LQGRXWZKHUH\RXUVHUYOHWVQHHGWREHSODFHG
&ORTHESEEXAMPLES WELLASSUMETHATYOUALREADYHAVEAWEBSERVER
UPANDRUNNING ANDTHATITSALREADYCONlGUREDTOSUPPORTSERVLETS
4HEMOSTIMPORTANTTHINGISTOlNDOUTEXACTLYWHEREYOURSERVLET
CLASSlLESHAVETOBEPLACEDINORDERFORYOURSERVERTO@SEETHEM)F
YOUHAVEAWEBSITEHOSTEDBYAN)30 THEHOSTINGSERVICECANTELLYOU
WHERETOPUTYOURSERVLETS JUSTASTHEYLLTELLYOUWHERETOPLACEYOUR
#')SCRIPTS

:HE6HUYHU

6HUYOHWV

0\6HUYOHW$FODVV

*HWWKHVHUYOHWVMDUDQGDGGLWWR\RXUFODVVSDWK
3ERVLETSARENTPARTOFTHESTANDARD*AVALIBRARIESYOUNEED
THESERVLETSCLASSESPACKAGEDINTOTHESERVLETSJARlLE9OUCAN
DOWNLOADTHESERVLETSCLASSESFROMJAVASUNCOM ORYOUCANGET
THEMFROMYOUR*AVA ENABLEDWEBSERVERLIKE!PACHE4OMCAT AT
THEAPACHEORGSITE 7ITHOUTTHESECLASSES YOUWONTBEABLETO
COMPILEYOURSERVLETS







VHUYOHWVMDU

:ULWHDVHUYOHWFODVVE\H[WHQGLQJ+WWS6HUYOHW
!SERVLETISJUSTA*AVACLASSTHATEXTENDS(TTP3ERVLETFROMTHE
JAVAXSERVLETHTTPPACKAGE 4HEREAREOTHERTYPESOFSERVLETSYOU
CANMAKE BUTMOSTOFTHETIMEWECAREONLYABOUT(TTP3ERVLET







0\6HUYOHW$FODVV

SXEOLFFODVV0\6HUYOHW$H[WHQGV+WWS6HUYOHW^`

+70/!
%2'<!
-DYD
UXOHV
%2'<!
+70/!

:ULWHDQ+70/SDJHWKDWLQYRNHV\RXUVHUYOHW
7HENTHEUSERCLICKSALINKTHATREFERENCESYOURSERVLET THEWEB
SERVERWILLlNDTHESERVLETANDINVOKETHEAPPROPRIATEMETHOD
DEPENDINGONTHE(440COMMAND'%4 0/34 ETC

0\3DJHKWPO

DKUHI VHUYOHWV0\6HUYOHW$!7KLVLVWKHPRVWDPD]LQJVHUYOHWD!

:HE6HUYHU


0DNH\RXUVHUYOHWDQG+70/SDJHDYDLODEOHWR\RXUVHUYHU
4HISISCOMPLETELYDEPENDENTONYOURWEBSERVERANDMORESPECIl
CALLY ONWHICHVERSIONOF*AVA3ERVLETSTHATYOUREUSING 9OUR)30
MAYSIMPLYTELLYOUTODROPITINTOAh3ERVLETSvDIRECTORYONYOUR
WEBSITE"UTIFYOUREUSING SAY THELATESTVERSIONOF4OMCAT YOULL
HAVEALOTMOREWORKTODOTOGETTHESERVLETANDWEBPAGE INTO
THERIGHTLOCATION7EJUSTHAPPENTOHAVEABOOKONTHISTOO

6HUYOHWV
+70/!
%2'<!
-DYD
UXOHV
%2'<!
+70/!







0\6HUYOHW$FODVV

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\
LPSRUWMDYDLR 
LPSRUWMDYD[VHUYOHW 
LPSRUWMDYD[VHUYOHWKWWS 

HWSDFNDJHVD
RIWKHVHUYORI
R
Z
W
-DY
UW
SR
LP
R
HQHHGW FNDJHVDUH127SDUW WVKHHSDUDWHO\
%HVLGHVLRZ
P
SD
KH
R
Z
W
G
W
RD
KHVH
WRGRZQO
5HPHPEHUW
HV\RXKDYH
VWDQGDUGOLEUDUL

SXEOLFFODVV0\6HUYOHW$H[WHQGV+WWS6HUYOHW^


WIRUVLPSOH
2YHUULGHWKHGR*H
+773*(7PHVVDJHV

0RVWQRUPDOVHUYOHWVZLOOH[WHQG
+WWS6HUYOHWWKHQRYHUULGHRQHRU
PRUHPHWKRGV
RXWKHFOLHQWV
PHWKRGKDQGLQJ\
KLV
VW
DOO
F
HU
UY
HVSRQVH
VH
E
D
ZH
QG
7KH
DWDRXWRILW D U
UHTXHVW \RXFDQXOJOXHWVHGWRVHQGEDFNDUHVSRQVH DSDJH 
REMHFWWKDW\R


SXEOLFYRLGGR*HW +WWS6HUYOHW5HTXHVWUHTXHVW+WWS6HUYOHW5HVSRQVHUHVSRQVH
WKURZV6HUYOHW([FHSWLRQ,2([FHSWLRQ^



UHVSRQVHVHW&RQWHQW7\SH WH[WKWPO 

3ULQW:ULWHURXW

7KLVWHOOVWKHVHUYHU DQGEURZVHU ZKDWNLQGRI


WKLQJLVFRPLQJEDFNIURPWKHVHUYHUD
VDUHXVOWRI
WKLVVHUYOHWUXQQLQJ
R
XVDQRXWSXWVWHUUHDPW
HV
JLY
W
HF
EM
R
VH
RQ
VS
UH
7KH
FNRXWWRWKHVHUY
UHVSRQVHJHW:ULWHU 
ZULWHLQIRUPDWLRQED

6WULQJPHVVDJH ,I\RXUHUHDGLQJWKLVLWZRUNHG
RXWSULQWOQ +70/!%2'<! 

RXWSULQWOQ +!PHVVDJH+! 

RXWSULQWOQ %2'<!+70/! 

RXWFORVH 
`
`

JH7KHSDJH
LVDQ+70/SDHU
:KDWZHZULWH
EDFNWR
UY
VH
H
WK
URXJK
SDJH
JHWVGHOLYHUHGWK
+
Q\RWKHU 70/
D
NH
OL
VW
MX
U
VH
RZ
LVWHG
EU
H
H[
WK
LVDSDJHWKDWQHQYHRUKWPOILOH
HYHQWKRXJKWKLV
HV
UZRUGVWKHU
XQWLOQRZ,QRWKH
KLVVWXIILQLW
W
WK
ZL
H
VRPHZKHU

RNVOLNH

:KDWWKHZHESDJHOR

0<54XIOM_Q\PITQVS\W\PQ[[MZ ^TM\

FOLFNWKHOLQN
WRWULJJHUWKH
VHUYOHW

7KLVDQDPD]LQJVHUYOHW

+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

 6HUYOHWVDUH-DYDFODVVHVWKDWUXQHQWLUHO\RQ
DQGRUZLWKLQ DQ+773 ZHE VHUYHU

 6HUYOHWVDUHXVHIXOIRUUXQQLQJFRGHRQWKH
VHUYHUDVDUHVXOWRIFOLHQWLQWHUDFWLRQZLWKD
ZHESDJH)RUH[DPSOHLIDFOLHQWVXEPLWV
LQIRUPDWLRQLQDZHESDJHIRUPWKHVHUYOHWFDQ
SURFHVVWKHLQIRUPDWLRQDGGLWWRDGDWDEDVH
DQGVHQGEDFNDFXVWRPL]HGFRQILUPDWLRQ
UHVSRQVHSDJH

 7RFRPSLOHDVHUYOHW\RXQHHGWKHVHUYOHW
SDFNDJHVZKLFKDUHLQWKHVHUYOHWVMDUILOH7KH
VHUYOHWFODVVHVDUHQRWSDUWRIWKH-DYDVWDQGDUG
OLEUDULHVVR\RXQHHGWRGRZQORDGWKHVHUYOHWV
MDUIURPMDYDVXQFRPRUJHWWKHPIURPDVHUYOHW
FDSDEOHZHEVHUYHU 1RWHWKH6HUYOHWOLEUDU\
LVLQFOXGHGZLWKWKH-DYD(QWHUSULVH(GLWLRQ
-((

 7RUXQDVHUYOHW\RXPXVWKDYHDZHEVHUYHU
FDSDEOHRIUXQQLQJVHUYOHWVVXFKDVWKH7RPFDW
VHUYHUIURPDSDFKHRUJ

 <RXUVHUYOHWPXVWEHSODFHGLQDORFDWLRQWKDWV
VSHFLILFWR\RXUSDUWLFXODUZHEVHUYHUVR\RXOO
QHHGWRILQGWKDWRXWEHIRUH\RXWU\WRUXQ\RXU
VHUYOHWV,I\RXKDYHDZHEVLWHKRVWHGE\DQ,63
WKDWVXSSRUWVVHUYOHWVWKH,63ZLOOWHOO\RXZKLFK
GLUHFWRU\WRSODFH\RXUVHUYOHWVLQ

 $W\SLFDOVHUYOHWH[WHQGV+WWS6HUYOHWDQG
RYHUULGHVRQHRUPRUHVHUYOHWPHWKRGVVXFKDV
GR*HW RUGR3RVW 

 7KHZHEVHUYHUVWDUWVWKHVHUYOHWDQGFDOOVWKH
DSSURSULDWHPHWKRG GR*HW HWF EDVHGRQWKH
FOLHQWVUHTXHVW

 7KHVHUYOHWFDQVHQGEDFNDUHVSRQVHE\JHWWLQJ
D3ULQW:ULWHURXWSXWVWUHDPIURPWKHUHVSRQVH
SDUDPHWHURIWKHGR*HW PHWKRG

 7KHVHUYOHWZULWHVRXWDQ+70/SDJHFRPSOHWH
ZLWKWDJV 

Q:
A:

7HATSA*30 ANDHOWDOESITRELATETOSERVLETS

*30STANDSFOR*AVA3ERVER0AGES)NTHEEND THEWEBSERVER
TURNSA*30INTOASERVLET BUTTHEDIFFERENCEBETWEENASERVLETAND
A*30ISWHAT9/5THEDEVELOPER ACTUALLYCREATE7ITHASERVLET
YOUWRITEA*AVACLASSTHATCONTAINS(4-,INTHEOUTPUTSTATEMENTS
IFYOURESENDINGBACKAN(4-,PAGETOTHECLIENT "UTWITHA
*30 ITSTHEOPPOSITEYOUWRITEAN(4-,PAGETHATCONTAINS*AVA
CODE
4HISGIVESYOUTHEABILITYTOHAVEDYNAMICWEBPAGESWHEREYOU
WRITETHEPAGEASANORMAL(4-,PAGE EXCEPTYOUEMBED*AVA
CODEANDOTHERTAGSTHAThTRIGGERv*AVACODEATRUNTIME THAT
GETSPROCESSEDATRUNTIME)NOTHERWORDS PARTOFTHEPAGEIS
CUSTOMIZEDATRUNTIMEWHENTHE*AVACODERUNS
4HEMAINBENEFITOF*30OVERREGULARSERVLETSISTHATITSJUSTALOT
EASIERTOWRITETHE(4-,PARTOFASERVLETASA*30PAGETHANTO
WRITE(4-,INTHETORTUROUSPRINTOUTSTATEMENTSINTHESERVLETS
RESPONSE)MAGINEAREASONABLYCOMPLEX(4-,PAGE ANDNOW
IMAGINEFORMATTINGITWITHINPRINTLNSTATEMENTS9IKES
"UTFORMANYAPPLICATIONS ITISNTNECESSARYTOUSE*30SBECAUSE
THESERVLETDOESNTNEEDTOSENDADYNAMICRESPONSE ORTHE
(4-,ISSIMPLEENOUGHNOTTOBESUCHABIGPAIN!ND THEREARE
STILLMANYWEBSERVERSOUTTHERETHATSUPPORTSERVLETSBUTDONOT
SUPPORT*30S SOYOURESTUCK
!NOTHERBENEFITOF*30SISTHATYOUCANSEPARATETHEWORKBY
HAVINGTHE*AVADEVELOPERSWRITETHESERVLETSANDTHEWEBPAGE
DEVELOPERSWRITETHE*30S4HATSTHEPROMISEDBENEFIT ANYWAY
)NREALITY THERESSTILLA*AVALEARNINGCURVEANDATAGLEARNING
CURVE FORANYONEWRITINGA*30 SOTOTHINKTHATAN(4-,WEBPAGE
DESIGNERCANBANGOUT*30SISNOTREALISTIC7ELL NOTWITHOUTTOOLS
"UTTHATSTHEGOODNEWSAUTHORINGTOOLSARESTARTINGTOAPPEAR
THATHELPWEBPAGEDESIGNERSCREATE*30SWITHOUTWRITINGTHE
CODEFROMSCRATCH

Q:

)STHISALLYOUREGONNASAYABOUTSERVLETS!FTERSUCHA
HUGETHINGON2-)

A:

9ES2-)ISPARTOFTHE*AVALANGUAGE ANDALLTHECLASSESFOR
2-)AREINTHESTANDARDLIBRARIES3ERVLETSAND*30SARENOTPARTOF
THE*AVALANGUAGETHEYRECONSIDEREDSTANDARDEXTENSIONS9OU
CANRUN2-)ONANYMODERN*6- BUT3ERVLETSAND*30SREQUIREA
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\
.OWTHATWETOLDYOUTHATWEWONT
SAYANYMOREABOUTSERVLETS WECANT
RESISTSERVLETIZINGYES WECANVERBIFY
IT THE0HRASE / -ATICFROMCHAPTER
!SERVLETISSTILLJUST*AVA!ND*AVACODE
CANCALL*AVACODEFROMOTHERCLASSES
3OASERVLETISFREETOCALLAMETHODON
THE0HRASE / -ATIC!LLYOUHAVETODO
ISDROPTHE0HRASE / -ATICCLASSINTO
THESAMEDIRECTORYASYOURSERVLET AND
YOUREINBUSINESS4HE0HRASE /
-ATICCODEISONTHENEXTPAGE 

7U\P\
QHZZHEHQDEOHG
SKUDVHRPDWLFDQG\RXOO
EHDVOLFNWDONHUMXVWOLNH
WKHERVVRUWKRVHJX\VLQ
PDUNHWLQJ

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 

DOOPHWKRGVRQ

F
RXWSULQWOQ +70/!+($'!7,7/(! 
6HH"<RXUVHUYOHWWFKLVDQFDVHZHUHFDOOLQJ
,Q
VV

RXWSULQWOQ 3KUDVH2PDWLF 
FOD
U
H
DQRWKH
3KUDVH PHWKRG[WRSIDJWKH

RXWSULQWOQ 7,7/(!+($'!%2'<! 
WKHVWDWLFPDNHFOD
QH
H
WK
Q
R

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
PROCESSINGHEREDONTTYPEINTHEHYPHENS*USTKEEPONTYPINGANDLETYOUR
CODEEDITORDOTHEWRAPPING!NDWHATEVERYOUDO DONTHITTHERETURNKEYIN
THEMIDDLEOFA3TRINGIESOMETHINGBETWEENDOUBLEQUOTES 

SXEOLFFODVV3KUDVH20DWLF^
SXEOLFVWDWLF6WULQJPDNH3KUDVH ^
PDNHWKUHHVHWVRIZRUGVWRFKRRVHIURP
6WULQJ>@ZRUG/LVW2QH ^PXOWL7LHUIRRW%WR%ZLQZLQIURQW
HQGZHEEDVHGSHUYDVLYHVPDUWVL[VLJPDFULWLFDOSDWKG\QDPLF`
6WULQJ>@ZRUG/LVW7ZR ^HPSRZHUHGVWLFN\YDOXHGDGGHGRULHQWHGFHQWULF
GLVWULEXWHGFOXVWHUHGEUDQGHGRXWVLGHWKHER[SRVLWLRQHGQHWZRUNHGIR
FXVHGOHYHUDJHGDOLJQHGWDUJHWHGVKDUHGFRRSHUDWLYHDFFHOHUDWHG`
6WULQJ>@ZRUG/LVW7KUHH ^SURFHVVWLSSLQJSRLQWVROXWLRQDUFKLWHFWXUH
FRUHFRPSHWHQF\VWUDWHJ\PLQGVKDUHSRUWDOVSDFHYLVLRQSDUDGLJPPLV
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 :KDWZHQHHGLVDSKUDVH 
`
`

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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-)
ALONE&ORALARGE DEADLYSERIOUS ENTERPRISEAPPLICATION YOU
NEEDSOMETHINGMORE9OUNEEDSOMETHINGTHATCANHANDLE
TRANSACTIONS HEAVYCONCURRENCYISSUESLIKEAGAZILLION
PEOPLEAREHITTINGYOURSERVERATONCETOBUYTHOSEORGANIC
DOGKIBBLES SECURITYNOTJUSTANYONESHOULDHITYOUR
PAYROLLDATABASE ANDDATAMANAGEMENT&ORTHAT YOUNEED
ANENTERPRISEAPPLICATIONSERVER

$Q(-%VHUYHUDGGVDEXQFK
RIVHUYLFHVWKDW\RXGRQWJHW
ZLWKVWUDLJKW50,7KLQJV
OLNHWUDQVDFWLRQVVHFXULW\
FRQFXUUHQF\GDWDEDVH
PDQDJHPHQWDQGQHWZRUNLQJ

)N*AVA THATMEANSA*AVA%NTERPRISE%DITION*%% SERVER


!*%%SERVERINCLUDESBOTHAWEBSERVERANDAN%NTERPRISE
*AVA"EANS%*" SERVER SOTHATYOUCANDEPLOYANAPPLICATION
THATINCLUDESBOTHSERVLETSAND%*"S,IKESERVLETS %*"IS
WAYBEYONDTHESCOPEOFTHISBOOK ANDTHERESNOWAYTO
SHOWhJUSTALITTLEv%*"EXAMPLEWITHCODE BUTWEWILLTAKE
AQUICKLOOKATHOWITWORKS&ORAMUCHMOREDETAILED
TREATMENTOF%*" WECANRECOMMENDTHELIVELY(EAD&IRST
%*"CERTIlCATIONSTUDYGUIDE

$Q(-%VHUYHUVWHSVLQWRWKH
PLGGOHRIDQ50,FDOODQG
OD\HUVLQDOORIWKHVHUYLFHV

HFWHGIURP
7KHEHDQREMHFWFHLVVVSU2RWQO\WKHVHUYHU
GLUHFWFOLHQWDF WRWKHEHDQ7KLV
FDQDFWXDOO\WDONRWKLQJVOLNHVD\
OHWVWKHVHUYHUGWGRHVQWKDYH
+HUHVZKHUHWKH(-%VHUYHU
:KRD7KLVFOLHQ UDQFHWRFDOOWKLV
LQYROYHG7KH(-%REMHFWL JHWV
HFXULW\FOHD
QW
HUF
J\RXSD\
WKHFDOOVWRWKHEHDQ WKHE HSWV WKHV

XW
E
1*
RG$OPRVWHYHUK\WDSKLQ
+,
WK
HDQ
PH
<7
KR
$1
OGV
H

E
ULJKW
QV
XOG
SH
FR
WK
HU
W
HQ
HDO
HU
FOL
EX
UY
LV
VLQ
HVVORJLF DQGOD\HUVLQ
7K
(-%VH
OHW
DQ
UY
LQ
VH
U
D
IR
LV
QW
OLH
Q
F
VL
-%
HS
(
DOO
VW
WKHVHUYLFHVSURYLGHGE\W
W\SLFDOO\DQ
(VHUYHU
+(5(ZKHUHWKHVHUYHU
KH(-%
(
PH
VD
KH
VHU
W
YHU
LQ
 V
LQJ
HFX
ULW\WUDQVDFWLRQVHWF
UXQQ
(-%VHUYHU
&OLHQW
50,6.(/(721
50,678%


& OL
HQWREMHFW

W
(-%
REMHF

HQ

DQ

& OL
HQWKHOSHU

H
UYLFHKHOS

6H

WHUS HEH
UL V

'%

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
%XCEPTTHATYOURENOTREALLYINTERESTEDINTHELOOKUPSERVICEITSELFYOUREINTERESTEDIN
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
Eduard Simons
104038

-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

$QDOUHDG\UXQQLQJ-LQLVHUYLFHRQ
DQRWKHUPDFKLQHDVNVWREHUHJLVWHUHG
ZLWKWKLVQHZO\DQQRXQFHGORRNXS
VHUYLFH,WUHJLVWHUVE\FDSDELOLW\
UDWKHUWKDQE\QDPH,QRWKHUZRUGV
LWUHJLVWHUVDVWKHVHUYLFHLQWHUIDFHLW
LPSOHPHQWV,WVHQGVDVHULDOL]HGREMHFW
WREHSODFHGLQWKHORRNXSVHUYLFH

DQRWKHUPDFKLQHRQWKHQHWZRUN

5HJLVWHU
PHDVVRPHWKLQJ
WKDWLPSOHPHQWV
6FLHQWLF&DOFXODWRU+HUHVD
VHULDOL]HGREMHFWWKDWUHSUHVHQWV
P\VHUYLFH6HQGLWWR
DQ\ERG\ZKRDVNV

-LQL6HUYLFH

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
6FLHQWLF&DOFXODWRULQWHUIDFH,WKDV
QRLGHDZKHUH RULI WKDWWKLQJH[LVWV
VRLWDVNVWKHORRNXSVHUYLFH
-LQL6HUYLFH

DQRWKHUPDFKLQH
RQWKHQHWZRUN

'R\RX
KDYHDQ\WKLQJ
WKDWLPSOHPHQWV
6FLHQWLF&DOFXODWRU"

-LQL/RRNXS6HUYLFH

-DYDDSS

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN

 7KHORRNXSVHUYLFHUHVSRQGVVLQFHLWGRHVKDYHVRPHWKLQJ
UHJLVWHUHGDVD6FLHQWLF&DOFXODWRULQWHUIDFH

<HV,GR
KDYHVRPHWKLQJ
,PVHQGLQJ\RXWKH
VHULDOL]HGREMHFW
QRZ

-LQL6HUYLFH

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

-DYDDSS

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
VHUYLFHUHVSRQGVZLWKDOHDVH7KHQHZO\UHJLVWHUHGVHUYLFHPXVWNHHS
UHQHZLQJWKHOHDVHRUWKHORRNXSVHUYLFHDVVXPHVWKHVHUYLFHKDVJRQH
RILQH7KHORRNXSVHUYLFHZDQWVDOZD\VWRSUHVHQWDQDFFXUDWHSLFWXUH
WRWKHUHVWRIWKHQHWZRUNDERXWZKLFKVHUYLFHVDUHDYDLODEOH
,OO
UHJLVWHU\RX
DQGKHUHV\RXU
OHDVH,I\RXGRQW
UHQHZLW,OOGURS\RX

-LQL6HUYLFH

DQRWKHUPDFKLQH
RQWKHQHWZRUN

OHDVH

-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN

 7KHVHUYLFHJRHVRIIOLQH VRPHERG\VKXWVLWGRZQ VRLWIDLOVWR


UHQHZLWVOHDVHZLWKWKHORRNXSVHUYLFH7KHORRNXSVHUYLFHGURSVLW
+PPPP,
GLGQWJHWDOHDVH
UHQHZDOIURPWKDWRQHLW
PXVWEHGRZQ,OOGURSLW,ILW
FRPHVEDFNLWZLOODXWRPDWLFDOO\
UHGLVFRYHUPH

DQRWKHUPDFKLQHRQWKHQHWZRUN
-LQL/RRNXS6HUYLFH

PDFKLQHRQWKHQHWZRUN
VRPHZKHUH

DQRWKHUPDFKLQHRQWKHQHWZRUN
\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
RXVHOHFWKHDUH 
:KHQ\VK
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
6HUYHU

U

6HUYLFH%URZVHU
FOLHQW
3O
6 HDVH
HUY JLY
LFH HP
6H
UYH HWKH
WK
U
LQJ
QD
PH
G

UYH

&OLHQWVWDUWVXSDQG
GRHVDORRNXSRQWKH
50,UHJLVWU\IRU
WKHVHUYLFHFDOOHG
6HUYLFH6HUYHUDQG
JHWVEDFNWKHVWXE

6H

6HUYLF

50,UHJLVWU\ RQVHUYHU
2
.
KH
UH
VW
KH
VW
XE

6HUYLFH
6HUYHU

6WXE

&OLHQWFDOOVJHW6HUYLFH/LVW RQWKHVWXE7KH6HUYLFH6HUYHU
UHWXUQVDQDUUD\RIVHUYLFHV
6HUYHU
JHW6HUYLFH/LVW

6H

UYH

U

6HUYLFH%URZVHU
FOLHQW

6HUYLF

2.KHUHVDQDUUD\RIVHUYLFHV

&OLHQWGLVSOD\VWKHOLVWRIVHUYLFHVLQD*8,

6HUYHU

6H

UYH

U

6HUYLFH%URZVHU
FOLHQW

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
JHW6HUYLFH VHOHFWHG6YF

6H

UYH

U

6HUYLFH%URZVHU
FOLHQW

6HUYLF

2.KHUHVWKHVHUYLFH

&OLHQWFDOOVWKHJHW*XL3DQHO RQWKHVHULDOL]HGVHUYLFHREMHFWLW
MXVWJRWIURPWKHUHPRWHVHUYLFH7KH*8,IRUWKDWVHUYLFHLV
GLVSOD\HGLQVLGHWKHEURZVHUDQGWKHXVHUFDQLQWHUDFWZLWKLW
ORFDOO\$WWKLVSRLQWZHGRQWQHHGWKHUHPRWHVHUYLFHXQOHVVXQWLO
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
$UHJXODUROG50,UHPRWHLQWHUIDFHIRUWKHUHPRWHVHUYLFH WKH
UHPRWHVHUYLFHKDVWKHPHWKRGIRUJHWWLQJWKHVHUYLFHOLVWDQG
UHWXUQLQJDVHOHFWHGVHUYLFH 

FODVV6HUYLFH6HUYHU,PSOLPSOHPHQWV6HUYLFH6HUYHU
7KHDFWXDO50,UHPRWHVHUYLFH H[WHQGV8QLFDVW5HPRWH2EMHFW 
,WVMRELVWRLQVWDQWLDWHDQGVWRUHDOOWKHVHUYLFHV WKHWKLQJV
WKDWZLOOEHVKLSSHGWRWKHFOLHQW DQGUHJLVWHUWKHVHUYHULWVHOI
6HUYLFH6HUYHU,PSO ZLWKWKH50,UHJLVWU\

FODVV6HUYLFH%URZVHU
7KHFOLHQW,WEXLOGVDYHU\VLPSOH*8,GRHVDORRNXSLQWKH50,
UHJLVWU\WRJHWWKH6HUYLFH6HUYHUVWXEWKHQFDOOVDUHPRWHPHWKRGRQ
LWWRJHWWKHOLVWRIVHUYLFHVWRGLVSOD\LQWKH*8,OLVW

FODVV'LFH6HUYLFHLPSOHPHQWV6HUYLFH
*RWGLFH",IQRWEXW\RXQHHGVRPHXVHWKLVVHUYLFHWRUROODQ\ZKHUH
IURPWRYLUWXDOGLFHIRU\RX

JHW6HUYLFHV/LVW
JHW6HUYLFH

6HUYLFH6HUYHU,PSO
JHW6HUYLFHV/LVW
JHW6HUYLFH

6HUYLFH%URZVHU
PDLQ

LQWHUIDFH6HUYLFH
7KLVLVWKHNH\WRHYHU\WKLQJ7KLVYHU\VLPSOHLQWHUIDFHKDVMXVWRQH
PHWKRGJHW*XL3DQHO (YHU\VHUYLFHWKDWJHWVVKLSSHGRYHUWRWKH
FOLHQWPXVWLPSOHPHQWWKLVLQWHUIDFH7KLVLVZKDWPDNHVWKHZKROHWKLQJ
81,9(56$/%\LPSOHPHQWLQJWKLVLQWHUIDFHDVHUYLFHFDQFRPHRYHU
HYHQWKRXJKWKHFOLHQWKDVQRLGHDZKDWWKHDFWXDOFODVV RUFODVVHV 
DUHWKDWPDNHXSWKDWVHUYLFH$OOWKHFOLHQWNQRZVLVWKDWZKDWHYHU
FRPHVRYHULWLPSOHPHQWVWKH6HUYLFHLQWHUIDFHVRLW0867KDYHD
JHW*XL3DQHO PHWKRG
7KHFOLHQWJHWVDVHULDOL]HGREMHFWDVDUHVXOWRIFDOOLQJ
JHW6HUYLFH VHOHFWHG6YF RQWKH6HUYLFH6HUYHUVWXEDQGDOOWKHFOLHQW
VD\VWRWKDWREMHFWLV,GRQWNQRZZKRRUZKDW\RXDUHEXW,'2
NQRZWKDW\RXLPSOHPHQWWKH6HUYLFHLQWHUIDFHVR,NQRZ,FDQFDOO
JHW*XL3DQHO RQ\RX$QGVLQFHJHW*XL3DQHO UHWXUQVD-3DQHO,OOMXVW
VODSLWLQWRWKHEURZVHU*8,DQGVWDUWLQWHUDFWLQJZLWKLW

6HUYLFH6HUYHU

6HUYLFH
JHW*XL3DQHO

'LFH6HUYLFH
JHW*XL3DQHO

FODVV0LQL0XVLF6HUYLFHLPSOHPHQWV6HUYLFH
5HPHPEHUWKDWIDEXORXVOLWWOHPXVLFYLGHRSURJUDPIURPWKHUVW
*8,&RGH.LWFKHQ":HYHWXUQHGLWLQWRDVHUYLFHDQG\RXFDQSOD\LW
'D\2I7KH:HHN6HUYLFH
RYHUDQGRYHUDQGRYHUXQWLO\RXUURRPPDWHVQDOO\OHDYH
JHW*XL3DQHO

0LQL0XVLF6HUYLFH
JHW*XL3DQHO

FODVV'D\2I7KH:HHN6HUYLFHLPSOHPHQWV6HUYLFH
:HUH\RXERUQRQD)ULGD\"7\SHLQ\RXUELUWKGD\DQGQGRXW

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
LPSRUWMDYDUPL 
SXEOLFLQWHUIDFH6HUYLFH6HUYHUH[WHQGV5HPRWH^
2EMHFW>@JHW6HUYLFH/LVW WKURZV5HPRWH([FHSWLRQ

IDFH
HPRWHLQWVHWUKH
U
,
0
5
O
D
P
$QRU WKHWZRPHWKRG
GHILQHV HUYLFHZLOOKDYH
UHPRWHV

6HUYLFHJHW6HUYLFH 2EMHFWVHUYLFH.H\ WKURZV5HPRWH([FHSWLRQ


`

LQWHUIDFH6HUYLFH ZKDWWKH*8,VHUYLFHVLPSOHPHQW
LPSRUWMDYD[VZLQJ 
LPSRUWMDYDLR 
SXEOLFLQWHUIDFH6HUYLFHH[WHQGV6HULDOL]DEOH^
SXEOLF-3DQHOJHW*XL3DQHO 
`

$SODLQROG LHQRQ
UHPRWH LQWHUIDF
GHILQHVWKHRQ
HW
H
P
HW
VHUYLFHPXVWKDYH KRGWKDWDQ\XQLYHUVDOKD W
JH
LQWHUIDFHH[ V W*XL3DQHO 7KH
6HULDOL]DEOHVRWK
FODVVLPSOHPHQWHWLQG
DWD
DXWRPDWLFDOO\EHQJ6HWKH6HUYLFHLQWHUIDFHZLQ\OO
ULDOL]DEOH
7KDWVDPXVWEHF
VKLSSHGRYHUWKHZDXVHWKHVHUYLFHVJHW
LUHIURPWKHVHUYH
UHVXOWRIWKH
UDV
FO
LH
QW
WKHUHPRWH6HUYLF FDOOLQJJHW6HUYLFH RQD
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 
LPSRUWMDYDUPLVHUYHU 

0,
$QRUPDO5

LRQ

LPSOHPHQWDW

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

F
HG
OO
FD
V
L
RU
6
XVLF YLFHHW
WUXFW
:KHQWKHVHFRUYQVLFHV 'LFH6HUYLFH0LQL0
XQLYHUVDO

SULYDWHYRLGVHW8S6HUYLFHV ^
VHUYLFH/LVW QHZ+DVK0DS 
VHUYLFH/LVWSXW 'LFH5ROOLQJ6HUYLFHQHZ'LFH6HUYLFH 
VHUYLFH/LVWSXW 'D\RIWKH:HHN6HUYLFHQHZ'D\2I7KH:HHN6HUYLFH 
VHUYLFH/LVWSXW 9LVXDO0XVLF6HUYLFHQHZ0LQL0XVLF6HUYLFH 
OVHUYLFH
`
HV WKHDFWXD

UYLF
RWKH
0DNHWKHVH
XWWKHPLQW
S

QG
D
V
FW
DP
MH
RE
ULQJQ H IRU
W
6
D
K
LW
Z

+DVK0DS 
WKHNH\



SXEOLF2EMHFW>@JHW6HUYLFH/LVW ^
6\VWHPRXWSULQWOQ LQUHPRWH 
UHWXUQVHUYLFH/LVWNH\6HW WR$UUD\ 

`

&OLHQWFDOOVWKLVLQ
GLVSOD\LQWKHEURZVRHUUGHUWRJHWDOLVWRIVHUYLFHVWR
VHQGDQDUUD\RIW\SH VRWKHXVHUFDQVHOHFWRQH :H
LQVLGH E\PDNLQJDQD 2EMHFW HYHQWKRXJKLWKDV6WULQJV
LQWKH+DVK0DS:HZRUUD\RIMXVWWKH.(<6WKDWDUH
XQOHVVWKHFOLHQWDVNVI QWVHQGDQDFWXDO6HUYLFHREMHFW
RULWE\FDOOLQJJHW6HU
YLFH 


SXEOLF6HUYLFHJHW6HUYLFH 2EMHFWVHUYLFH.H\ WKURZV5HPRWH([FHSWLRQ^
6HUYLFHWKH6HUYLFH  6HUYLFH VHUYLFH/LVWJHW VHUYLFH.H\ 
VDVHUYLFHKH
UHWXUQWKH6HUYLFH
XVHUVHOHFWRW
H
K
W
HU
W
I
IURPW
D
RG
J
`
KLVPHWK
V WKDWLW

&OLHQWFDOOVGWLVSOD\HGOLVWRIVHUYLFHKHNH\ WKHVDPHNH\
IURPWKHERYH 7KLVFRGHXVHVW JHWWKHFRUUHVSRQGLQJ
PHWKRGD HQWWRWKHFOLHQW WR
RULJLQDOO\VWRIWKH+DVK0DS
VHUYLFHRX


SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
WU\^
1DPLQJUHELQG 6HUYLFH6HUYHUQHZ6HUYLFH6HUYHU,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

0,UHJLVWU\/ORR
5
H
WK
V

RH
W
G
LV
G
2EMHFW>@VHUYLFHV JHW6HUYLFHV/LVW 
WKLVPHWKRWXEDQGFDOOVJHW6HUYLFH SDJH 
W
V
H[
KH
Q
W

JHWV
KRGLVRQWKH

7KHDFWXDOPHW

RWKH
VHUYLFH/LVW QHZ-&RPER%R[ VHUYLFHV 

W
DUUD\RI2EMHFWV[
NQRZVKRZWR
$GGWKHVHUYLFHVOL DVWQ 
%R
ER
RP
-&
H
7K
KH
W
HDUUD\
[
%R
ER
-&RP
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 

+HUHVZKHUHZHDGGWKH
PDLQ3DQHOUHPRYH$OO 
WXDOVHUYLFHWRWKH*8,D
XVH
UKDVVHOHFWHGRQH 7DF
PDLQ3DQHODGG VYFJHW*XL3DQHO 
KLV
P
HWKRGLVFDOOHGE\WKHHYIWHUWKH
OLVWHQHURQWKH-&RPER%
HQW
PDLQ3DQHOYDOLGDWH 
UHPRWHVHUYHU WKHVWXEIR[ :HFDOOJHW6HUYLFH RQWKH
PDLQ3DQHOUHSDLQW 
RU
6HUYLFH6HUYHU DQGSDVV
6WULQJWKDWZDVGLVS
`FDWFK ([FHSWLRQH[ ^
LWWKH
6WULQJZHRULJLQDOO\JROD\WHGLQWKHOLVW ZKLFKLVWKH6$0(
H[SULQW6WDFN7UDFH 
`
JHW6HUYLFH/LVW 7KHVHIURPWKHVHUYHUZKHQZHFDOOHG
UYHUUHWXUQVWKHDFWXDO
`
VHULDOL]HG
VHUYLF


ZKLFKLVDXWRPDWLFDOO\G
H
HVHULDOL]HG WKDQNVWR50
DQGZHVLPSO\FDOOWKHJH
, 
WKHUHVXOW D-3DQHO WRWW*XL3DQHO RQWKHVHUYLFHDQGDGG
KHEURZVHUVPDLQ3DQHO

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

'RWKH50,OR

WXE

KHV
RNXSDQGJHWW

WU\^

REM 1DPLQJORRNXS UPL6HUYLFH6HUYHU 

`
FDWFK ([FHSWLRQH[ ^
H[SULQW6WDFN7UDFH 
`
&DVWWKHVWXE
VHUYHU  6HUYLFH6HUYHU REM
VRWKDWZHFDQWFRDOWKHUHPRWHLQWHUIDFHW\SH

OJHW6HUYLFH/LVW

RQLW
WU\^

VHUYLFHV VHUYHUJHW6HUYLFH/LVW 

`FDWFK ([FHSWLRQH[ ^
JHW6HUYLFH/LVW JLYHVXVWKHDUUD\RI2EMHFWV
H[SULQW6WDFN7UDFH 
WKDWZHGLVSOD\LQWKH-&RPER%R[IRUWKHXVHUWR
`
VHOHFWIURP
UHWXUQVHUYLFHV

`

Licensed by
Eduard Simons
104038

FODVV0\/LVW/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^

2EMHFWVHOHFWLRQ VHUYLFH/LVWJHW6HOHFWHG,WHP 
HD
ORDG6HUYLFH VHOHFWLRQ 
KHXVHUPDG
W
QV
HD
P
W
6R
L

H
W
`
,IZHUHKIHUURPWKH-&RPER%R[OLVGORDGWKH
DQ
Q
`
VHOHFWLR
H\PDGH
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
QHZ6HUYLFH%URZVHU EXLOG*8, 
`
`


LRQWK
YLFHPHWKRG 
WDNHWKHVHHOHVHFWUYLFH VHHWKHORDGW6KHU
HVHUYHUIWRULRQ
DSSURSULDWHYLRXVSDJHWKDWDVNV KW
KLVVHOHF
RQWKHSU HWKDWFRUUHVSRQGVZLW
LF
WKHVHUY




\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 5ROOHP 
6WULQJ>@FKRLFHV ^`
QXP2I'LFH QHZ-&RPER%R[ FKRLFHV 
ODEHO QHZ-/DEHO GLFHYDOXHVKHUH 
EXWWRQDGG$FWLRQ/LVWHQHU QHZ5ROO(P/LVWHQHU 
SDQHODGG QXP2I'LFH 
+HUHVWKHRQHLPSRUW PHWK
SDQHODGG EXWWRQ 
RG7KHPHWKR IWKH
6HUYLFHLQWHUIDFHWDQW
RQHWKHFOLHQWVJRQQDGR
SDQHODGG ODEHO 
FDOOZKHQ
WKLVVHUYLFHLVVHOHFWHGKH
DQGORDGHG<RXFDQGRZK
UHWXUQSDQHO
ZD
DWHYHU\RX
QW
LQ
WKH
JH
W*XL3DQHO PHWKRGDVORQJD
`
V\RX

-3DQHOVRLWEXLOGVWKHDFWXDO

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 

`
`

GLFHUROOLQJ*8, UHWXUQD

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

HPHWKRGW$RQOO DQG
LF
UY
VH
H
K
7
0\'UDZ3DQHOP\3DQHO
SOD\DEXW

GRHVLVGLVLQJVHUYLFH ZKHUH
WKHGUDZ QJOHVZLOOHYHQWXDOO\
WKHUHFWD 
EHSDLQWHG

SXEOLF-3DQHOJHW*XL3DQHO ^
-3DQHOPDLQ3DQHO QHZ-3DQHO 
P\3DQHO QHZ0\'UDZ3DQHO 
-%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^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
WU\^

7KLVLVDOOWKHPXVLFVWXIIIURPWKH
&RGH.LWFKHQLQFKDSWHUVRZ
ZRQWDQQRWDWHLWDJDLQKHUH H

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
UHSDLQW 
`
SXEOLF'LPHQVLRQJHW3UHIHUUHG6L]H ^
UHWXUQQHZ'LPHQVLRQ  
`

YH
LUHSDJH<LWRX
QW
H
LV
K
W
HQ
Q
FK
R
1RWKLQJQHLZQWKHJUDSKLFV&RGH.

U\
W
OO

VHHQLWD QWDQRWKHUH[HUFLVH WKHQ
,I\RXZD JWKLVFRGH\RXUVHOI HQLQ
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    

JOO5HFW [\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
-7H[W)LHOGGD\
-7H[W)LHOG\HDU

KRG
QWHUIDFHPHW
7KH6HUYLFHVLWKH*8,
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^
QHHGDUHPZLQRUNV
RX
\
I
L


SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
HU
W
FKDS
IRUPDWWLQJ
5HIHUWRXP
LQWPRQWK1XP PRQWKJHW6HOHFWHG,QGH[ 
DQGGDWHIHU
HU
E
KRZHYHU
Q
RZ
K
O\GLI HQUWFODVV$OVRWKH
W
LQWGD\1XP ,QWHJHUSDUVH,QW GD\JHW7H[W  RI
JK
OL
V
LV
H
RG
F
LQW\HDU1XP ,QWHJHUSDUVH,QW \HDUJHW7H[W  7KLV
SDWWHUQ
VWKH&DOHQGD
EHFDXVHLWWXH)VHRUPDWOHWVXVVSHFLI\XWD
&DOHQGDUF &DOHQGDUJHW,QVWDQFH 
6LPSOH'D KHGDWHVKRXOGSULQWR
FVHW &DOHQGDU0217+PRQWK1XP 
IRUKRZW
FVHW &DOHQGDU'$<B2)B0217+GD\1XP 
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

:RXOGQWLWEH
GUHDP\LIWKLVZHUHWKHHQG
RIWKHERRN",IWKHUHZHUHQR
PRUHEXOOHWSRLQWVRUSX]]OHV
RUFRGHOLVWLQJVRUDQ\WKLQJHOVH"
%XWWKDWVSUREDEO\MXVWD
IDQWDV\

Congratulations!
You made it to the end.
2IFRXUVHWKHUHVVWLOOWKHWZRDSSHQGLFHV
$QGWKHLQGH[
$QGWKHQWKHUHVWKHZHEVLWH
7KHUHVQRHVFDSHUHDOO\

 FKDSWHU

Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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

GDQFHEHDW

$QG\JURRYH

WR
HJHWVVHQW 
J
D
VV
H
P

U
X
R
<
OD\HUVDORQJ
WKHRWKHUS XUUHQWEHDW
ZLWK\RXUF HQ\RXKLW
SDWWHUQZK
VHQG,W

&KULVJURRYHUHYLVHG
1LJHOGDQFHEHDW

Finally, the complete version of the BeatBox!

,QFRPLQJPH
SOD\HUV&OLF VVDJHVIURP
WKHSDWWHUQ NRQHWRORDG
ZLWKLWDQG WKDWJRHV
6WDUWWRS WKHQFOLFN
OD\LW

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
FKDSWHUVVRZHGRQWDQQRWDWHWKHZKROHWKLQJDJDLQ7KHQHZSDUWVLQFOXGH
*8,WZRQHZFRPSRQHQWVDUHDGGHGIRUWKHWH[WDUHDWKDWGLVSOD\VLQFRPLQJ
PHVVDJHV DFWXDOO\DVFUROOLQJOLVW DQGWKHWH[WHOG
1(7:25.,1*MXVWOLNHWKH6LPSOH&KDW&OLHQWLQWKLVFKDSWHUWKH%HDW%R[QRZ
FRQQHFWVWRWKHVHUYHUDQGJHWVDQLQSXWDQGRXWSXWVWUHDP
7+5($'6DJDLQMXVWOLNHWKH6LPSOH&KDW&OLHQWZHVWDUWDUHDGHUFODVVWKDW
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+DW2SHQ+L+DW$FRXVWLF
6QDUH&UDVK&\PEDO+DQG&ODS+LJK7RP+L%RQJR0DUDFDV:KLVWOH
/RZ&RQJD&RZEHOO9LEUDVODS/RZPLG7RP+LJK$JRJR2SHQ+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  
KH
1RWKLQJQHZVHWXSW
RXW QHZ2EMHFW2XWSXW6WUHDP VRFNJHW2XWSXW6WUHDP 
DNH DQG
P
DQG
2
,
QJ
QHWZRUNL
LQ QHZ2EMHFW,QSXW6WUHDP VRFNJHW,QSXW6WUHDP 
DG
KUH
UW
VWDUW WKHUHDGH
7KUHDGUHPRWH QHZ7KUHDG QHZ5HPRWH5HDGHU 
UHPRWHVWDUW 
`FDWFK ([FHSWLRQH[ ^
6\VWHPRXWSULQWOQ FRXOGQWFRQQHFW\RXOOKDYHWRSOD\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 
IRU LQWL LL ^
QDPH%R[DGG QHZ/DEHO LQVWUXPHQW1DPHV>L@ 
`
EDFNJURXQGDGG %RUGHU/D\RXW($67EXWWRQ%R[ 
EDFNJURXQGDGG %RUGHU/D\RXW:(67QDPH%R[ 
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 
PDLQ3DQHODGG F 
`HQGORRS

ZHKDYHQW
-/LVWLVDFRPSRQHQWZK
HUHWKH
LV
KLV
7
XVHGEHIRUH
\HG
GLV
LQFRPLQJPHVVDJHVDUHUPDOSOD
W
FKD
QR
ID
GR
2QO\LQVWHD
H
WK
DW
.
ZKHUH\RXMXVW/22 \RXFDQ
PHVVDJHVLQWKLVDSSIURPWKHOLVW
6(/(&7DPHVVDJHHDWWDFKHG
WRORDGDQGSOD\WK
EHDWSDWWHUQ

1RWKLQJHOVHRQWKLVSDJHLVQHZ

WKH)UDPHVHW%RXQGV  
WKH)UDPHSDFN 
WKH)UDPHVHW9LVLEOH WUXH 
`FORVHEXLOG*8,
SXEOLFYRLGVHW8S0LGL ^
WU\^
VHTXHQFHU 0LGL6\VWHPJHW6HTXHQFHU 
VHTXHQFHURSHQ 
VHTXHQFH QHZ6HTXHQFH 6HTXHQFH334 
WUDFN VHTXHQFHFUHDWH7UDFN 
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `

DNHD
XHQFHUP7
*HWWKH6HT
PDNHD UDFN
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
VHTXHQFHGHOHWH7UDFN WUDFN 
ER[HV
XJKWKHFKRHFDNQ
UR
K
W
WUDFN VHTXHQFHFUHDWH7UDFN 
J
LQ
ON
D
W
\Z
IRU LQWL LL ^
WUDFN/LVW QHZ$UUD\/LVW,QWHJHU! 

E
SLQJWKDW
%XLOGDWUDHLFN
DWHDQGPWKDHS 0LGL(YHQWIRULW VLW
VW
U
K
W
HW
WRJ
QGPDNLQJ
;$&7/<D
LQVWUXPHQW WWD\FRPSOH[EXWLWLRVU(HIHUWRSUHYLRXV
7KLVLVSUHHSUHYLRXVFKDSWHUVV H[SODQDWLRQDJDLQ
ZDVLQWK HQVWRJHWWKHIXOO
&RGH.LWFK

IRU LQWM MM ^


-&KHFN%R[MF  -&KHFN%R[ FKHFNER[/LVWJHW M  L 
LI MFLV6HOHFWHG ^
LQWNH\ LQVWUXPHQWV>L@
WUDFN/LVWDGG QHZ,QWHJHU NH\ 
`HOVH^
WUDFN/LVWDGG QXOO EHFDXVHWKLVVORWVKRXOGEHHPSW\LQWKHWUDFN
`
`FORVHLQQHUORRS
PDNH7UDFNV WUDFN/LVW 
`FORVHRXWHUORRS
WUDFNDGG PDNH(YHQW  VRZHDOZD\VJRWRIXOOEHDWV
WU\^
VHTXHQFHUVHW6HTXHQFH VHTXHQFH 
VHTXHQFHUVHW/RRS&RXQW VHTXHQFHU/223B&217,18286/< 
VHTXHQFHUVWDUW 
VHTXHQFHUVHW7HPSR,Q%30  
`FDWFK ([FHSWLRQH ^HSULQW6WDFN7UDFH `
`FORVHPHWKRG

Licensed by
Eduard Simons
104038

SXEOLFFODVV0\6WDUW/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
EXLOG7UDFN$QG6WDUW 
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV
SXEOLFFODVV0\6WRS/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
VHTXHQFHUVWRS 
`FORVHDFWLRQ3HUIRUPHG
`FORVHLQQHUFODVV

HUV
7KH*8,OLKVWHHQVDPHDVWKH
W
([DFWO\ KDSWHUVYHUVLRQ
SUHYLRXVF

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 ^
-&KHFN%R[FKHFN  -&KHFN%R[ FKHFNER[/LVWJHW L 
FHSW
&KDW&OLHQWHWH[ZRREMHFWV
OH
S
LI FKHFNLV6HOHFWHG ^
LP
6
H
K
W
H
ORWOLN

HVHULDOL]
FKHFNER[6WDWH>L@ WUXH
LVQHZLWGVLQDJD6WULQJPHVVDJHDZWWHUQ DQGZULWHWKR VH
LV
K
7
`
WS
KHVHUYHU
LQVWHDGRIQVJHQPHVVDJHDQGWKHEHDSXW
VWUHDP WRW
`FORVHORRS
XW
6WUL
R
H
HW
K
FN
W
RWKHVR
6WULQJPHVVDJH7R6HQG QXOO
WZRREMHFWVW
WU\^
RXWZULWH2EMHFW XVHU1DPHQH[W1XPXVHU0HVVDJHJHW7H[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
`
HZD/LV
ZKHQWKHX
`FORVHYDOXH&KDQJHG
W6H
VH
U
:
KHQWKHXVH PDGHDVHOHFWLROHQFWLRQ/LVWHQHUWKDWW
`FORVHLQQHUFODVV

ORDGWKH VV UVHOHFWVDPHVVDJ RQWKHOLVWRIPHVV HOOVXV


H
RFLDWHGEHD
FDOOHGRWD
WSDWWHUQ ZH,00(',$7(/D<JHV
K
H
U
6
H
T
V0
LWVLQWKH+
DS DQGV
LIWHVWV
/LVW6HOHFEWHLRFDXVHRIOLWWOHTXWLUDNUWSOD\LQJLW7KHUDHVK0DS
V
\WKLQJVDER
Q(YHQWV
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^
ERROHDQ>@FKHFNER[6WDWH QXOO
D
UHDGLQWGDDWZLOO

6WULQJQDPH7R6KRZ QXOO
E
R
M
G
D
UH
K
W
D
2EMHFWREM QXOO
7KLVLVWKHVHUYHU,QWKLVFRGHGVWKH
SXEOLFYRLGUXQ ^
IURPWKH WZRVHULDOL]HGREMHFWDWWHUQ DQ
WU\^
DOZD\VEHHVVDJHDQGWKHEHDWS YDOXHV
ZKLOH REM LQUHDG2EMHFW  QXOO ^
6WULQJP WRIFKHFNER[VWDWH
6\VWHPRXWSULQWOQ JRWDQREMHFWIURPVHUYHU 
$UUD\/LV
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
LVDQROG
$UUD\/LVW
`FORVHLQQHUFODVV
-/LV

W

IRUZKDWWRXVHWKDW9HFWDRQUGWKHQWHOOWKH
WRGLVSOD\

SXEOLFFODVV0\3OD\0LQH/LVWHQHULPSOHPHQWV$FWLRQ/LVWHQHU^
LQWKHDOLVVLWVVRXUFH
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWD ^
W
LI P\6HTXHQFH QXOO ^
VHTXHQFH P\6HTXHQFHUHVWRUHWRP\RULJLQDO
`
`FORVHDFWLRQ3HUIRUPHG
7KLVPHWKRGLVFDOOHGZ
`FORVHLQQHUFODVV
KH

VRPHWKLQJIURPWKHOLVW QWKHXVHUVHOHFWV
:H,00(',$7(/<
FK
DQJHWKHSDWWHUQWRWK
SXEOLFYRLGFKDQJH6HTXHQFH ERROHDQ>@FKHFNER[6WDWH ^
HRQHWKH\VHOHFWHG
IRU LQWL LL ^
-&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 ^`
WKHODVWYHUVL
H
LN
O
W
XV
UHWXUQHYHQW

1RWKLQJQHZ
`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

<RXPHDQWKHUHVVWLOO
025("'RHVQWWKLV
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'
7EVETALKEDABOUTTHEFACTTHATTHEREAREBITSINABYTE
BITSINASHORT ANDSOON9OUMIGHTHAVEOCCASIONTO
TURNINDIVIDUALBITSONOROFF&ORINSTANCEYOUMIGHTlND
YOURSELFWRITINGCODEFORYOURNEW*AVAENABLEDTOASTER
ANDREALIZETHATDUETOSEVEREMEMORYLIMITATIONS CERTAIN
TOASTERSETTINGSARECONTROLLEDATTHEBITLEVEL&OREASIER
READING WERESHOWINGONLYTHELASTBITSINTHECOMMENTS
RATHERTHANTHEFULLFORANINT 

7KH6KLIW2SHUDWRUV
4HESEOPERATORSTAKEASINGLEINTEGERPRIMITIVEANDSHIFTOR
SLIDE ALLOFITSBITSINONEDIRECTIONORANOTHER)FYOUWANT
TODUSTOFFYOURBINARYMATHSKILLS YOUMIGHTREALIZETHAT
SHIFTINGBITSLEFTEFFECTIVELYMULTIPLIESANUMBERBYAPOWEROF
TWO ANDSHIFTINGBITSRIGHTEFFECTIVELYDIVIDESANUMBERBYA
POWEROFTWO
7ELLUSETHEFOLLOWINGEXAMPLEFORTHENEXTTHREEOPERATORS
INTX BITSARE

%LWZLVH1272SHUDWRUa
4HISOPERATOR@mIPSALLTHEBITSOFAPRIMITIVE
INTXBITSARE
X^XBITSARENOW
4HENEXTTHREEOPERATORSCOMPARETWOPRIMITIVESONABIT
BYBITBASIS ANDRETURNARESULTBASEDONCOMPARINGTHESE
BITS7ELLUSETHEFOLLOWINGEXAMPLEFORTHENEXTTHREE
OPERATORS
INTXBITSARE
INTYBITSARE

/K OK WEVEBEENPUTTINGITOFF HEREISTHEWORLDS


SHORTESTEXPLANATIONOFSTORINGNEGATIVENUMBERS AND
TWOSCOMPLEMENT2EMEMBER THELEFTMOSTBITOFANINTEGER
NUMBERISCALLEDTHESIGNBIT!NEGATIVEINTEGERNUMBERIN
*AVAALWAYSHASITSSIGNBITTURNEDONIESETTO !POSITIVE
INTEGERNUMBERALWAYSHASITSSIGNBITTURNEDOFF *AVA
USESTHETWOSCOMPLEMENTFORMULATOSTORENEGATIVENUMBERS
4OCHANGEANUMBERSSIGNUSINGTWOSCOMPLEMENT mIPALL
THEBITS THENADDWITHABYTE FOREXAMPLE THATWOULD
MEANADDINGTOTHEmIPPEDVALUE 

5LJKW6KLIW2SHUDWRU!!
4HISOPERATORSHIFTSALLOFANUMBERSBITSRIGHTBYACERTAIN
NUMBER ANDlLLSALLOFTHEBITSONTHELEFTSIDEWITHWHATEVER
THEORIGINALLEFTMOSTBITWAS4HESIGNBITDOESNOTCHANGE

%LWZLVH$1'2SHUDWRU

INTYXBITSARE

4HISOPERATORRETURNSAVALUEWHOSEBITSARETURNEDONONLY
IFBOTHORIGINALBITSARETURNEDON

INTAXYBITSARE

8QVLJQHG5LJKW6KLIW2SHUDWRU!!!
*USTLIKETHERIGHTSHIFTOPERATOR"54IT!,7!93lLLSTHE
LEFTMOSTBITSWITHZEROS4HESIGNBITMIGHTCHANGE

%LWZLVH252SHUDWRU_
4HISOPERATORRETURNSAVALUEWHOSEBITSARETURNEDONONLY
IFEITHEROFTHEORIGINALBITSARETURNEDON

INTYXBITSARE

INTAX\YBITSARE

/HIW6KLIW2SHUDWRU

%LWZLVH;25 H[FOXVLYH25 2SHUDWRUA

*USTLIKETHEUNSIGNEDRIGHTSHIFTOPERATOR BUTINTHEOTHER
DIRECTIONTHERIGHTMOSTBITSARElLLEDWITHZEROS4HESIGNBIT
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'
7HENYOUR*AVAPROGRAMSSTARTTOGETBIG YOULL
INEVITABLYENDUPWITHLOTSANDLOTSOF3TRINGOBJECTS
&ORSECURITYPURPOSES ANDFORTHESAKEOFCONSERVING
MEMORYREMEMBERYOUR*AVAPROGRAMSCANRUNON
TEENY*AVA ENABLEDCELLPHONES 3TRINGSIN*AVAARE
IMMUTABLE7HATTHISM
EANSISTHATWHENYOUSAY
3TRINGShv
FORINTXXX [
SS X
]
7HATSACTUALLYHAPPENINGISTHATYOURECREATINGTEN
3TRINGOBJECTSWITHVALUEShv hv hv THROUGH
hv )NTHEENDSISREFERRINGTOTHE3TRING
WITHTHEVALUEhv BUTATTHISPOINTTHERE
ARETEN3TRINGSINEXISTENCE
7HENEVERYOUMAKEANEW3TRING THE*6-PUTSIT
INTOASPECIALPARTOFMEMORYCALLEDTHE@3TRING0OOL
SOUNDSREFRESHINGDOESNTIT )FTHEREISALREADY
A3TRINGINTHE3TRING0OOLWITHTHESAMEVALUE THE
*6-DOESNTCREATEADUPLICATE ITSIMPLYREFERSYOUR
REFERENCEVARIABLETOTHEEXISTINGENTRY4HE*6-CAN
GETAWAYWITHTHISBECAUSE3TRINGSAREIMMUTABLEONE
REFERENCEVARIABLECANTCHANGEA3TRINGSVALUEOUT
FROMUNDERANOTHERREFERENCEVARIABLEREFERRINGTO
THESAME3TRING
4HEOTHERISSUEWITHTHE3TRINGPOOLISTHATTHE
'ARBAGE#OLLECTORDOESNTGOTHERE3OINOUREXAMPLE
UNLESSBYCOINCIDENCEYOULATERHAPPENTOMAKEA
3TRINGCALLEDhv FORINSTANCE THElRSTNINE
3TRINGSCREATEDINOURFORLOOPWILLJUSTSITAROUND
WASTINGMEMORY

+RZGRHVWKLVVDYHPHPRU\"
7ELL IFYOURENOTCAREFUL ITDOESNT"UTIFYOUUN
DERSTANDHOW3TRINGIMMUTABILITYWORKS THANYOU
CANSOMETIMESTAKEADVANTAGEOFITTOSAVEMEMORY
)FYOUHAVETODOALOTOF3TRINGMANIPULATIONSLIKE
CONCATENATIONS ETC HOWEVER THEREISANOTHERCLASS
3TRING"UILDER BETTERSUITEDFORTHATPURPOSE7ELL
TALKMOREABOUT3TRING"UILDERINAFEWPAGES

?PaLWaW]KIZM\PI\?ZIXXMZ[IZM
1UU]\IJTM'
)NTHE-ATHCHAPTERWETALKEDABOUTTHETWOMAIN
USESOFTHEWRAPPERCLASSES
s7RAPPINGAPRIMITIVESOITCANPRETENDTOBEAN
OBJECT
s5SINGTHESTATICUTILITYMETHODSFOREXAMPLE
)NTEGERPARSE)NT 
)TSIMPORTANTTOREMEMBERTHATWHENYOUCREATEA
WRAPPEROBJECTLIKE
)NTEGERI7RAPNEW)NTEGER 
4HATSITFORTHATWRAPPEROBJECT)TSVALUEWILLALWAYS
BE4HEREISNOSETTERMETHODFORAWRAPPEROBJECT
9OUCAN OFCOURSE REFERI7RAPTOADIFFERENTWRAPPER
OBJECT BUTTHENYOULLHAVETWOOBJECTS/NCEYOU
CREATEAWRAPPEROBJECT THERESNOWAYTOCHANGE
THEVALUEOFTHATOBJECT

0DNH LW 6WLF

2OSESARER
ED VIOLETSA
REBLUE
3TRINGSARE
IMMUTAB
LE WRAPPE
RSARET

OO

2KORRN$ERQ
XV0DNHLW6W
LFN
5LJKWKHUHLQW
KHDSSHQGL[

\RXDUHKHUH



Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
PROGRAMWHILEYOUREDEVELOPINGIT7EBELIEVETHAT
YOUSHOULDLEARN*AVAATTHECOMMANDLINE ASWEVE
BEENDOINGTHROUGHOUTTHEBOOK/NCEYOUREA*AVA
PRO IFYOUDECIDETOUSEAN)$%
YOUMIGHTHAVE
OTHERDEBUGGINGTOOLSTOUSE)NTHEOLDDAYS WHEN
A*AVAPROGRAMMERWANTEDTODEBUGHERCODE SHED
STICKABUNCHOF3YSTEMOUTPRINTLN STATEMENTS
THROUGHOUTTHEPROGRAM PRINTINGCURRENTVARIABLE
VALUES ANDh)GOTHEREvMESSAGES TOSEEIFTHEmOW
CONTROLWASWORKINGPROPERLY4HEREADY BAKECODE
INCHAPTERLEFTSOMEDEBUGGING@PRINTSTATEMENTS
INTHECODE 4HEN ONCETHEPROGRAMWASWORKING
CORRECTLY SHEDGOTHROUGHANDTAKEALLTHOSE3YSTEM
OUTPRINTLN STATEMENTSBACKOUTAGAIN)TWAS
TEDIOUSANDERRORPRONE"UTASOF*AVAAND
DEBUGGINGGOTAWHOLELOTEASIER4HEANSWER

$VVHUWLRQV
!SSERTIONSARELIKE3YSTEMOUTPRINTLN STATEMENTS
ONSTEROIDS!DDTHEMTOYOURCODEASYOUWOULD
ADDPRINTLNSTATEMENTS4HE*AVACOMPILER
ASSUMESYOULLBECOMPILINGSOURCElLESTHATARE
COMPATIBLE SOASOF*AVA COMPILINGWITHASSERTIONS
ISENABLEDBYDEFAULT
!TRUNTIME IFYOUDONOTHING THEASSERTSTATEMENTS
YOUADDEDTOYOURCODEWILLBEIGNOREDBYTHE*6-
ANDWONTSLOWDOWNYOURPROGRAM"UTIFYOUTELLTHE
*6-TOENABLEYOURASSERTIONS THEYWILLHELPYOUDO
YOURDEBUGGING WITHOUTCHANGINGALINEOFCODE
3OMEFOLKSHAVECOMPLAINEDABOUTHAVINGTOLEAVE
ASSERTSTATEMENTSINTHEIRPRODUCTIONCODE BUT
LEAVINGTHEMINCANBEREALLYVALUABLEWHENYOUR
CODEISALREADYDEPLOYEDINTHElELD)FYOURCLIENT
ISHAVINGTROUBLE YOUCANINSTRUCTTHECLIENTTORUN
THEPROGRAMWITHASSERTIONSENABLED ANDHAVETHE
CLIENTSENDYOUTHEOUTPUT)FTHEASSERTIONSWERE
STRIPPEDOUTOFYOURDEPLOYEDCODE YOUDNEVER
HAVETHATOPTION!NDTHEREISALMOSTNODOWNSIDE
WHENASSERTIONSARENOTENABLED THEYARECOMPLETELY
IGNOREDBYTHE*6- SOTHERESNOPERFORMANCEHITTO
WORRYABOUT



+RZWRPDNH$VVHUWLRQVZRUN
!DDASSERTIONSTATEMENTSTOYOURCODEWHEREVERYOU
BELIEVETHATSOMETHINGMUSTBETRUE&ORINSTANCE
DVVHUW KHLJKW! 
LIWUXHSURJUDPFRQWLQXHVQRUPDOO\
LIIDOVHWKURZDQ$VVHUWLRQ(UURU

9OUCANADDALITTLEMOREINFORMATIONTOTHESTACK
TRACEBYSAYING
DVVHUW KHLJKW! KHLJKW 
KHLJKWZHLJKW ZHLJKW
4HEEXPRESSIONAFTERTHECOLONCANBEANYLEGAL
*AVAEXPRESSIONTHATRESOLVESTOANON NULLVALUE"UT
WHATEVERYOUDO DONTCREATEASSERTIONSTHATCHANGEAN
OBJECTSSTATE)FYOUDO ENABLINGASSERTIONSATRUNTIME
MIGHTCHANGEHOWYOURPROGRAMPERFORMS


&RPSLOLQJDQGUXQQLQJZLWK
$VVHUWLRQV
4OCOMPILEWITHASSERTIONS
MDYDF7HVW'ULYH*DPHMDYD
.OTICETHATNOCOMMANDLINEOPTIONSWERE
NECESSARY
4ORUNWITHASSERTIONS
MDYDHD7HVW'ULYH*DPH

)$%STANDSFOR)NTEGRATED$EVELOPMENT%NVIRONMENT
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
STATEMENTS 

Licensed by
Eduard Simons
104038

EORFN
KHPHWKRG
VWDUWRIW
YRLGGR6WXII ^ HQWLUHPHWKRG
WKH
ORFDOYDULDEOHVFRSHGWR
LQW[ 
,ETSLOOKATANEXAMPLE

EORFNDQG\LV
EHJLQQLQJRIDIRUHORIRRSUORRS
VFRSHGWRRQO\WK

[ [\
ERWKLQVFRSH
1RSUREOHP[DQG\DUH
`
HQGRIWKHIRUORRSEORFN

IRU LQW\ \\ ^


[ [ \
$D

FN:RQWFRPSLOH\ XWRIVFR
SHKHUH VLVQRW
WKHZD\LWZRUNVLQVRPLVR
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 >
DERXW
QHZ)RR JR 
WZHGRQWFDUDVHVLJ
EX

R
J
DOO
F
WR
W
DQ
U QLQJ
ZHZ
HVRZHGRQWEUHRWQFKHH
`
WKH)RRLQVWDQFMH
RDUHIH
YRLGJR ^
WKHQHZ)RRRE FWW
KHUHVZKDWZH5($//<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
ABLEFORMOFANINNERCLASSWHERETHECLASSISSIMPLYNESTEDWITHINTHECURLYBRACESOFANOTHER
ENCLOSINGCLASS!NDREMEMBER ITMEANSYOUNEEDANINSTANCEOFTHEOUTERCLASSINORDERTOGET
ANINSTANCEOFTHEINNERCLASS BECAUSETHEINNERCLASSISAMEMBEROFTHEOUTERENCLOSINGCLASS
"UTTHEREAREOTHERKINDSOFINNERCLASSESINCLUDINGSTATICANDANONYMOUS7ERENOTGOING
INTOTHEDETAILSHERE BUTWEDONTWANTYOUTOBETHROWNBYSTRANGESYNTAXWHENYOUSEEITIN
SOMEONESCODE"ECAUSEOUTOFVIRTUALLYANYTHINGYOUCANDOWITHTHE*AVALANGUAGE PERHAPS
NOTHINGPRODUCESMOREBIZARRE LOOKINGCODETHANANONYMOUSINNERCLASSES"UTWELLSTARTWITH
SOMETHINGSIMPLERSTATICNESTEDCLASSES
6WDWLFQHVWHGFODVVHV
9OUALREADYKNOWWHATSTATICMEANSSOMETHINGTIEDTOTHECLASS NOTAPARTICULARINSTANCE!
STATICNESTEDCLASSLOOKSJUSTLIKETHENON STATICCLASSESWEUSEDFOREVENTLISTENERS EXCEPTTHEYRE
MARKEDWITHTHEKEYWORDVWDWLF

SXEOLFFODVV)RR2XWHU^

VLVMXVWWKDWD
$VWDWLFQHVWHGZLFWKODVLQDQRWKHUDQG
FODVVHQFORVHG HVWDWLFPRGLILHU
PDUNHGZLWKWK

VWDWLFFODVV%DU,QQHU^
YRLGVD\,W ^
6\VWHPRXWSULQWOQ PHWKRGRIDVWDWLFLQQHUFODVV 
`
`
`
FODVV7HVW^

%HFDXVHDVWDW
XVHDQLQVWDQFHRLFIQHWKVWHGFODVVLVVWDWLF\RXGRQW
QDPHRIWKHFODVVW HRXWHUFODVV<RXMXVWXVHWKH
PHWKRGVRUDFFHVVVWKHVDPHZD\\RXLQYRNHVWDWLF
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\VDUHQWHQRXJK

$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
AMOMENTITMEANSYOUPASSTHEENTIRECLASSWHEREYOUDNORMALLYPASSONLYANINSTANCEINTOA
METHODARGUMENT

QRZZH
DEXWWRQKDQWGKHEXWWRQ
HG
G
G
D
G
DQ
H
P
UD
WHQHUZLW HPHQWVWKH
:HPDGHDJLIVW
SO
HUDQDFWLRQOLV
QHHGWRUH QHYHUPDGHDFODVVWKDWLP
H
Z
SW
([FH
LQWHUIDFH
LQ
$FWLRQ/LVWHQHU
-)UDPHIUDPH QHZ-)UDPH 
HWKLVSDVVDVLQVJDQ
LN
O
QJ
KL
HW
P
VR
R
-%XWWRQEXWWRQ QHZ-%XWWRQ FOLFN 
DQLQQHUFOHU DQG
1RUPDOO\ZFHHWGG
LQVWDQFHR$IFW
DQ
R
LVWHQ
IUDPHJHW&RQWHQW3DQH DGG EXWWRQ 
HQ
HU
I
V
DUH
HPHQW G LRQ/
SO
P
L
W
KD
W
EXWWRQDGG$FWLRQ/LVWHQHU TXLW/LVWHQHU 
V
DV
LQQHUFO HUIRUPHG PHWKR
WKHDFWLRQ3
W

W
VLQJLQDQREMHZHF
HQ
DV
S
HP
I
R
G
HD
W
QV
7KLVVWDW
Q
%XWQRZL ZHSDVVLQWKHZKROH H
EXWWRQDGG$FWLRQ/LVWHQHU QHZ$FWLRQ/LVWHQHU ^
UHIHUHQFH LWLRQ,QRWKHUZRUGVZF
SXEOLFYRLGDFWLRQ3HUIRUPHG $FWLRQ(YHQWHY ^
PHG
FODVVGHILQFODVVWKDWLPSOHPHQWV$(:(
6\VWHPH[LW  
ZULWHWKH HU5,*+7+(5(:+(5HVDQ
`
WLRQ/LVWHQ7KHV\QWD[DOVRFUHDWO\
` 
1((',7 IWKHFODVVDXWRPDWLFDO

YHQ
H
RQ/LVWHQHU
FWL
$
QHZ
\
VD
ZH
KDW
HW
LQVWDQFHR
WLF
1R
VR\RX
ULVDQLQWHUIDFHDQG\QW
WKRXJK$FWLRQ/LVWHQHQFH
D[
LW%XWWKLVV
 FDQW0$.(DQLQVWD RI
DVV ZLWKQRQDPH 
FO
HZ
DQ
HQGVGRZQKHUH
WH
UHD
OO\PHDQVF
UHD
HQHULQWHUIDFH
LVW
Q/
WLR

WKDWLPSOHPHQWVWKH$F
LPSOHPHQWDWLRQRIWKH
E\WKHZD\KHUHVWKH
DQG
RUPHG 
HUI
Q3
`
LQWHUIDFHPHWKRGVDFWLR
`
LPSRUWMDYDDZWHYHQW 
LPSRUWMDYD[VZLQJ 
SXEOLFFODVV7HVW$QRQ^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^



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$FFHVV0RGLHUV :KR6HHV:KDW
*AVAHASFOURACCESSLEVELSANDTHREEACCESSMODIlERS4HEREAREONLYTHREEMODIlERSBECAUSE
THEDEFAULTWHATYOUGETWHENYOUDONTUSEANYACCESSMODIlER ISONEOFTHEFOUR
ACCESSLEVELS
$FFHVV/HYHOVINORDEROFHOWRESTRICTIVETHEYARE FROMLEASTTOMOSTRESTRICTIVE

PUBLIC

SXEOLFPHDQVDQ\FRGHDQ\ZKHUHFDQDFFHVVWKHSXEOLFWKLQJ E\
WKLQJZHPHDQFODVVYDULDEOHPHWKRGFRQVWUXFWRUHWF 

PROTECTED
DEFAULT
PRIVATE

SURWHFWHGZRUNVMXVWOLNHGHIDXOW FRGHLQWKHVDPHSDFNDJHKDVDFFHVV (;&(37LW


DOVRDOORZVVXEFODVVHVRXWVLGHWKHSDFNDJHWRLQKHULWWKHSURWHFWHGWKLQJ
GHIDXOWDFFHVVPHDQVWKDWRQO\FRGHZLWKLQWKHVDPHSDFNDJHDV
WKHFODVVZLWKWKHGHIDXOWWKLQJFDQDFFHVVWKHGHIDXOWWKLQJ
SULYDWHPHDQVWKDWRQO\FRGHZLWKLQWKHVDPHFODVVFDQDFFHVVWKHSULYDWHWKLQJ
.HHSLQPLQGLWPHDQVSULYDWHWRWKHFODVVQRWSULYDWHWRWKHREMHFW2QH'RJ
FDQVHHDQRWKHU'RJREMHFWVSULYDWHVWXIIEXWD&DWFDQWVHHD'RJVSULYDWHV

$FFHVVPRGLHUV

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\VDUHQWHQRXJK

$FFHVV/HYHOVDQG$FFHVV0RGLHUVFRQW
GHIDXOWDQGSURWHFWHG
GHIDXOW
"OTHPROTECTEDANDDEFAULTACCESSLEVELSARETIEDTOPACKAGES$EFAULTACCESSISSIMPLEIT
MEANSTHATONLYCODEWITHINTHESAMEPACKAGECANACCESSCODEWITHDEFAULTACCESS3OA
DEFAULTCLASS FOREXAMPLEWHICHMEANSACLASSTHATISNTEXPLICITLYDECLAREDASPUBLIC CAN
BEACCESSEDBYONLYCLASSESWITHINTHESAMEPACKAGEASTHEDEFAULTCLASS
"UTWHATDOESITREALLYMEANTOACCESSACLASS#ODETHATDOESNOTHAVEACCESSTOACLASSIS
NOTALLOWEDTOEVENTHINKABOUTTHECLASS!NDBYTHINK WEMEANUSETHECLASSINCODE
&OREXAMPLE IFYOUDONTHAVEACCESSTOACLASS BECAUSEOFACCESSRESTRICTION YOUARENT
ALLOWEDTOINSTANTIATETHECLASSOREVENDECLAREITASATYPEFORAVARIABLE ARGUMENT OR
RETURNVALUE9OUSIMPLYCANTTYPEITINTOYOURCODEATALL)FYOUDO THECOMPILERWILL
COMPLAIN
4HINKABOUTTHEIMPLICATIONSADEFAULTCLASSWITHPUBLICMETHODSMEANSTHEPUBLIC
METHODSARENTREALLYPUBLICATALL9OUCANTACCESSAMETHODIFYOUCANTSEETHECLASS
7HYWOULDANYONEWANTTORESTRICTACCESSTOCODEWITHINTHESAMEPACKAGE4YPICALLY
PACKAGESAREDESIGNEDASAGROUPOFCLASSESTHATWORKTOGETHERASARELATEDSET3OITMIGHT
MAKESENSETHATCLASSESWITHINTHESAMEPACKAGENEEDTOACCESSONEANOTHERSCODE WHILE
ASAPACKAGE ONLYASMALLNUMBEROFCLASSESANDMETHODSAREEXPOSEDTOTHEOUTSIDE
WORLDIECODEOUTSIDETHATPACKAGE 
/+ THATSDEFAULT)TSSIMPLEIFSOMETHINGHASDEFAULTACCESSWHICH REMEMBER MEANS
NOEXPLICITACCESSMODIlER ONLYCODEWITHINTHESAMEPACKAGEASTHEDEFAULTTHING
CLASS VARIABLE METHOD INNERCLASS CANACCESSTHATTHING
4HENWHATSPROTECTEDFOR
SURWHFWHG
0ROTECTEDACCESSISALMOSTIDENTICALTODEFAULTACCESS WITHONEEXCEPTIONITALLOWSSUB
CLASSESTOINHERITTHEPROTECTEDTHING EVENIFTHOSESUBCLASSESAREOUTSIDETHEPACKAGEOFTHESUPER
CLASSTHEYEXTEND4HATSIT4HATSALLPROTECTEDBUYSYOUTHEABILITYTOLETYOURSUBCLASSES
BEOUTSIDEYOURSUPERCLASSPACKAGE YETSTILLINHERITPIECESOFTHECLASS INCLUDINGMETHODS
ANDCONSTRUCTORS
-ANYDEVELOPERSlNDVERYLITTLEREASONTOUSEPROTECTED BUTITISUSEDINSOMEDESIGNS
ANDSOMEDAYYOUMIGHTlNDITTOBEEXACTLYWHATYOUNEED/NEOFTHEINTERESTINGTHINGS
ABOUTPROTECTEDISTHATUNLIKETHEOTHERACCESSLEVELSPROTECTEDACCESSAPPLIESONLYTO
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.

DSSHQGL[%7RS7HQ5HIHUHQFH

6WULQJDQG6WULQJ%XIIHU

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\VDUHQWHQRXJK

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

DG>@
@
DG>@> >@>@
DG

HDFK
UHJXODULQWVJRLQVPHLGQWHV
HOH
DG>@>@
RIWKHHLJKW
DG>@>
@

LQWLQW


LQW

LQW

QW>@
LQWDUUD\ L

LQWDUUD\ LQW>@

LQWLQW

LQWDUUD\ LQW>@
LQW

LQW



LQWDUU
D\ LQW

>@

OHV
QFHYDULDE

HIHUH
LQW>@U
LQW>@LQW>@LQW>@LQW>@

DG
LQW>@>@

LQWDUUD\REMHFW LQW>@>@

5HPHPEHUWKDWWKHDU
DQDUUD\KROGLQJUHI UD\LWVHOILVDQREMHFW
HUHQFHVWRLQWDUUD\V

:RUNLQJZLWKPXOWLGLPHQVLRQDODUUD\V
4OACCESSTHESECONDELEMENTINTHETHIRDARRAYLQW[ DG>@>@UHPHPEHUEDVHG
4OMAKEAONE DIMENSIONALREFERENCETOONEOFTHESUB ARRAYSLQW>@FRS\ DG>@
3HORT CUTINITIALIZATIONOFAXARRAYLQW>@>@[ ^^`^``
4OMAKEADARRAYWITHIRREGULARDIMENSIONS
LQW>@>@\ QHZLQW>@>@PDNHVRQO\WKHUVWDUUD\ZLWKDOHQJWKRI
\>@ QHZLQW>@PDNHVWKHUVWVXEDUUD\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.

DSSHQGL[%7RS7HQ5HIHUHQFH

HQXPHUDWLRQV

$QGWKHQXPEHURQHWRSLFWKDWGLGQWTXLWHPDNHLWLQ
(QXPHUDWLRQV DOVRFDOOHG(QXPHUDWHG7\SHVRU(QXPV
7EVETALKEDABOUTCONSTANTSTHATAREDElNEDINTHE!0) FORINSTANCE
-)UDPH(;,7B21B&/26(9OUCANALSOCREATEYOUROWNCONSTANTSBY
MARKINGAVARIABLEVWDWLFQDO"UTSOMETIMESYOULLWANTTOCREATEASET
OFCONSTANTVALUESTOREPRESENTTHEONLYVALIDVALUESFORAVARIABLE4HISSETOF
VALIDVALUESISCOMMONLYREFERREDTOASANENUMERATION"EFORE*AVAYOU
COULDONLYDOAHALF BAKEDJOBOFCREATINGANENUMERATIONIN*AVA!SOF*AVA
YOUCANCREATEFULLmEDGEDENUMERATIONSTHATWILLBETHEENVYOFALLYOUR
PRE *AVA USINGFRIENDS
7HOSINTHEBAND
,ETSSAYTHATYOURECREATINGAWEBSITEFORYOURFAVORITEBAND ANDYOUWANTTO
MAKESURETHATALLOFTHECOMMENTSAREDIRECTEDTOAPARTICULARBANDMEMBER
4HEOLDWAYTOFAKEANhENUMv
SXEOLFVWDWLFQDOLQW-(55< 
SXEOLFVWDWLFQDOLQW%2%%< 
SXEOLFVWDWLFQDOLQW3+,/ 
ODWHULQWKHFRGH
LI VHOHFWHG%DQG0HPEHU -(55< ^
GR-(55<UHODWHGVWXII
`

:HUHKRSLQJWKDWE\WKHWLPHZHJRWKHUH
VHOHFWHG%DQG0HPEHUKDVDYDOLGYDOXH

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\VDUHQWHQRXJK

(QXPHUDWLRQVFRQW
4HESAMESITUATIONUSINGAGENUINE*AVAENUM7HILETHISISAVERYBASIC
ENUMERATION MOSTENUMERATIONSUSUALLYARETHISSIMPLE

Q
VVGHILQLWLR
OD
F

OH
S
LP
V

D
NHD
RIORRNVOL
HQXPV$5(
7KLVNLQG ,WWXUQVRXWWKDW FUHDWHGDQHZ
H
"
GRHVQWLW RIFODVV+HUHZHY UV
H
G
E
LQ
P
N
H
VSHFLDO W\SHFDOOHG0
G
H
W
HQXPHUD
7KHVHOHFWHG%DQG0HPEHUYDULDEOHLVRIW\SH
0HPEHUVDQGFDQ21/<KDYHDYDOXHRI
-(55<%2%%<RU3+,/

!NEW OFlCIALhENUMv
SXEOLFHQXP0HPEHUV^-(55<%2%%<3+,/`
SXEOLF0HPEHUVVHOHFWHG%DQG0HPEHU
ODWHULQWKHFRGH
LI VHOHFWHG%DQG0HPEHU 0HPEHUV-(55< ^
GR-(55<UHODWHGVWXII
`

1RQHHGWRZRUU\DERXWWKLVYDULDEOHVYDOXH

7KHV\QWD[WRUHIHUWRDQHQXPLQVWDQFH

<RXUHQXPH[WHQGVMDYDODQJ(QXP
7HENYOUCREATEANENUM YOURECREATINGANEWCLASS ANDYOUREIMPLICITLYEXTENDING
MDYDODQJ(QXP9OUCANDECLAREANENUMASITSOWNSTANDALONECLASS INITSOWN
SOURCElLE ORASAMEMBEROFANOTHERCLASS

8VLQJLIDQGVZLWFKZLWK(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 

3RS4XL]:KDWVWKHRXWSXW"

$QVZHU


JRGHHS&DVVLG\

0HPEHUVLI1DPH 0HPEHUV3+,/
VZLWFK LI1DPH ^
FDVH-(55<6\VWHPRXWSULQW PDNHLWVLQJ 
FDVH3+,/6\VWHPRXWSULQW JRGHHS 
FDVH%2%%<6\VWHPRXWSULQWOQ &DVVLG\ 
`


ZRUNILQH
H
V
H
K
W

I
R

%RWK
G
LVSULQWH
5DW'RJ

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
QWSDVVHGLQORZ
H
P
X
J
U
D

Q
D

HGEH
7KLVLV
FWRUGHFODU
X
U
VW
Q
R
F

H
K
HQXP1DPHV^
W
G
7KHVHDUHWKHVRFDOOHVVERGLHV
-(55< OHDGJXLWDU ^SXEOLF6WULQJVLQJV ^
UHWXUQSODLQWLYHO\`
FRQVWDQWVSHFLILFFOD ULGLQJWKH
`
7KLQNRIWKHPDVRYHU WKLVFDVH
%2%%< UK\WKPJXLWDU ^SXEOLF6WULQJVLQJV ^
EDVLFHQXPPHWKRG LQLIVLQJ LV
UHWXUQKRDUVHO\`
WKHVLQJ PHWKRG  WKDQHQXP
`
FDOOHGRQDYDULDEOHZL %%<
3+,/ EDVV 
YDOXHRI-(55<RU%2
SXEOLFFODVV+IM(QXP^

Licensed by
Eduard Simons
104038

SULYDWH6WULQJLQVWUXPHQW

1DPHV 6WULQJLQVWUXPHQW ^
WKLVLQVWUXPHQW LQVWUXPHQW
`
SXEOLF6WULQJJHW,QVWUXPHQW ^
UHWXUQWKLVLQVWUXPHQW
`
SXEOLF6WULQJVLQJV ^
UHWXUQRFFDVLRQDOO\
`
`

7KLVLVWKHHQXPVFRQVWUXFWRU,WUXQV
RQFHIRUHDFKGHFODUHGHQXPYDOXH LQ
WKLVFDVHLWUXQVWKUHHWLPHV 

<RXOOVHHWKHVHPHWKRGVEHLQJFDOOHGIURPPDLQ 

KD
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^
(YHU\HQXPFRPHVZLW KRG
IRU 1DPHVQ1DPHVYDOXHV ^
HW
EXLOWLQYDOXHV P LQD
6\VWHPRXWSULQW Q 
LVW\SLFDOO\XVHG
6\VWHPRXWSULQW LQVWUXPHQWQJHW,QVWUXPHQW  ZKLFK
IRUORRSDVVKRZQ
6\VWHPRXWSULQWOQ VLQJVQVLQJV 
`
`
`
)LOH(GLW:LQGRZ+HOS%RRWOHJ
MDYD+IM(QXP
-(55<LQVWUXPHQWOHDGJXLWDUVLQJVSODLQWLYHO\
%2%%<LQVWUXPHQWUK\WKPJXLWDUVLQJVKRDUVHO\
3+,/LQVWUXPHQWEDVVVLQJVRFFDVLRQDOO\

1RWLFHWKDWWKHEDVLFVLQJ 
PHWKRGLVRQO\FDOOHGZKHQWKH
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\VDUHQWHQRXJK

)LYH0LQXWH
$/RQJ7ULS+RPH
0\VWHU\ &DSWDLQ%\WHRIWKH)ODWODQGVWDUVKLS7UDYHUVHUKDGUHFHLYHGDQXUJHQW7RS6HFUHWWUDQVPLVVLRQ
IURPKHDGTXDUWHUV7KHPHVVDJHFRQWDLQHGKHDYLO\HQFU\SWHGQDYLJDWLRQDOFRGHVWKDWWKH
7UDYHUVHUZRXOGQHHGWRVXFFHVVIXOO\SORWDFRXUVHKRPHWKURXJKHQHP\VHFWRUV7KHHQHP\
+DFNDULDQVIURPDQHLJKERULQJJDOD[\KDGGHYLVHGDGHYLOLVKFRGHVFUDPEOLQJUD\WKDWZDVFDSDEOH
RIFUHDWLQJERJXVREMHFWVRQWKHKHDSRIWKH7UDYHUVHUVRQO\QDYLJDWLRQDOFRPSXWHU,Q
DGGLWLRQWKHDOLHQUD\FRXOGDOWHUYDOLGUHIHUHQFHYDULDEOHVVRWKDWWKH\UHIHUUHGWRWKHVH
ERJXVREMHFWV7KHRQO\GHIHQVHWKH7UDYHUVHUFUHZKDGDJDLQVWWKLVHYLO+DFNDULDQUD\ZDV
WRUXQDQLQOLQHYLUXVFKHFNHUZKLFKFRXOGEHLPEHGGHGLQWRWKH7UDYHUVHUVVWDWHRIWKHDUW
-DYDFRGH
&DSWDLQ%\WHJDYH(QVLJQ6PLWKWKHIROORZLQJSURJUDPPLQJLQVWUXFWLRQVWRSURFHVVWKHFULWLFDO
QDYLJDWLRQDOFRGHV
3XWWKHUVWYHFRGHVLQDQDUUD\RIW\SH3DUVHF.H\3XWWKHODVWFRGHVLQDYHE\YHWZR
GLPHQVLRQDODUUD\RIW\SH4XDGUDQW.H\3DVVWKHVHWZRDUUD\VLQWRWKHSORW&RXUVH PHWKRGRIWKH
SXEOLFQDOFODVV6KLS1DYLJDWLRQ2QFHWKHFRXUVHREMHFWLVUHWXUQHGUXQWKHLQOLQHYLUXVFKHFNHU
DJDLQVWDOOWKHSURJUDPVUHIHUHQFHYDULDEOHVDQGWKHQUXQWKH1DY6LPSURJUDPDQGEULQJPHWKH
UHVXOWV
$IHZPLQXWHVODWHU(QVLJQ6PLWKUHWXUQHGZLWKWKH1DY6LPRXWSXW1DY6LPRXWSXWUHDG\IRU
UHYLHZVLUGHFODUHG(QVLJQ6PLWK)LQHUHSOLHGWKH&DSWDLQ3OHDVHUHYLHZ\RXUZRUN<HV
VLUUHVSRQGHGWKH(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,ORDGHGWKHUVWFRGHVLQWRWKH3DUVHF.H\DUUD\XVLQJDIRUORRSDQGWKHQ,ORDGHGWKHODVW
FRGHVLQWRWKH4XDGUDQW.H\DUUD\XVLQJQHVWHGIRUORRSV1H[W,UDQWKHYLUXVFKHFNHUDJDLQVW
DOOUHIHUHQFHYDULDEOHVIRUWKH3DUVHF.H\DUUD\DQGIRULWVHOHPHQWVIRUWKH4XDGUDQW.H\
DUUD\DQGIRULWVHOHPHQWV2QFHWKHYLUXVFKHFNUHWXUQHGZLWKQRYLUXVHVGHWHFWHG,UDQWKH
1DY6LPSURJUDPDQGUHUDQWKHYLUXVFKHFNHUMXVWWREHVDIH6LU
&DSWDLQ%\WHJDYHWKH(QVLJQDFRROORQJVWDUHDQGVDLGFDOPO\(QVLJQ\RXDUHFRQQHGWR
TXDUWHUVIRUHQGDQJHULQJWKHVDIHW\RIWKLVVKLS,GRQWZDQWWRVHH\RXUIDFHRQWKLVEULGJHDJDLQ
XQWLO\RXKDYHSURSHUO\OHDUQHG\RXU-DYD/LHXWHQDQW%RROHDQWDNHRYHUIRUWKH(QVLJQDQGGRWKLV
MREFRUUHFWO\

:K\GLGWKHFDSWDLQFRQQHWKH(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.

DSSHQGL[%7RS7HQ5HIHUHQFH

SX]]OHDQVZHUV

)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.

Вам также может понравиться