You are on page 1of 100

Table of Contents

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

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

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

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

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

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

BY+ATHY3IERRAAND"ERT"ATES

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


0RINTEDINTHE5NITED3TATESOF!MERICA

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


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

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

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


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

)3".
;-=

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

Licensed by
DESPITESHAKYEVIDENCE

Eduard Simons
104038

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

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

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

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

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

h)TSFAST IRREVERENT FUN ANDENGAGING"ECAREFULˆYOUMIGHTACTUALLYLEARNSOMETHINGv


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

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

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

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

h)FYOUWANTTOLEARN*AVA LOOKNOFURTHERWELCOMETOTHElRST'5) BASEDTECHNICALBOOK4HIS


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

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

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


ˆ-ICHAEL9UAN AUTHOR %NTERPRISE*-%

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

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

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

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

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

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

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

h)LAUGHED )CRIED ITMOVEDMEv


ˆ$AN3TEINBERG %DITOR IN #HIEF JAVANET

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

h*USTTHERIGHTTONEFORTHEGEEKED OUT CASUAL COOLGURUCODERINALLOFUS4HERIGHTREFERENCEFORPRAC


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

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

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

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

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

Other books in O’Reilly’s Head First series


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

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

,QWUR
,FDQ·WEHOLHYHWKH\
SXWWKDWLQD-DYD
SURJUDPPLQJERRN


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

[[L

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

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

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

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

 $UH\RXDNLFNEXWW&SURJUDPPHU
ORRNLQJIRUDUHIHUHQFHERRN"

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

THISBOOKISNOTFORYOU

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

[[LL LQWUR

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

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

\RXDUHKHUH [[LLL

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

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

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

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

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

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

[[LY LQWUR

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

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

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

\RXDUHKHUH [[Y

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

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


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

[[YL LQWUR

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

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

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

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

\RXDUHKHUH [[YLL

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

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

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

[[YLLL LQWUR

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

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

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

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

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

,
-HVVLFD·V0,1 -HVVLFD6DQW

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

[[[ LQWUR

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

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

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

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

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

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

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

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

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

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

[[[LL LQWUR

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

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

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

WKLVLVDQHZFKDSWHU 

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

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

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

Eduard Simons
UHWXUQ

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

KWLM

104038
K`gglE]

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

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

 FKDSWHU

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

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

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

1RWHWKLVLVQRWPHDQWWREHDWXWRULDO\RX·OOEH
ZULWLQJUHDOFRGHLQDPRPHQWEXWIRUQRZZHMXVW
ZDQW\RXWRJHWDIHHOIRUKRZLWDOOILWVWRJHWKHU

\RXDUHKHUH 

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















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


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

3LOW !LITTLEFASTER CLASSES CLASSES


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

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



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

6KDUSHQ \RXU SHQFLO


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

LQWVL]H  GHFODUHDQLQWHJHUYDULDEOHQDPHG¶VL]H·DQGJLYHLWWKHYDOXH


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

ZKLOH [! ^
P\'RJSOD\ 
`

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

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

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

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

\RXDUHKHUH 

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

6KDUSHQ \RXU SHQFLO JW\`N[\

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

LQWVL]H  GHFODUHDQLQWHJHUYDULDEOHQDPHG¶VL]H·DQGJLYHLWWKHYDOXH


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

ZKLOH [! ^ NHHSORRSLQJDVORQJDV[LVJUHDWHUWKDQ


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

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


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

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

 FKDSWHU

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

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

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

3XWDFODVVLQDVRXUFHÀOH :KDWJRHVLQD SXEOLFFODVV'RJ^


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

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

\RXDUHKHUH 

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

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

WKLVLVD WKHQDPHRI RSHQLQJFXUO\EUDFH


SXEOLFVRHYHU\RQH FODVV GXK WKLVFODVV  RIWKHFODVV
FDQDFFHVVLW

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

6\VWHPRXWSULQW ³,5XOH´  HQW0867


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

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

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

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

SXEOLFFODVV0\)LUVW$SS^ N6DYH

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

`

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

FRPSLOHU N5XQ

)LOH(GLW:LQGRZ+HOS6FUHDP

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

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

0\)LUVW$SSFODVV

\RXDUHKHUH 

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

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

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

 FKDSWHU

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

ZKLOH PRUH%DOOV WUXH ^


NHHS-XJJOLQJ 
`

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

\RXDUHKHUH 

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

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

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

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

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

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

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

ERROHDQLV+RW WUXH ƒ 3XWDERROHDQWHVWLQVLGHSDUHQWKHVHV


ZKLOH LV+RW ^`
ZKLOH [  ^`

 FKDSWHU

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

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

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

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

"UTWECANADDANELSETOTHECONDITION SOTHATWECAN PUBLICCLASS$OO"EE[


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

\RXDUHKHUH 

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

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

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

ZKLOH EHHU1XP! ^

LI EHHU1XP  ^
ZRUG ³ERWWOH´VLQJXODUDVLQ21(ERWWOH
`

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

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

4HERESSTILLONELITTLEFLAWINOUR
CODE)TCOMPILESANDRUNS BUTTHE
OUTPUTISNTPERFECT3EEIF
YOUCANSPOTTHEFLAW ANDFIXIT

 FKDSWHU

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

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


)0MULTICASTIFYOUREGONNABEALLPICKYABOUTPROTOCOL

\RXDUHKHUH 

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

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

SXEOLFFODVV3KUDVH20DWLF^
SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

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

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

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

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

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

 FKDSWHU

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

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

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

2. &OREACHOFTHETHREELISTSARRAYS THEGOALISTOPICKARANDOMWORD SOWEHAVE


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

3.7ENEEDTHREERANDOMNUMBERS*AVASHIPSOUT OF THE BOX OFF THE SHELF SHRINK


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

5.&INALLY WEPRINTTHEPHRASETOTHECOMMAND LINEANDVOILA7EREINMARKETING


\RXDUHKHUH 

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

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

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

 FKDSWHU

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

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

\RXDUHKHUH 

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

1dQ^OU_Q Code Magnets


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

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

LI [  ^
6\VWHPRXWSULQW ´EFµ 
`

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

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

LQW[ 

[
[
6\
VWHPRXW
 SULQW ´
µ 

^
H [!
ZKLO

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

 FKDSWHU

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

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

"%THECOMPILER LI [ ^


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

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

\RXDUHKHUH 

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

  

  

-DYD&URVV


   


,ETSGIVEYOURRIGHTBRAINSOMETHINGTODO
)TSYOURSTANDARDCROSSWORD BUTALMOSTALL 

OFTHESOLUTIONWORDSAREFROMCHAPTER*UST

Licensed by
  
TOKEEPYOUAWAKE WEALSOTHREWINAFEW
NON *AVA WORDSFROMTHEHIGH TECHWORLD



Eduard Simons
 

!CROSS 

#OMMAND LINEINVOKER

104038
"ACKAGAIN 

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

1UITEACREWOFCHARACTERS #OMEBACKEMPTY HANDED

!NNOUNCEANEWCLASSORMETHOD /PENHOUSE

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

 FKDSWHU

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

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

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

 6\VWHPRXWSULQW [³³\³³ 


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

[ [ 
\ \[


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

\RXDUHKHUH 

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

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

3RRO3X]]OH ZKLOH BBBBBBBBBB ^


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

BBBBBBBBBBBBBBBBBBBBBBBBBBBB

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

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

BBBBBBBBBBBB
`
`
`

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

 FKDSWHU

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

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

\RXDUHKHUH 

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

  
) 9 3
  
-$9$ 2
/ 23 8

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

$ , 17 2 $ ,

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

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

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

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

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

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


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

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


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

 FKDSWHU

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

$7ULSWR2EMHFWYLOOH

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

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

WKLVLVDQHZFKDSWHU 

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

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

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

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

 FKDSWHU

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

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

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

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

\RXDUHKHUH 

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

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

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

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

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

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

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


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


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

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

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

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

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

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

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

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

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

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

 FKDSWHU

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

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

!MYFROMTHESECONDmOOR
UNBEKNOWNSTTOALL THE0ROJECT
-ANAGERHADGIVENTHESPECTO
THREEPROGRAMMERS

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

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

\RXDUHKHUH 

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

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

6KRSSLQJ&DUW %XWWRQ $ODUP

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

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

NLQVWDQFHYDULDEOHV QV[\IVKM WLWOH SVW_[


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

4HINGSANOBJECTKNOWSABOUTITSELFARECALLEDINSTANCE 6KDUSHQ \RXU SHQFLO


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

 FKDSWHU

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

:KDW·VWKHGLIIHUHQFHEHWZHHQ
DFODVVDQGDQREMHFW"

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

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

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

\RXDUHKHUH 

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

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

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

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

 FKDSWHU

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

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

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

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

4HE-OVIE4EST$RIVECLASSCREATESOBJECTSINSTANCES OF REMHFW  JHQUH


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

UDWLQJ

\RXDUHKHUH 

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

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

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

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

 4HE'UESS'AMEOBJECTSSTART'AME METHODISWHERETHEENTIREGAMEPLAYSOUT JXHVV D


)TCREATESTHREEPLAYERS THENhTHINKSvOFARANDOMNUMBERTHETARGETFORTHEPLAYERS
TOGUESS )TTHENASKSEACHPLAYERTOGUESS CHECKSTHERESULT ANDEITHERPRINTSOUT
INFORMATIONABOUTTHEWINNINGPLAYERS ORASKSTHEMTOGUESSAGAIN

 FKDSWHU

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

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

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

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

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

\RXDUHKHUH 

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

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

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

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

 FKDSWHU

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

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

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

A: A: 9ES ITWOULDBEABIG RIDQREMHFW


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

\RXDUHKHUH 

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

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

 
FODVV7DSH'HFN^
$ Licensed by
ERROHDQFDQ5HFRUG IDOVH

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

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

LI WFDQ5HFRUG WUXH ^ LI GFDQ5HFRUG WUXH ^


 WUHFRUG7DSH   GUHFRUG'9' 
` `
` `
` `

 FKDSWHU

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

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

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

SXEOLFVWDWLFYRLGPDLQ 6WULQJ>@DUJV ^

L
I GVQ
DUH WUXH 
 ^
GSOD\
6QDUH
` 

GVQDUH IDOVH

FODVV'UXP.LW7HVW'ULYH^

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

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

\RXDUHKHUH 

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

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


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

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

 FKDSWHU

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

!BUNCHOF*AVACOMPONENTS INFULLCOSTUME AREPLAYINGAPARTY


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

P , " APPLY&ILLINTHEBLANKSNEXTTOTHESENTENCEWITHTHENAMESOFONEOR
MOREATTENDEES4HEFIRSTONESONUS

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

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

,EHKDYHOLNHDWHPSODWH

,OLNHWRGRVWXII

,FDQKDYHPDQ\PHWKRGV

,UHSUHVHQW¶VWDWH·

,KDYHEHKDYLRUV

,DPORFDWHGLQREMHFWV

,OLYHRQWKHKHDS

,DPXVHGWRFUHDWHREMHFWLQVWDQFHV

0\VWDWHFDQFKDQJH

,GHFODUHPHWKRGV

,FDQFKDQJHDWUXQWLPH

\RXDUHKHUH 

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

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

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

YRLGSOD\7RS+DW ^ LI WFDQ5HFRUG WUXH ^


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

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

 FKDSWHU

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

0UZZLE3OLUTIONS

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

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


\RXDUHKHUH 

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

.QRZ<RXU9DULDEOHV

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

WKLVLVDQHZFKDSWHU 

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

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

YDULDEOHVPXVWKDYHDW\SH
"ESIDESATYPE AVARIABLENEEDSANAME SOTHAT
YOUCANUSETHATNAMEINCODE

YDULDEOHVPXVWKDYHDQDPH

LQWFRXQW
W\SH QDPH

.OTE7HENYOUSEEASTATEMENTLIKEhANOBJECT
OFTYPE8v THINKOFTYPEANDCLASSASSYNONYMS
7ELLRElNETHATALITTLEMOREINLATERCHAPTERS

 FKDSWHU

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

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

)THASASIZE ANDATYPE)NTHISCHAPTER WEREGOINGTOLOOKlRSTATTHE QXPHULF DOODUHVLJQHG


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

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

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

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

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

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


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

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

Eduard Simons
ALWAYSERRSONTHESIDEOF
SAFETY
ZRQ¶WZRUN

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

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

LQWVL]H   GHFODUHDQLQWQDPHGVL]HDVVLJQLWWKHYDOXH V \


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

 FKDSWHU

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

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

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

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

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

\RXDUHKHUH 

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

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

N 7KHUHLVDFWXDOO\QRVXFKWKLQJDVDQREMHFWYDULDEOH

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

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

 FKDSWHU

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

7KHVWHSVRIREMHFW
GHFODUDWLRQFUHDWLRQDQG
DVVLJQPHQW

 

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

)VWJRMK\ZMNMZMVKMQ[R][\ 'HFODUHDUHIHUHQFH

IVW\PMZ^IZQIJTM^IT]M YDULDEOH

3OMETHINGTHATGOESINACUP 'RJP\'RJ QHZ'RJ 


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

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

:MNMZMVKM>IZQIJTM  &UHDWHDQREMHFW
HFW

'RJP\'RJ QHZ'RJ 
EM

'RJP\'RJ QHZ'RJ  'RJR


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

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

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

\RXDUHKHUH 

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

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

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

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

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

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

4QNMWV\PMOIZJIOMKWTTMK\QJTMPMIX

%RRNE QHZ%RRN 
%R 
RNREMHFW


%RRNF QHZ%RRN 
$ECLARETWO"OOKREFERENCE

EAP
VARIABLES#REATETWONEW"OOK Z %R
RNREMHFW

LEH
OBJECTS!SSIGNTHE"OOKOBJECTSTO
THEREFERENCEVARIABLES

C TIB
%RRN

L LE
4HETWO"OOKOBJECTSARENOWLIVING
CO
ONTHEHEAP

E
; AG

B
2EFERENCES

AR
G
/BJECTS
%RRN

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


VARIABLED"UTWHATDOESTHISMEAN 
)TSLIKESAYING h4AKETHEBITSINC MAKEA
COPYOFTHEM ANDSTICKTHATCOPYINTODv

W
Z

EAP
% RR F
%RWKFDQGGUHIHUWRWKHVDPH NREMH

LEH
REMHFW

C TIB
7KHFDQGGYDULDEOHVKROG
%RRN

L LE
WZRGLIIHUHQWFRSLHVRIWKH CO

E
VDPHYDOXH7ZRUHPRWHV ; AG

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

F E
!SSIGNTHEVALUEOFVARIABLEBTO 
VARIABLEC"YNOWYOUKNOWWHAT
W

THISMEANS4HEBITSINSIDEVARIABLE F
BARECOPIED ANDTHATNEWCOPYIS %RRNREMH 
STUFFEDINTOVARIABLEC


W

Z
EAP

%RWKEDQGFUHIHUWRWKH % RR F
VDPHREMHFW NREMH
LEH
C TIB

2EFERENCES %RRN
L LE

/BJECTS CO
E

; AG
B
AR

G
\
\RXDUHKHUH 

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

4QNMIVLLMI\PWV\PMPMIX

%RRNE QHZ%RRN 
%R
RNREMHFW 


%RRNF QHZ%RRN 
$ECLARETWO"OOKREFERENCEVARIABLES

EAP
#REATETWONEW"OOKOBJECTS!SSIGN Z %R
RNREMHFW

LEH
THE"OOKOBJECTSTOTHEREFERENCE

C TIB
VARIABLES
%RRN

L LE
4HETWOBOOKOBJECTSARENOWLIVING CO

E
ONTHEHEAP AG
;

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

4HEBITSINSIDEVARIABLECARECOPIED AND
THATNEWCOPYISSTUFFEDINTOVARIABLEB
%R
RNREMHFW
"OTHVARIABLESHOLDIDENTICALVALUES


%RWKEDQGFUHIHUWRWKHVDPH 
REMHFW2EMHFWLVDEDQGRQHG

EAP
DQGHOLJLEOHIRU*DUEDJH&ROOHF

W
Z F

LEH
% RR
WLRQ *&  NREMH

C TIB
!CTIVE2EFERENCES

L LE
%RRN CO
2EACHABLE/BJECTS

E
AG

B
!BANDONED/BJECTS

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


OBJECTCANSTILLBEASSIGNEDTOIT
 EAP
2EMHFWVWLOOKDVDQDFWLYH


W

UHIHUHQFH E DQGDVORQJ Z F
LEH

% RR
DVLWGRHVWKHREMHFWLVQRW NREMH
C TIB

HOLJLEOHIRU*&
L LE

!CTIVE2EFERENCES
%RRN CO
E

AG
NULL2EFERENCES
QXOOUHIHUHQFH GWRDQ\WKLQJ
B
AR

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

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

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

&UHDWHDQHZLQWDUUD\ZLWKDOHQJWK
 RIDQGDVVLJQLWWRWKHSUHYLRXVO\
GHFODUHGLQW>@YDULDEOHQXPV

QXPV QHZLQW>@

*LYHHDFKHOHPHQWLQWKHDUUD\
LQWYDULDEOHV
 DQLQWYDOXH
5HPHPEHUHOHPHQWVLQDQLQW
DUUD\DUHMXVWLQWYDULDEOHV
OHV

QXPV>@ 
YDULDE

LQWLQWLQWLQWLQWLQWLQW
QXPV>@ 
LQW

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

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

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

5ISMIVIZZIaWN,WO[

'HFODUHD'RJDUUD\YDULDEOH

'RJ>@SHWV

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

SHWV QHZ'RJ>@

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

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

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

6KDUSHQ \RXU SHQFLO

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

 FKDSWHU

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

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


REFERENCEVARIABLElDOTOACCESS 'RJREMH
THENAMEVARIABLE

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

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

\RXDUHKHUH 

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

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

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

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

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


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

 FKDSWHU

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

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

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

\RXDUHKHUH 

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

1dQ^OU_Q Code Magnets


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

LQWUHI
ZKLOH \ ^

6\VWHPRXWSULQWOQ LVODQGV>UHI@ 


LQGH[>@

LQGH[>@

LQGH[>@

LQGH[>@

6WULQJ>@LVODQGV QHZ6WULQJ>@

6\VWHPRXWSULQW ´LVODQG ´ 

LQW>@
LQGH[ Q
HZLQW> @
\ \

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

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

 FKDSWHU

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

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

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

TAXNEW4RIANGLE 

\RXDUHKHUH 

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

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

2EFERENCE6ARIABLES (EAP1UIZ/BJECTS

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

KT>@
QL%

KT>@

 FKDSWHU

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

7KHFDVHRIWKHSLOIHUHGUHIHUHQFHV

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

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

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

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

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

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

\RXDUHKHUH 

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

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

` %K>]@QDPH ´ELOERµ


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

 FKDSWHU

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

3X]]OH6ROXWLRQV

<PMKI[MWN\PMXQTNMZMLZMNMZMVKM[

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

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

\RXDUHKHUH 

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

+RZ2EMHFWV%HKDYH
7KLVRXJKWD
FKDQJHKHUVWDWH

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

WKLVLVDQHZFKDSWHU 

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

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

WDQFHV
Licensed by
7ELLSORTOF

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

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

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

<HVDQRWKHUVWXQQLQJO\FOHDUDQVZHU

 FKDSWHU

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

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

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

FODVV'RJ7HVW'ULYH^

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

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

\RXDUHKHUH 

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

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

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



SDUDPHWHU 

 7KHELWVODQGLQWKHQXP2I%DUNV
 SDUDPHWHU DQLQWVL]HGYDULDEOH 
LQW

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

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

You might also like