Head First Java 2nd Edition-1-100
Head First Java 2nd Edition-1-100
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
(GLWRU -IKE,OUKIDES
&RYHU'HVLJQHU %DIE&REEDMAN
,QWHULRU'HVLJQHUV+ATHY3IERRAAND"ERT"ATES
3ULQWLQJ+LVWRU\
-AY &IRST%DITION
&EBRUARY 3ECOND%DITION
9OUMIGHTWANTTOPICKUPACOPYOFBOTHEDITIONSFORYOURKIDS4HINKE"AY©
)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.
4OOURBRAINSFORALWAYSBEINGTHERE
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)NAWRYHIPMANNERTHEAUTHORSMAKELEARNING*AVAANENGAGING@WHATRETHEYGONNADO
NEXTEXPERIENCEv
7ARREN+EUFFEL3OFTWARE$EVELOPMENT-AGAZINE
hTHEONLYWAYTODECIDETHEWORTHOFATUTORIALISTODECIDEHOWWELLITTEACHES(EAD&IRST*AVAEXCELSAT
TEACHING/+)THOUGHTITWASSILLYTHEN)REALIZEDTHAT)WASTHOROUGHLYLEARNINGTHETOPICSAS)WENT
THROUGHTHEBOOKv
h4HESTYLEOF(EAD&IRST*AVAMADELEARNINGWELLEASIERv
SLASHDOTHONESTPUCKSREVIEW
h"EYONDTHEENGAGINGSTYLETHATDRAGSYOUFORWARDFROMKNOW
NOTHINGINTOEXALTED*AVAWARRIORSTATUS
(EAD&IRST*AVACOVERSAHUGEAMOUNTOFPRACTICALMATTERSTHATOTHERTEXTSLEAVEASTHEDREADEDhEXERCISE
FORTHEREADERv)TSCLEVERWRYHIPANDPRACTICALTHEREARENTALOTOFTEXTBOOKSTHATCANMAKETHATCLAIM
ANDLIVEUPTOITWHILEALSOTEACHINGYOUABOUTOBJECTSERIALIZATIONANDNETWORKLAUNCHPROTOCOLSv
$R$AN2USSELL$IRECTOROF5SER3CIENCESAND%XPERIENCE2ESEARCH
)"-!LMADEN2ESEARCH#ENTERANDTEACHES!RTIlCIAL)NTELLIGENCEAT3TANFORD5NIVERSITY
h*AVATECHNOLOGYISEVERYWHERE)FYOUDEVELOPSOFTWAREANDHAVENTLEARNED*AVAITSDElNITELY
TIMETODIVEIN(EAD&IRSTv
3COTT-C.EALY3UN-ICROSYSTEMS#HAIRMAN0RESIDENTAND#%/
h(EAD&IRST*AVAISLIKE-ONTY0YTHONMEETSTHEGANGOFFOURTHETEXTISBROKENUPSOWELLBYPUZZLES
ANDSTORIESQUIZZESANDEXAMPLESTHATYOUCOVERGROUNDLIKENOCOMPUTERBOOKBEFOREv
$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
NEWPROGRAMMINGLANGUAGESANDDONOTCOMEFROMACOMPUTERSCIENCEORPROGRAMMINGBACKGROUND
THISBOOKISAGEM4HISISONEBOOKTHATMAKESLEARNINGACOMPLEXCOMPUTERLANGUAGEFUN)HOPE
THATTHEREAREMOREAUTHORSWHOAREWILLINGTOBREAKOUTOFTHESAMEOLDMOLDOF@TRADITIONALWRITING
STYLES,EARNINGCOMPUTERLANGUAGESSHOULDBEFUNNOTONEROUSv
*UDITH4AYLOR3OUTHEAST/HIO-ACROMEDIA5SER'ROUP
h)FYOURERELATIVELYNEWTOPROGRAMMINGANDYOUAREINTERESTEDIN*AVAHERESYOURBOOK#OVERING
EVERYTHINGFROMOBJECTSTOCREATINGGRAPHICALUSERINTERFACES'5) EXCEPTIONERROR HANDLINGTONET
WORKINGSOCKETS ANDMULTITHREADINGEVENPACKAGINGUPYOURPILEOFCLASSESINTOONEINSTALLATIONlLE
THISBOOKISQUITECOMPLETE)FYOULIKETHESTYLE)MCERTAINYOULLLOVETHEBOOKANDLIKEMEHOPE
THATTHE(EAD&IRSTSERIESWILLEXPANDTOMANYOTHERSUBJECTSv
,INUX1UESTIONSORG
h@(EAD&IRST*AVAGIVESNEWMEANINGTOTHEIRMARKETINGPHRASE{4HERESAN/2EILLYFORTHAT{)
PICKEDTHISUPBECAUSESEVERALOTHERS)RESPECTHADDESCRIBEDITINTERMSLIKE@REVOLUTIONARYANDA
DESCRIBEDARADICALLYDIFFERENTAPPROACHTOTHETEXTBOOK4HEYWEREARE RIGHT)NTYPICAL/2EILLY
FASHIONTHEYVETAKENASCIENTIlCANDWELLCONSIDEREDAPPROACH4HERESULTISFUNNYIRREVERENTTOPICAL
INTERACTIVEANDBRILLIANT2EADINGTHISBOOKISLIKESITTINGINTHESPEAKERSLOUNGEATAVIEWCONFERENCE
LEARNINGFROMnANDLAUGHINGWITHnPEERS)FYOUWANTTO5.$%234!.$*AVAGOBUYTHISBOOKv
!NDREW0OLLACKWWWTHENORTHCOM
h)FANYONEINTHEWORLDISFAMILIARWITHTHECONCEPTOF@(EAD&IRSTITWOULDBEME4HIS
BOOKISSOGOOD)DMARRYITON46v
2ICK2OCKWELL#OMEDIAN
4HEORIGINAL&/84ELEVISIONh7HO7ANTSTO-ARRYA-ILLIONAIREvGROOM
h4HISSTUFFISSOFRICKINGGOODITMAKESMEWANNA7%%0)MSTUNNEDv
&LOYD*ONES3ENIOR4ECHNICAL7RITER0OOLBOY"%!
h!FEWDAYSAGO)RECEIVEDMYCOPYOF(EAD&IRST*AVABY+ATHY3IERRAAND"ERT"ATES)MONLYPARTWAY
THROUGHTHEBOOKBUTWHATSAMAZEDMEISTHATEVENINMYSLEEP
DEPRIVEDSTATETHATlRSTEVENING)FOUND
MYSELFTHINKING@/+JUSTONEMOREPAGETHEN)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#UNNINGHAMINVENTOROFTHE7IKI
ANDFOUNDEROFTHE(ILLSIDE'ROUP
h-YlRSTREACTIONWASTOROLLONTHEmOORLAUGHING!FTER)PICKEDMYSELFUP)REALIZEDTHATNOTONLYISTHE
BOOKTECHNICALLYACCURATEITISTHEEASIESTTOUNDERSTANDINTRODUCTIONTODESIGNPATTERNSTHAT)HAVESEENv
$R4IMOTHY!"UDD!SSOCIATE0ROFESSOROF#OMPUTER3CIENCEAT/REGON3TATE5NIVERSITY
AUTHOROFMORETHANADOZENBOOKSINCLUDING#FOR*AVA0ROGRAMMERS
h&).!,,9
A*AVABOOKWRITTENTHEWAY)WOULDAWROTEITIF)WEREME
3ERIOUSLYTHOUGH
THISBOOKABSOLUTELYBLOWSAWAYEVERYOTHERSOFTWAREBOOK)VEEVERREAD
!GOODBOOKISVERYDIFlCULTTOWRITEYOUHAVETOTAKEALOTOFTIMETOMAKETHINGSUNFOLDINA
NATURALhREADERORIENTEDvSEQUENCE)TSALOTOFWORK-OSTAUTHORSCLEARLYARENTUPTOTHECHALLENGE
#ONGRATULATIONSTOTHE(EAD&IRST%*"TEAMFORAlRSTCLASSJOB
7ALLY&LINT
h)COULDNOTHAVEIMAGINEDAPERSONSMILINGWHILESTUDYINGAN)4BOOK5SING(EAD&IRST%*"
MATERIALS)GOTAGREATSCORE ANDSETAWORLDRECORDASTHEYOUNGEST3#"#$YEARSv
!FSAH3HAFQUATWORLDSYOUNGEST3#"#$
h4HIS(EAD&IRST3ERVLETSBOOKISASGOODASTHE(EAD&IRST%*"BOOKWHICHMADEMELAUGH
!.$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
-DYD7LJHU$'HYHORSHU¶V1RWHERRN
-DYD&RRNERRN
-DYDLQD1XWVKHOO
-DYD1HWZRUN3URJUDPPLQJ
-DYD6HUYOHW -63&RRNERRN
-DYD6ZLQJ
-DYD6HUYHU)DFHV
-DYD6HUYHU3DJHV
3URJUDPPLQJ-DNDUWD6WUXWV
7RPFDW7KH'HILQLWLYH*XLGH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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"
)FYOUVEDONEANYTHINGWITHLOOPINGORIFTHEN
LOGICYOULLDOlNEWITHTHISBOOKBUT(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)TSALWAYSSEARCHINGSCANNINGWAITINGFOR
SOMETHINGUNUSUAL)TWASBUILTTHATWAYANDITHELPSYOUSTAYALIVE
4ODAYYOURELESSLIKELYTOBEATIGERSNACK"UTYOURBRAINSSTILL
LOOKING9OUJUSTNEVERKNOW
3OWHATDOESYOURBRAINDOWITHALLTHEROUTINEORDINARYNORMAL
THINGSYOUENCOUNTER%VERYTHINGITCANTOSTOPTHEMFROM
INTERFERINGWITHTHEBRAINSREALJOBRECORDINGTHINGSTHATMATTER)T
DOESNTBOTHERSAVINGTHEBORINGTHINGSTHEYNEVERMAKEITPASTTHE
hTHISISOBVIOUSLYNOTIMPORTANTvlLTER
(OWDOESYOURBRAINKNOWWHATSIMPORTANT3UPPOSEYOUREOUTFOR
ADAYHIKEANDATIGERJUMPSINFRONTOFYOUWHATHAPPENSINSIDEYOUR
HEAD
*UHDW2QO\
.EURONSlRE%MOTIONSCRANKUP#HEMICALSSURGE PRUHGXOOGU\
ERULQJSDJHV
!NDTHATSHOWYOURBRAINKNOWS
WKLQNV
7KLVPXVWEHLPSRUWDQW'RQ·WIRUJHWLW
\RXUEUDQLQ·WZRUWK
"UTIMAGINEYOUREATHOMEORINALIBRARY)TSASAFEWARMTIGER
FREE 7+,6LQJLV
ZONE9OURESTUDYING'ETTINGREADYFORANEXAM/RTRYINGTOLEARN VDY
SOMETOUGHTECHNICALTOPICYOURBOSSTHINKSWILLTAKEAWEEKTENDAYS
ATTHEMOST
*USTONEPROBLEM9OURBRAINSTRYINGTODOYOUABIGFAVOR)TS
TRYINGTOMAKESURETHATTHISOBVIOUSLYNON
IMPORTANTCONTENT
DOESNTCLUTTERUPSCARCERESOURCES2ESOURCESTHATAREBETTER
SPENTSTORINGTHEREALLYBIGTHINGS,IKETIGERS,IKETHEDANGEROF
lRE,IKEHOWYOUSHOULDNEVERAGAINSNOWBOARDINSHORTS
!NDTHERESNOSIMPLEWAYTOTELLYOURBRAINh(EYBRAINTHANK
YOUVERYMUCHBUTNOMATTERHOWDULLTHISBOOKISANDHOW
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
ALONEANDMAKELEARNIN ALSOMAKES
GR&DOF
ANDTRANSFERSTUDIES )T
Licensed by
IMPROVEM ENT IN REC ALL
VZ LWK LQ
NDABLE3XWWKHZRUG
THINGSMOREUNDERSTA THANONTHE UHWXUQYDOXH
DS KLF VTHEYRELATETORATHER
RUQHDUWKHJU WI LLB EU PTO TWICE
RPAGEANDLE 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
PERSONC 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
ONORALECTURE
DINNERPARTYCOMPANI
SS R
O\)NOTHERWORDSUNLE 'RHVLWPDNHVHQVHW
WW KH OH DUQ HU WR WKLQNPRUHGHHS AD VD\ 7XE, 6$ %DWKURRP"
*H HAPPENSINYOUR HE 2ULV
EURONSNOTHINGMUCH %DWKURRP,6$7XE"
YOUAC TIVELYFLEXYOURN RIOU SA NDINSPIREDTO 6$ UHODWLRQVKLS"
ATEDE NGA GED CU LWD +$
!READERHASTOBEMOTIV RATENEWK NOWLEDGE
PRO BLE MS DR AW CONCLUSIONSANDGENE
SOL VE DTHOUGHT
CHALLENGES ERCISESAN
EX
!NDFORTHATYOUNEED VOLVEBOTHSIDES
SANDACTIVITIESTHATIN
DEVWUDFWYRLGURDP PROVOK INGQUESTION
LESENSES
OFTHEBRAINANDMULTIP
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
NGUNEXP
TINGSTRANGEEYE
CATCHI CHMOREQUICKLYIFITSN
OT
OFTHEORDINARYINTERES BO RING 9OURBRAINWILLLEARNMU
OES NT HAV ETO BE
TOUGHTECHNICALTOPICD
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 ISECU RIOSITYFUNhWHATTHEv ARD OR REALIZE
7ERETALK INGEMOTIO SH
EVERYBODYELSETHINKSI
HEN YO US OLV EA PU ZZLELEARNSOMETHING 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
)FYOUREALLYWANTTOLEARNANDYOUWANTTOLEARNMOREQUICKLYANDMOREDEEPLY ,ZRQGHUKRZ,
PAYATTENTIONTOHOWYOUPAYATTENTION4HINKABOUTHOWYOUTHINK,EARNHOW FDQWULFNP\EUDLQ
YOULEARN LQWRUHPHPEHULQJ
WKLVVWXII
-OSTOFUSDIDNOTTAKECOURSESONMETACOGNITIONORLEARNINGTHEORYWHENWEWERE
GROWINGUP7EWEREEXPECTEDTOLEARNBUTRARELYTAUGHTTOLEARN
"UTWEASSUMETHATIFYOUREHOLDINGTHISBOOKYOUWANTTOLEARN*AVA!NDYOU
PROBABLYDONTWANTTOSPENDALOTOFTIME
4OGETTHEMOSTFROMTHISBOOKORANYBOOKORLEARNINGEXPERIENCETAKE
RESPONSIBILITYFORYOURBRAIN9OURBRAINONTHATCONTENT
4HETRICKISTOGETYOURBRAINTOSEETHENEWMATERIALYOURELEARNING
AS2EALLY)MPORTANT#RUCIALTOYOURWELL
BEING!SIMPORTANTAS
ATIGER/THERWISEYOUREINFORACONSTANTBATTLEWITHYOURBRAIN
DOINGITSBESTTOKEEPTHENEWCONTENTFROMSTICKING
6RMXVWKRZ'2\RXJHW\RXUEUDLQWRWUHDW-DYDOLNHLW
ZDVDKXQJU\WLJHU"
4HERESTHESLOWTEDIOUSWAYORTHEFASTERMOREEFFECTIVEWAY4HE
SLOWWAYISABOUTSHEERREPETITION9OUOBVIOUSLYKNOWTHATYOUARE
ABLETOLEARNANDREMEMBEREVENTHEDULLESTOFTOPICSIFYOUKEEPPOUNDING
ONTHESAMETHING7ITHENOUGHREPETITIONYOURBRAINSAYSh4HISDOESNTFEEL
IMPORTANTTOHIMBUTHEKEEPSLOOKINGATTHESAMETHINGOVERANDOVERANDOVERSO
)SUPPOSEITMUSTBEv
4HEFASTERWAYISTODOANYTHINGTHATINCREASESBRAINACTIVITYESPECIALLYDIFFERENTTYPES
OFBRAINACTIVITY4HETHINGSONTHEPREVIOUSPAGEAREABIGPARTOFTHESOLUTION
ANDTHEYREALLTHINGSTHATHAVEBEENPROVENTOHELPYOURBRAINWORKINYOURFAVOR
&OREXAMPLESTUDIESSHOWTHATPUTTINGWORDSWITHINTHEPICTURESTHEYDESCRIBEAS
OPPOSEDTOSOMEWHEREELSEINTHEPAGELIKEACAPTIONORINTHEBODYTEXT CAUSES
YOURBRAINTOTRYTOMAKESSENSEOFHOWTHEWORDSANDPICTURERELATEANDTHIS
CAUSESMORENEURONSTOlRE-ORENEURONSlRINGMORECHANCESFORYOURBRAIN
TOGETTHATTHISISSOMETHINGWORTHPAYINGATTENTIONTOANDPOSSIBLYRECORDING
!CONVERSATIONALSTYLEHELPSBECAUSEPEOPLETENDTOPAYMOREATTENTIONWHENTHEY
PERCEIVETHATTHEYREINACONVERSATIONSINCETHEYREEXPECTEDTOFOLLOWALONGAND
HOLDUPTHEIREND4HEAMAZINGTHINGISYOURBRAINDOESNTNECESSARILYCARETHAT
THEhCONVERSATIONvISBETWEENYOUANDABOOK/NTHEOTHERHANDIFTHEWRITING
STYLEISFORMALANDDRYYOURBRAINPERCEIVESITTHESAMEWAYYOUEXPERIENCEBEING
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]
7EUSEDPICTURESBECAUSEYOURBRAINISTUNEDFORVISUALSNOTTEXT!SFARASYOUR
BRAINSCONCERNEDAPICTUREREALLYISWORTHWORDS!NDWHENTEXTANDPICTURES LQW
^a\g FW
WORKTOGETHERWEEMBEDDEDTHETEXTINTHEPICTURESBECAUSEYOURBRAINWORKS 'RJREMH
MOREEFFECTIVELYWHENTHETEXTISWITHINTHETHINGTHETEXTREFERSTOASOPPOSEDTOIN 'RJ
'RJ
ACAPTIONORBURIEDINTHETEXTSOMEWHERE
7EUSEDREPETITIONSAYINGTHESAMETHINGINDIFFERENTWAYSANDWITHDIFFERENTMEDIA
TYPESANDMULTIPLESENSESTOINCREASETHECHANCETHATTHECONTENTGETSCODEDCODED
INTOMORETHANONEAREAOFYOURBRAIN "%THECOMPILER
7EUSEDCONCEPTSANDPICTURESINUNEXPECTEDWAYSBECAUSEYOURBRAINISTUNEDFOR
NOVELTYANDWEUSEDPICTURESANDIDEASWITHATLEASTSOMEEMOTIONALCONTENTBECAUSE
YOURBRAINISTUNEDTOPAYATTENTIONTOTHEBIOCHEMISTRYOFEMOTIONS4HATWHICH
CAUSESYOUTOFEELSOMETHINGISMORELIKELYTOBEREMEMBEREDEVENIFTHATFEELINGIS
NOTHINGMORETHANALITTLEHUMORSURPRISEORINTEREST
7EUSEDAPERSONALIZEDCONVERSATIONALSTYLEBECAUSEYOURBRAINISTUNEDTOPAYMORE
ATTENTIONWHENITBELIEVESYOUREINACONVERSATIONTHANIFITTHINKSYOUREPASSIVELY
7KLV LV OOH
3X]]OH9L
LISTENINGTOAPRESENTATION9OURBRAINDOESTHISEVENWHENYOUREREADING
7EINCLUDEDMORETHANEXERCISESBECAUSEYOURBRAINISTUNEDTOLEARNAND
REMEMBERMOREWHENYOUDOTHINGSTHANWHENYOUREADABOUTTHINGS!NDWE
MADETHEEXERCISESCHALLENGING
YET
DO
ABLEBECAUSETHATSWHATMOSTPEOPLEPREFER
7EUSEDMULTIPLELEARNINGSTYLESBECAUSEYOUMIGHTPREFERSTEP
BY
STEPPROCEDURES
WHILESOMEONEELSEWANTSTOUNDERSTANDTHEBIGPICTURElRSTWHILESOMEONEELSE
JUSTWANTSTOSEEACODEEXAMPLE"UTREGARDLESSOFYOUROWNLEARNINGPREFERENCE :MDD=LHGAFLK
EVERYONEBENElTSFROMSEEINGTHESAMECONTENTREPRESENTEDINMULTIPLEWAYS
7EINCLUDECONTENTFORBOTHSIDESOFYOURBRAINBECAUSETHEMOREOFYOURBRAINYOU
ENGAGETHEMORELIKELYYOUARETOLEARNANDREMEMBERANDTHELONGERYOUCAN
STAYFOCUSED3INCEWORKINGONESIDEOFTHEBRAINOFTENMEANSGIVINGTHEOTHERSIDE ,CXC
ACHANCETORESTYOUCANBEMOREPRODUCTIVEATLEARNINGFORALONGERPERIODOF 'ZRQUGF
TIME
!NDWEINCLUDEDSTORIESANDEXERCISESTHATPRESENTMORETHANONEPOINTOFVIEW
BECAUSEYOURBRAINISTUNEDTOLEARNMOREDEEPLYWHENITSFORCEDTOMAKE
OO
%UDLQ%DUEH
EVALUATIONSANDJUDGEMENTS
DUEHOO
EUDLQ E
7EINCLUDEDCHALLENGESWITHEXERCISESANDBYASKINGQUESTIONSTHATDONTALWAYSHAVE
ASTRAIGHTANSWERBECAUSEYOURBRAINISTUNEDTOLEARNANDREMEMBERWHENITHAS
TOWORKATSOMETHINGJUSTASYOUCANTGETYOURBODYINSHAPEBYWATCHINGPEOPLE
ATTHEGYM "UTWEDIDOURBESTTOMAKESURETHATWHENYOUREWORKINGHARDITS
ONTHERIGHTTHINGS4HATYOURENOTSPENDINGONEEXTRADENDRITEPROCESSINGAHARD
TO
UNDERSTANDEXAMPLEORPARSINGDIFlCULTJARGON
LADENOREXTREMELYTERSETEXT
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
3OWEDIDOURPART4HERESTISUPTOYOU4HESETIPSAREA
STARTINGPOINT,ISTENTOYOURBRAINANDlGUREOUTWHATWORKS
FORYOUANDWHATDOESNT4RYNEWTHINGS
FXWWKLVRXW
RQ\RXUUHIULGDQJHGUDVWLFNLW
WRU
6ORZGRZQ7KHPRUH\RXXQGHUVWDQG 'ULQNZDWHU/RWVRILW
WKHOHVV\RXKDYHWRPHPRUL]H 9OURBRAINWORKSBESTINANICEBATHOFmUID
$ONTJUSTREAD3TOPANDTHINK7HENTHE $EHYDRATIONWHICHCANHAPPENBEFOREYOU
BOOKASKSYOUAQUESTIONDONTJUSTSKIPTO EVERFEELTHIRSTY DECREASESCOGNITIVEFUNCTION
THEANSWER)MAGINETHATSOMEONEREALLYIS
ASKINGTHEQUESTION4HEMOREDEEPLYYOU 7DONDERXWLW2XWORXG
FORCEYOURBRAINTOTHINKTHEBETTERCHANCE 3PEAKINGACTIVATESADIFFERENTPARTOF
YOUHAVEOFLEARNINGANDREMEMBERING THEBRAIN)FYOURETRYINGTOUNDERSTAND
SOMETHINGORINCREASEYOURCHANCEOF
'RWKHH[HUFLVHV:ULWH\RXURZQQRWHV REMEMBERINGITLATERSAYITOUTLOUD"ETTER
7EPUTTHEMINBUTIFWEDIDTHEMFORYOU STILLTRYTOEXPLAINITOUTLOUDTOSOMEONE
THATWOULDBELIKEHAVINGSOMEONEELSE ELSE9OULLLEARNMOREQUICKLYANDYOUMIGHT
DOYOURWORKOUTSFORYOU!NDDONTJUST UNCOVERIDEASYOUHADNTKNOWNWERETHERE
LOOKATTHEEXERCISES5SEAPENCIL4HERES WHENYOUWEREREADINGABOUTIT
PLENTYOFEVIDENCETHATPHYSICALACTIVITY
WHILELEARNINGCANINCREASETHELEARNING /LVWHQWR\RXUEUDLQ
0AYATTENTIONTOWHETHERYOURBRAINISGETTING
5HDGWKH´7KHUHDUH1R'XPE4XHVWLRQVµ OVERLOADED)FYOUlNDYOURSELFSTARTINGTOSKIM
4HATMEANSALLOFTHEM4HEYRENOT THESURFACEORFORGETWHATYOUJUSTREADITS
OPTIONALSIDE
BARSTHEYREPARTOFTHECORE TIMEFORABREAK/NCEYOUGOPASTACERTAIN
CONTENT3OMETIMESTHEQUESTIONSAREMORE POINTYOUWONTLEARNFASTERBYTRYINGTOSHOVE
USEFULTHANTHEANSWERS MOREINANDYOUMIGHTEVENHURTTHEPROCESS
'RQ·WGRDOO\RXUUHDGLQJLQRQHSODFH )HHOVRPHWKLQJ
3TAND
UPSTRETCHMOVEAROUNDCHANGE 9OURBRAINNEEDSTOKNOWTHATTHISMATTERS'ET
CHAIRSCHANGEROOMS)TLLHELPYOURBRAIN INVOLVEDWITHTHESTORIES-AKEUPYOUROWN
FEELSOMETHINGANDKEEPSYOURLEARNINGFROM CAPTIONSFORTHEPHOTOS'ROANINGOVERABAD
BEINGTOOCONNECTEDTOAPARTICULARPLACE JOKEISSTILLBETTERTHANFEELINGNOTHINGATALL
0DNHWKLVWKHODVWWKLQJ\RXUHDGEHIRUH 7\SHDQGUXQWKHFRGH
EHG2UDWOHDVWWKHODVWFKDOOHQJLQJWKLQJ 4YPEANDRUNTHECODEEXAMPLES4HENYOU
0ARTOFTHELEARNINGESPECIALLYTHETRANSFER CANEXPERIMENTWITHCHANGINGANDIMPROVING
TOLONG
TERMMEMORY HAPPENSAFTERYOUPUT THECODEORBREAKINGITWHICHISSOMETIMES
THEBOOKDOWN9OURBRAINNEEDSTIMEON THEBESTWAYTOlGUREOUTWHATSREALLY
ITSOWNTODOMOREPROCESSING)FYOUPUTIN HAPPENING &ORLONGEXAMPLESOR2EADY
BAKE
SOMETHINGNEWDURINGTHATPROCESSING
TIME CODEYOUCANDOWNLOADTHESOURCElLESFROM
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"
9OUDONOTNEEDANYOTHERDEVELOPMENTTOOLSUCHASAN)NTEGRATED
$EVELOPMENT%NVIRONMENT)$% 7ESTRONGLYRECOMMENDTHATYOUNOT
USEANYTHINGBUTABASICTEXTEDITORUNTILYOUCOMPLETETHISBOOKAND
ESPECIALLYNOTUNTILAFTERCHAPTER !N)$%CANPROTECTYOUFROMSOMEOF
THEDETAILSTHATREALLYMATTERSOYOUREMUCHBETTEROFFLEARNINGFROMTHE
COMMAND
LINEANDTHENONCEYOUREALLYUNDERSTANDWHATSHAPPENING
MOVETOATOOLTHATAUTOMATESSOMEOFTHEPROCESS
K=LLAF?MHB9N9
,I\RXGRQ·WDOUHDG\KDYHDRUJUHDWHU-DYD6WDQGDUG(GLWLRQ6'.6RIWZDUH
'HYHORSPHQW.LW\RXQHHGLW,I\RX·UHRQ/LQX[:LQGRZVRU6RODULV\RXFDQJHWLWIRUIUHH
IURPMDYDVXQFRP6XQ·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-DYDRU7LJHUYHUVLRQ·VRULJLQDO
FRGHQDPHWKH\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[WHGLWRUZLOOGRYLHPDFVSLFRLQFOXGLQJWKH*8,RQHV
WKDWFRPHZLWKPRVWRSHUDWLQJV\VWHPV1RWHSDG:RUGSDG7H[W(GLWHWFDOOZRUNDVORQJDV
\RXPDNHVXUHWKH\GRQ·WDSSHQGD´W[WµRQWRWKHHQGRI\RXUVRXUFHFRGH
2QFH\RX·YHGRZQORDGHGDQGXQSDFNHG]LSSHGZKDWHYHUGHSHQGVRQZKLFKYHUVLRQDQGIRU
ZKLFK26\RXQHHGWRDGGDQHQWU\WR\RXU3$7+HQYLURQPHQWYDULDEOHWKDWSRLQWVWRWKHELQ
GLUHFWRU\LQVLGHWKHPDLQ-DYDGLUHFWRU\)RUH[DPSOHLIWKH-6'.SXWVDGLUHFWRU\RQ\RXU
GULYHFDOOHG´MVGNµORRNLQVLGHWKDWGLUHFWRU\DQG\RX·OOILQGWKH´ELQµGLUHFWRU\ZKHUHWKH
-DYDELQDULHVWKHWRROVOLYH7KDELQGLUHFWRU\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_"
4HISISALEARNINGEXPERIENCENOTAREFERENCEBOOK7EDELIBERATELY
STRIPPEDOUTEVERYTHINGTHATMIGHTGETINTHEWAYOFLEARNINGWHATEVERIT
ISWEREWORKINGONATTHATPOINTINTHEBOOK!NDTHElRSTTIMETHROUGH
YOUNEEDTOBEGINATTHEBEGINNINGBECAUSETHEBOOKMAKESASSUMPTIONS
PSOHU
ABOUTWHATYOUVEALREADYSEENANDLEARNED :HXVHDGVLIDX[80/
PRGLILH
:HXVHVLPSOH80/OLNHGLDJUDPV 'RJ
)FWEDUSEDPURE5-,YOUDBESEEINGSOMETHINGTHATLOOKSLIKE*AVABUT
WITHSYNTAXTHATSJUSTPLAINWRONG3OWEUSEASIMPLIlEDVERSIONOF5-, VL]H
THATDOESNTCONmICTWITH*AVASYNTAX)FYOUDONTALREADYKNOW5-,YOU
WONTHAVETOWORRYABOUTLEARNING*AVAAND5-,ATTHESAMETIME EDUN
HDW
FKDVH&DW
:HGRQ·WZRUU\DERXWRUJDQL]LQJDQGSDFNDJLQJ\RXURZQ
FRGHXQWLOWKHHQGRIWKHERRN
)NTHISBOOKYOUCANGETONWITHTHEBUSINESSOFLEARNING*AVAWITHOUT
STRESSINGOVERSOMEOFTHEORGANIZATIONALORADMINISTRATIVEDETAILSOF
DEVELOPING*AVAPROGRAMS9OUWILLINTHEREALWORLDNEEDTOKNOWAND <RXVKRXOGGRSH$//
XU
USETHESEDETAILSSOWECOVERTHEMINDEPTH"UTWESAVETHEMFORTHEEND RIWKH´6K WLHVQ\R
DU
OFTHEBOOKCHAPTER 2ELAXWHILEYOUEASEINTO*AVAGENTLY SHQFLOµDFWLYL
6KDUSHQ \RXU SHQFLO
7KHHQGRIFKDSWHUH[HUFLVHVDUHPDQGDWRU\SX]]OHVDUH
RSWLRQDO$QVZHUVIRUERWKDUHDWWKHHQGRIHDFKFKDSWHU
/NETHINGYOUNEEDTOKNOWABOUTTHEPUZZLESTHEYREPUZZLES!SINLOGIC
PUZZLESBRAINTEASERSCROSSWORDPUZZLESETC4HEEXERCISESAREHERETOHELP $FWLYLWLH
YOUPRACTICEWHATYOUVELEARNEDANDYOUSHOULDDOTHEMALL4HEPUZZLES ([HUFLVHVUPXQDUNHGZLWKWKH
AREADIFFERENTSTORYANDSOMEOFTHEMAREQUITECHALLENGINGINAPUZZLE DUHPDQGDWR QLQJVKRHORJR
WKHPLI\ X·UU\'RQ·WVNLS
WAY4HESEPUZZLESAREMEANTFORPUZZLERSANDYOUPROBABLYALREADYKNOWIF
OHDUQLQJ-DRYD HVHULRXVDER
XW
YOUAREONE)FYOURENOTSUREWESUGGESTYOUGIVESOMEOFTHEMATRYBUT
WHATEVERHAPPENSDONTBEDISCOURAGEDIFYOUCANTSOLVEAPUZZLEORIFYOU
SIMPLYCANTBEBOTHEREDTOTAKETHETIMETOWORKTHEMOUT
7KH¶6KDUSHQ<RXU3HQFLO·H[HUFLVHVGRQ·WKDYHDQVZHUV
.OTPRINTEDINTHEBOOKANYWAY&ORSOMEOFTHEMTHEREISNORIGHT 1dQ^OU_Q
ANSWERANDFORTHEOTHERSPARTOFTHELEARNINGEXPERIENCEFORTHE3HARPEN
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
SMALLESTPOSSIBLECONTEXTSOTHATTHEPARTYOURETRYINGTOLEARNISCLEARAND HLWKHU
SIMPLE3ODONTEXPECTTHECODETOBEROBUSTOREVENCOMPLETE4HATS
YOURASSIGNMENTFORAFTERYOUlNISHTHEBOOK4HEBOOKEXAMPLESARE
WRITTENSPECIlCALLYFORLEARNINGANDARENTALWAYSFULLY
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#REDITGOESTOALLBUTMISTAKESARETHESOLEREPONSIBILITYOFTHE
AUTHORv$OESANYONEREALLYBELIEVETHAT3EETHETWOPEOPLEON
THISPAGE)FYOUlNDTECHNICALPROBLEMSITSPROBABLYTHEIRFAULT
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
5NIVERSITYHASHER3#0*AND3#7#$ #! ANDASAPRINCIPALENGINEERINTHE3OFTWARE
CERTIlCATIONSANDISLITERALLYMONTHSAWAY %NGINEERING,ABORATORYOF%0&,
FROMRECEIVINGHER-ASTERSIN3OFTWARE 6ALENTINISTHECO
FOUNDERAND#4/OF#ONDRIS
%NGINEERINGAT$REXEL5NIVERSITYWHEW 4ECHNOLOGIESACOMPANYSPECIALIZINGINTHE
7HENSHESNOTWORKINGSTUDYINGOR DEVELOPMENTOFSOFTWAREARCHITECTURESOLUTIONS
MOTORINGINHER-).)#OOPER3*ESSCAN (ISRESEARCHANDDEVELOPMENTINTERESTS
BEFOUNDlGHTINGHERCATFORYARNASSHE INCLUDEASPECT
ORIENTEDTECHNOLOGIESDESIGN
COMPLETESHERLATESTKNITTINGORCROCHET ANDARCHITECTURALPATTERNSWEBSERVICESAND
PROJECTANYBODYWANTAHAT 3HEIS SOFTWAREARCHITECTURE"ESIDESTAKINGCAREOF
ORIGINALLYFROM3ALT,AKE#ITY5TAHNO HISWIFEGARDENINGREADINGANDDOINGSOME
SHESNOT-ORMONYESYOUWERETOO SPORT6ALENTINMODERATESTHE3#"#$AND
GOINGTOASK ANDISCURRENTLYLIVINGNEAR 3#$*73FORUMSAT*AVARANCHCOM(EHOLDS
0HILADELPHIAWITHHERHUSBAND-ENDRAAND THE3#*03#*$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/2EILLYFORTAKINGA &RUH\0F*OR
CHANCEONTHISANDHELPINGTOSHAPETHE(EAD&IRSTCONCEPTINTO
ABOOKANDSERIES !STHISSECONDEDITIONGOESTOPRINTTHERE
ARENOWlVE(EAD&IRSTBOOKSANDHESBEENWITHUSALLTHEWAY
4O4IM/2EILLYFORHISWILLINGNESSTOLAUNCHINTOSOMETHING
COMPLETELYNEWANDDIFFERENT4HANKSTOTHECLEVER+YLE(ARTFOR
lGURINGOUTHOW(EAD&IRSTlTSINTOTHEWORLDANDFORLAUNCHING
THESERIES&INALLYTO%DIE&REEDMANFORDESIGNINGTHE(EAD&IRST
hEMPHASIZETHEHEADvCOVER -RKDQQH
VGH-RQ
/URINTREPIDBETATESTERSANDREVIEWERTEAM J
/URTOPHONORSANDTHANKSGOTOTHEDIRECTOROFOURJAVARANCH
TECHREVIEWTEAM*OHANNESDE*ONG4HISISYOURlFTHTIMEAROUND
WITHUSONA(EAD&IRSTBOOKANDWERETHRILLEDYOURESTILLSPEAKING
TOUS*EFF#UMPSISONHISTHIRDBOOKWITHUSNOWANDRELENTLESS
ABOUTlNDINGAREASWHEREWENEEDEDTOBEMORECLEARORCORRECT
#OREY-C'LONEYOUROCK!NDWETHINKYOUGIVETHECLEAREST
G
EXPLANATIONSONJAVARANCH9OULLPROBABLYNOTICEWESTOLEONEOR -DVRQ0HQDU
TWOOFTHEM*ASON-ENARDSAVEDOURTECHNICALBUTTSONMORE
7KRPDV3DXO
THANAFEWDETAILSAND4HOMAS0AULASALWAYSGAVEUSEXPERT
FEEDBACKANDFOUNDTHESUBTLE*AVAISSUESTHERESTOFUSMISSED
*ANE'RISCTIHASHER*AVACHOPSANDKNOWSATHINGORTWOABOUT
WRITING ANDITWASGREATTOHAVEHERHELPINGONTHENEWEDITION
ALONGWITHLONG
TIMEJAVARANCHER"ARRY'AUNT
-ARILYNDE1UEIROZGAVEUSEXCELLENTHELPONBOTHEDITIONSOFTHE
BOOK#HRIS*ONES*OHN.YQUIST*AMES#UBETA4ERRI#UBETA
AND)RA"ECKERGAVEUSATONOFHELPONTHElRSTEDITION
3PECIALTHANKSTOAFEWOFTHE(EAD&IRSTERSWHOVEBEENHELPING 0DULO\PGH
4XHLUR]
USFROMTHEBEGINNING!NGELO#ELESTE-IKALAI:AIKINAND
4HOMAS$UFFTWDUFFCOM !NDTHANKSTOOURTERRIlCAGENT$AVID
2OGELBERGOF3TUDIO"BUTSERIOUSLYWHATABOUTTHEMOVIERIGHTS
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"IH3KULRAT0ATANAVANICH
3UNIL0ALICHA3UDDHASATWA'HOSH2AMKI3RINIVASAN!LFRED2AOUF!NGELO#ELESTE
-IKALAI:AIKIN*OHN:OETEBIER*IM0LEGER"ARRY'AUNTAND-ARK$IELEN
4HElRSTEDITIONPUZZLETEAM
$IRK3CHRECKMANN-ARYh*AVA#ROSS#HAMPIONv,ENERS2ODNEY*7OODRUFF'AVIN"ONG
AND*ASON-ENARD*AVARANCHISLUCKYTOHAVEYOUALLHELPINGOUT
/THERCO
CONSPIRATORSTOTHANK
0AUL7HEATONTHEJAVARANCH4RAIL"OSSFORSUPPORTINGTHOUSANDSOF*AVALEARNERS
3OLVEIG(AUGLANDMISTRESSOF*%%ANDAUTHOROFh$ATING$ESIGN0ATTERNSv
!UTHORS$ORI3MITHAND4OM.EGRINOBACKUPBRAINCOM FORHELPINGUSNAVIGATETHE
TECHBOOKWORLD
/UR(EAD&IRSTPARTNERSINCRIME%RIC&REEMANAND"ETH&REEMANAUTHORSOF(EAD&IRST
$ESIGN0ATTERNS FORGIVINGUSTHE"AWLS©TOlNISHTHISONTIME
3HERRY$ORRISFORTHETHINGSTHATREALLYMATTER
"RAVE%ARLY!DOPTERSOFTHE(EAD&IRSTSERIES
*OE,ITTON2OSS0'OLDBERG$OMINIC$A3ILVAHONESTPUCK$ANNY"ROMBERG3TEPHEN
,EPP%LTON(UGHES%RIC#HRISTENSEN6ULINH.GUYEN-ARK2AU!BDULHAF.ATHAN
/LIPHANT-ICHAEL"RADLY!LEX$ARROW-ICHAEL&ISCHER3ARAH.OTTINGHAM4IM!LLEN
"OB4HOMASAND-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*AVASEDUCEDPROGRAMMERSWITHITSFRIENDLYSYNTAXOBJECT
ORIENTEDFEATURES
MEMORYMANAGEMENTANDBESTOFALLTHEPROMISEOFPORTABILITY4HELUREOFZULWHRQFHUXQ
DQ\ZKHUHISJUSTTOOSTRONG!DEVOTEDFOLLOWINGEXPLODEDASPROGRAMMERSFOUGHTAGAINSTBUGS
LIMITATIONSANDOHYEAHTHEFACTTHATITWASDOGSLOW"UTTHATWASAGESAGO)FYOUREJUSTSTARTINGIN
*AVA\RX·UHOXFN\3OMEOFUSHADTOWALKlVEMILESINTHESNOWUPHILLBOTHWAYSBAREFOOT TO
GETEVENTHEMOSTTRIVIALAPPLETTOWORK"UTYOUWHYYOUGETTORIDETHEVOHHNHUIDVWHUPXFK
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[
7KHJRDOLVWRZULWHRQHDSSOLFDWLRQLQWKLV
H[DPSOHDQLQWHUDFWLYHSDUW\LQYLWDWLRQDQGKDYH
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 NEWDOCUMENTCODED
INTHISCASETHE*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
SDGGO 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 UNDERSTANDSANDRUNS
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\
FKDSWHU
3TANDARD%DITION*3% AND ADDEDMAJORCHANGESTO
%NTERPRISE%DITION*%% THELANGUAGEITSELFMAKING
"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
ZKLOH[!^
P\'RJSOD\
`
LQW>@QXP/LVW ^`
6\VWHPRXWSULQW´+HOORµ
6\VWHPRXWSULQW´'RJ´QDPH
6WULQJQXP ´µ
LQW] ,QWHJHUSDUVH,QWQXP
WU\^
UHDG7KH)LOH´P\)LOHW[Wµ
`
FDWFK)LOH1RW)RXQG([FHSWLRQH[^
6\VWHPRXWSULQW´)LOHQRWIRXQGµ
`
Q: )SEE*AVAAND*AVABUTWASTHEREA*AVA
ONCEAGAINTHATTHECHANGESWERESODRAMATICTHATA
NEWNAMEWASNEEDEDANDMOSTDEVELOPERSAGREED SO
AND!NDWHYISIT*AVABUTNOT*AVA THEYLOOKEDATTHEOPTIONS4HENEXTNUMBERINTHENAME
SEQUENCEWOULDBEhvBUTCALLING*AVA*AVASEEMED
A:
4HEJOYSOFMARKETINGWHENTHEVERSIONOF*AVA
SHIFTEDFROMTOTHECHANGESTO*AVAWERESO
MORECONFUSINGSOTHEYDECIDEDTONAMEIT*AVATO
MATCHTHEhvINVERSIONhv
3OTHEORIGINAL*AVAWASVERSIONSTHEFIRSTOFFICIAL
DRAMATICTHATTHEMARKETERSDECIDEDWENEEDEDAWHOLE RELEASE THROUGHWEREJUSTh*AVAv6ERSIONSAND
NEWhNAMEvSOTHEYSTARTEDCALLINGIT*AVAEVENTHOUGH WEREh*AVAv!NDBEGINNINGWITHVERSION*AVAIS
THEACTUALVERSIONOF*AVAWAS"UTVERSIONSAND CALLEDh*AVAv"UTYOULLALSOSEEITCALLEDh*AVAvWITHOUT
WERESTILLCONSIDERED*AVA4HERENEVERWASA*AVAOR THEhv ANDh4IGERvITSORIGINALCODE
NAME 7EHAVENO
"EGINNINGWITH*AVAVERSIONTHEMARKETERSDECIDED 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
$ONTWORRYABOUTWHETHERYOUUNDERSTANDANYOFTHISYET
4WWSPW_MI[aQ\ %VERYTHINGHEREISEXPLAINEDINGREATDETAILINTHEBOOKMOST
Q[\W_ZQ\M2I^I WITHINTHElRSTPAGES )F*AVARESEMBLESALANGUAGEYOUVE
USEDINTHEPASTSOMEOFTHISWILLBESIMPLE)FNOTDONTWORRY
ABOUTIT7ELLGETTHERE
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
OFYOURPROGRAMALTHOUGHAVERY
TINYAPPLICATIONMIGHTNEEDJUST
ASINGLECLASS4HECLASSMUSTGO
WITHINAPAIROFCURLYBRACES ` KTI[[
SXEOLFFODVV'RJ^
:KDWJRHVLQD
YRLGEDUN^
PHWKRG"
VWDWHPHQW
7ITHINTHECURLYBRACESOFA
METHODWRITEYOURINSTRUCTIONS VWDWHPHQW
FORHOWTHATMETHODSHOULDBE `
PERFORMED-ETHODCODEISBASI
CALLYASETOFSTATEMENTSANDFOR `
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-STARTSRUNNINGITLOOKSFORTHECLASSYOUGIVEITATTHECOM
MANDLINE4HENITSTARTSLOOKINGFORASPECIALLY
WRITTENMETHODTHATLOOKS
EXACTLYLIKE
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
\RXUFRGHJRHVKHUH
`
.EXTTHE*6-RUNSEVERYTHINGBETWEENTHECURLYBRACES[]OFYOURMAIN
METHOD%VERY*AVAAPPLICATIONHASTOHAVEATLEASTONECLASSANDATLEAST
ONEMAINMETHODNOTONEMAINPERCLASSJUSTONEMAINPERAPPLICATION
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
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
'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*AVAEVERYTHINGGOESINACLASS9OULLTYPEYOURSOURCECODElLEWITHA
JAVAEXTENSION THENCOMPILEITINTOANEWCLASSlLEWITHACLASSEXTENSION
7HENYOURUNYOURPROGRAMYOUREREALLYRUNNINGACLASS
2UNNINGAPROGRAMMEANSTELLINGTHE*AVA6IRTUAL-ACHINE*6- TOh,OADTHE
+HOORCLASSTHENSTARTEXECUTINGITSPDLQMETHOD+EEPRUNNING@TILALLTHE
CODEINMAINISlNISHEDv
)NCHAPTERWEGODEEPERINTOTHEWHOLECLASSTHINGBUTFORNOWALLYOUNEEDTO
THINKISHOWDO)WRITE*AVACODESOTHATITWILLRUN!NDITALLBEGINSWITHMAIN
4HEMAIN METHODISWHEREYOURPROGRAMSTARTSRUNNING
.OMATTERHOWBIGYOURPROGRAMISINOTHERWORDSNOMATTERHOWMANYCLASSES
YOURPROGRAMUSES THERESGOTTOBEAMAIN METHODTOGETTHEBALLROLLING
SXEOLFFODVV0\)LUVW$SS^ N6DYH
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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
PDLQMDYDODQJ6WULQJ>@ 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
3TATEMENTSDECLARATIONSASSIGNMENTS
METHODCALLSETC
LQW[
6WULQJQDPH ³'LUN´
[ [
6\VWHPRXWSULQW³[LV´[
GRXEOHG 0DWKUDQGRP 6\QWD[
WKLVLVDFRPPHQW
)XQ
LW[WUM\PQVOIOIQVIVLIOIQV
,OOPSFORANDWHILE
ZKLOH[
!^
[ [
`
%ACHSTATEMENTMUSTENDINA
SEMICOLON
[ [
IRULQW[ [[ [^
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
;QUXTMJWWTMIV\M[\[
9OUCANDOASIMPLEBOOLEANTESTBYCHECKING
4WWXQVOIVLTWWXQVOIVL THEVALUEOFAVARIABLEUSINGACOMPARISONOPERATOR
INCLUDING
*AVAHASTHREESTANDARDLOOPINGCONSTRUCTSWHILE
DO
WHILEANDFOR9OULLGETTHEFULLLOOPSCOOPLATER LESSTHAN
INTHEBOOKBUTNOTFORAWHILESOLETSDOWHILEFOR
GREATERTHAN
NOW
4HESYNTAXNOTTOMENTIONLOGIC ISSOSIMPLE EQUALITY YESTHATSTWOEQUALSSIGNS
YOUREPROBABLYASLEEPALREADY!SLONGASSOME .OTICETHEDIFFERENCEBETWEENTHEASSIGNMENT
CONDITIONISTRUEYOUDOEVERYTHINGINSIDETHE OPERATORASINGLEEQUALSSIGN ANDTHEEQUALS
LOOPBLOCK4HELOOPBLOCKISBOUNDEDBYAPAIROF OPERATORTWOEQUALSSIGNS ,OTSOFPROGRAMMERS
CURLYBRACESSOWHATEVERYOUWANTTOREPEATNEEDS ACCIDENTALLYTYPEWHENTHEYWANT"UTNOT
TOBEINSIDETHATBLOCK YOU
4HEKEYTOALOOPISTHECONDITIONALTEST)N*AVAA LQW[ DVVLJQWR[
CONDITIONALTESTISANEXPRESSIONTHATRESULTSINA ZKLOH[!^
BOOLEANVALUEINOTHERWORDSSOMETHINGTHATIS ORRSFRGHZLOOUXQEHFDXVH
EITHERTRUEORFALSE
[LVJUHDWHUWKDQ
)FYOUSAYSOMETHINGLIKEh7HILEICE#REAM)N4HE4UB [ [RUZH¶GORRSIRUHYHU
ISTRUEKEEPSCOOPINGvYOUHAVEACLEARBOOLEAN `
TEST4HEREEITHERISICECREAMINTHETUBORTHERE LQW]
ISNT"UTIFYOUWERETOSAYh7HILE"OBKEEP
ZKLOH] ^
SCOOPINGvYOUDONTHAVEAREALTEST4OMAKE
ORRSFRGHZLOOQRWUXQEHFDXVH
THATWORKYOUDHAVETOCHANGEITTOSOMETHING
]LVQRWHTXDOWR
LIKEh7HILE"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\^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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´
ANOBJECTANDTHATNEARLYEVERY
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
CLASSESTHOUGHTHATHAVEMAIN
METHODSFORTESTINGYOUROTHER
CLASSES
Q: )NMYOTHERLANGUAGE)CAN
:MDD=LHGAFLK
6WDWHPHQWVHQGLQDVHPLFRORQ
DOABOOLEANTESTONANINTEGER
)N*AVACAN)SAYSOMETHINGLIKE
&RGHEORFNVDUHGHILQHGE\DSDLURIFXUO\EUDFHV^`
LQW[
'HFODUHDQLQWYDULDEOHZLWKDQDPHDQGDW\SHLQW[
ZKLOH[^`
7KHDVVLJQPHQWRSHUDWRULVRQHHTXDOVVLJQ
A: .O!BOOLEANANDAN 7KHHTXDOVRSHUDWRUXVHVWZRHTXDOVVLJQV
INTEGERARENOTCOMPATIBLETYPESIN
*AVA3INCETHERESULTOFACONDI
$ZKLOHORRSUXQVHYHU\WKLQJZLWKLQLWVEORFNGHILQHGE\FXUO\
TIONALTESTMUSTBEABOOLEANTHE
EUDFHVDVORQJDVWKHFRQGLWLRQDOWHVWLVWUXH
ONLYVARIABLEYOUCANDIRECTLYTEST ,IWKHFRQGLWLRQDOWHVWLVIDOVHWKHZKLOHORRSFRGHEORFNZRQ·W
WITHOUTUSINGACOMPARISONOP
UXQDQGH[HFXWLRQZLOOPRYHGRZQWRWKHFRGHLPPHGLDWHO\
ERATOR ISABOOLEAN&OREXAMPLE
YOUCANSAY
DIWHUWKHORRSEORFN
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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*AVAANIFTESTISBASICALLYTHESAMEASTHEBOOLEANTESTINA
WHILELOOPnEXCEPTINSTEADOFSAYINGhWHILETHERESSTILLBEERv ;a[\MUW]\XZQV\TV
YOULLSAYhIFTHERESSTILLBEERv )FYOUVEBEENPAYINGATTENTIONOF
COURSEYOUHAVE THENYOUVENOTICEDUS
FODVV,I7HVW^ SWITCHINGBETWEENPRINTANDPRINTLN
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
$IDYOUSPOTTHEDIFFERENCE
LQW[
3YSTEMOUTPRINTLNINSERTSANEWLINE
LI[ ^
THINKOFPRINTLNASPRINTNEWLINEWHILE
6\VWHPRXWSULQWOQ³[PXVWEH´ 3YSTEMOUTPRINTKEEPSPRINTINGTO
` THESAMELINE)FYOUWANTEACHTHING
6\VWHPRXWSULQWOQ³7KLVUXQVQRPDWWHUZKDW´ YOUPRINTOUTTOBEONITSOWNLINEUSE
` PRINTLN)FYOUWANTEVERYTHINGTOSTICK
TOGETHERONONELINEUSEPRINT
`
FRGHRXW
MDYD,I7HVW SXW
[PXVWEH 6KDUSHQ \RXU SHQFLO
7KLVUXQVQRPDWWHUZKDW
'IVENTHEOUTPUT
4HECODEABOVEEXECUTESTHELINETHATPRINTShXMUSTBEvONLY
IFTHECONDITIONXISEQUALTO ISTRUE2EGARDLESSOFWHETHER MDYD'RR%HH
ITSTRUETHOUGHTHELINETHATPRINTSh4HISRUNSNOMATTERWHATv 'RR%HH'RR%HH'R
WILLRUN3ODEPENDINGONTHEVALUEOFXEITHERONESTATEMENT
ORTWOWILLPRINTOUT &ILLINTHEMISSINGCODE
\RXDUHKHUH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
ANDA3TRINGVARIABLEAWHILELOOPANDANIFTEST!LITTLE
MOREPOLISHANDYOULLBEBUILDINGTHATBUSINESSBACK
ENDINNOTIME"UTBEFOREYOULOOKATTHECODEONTHIS
PAGETHINKFORAMOMENTABOUTHOWYOUWOULDCODETHAT
CLASSICCHILDRENSFAVORITEhBOTTLESOFBEERv
SXEOLFFODVV%HHU6RQJ^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQWEHHU1XP
6WULQJZRUG ³ERWWOHV´
ZKLOHEHHU1XP!^
LIEHHU1XP ^
ZRUG ³ERWWOH´VLQJXODUDVLQ21(ERWWOH
`
6\VWHPRXWSULQWOQEHHU1XP³´ZRUG³RIEHHURQWKHZDOO´
6\VWHPRXWSULQWOQEHHU1XP³´ZRUG³RIEHHU´
6\VWHPRXWSULQWOQ³7DNHRQHGRZQ´
6\VWHPRXWSULQWOQ³3DVVLWDURXQG´
EHHU1XP EHHU1XP
LIEHHU1XP!^
6\VWHPRXWSULQWOQEHHU1XP³´ZRUG³RIEHHURQWKHZDOO´
`HOVH^
6\VWHPRXWSULQWOQ³1RPRUHERWWOHVRIEHHURQWKHZDOO´
`HQGHOVH
`HQGZKLOHORRS
`HQGPDLQPHWKRG
`HQGFODVV
4HERESSTILLONELITTLEFLAWINOUR
CODE)TCOMPILESANDRUNSBUTTHE
OUTPUTISNTPERFECT3EEIF
YOUCANSPOTTHEFLAWANDFIXIT
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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\WZKMTTXPWVM¹+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;PIKSPI^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$!SCELLPHONESESPECIALLYCELLPHONES PAGERSRINGSSMARTCARDS
ANDMOREnYOUMIGHTNOTFINDA*AVATOASTERORDOGCOLLAR"UTEVENIFYOUCANT
FINDA*AVA
ENABLEDVERSIONOFYOURFAVORITEGADGETYOUCANSTILLRUNITASIFITWEREA
*AVADEVICEBYCONTROLLINGITTHROUGHSOMEOTHERINTERFACESAYYOURLAPTOP 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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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
D6WULQJDWHUHWXUQNH\ZKHQ\RX·UHSLQJ LQW0DWKUDQGRP
RQH/HQJWK
ZRQ·WFRPSLO KLQJEHWZHHQ´TXRWHVµ W\SLQJ LQWUDQG LQW0DWKUDQGRP
WZR/HQJWK
WKLVSDJHDUHH6RWKHK\SKHQV\RXVHRULW LQWUDQG LQW0DWKUDQGRP
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[
)NANUTSHELLTHEPROGRAMMAKESTHREELISTSOFWORDSTHENRANDOMLYPICKSONEWORD
FROMEACHOFTHETHREELISTSANDPRINTSOUTTHERESULT$ONTWORRYIFYOUDONTUNDER
STANDEXACTLYWHATSHAPPENINGINEACHLINE&ORGOSHSAKESYOUVEGOTTHEWHOLEBOOK
AHEADOFYOUSORELAX4HISISJUSTAQUICKLOOKFROMAFOOTOUTSIDE
THE
BOX
TARGETEDLEVERAGEDPARADIGM
1. 4HElRSTSTEPISTOCREATETHREE3TRINGARRAYSnTHECONTAINERSTHATWILLHOLDALLTHE
WORDS$ECLARINGANDCREATINGANARRAYISEASYHERESASMALLONE
6WULQJ>@SHWV ^³)LGR´³=HXV´³%LQ´`
%ACHWORDISINQUOTESASALLGOOD3TRINGSMUSTBE ANDSEPARATEDBYCOMMAS
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
7HATAREYOUKIDDING(%,,/)AM*AVA
)MTHEGUYWHOACTUALLYMAKESAPROGRAM
RUN4HECOMPILERJUSTGIVESYOUAlLE4HATS
IT*USTAlLE9OUCANPRINTITOUTANDUSEIT
FORWALLPAPERKINDLINGLININGTHEBIRDCAGE
WHATEVERBUTTHElLEDOESNTDOANYTHINGUN
LESS)MTHERETORUNIT
)DONTAPPRECIATETHATTONE
!NDTHATSANOTHERTHINGTHECOMPILERHAS
NOSENSEOFHUMOR4HENAGAINIFYOUHADTO
SPENDALLDAYCHECKINGNIT
PICKYLITTLESYNTAX
VIOLATIONS %XCUSEMEBUTWITHOUTMEWHATEXACTLY
WOULDYOURUN4HERESAREASON*AVAWAS
DESIGNEDTOUSEABYTECODECOMPILERFORYOUR
INFORMATION)F*AVAWEREAPURELYINTERPRETED
LANGUAGEWHEREATRUNTIMETHEVIRTUAL
MACHINEHADTOTRANSLATESTRAIGHT
FROM
A
TEXT
EDITORSOURCECODEA*AVAPROGRAMWOULD
RUNATALUDICROUSLYGLACIALPACE*AVASHADA
CHALLENGINGENOUGHTIMECONVINCINGPEOPLE
THATITSlNALLYFASTANDPOWERFULENOUGHFOR
)MNOTSAYINGYOURELIKECOMPLETELYUSELESS MOSTJOBS
"UTREALLYWHATISITTHATYOUDO3ERIOUSLY)
HAVENOIDEA!PROGRAMMERCOULDJUSTWRITE
BYTECODEBYHANDAND)DTAKEIT9OUMIGHT
BEOUTOFAJOBSOONBUDDY
%XCUSEMEBUTTHATSQUITEANIGNORANTNOT
TOMENTIONARROGANT PERSPECTIVE7HILEIT
ISTRUETHATTHEORETICALLYYOUCANRUNANY
PROPERLYFORMATTEDBYTECODEEVENIFITDIDNT
COMEOUTOFA*AVACOMPILERINPRACTICETHATS
ABSURD!PROGRAMMERWRITINGBYTECODEBY
HANDISLIKEDOINGYOURWORDPROCESSINGBY
WRITINGRAWPOSTSCRIPT!ND)WOULDAPPRECIATE
ITIFYOUWOULDNOTREFERTOMEAShBUDDYv
)RESTMYCASEONTHEHUMORTHING "UTYOU
STILLDIDNTANSWERMYQUESTIONWHATDOYOU
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
GUAGEANDTHATMEANS)CANTALLOWVARIABLES
TOHOLDDATAOFTHEWRONGTYPE4HISISA
CRUCIALSAFETYFEATUREAND)MABLETOSTOPTHE
"UTSOMESTILLGETTHROUGH)CANTHROW#LASS
VASTMAJORITYOFVIOLATIONSBEFORETHEYEVERGET
#AST%XCEPTIONSANDSOMETIMES)GETPEOPLE TOYOU!ND)ALSO
TRYINGTOPUTTHEWRONGTYPEOFTHINGINAN
ARRAYTHATWASDECLAREDTOHOLDSOMETHING
ELSEAND
%XCUSEMEBUT)WASNTDONE!NDYESTHERE
ARESOMEDATATYPEEXCEPTIONSTHATCANEMERGE
ATRUNTIMEBUTSOMEOFTHOSEHAVETOBE
ALLOWEDTOSUPPORTONEOF*AVASOTHERIMPOR
TANTFEATURESDYNAMICBINDING!TRUNTIME
A*AVAPROGRAMCANINCLUDENEWOBJECTSTHAT
WERENTEVENKNOWNTOTHEORIGINALPROGRAM
MERSO)HAVETOALLOWACERTAINAMOUNTOF
mEXIBILITY"UTMYJOBISTOSTOPANYTHINGTHAT
WOULDNEVERCOULDNEVERSUCCEEDATRUN
TIME5SUALLY)CANTELLWHENSOMETHINGWONT
WORKFOREXAMPLEIFAPROGRAMMERACCIDEN
TALLYTRIEDTOUSEA"UTTONOBJECTASA3OCKET
CONNECTION)WOULDDETECTTHATANDTHUS
/+3URE"UTWHATABOUTSECURITY,OOKATALL PROTECTHIMFROMCAUSINGHARMATRUNTIME
THESECURITYSTUFF)DOANDYOURELIKEWHAT
CHECKINGFORSEMICOLONS/OOOHHHBIGSECURITY
RISK4HANKGOODNESSFORYOU %XCUSEMEBUT)AMTHElRSTLINEOFDEFENSE
ASTHEYSAY4HEDATATYPEVIOLATIONS)PREVIOUS
LYDESCRIBEDCOULDWREAKHAVOCINAPROGRAM
IFTHEYWEREALLOWEDTOMANIFEST)AMALSO
THEONEWHOPREVENTSACCESSVIOLATIONSSUCH
ASCODETRYINGTOINVOKEAPRIVATEMETHODOR
CHANGEAMETHODTHATnFORSECURITYREASONS
nMUSTNEVERBECHANGED)STOPPEOPLEFROM
TOUCHINGCODETHEYRENOTMEANTTOSEE
INCLUDINGCODETRYINGTOACCESSANOTHERCLASS
CRITICALDATA)TWOULDTAKEHOURSPERHAPSDAYS
EVENTODESCRIBETHESIGNIlCANCEOFMYWORK
7HATEVER)HAVETODOTHATSAMESTUFFTOO
THOUGHJUSTTOMAKESURENOBODYSNUCKIN
AFTERYOUANDCHANGEDTHEBYTECODEBEFORE /FCOURSEBUTAS)INDICATEDPREVIOUSLYIF)
RUNNINGIT DIDNTPREVENTWHATAMOUNTSTOPERHAPS
OFTHEPOTENTIALPROBLEMSYOUWOULDGRINDTO
AHALT!NDITLOOKSLIKEWEREOUTOFTIMESO
WELLHAVETOREVISITTHISINALATERCHAT
/HYOUCANCOUNTONIT"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
LI[ ^
6\VWHPRXWSULQW´EFµ
`
FODVV6KXIÁH^
SXEOLFVWDWL
FYR LGPDLQ6WULQJ
>@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 %
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
ZKLOH[!^
[ [
&
$
FODVV([HUFLVHE^
FODVV([HUFLVHE^
LQW[
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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
)TSYOURSTANDARDCROSSWORDBUTALMOSTALL
OFTHESOLUTIONWORDSAREFROMCHAPTER*UST
Licensed by
TOKEEPYOUAWAKEWEALSOTHREWINAFEW
NON
*AVA WORDSFROMTHEHIGH
TECHWORLD
Eduard Simons
!CROSS
#OMMAND LINEINVOKER
104038
"ACKAGAIN
#ANTGOBOTHWAYS
!CRONYMFORYOURLAPTOPSPOWER
NUMBERVARIABLETYPE
!CRONYMFORACHIP $OWN
3AYSOMETHING .OTANINTEGEROR?????YOURBOAT
!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.OTALLTHELINESOFOUTPUTWILLBEUSEDANDSOME
-IXED OFTHELINESOFOUTPUTMIGHTBEUSEDMORETHANONCE$RAWLINES
-ESSAGES CONNECTINGTHECANDIDATEBLOCKSOFCODEWITHTHEIRMATCHING
COMMAND
LINEOUTPUT4HEANSWERSAREATTHEENDOFTHECHAPTER
FODVV7HVW^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
LQW\
ZKLOH[^ FDQGLGDWH
JRHVKHUH FRGH
[ [
\ \[
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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
MDYD3RRO3X]]OH2QH BBBBBBBBBBBBBBBBBBBBBBBBBBBB
DQRLVH `
LIBBBBBBBBBBB^
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
3YSTEMOUTPRINThANh 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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
%XERCISE3OLUTIONS
ZKLOH[^
[ [
LI[!^
$
6\VWHPRXWSULQWOQ´ELJ[µ
`
&RGH0DJQHWV
`
FODVV6KXIÁH^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^ `7KLVZLOOFRPSLOHDQGUXQQRRXWSXWEXW
`ZLWKRXWDOLQHDGGHGWRWKHSURJUDPLW
LQW[ ZRXOGUXQIRUHYHULQDQLQÀQLWH¶ZKLOH·ORRS
ZKLOH[!^
LI[!^
6\VWHPRXWSULQW´Dµ
FODVV)RR^
`
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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 $ , $
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^ $ , / % 0
LQW[
1
65,*
7 '(&/$5(
ZKLOH;^ , 5 ( 7
& - +
6\VWHPRXWSULQW´Dµ
LI[^ 9 2
6\VWHPRXWSULQW´´ &200$1'
`
6\VWHPRXWSULQW´Qµ FODVV7HVW^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LI;!^ LQW[
LQW\
ZKLOH[^
6\VWHPRXWSULQW´R\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)NCHAPTERWEPUTALLOFOURCODEINTHE
MAIN METHOD4HATSNOTEXACTLYOBJECT
ORIENTED)NFACTTHATSNOTOBJECT
ORIENTEDATALL7ELL
WEDIDUSEAFEWOBJECTSLIKETHE3TRINGARRAYSFORTHE0HRASE
/
-ATICBUTWEDIDNTACTUALLY
DEVELOPANYOFOUROWNOBJECTTYPES3ONOWWEVEGOTTOLEAVETHATPROCEDURALWORLDBEHIND
GETTHEHECKOUTOFMAIN ANDSTARTMAKINGSOMEOBJECTSOFOUROWN7ELLLOOKATWHATMAKES
OBJECT
ORIENTED// DEVELOPMENTIN*AVASOMUCHFUN7ELLLOOKATTHEDIFFERENCEBETWEEN
ACLASSANDANOBJECT7ELLLOOKATHOWOBJECTSCANGIVEYOUABETTERLIFEATLEASTTHEPROGRAM
MINGPARTOFYOURLIFE.OTMUCHWECANDOABOUTYOURFASHIONSENSE 7ARNINGONCEYOUGET
TO/BJECTVILLEYOUMIGHTNEVERGOBACK3ENDUSAPOSTCARD
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
NCEUPONATIMEINASOFTWARESHOPTWO
PROGRAMMERSWEREGIVENTHESAMESPECANDTOLDTO
hBUILDITv4HE2EALLY!NNOYING0ROJECT-ANAGER
FORCEDTHETWOCODERSTOCOMPETE
BYPROMISINGTHATWHOEVERDELIVERS
lRSTGETSONEOFTHOSECOOL!ERON©
CHAIRSALLTHE3ILICON6ALLEYGUYSHAVE
,ARRYTHEPROCEDURALPROGRAMMERAND
"RADTHE//GUYBOTHKNEWTHISWOULD
BEAPIECEOFCAKE
,ARRYSITTINGINHISCUBETHOUGHTTO
HIMSELFh7HATARETHETHINGSTHISPROGRAM
HASTODO7HATPROCEDURESDOWENEEDv
!NDHEANSWEREDHIMSELFhROTATEAND
PLAY3OUNDv3OOFFHEWENTTOBUILDTHE
PROCEDURES!FTERALLWHATISAPROGRAMIFNOT
APILEOFPROCEDURES
"RADMEANWHILEKICKEDBACKATTHECAFE
ANDTHOUGHTTOHIMSELFh7HATARETHETHINGS
INTHISPROGRAMWHOARETHEKEYPLAYERSv(E
lRSTTHOUGHTOF4HE3HAPES/FCOURSETHERE
WEREOTHEROBJECTSHETHOUGHTOFLIKETHE5SERTHE3OUND
ANDTHE#LICKINGEVENT"UTHEALREADYHADALIBRARYOFCODE
FORTHOSEPIECESSOHEFOCUSEDONBUILDING3HAPES2EAD
ONTOSEEHOW"RADAND,ARRYBUILTTHEIRPROGRAMSAND \PM KPIQZ
FORTHEANSWERTOYOURBURNINGQUESTIONh3OWHOGOTTHE
!ERONv
1V4IZZa¼[K]JM )\*ZIL¼[TIX\WXI\\PMKINM
!SHEHADDONEAGAZILLIONTIMESBEFORE,ARRY "RADWROTEACLASSFOREACHOFTHETHREESHAPES
SETABOUTWRITINGHIS)MPORTANT0ROCEDURES
(EWROTEROTATEANDPLAY3OUNDINNOTIME
URWDWHVKDSH1XP^
PDNHWKHVKDSHURWDWH
`
SOD\6RXQGVKDSH1XP^
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,ARRYvSAIDTHE-ANAGERhBUTWEHAVETOADDJUSTONE
TINYTHINGTOTHEPROGRAM)TLLBENOPROBLEMFORCRACKPROGRAMMERSLIKEYOUTWOv
h)F)HADADIMEFOREVERYTIME)VEHEARDTHATONEvTHOUGHT,ARRYKNOWINGTHATSPEC
CHANGE
NO
PROBLEMWASAFANTASYh!NDYET"RADLOOKSSTRANGELYSERENE7HATSUPWITH
THATv3TILL,ARRYHELDTIGHTTOHISCOREBELIEFTHATTHE//WAYWHILECUTEWASJUST
SLOW!NDTHATIFYOUWANTEDTOCHANGEHISMINDYOUDHAVETOPRYITFROMHISCOLD
DEADCARPAL
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 "RADSMILEDSIPPEDHISMARGARITAANDWROTEONE
ALOOKUPTABLETOMATCHASHAPE.UMTOANACTUAL NEWCLASS3OMETIMESTHETHINGHELOVEDMOST
SHAPEGRAPHIC"UTPLAY3OUNDWOULDHAVETOCHANGE ABOUT//WASTHATHEDIDNTHAVETOTOUCHCODE
!NDWHATTHEHECKISAHIFlLE HEDALREADYTESTEDANDDELIVEREDh&LEXIBILITY
SOD\6RXQGVKDSH1XP^ EXTENSIBILITYvHEMUSEDREmECTINGONTHE
LIWKHVKDSHLVQRWDQDPRHED BENElTSOF//
XVHVKDSH1XPWRORRNXSZKLFK $PRHED
$,)VRXQGWRSOD\DQGSOD\LW URWDWH^
HOVH FRGHWRURWDWHDQDPRHED
SOD\DPRHEDKLIVRXQG `
`
SOD\6RXQG^
)TTURNEDOUTNOTTOBESUCHABIGDEALBUTITSTILL
FRGHWRSOD\WKHQHZ
MADEHIMQUEASYTOTOUCHPREVIOUSLY
TESTEDCODE/F KLIILOHIRUDQDPRHED
ALLPEOPLEHESHOULDKNOWTHATNOMATTERWHATTHE `
PROJECTMANAGERSAYSTHESPECALWAYSCHANGES
\RXDUHKHUH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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/HNOTHATSNOT
HOWTHEAMOEBAISSUPPOSEDTOROTATEv
4URNSOUTBOTHPROGRAMMERSHADWRITTENTHEIRROTATECODELIKETHIS
GHWHUPLQHWKHUHFWDQJOHWKDWVXUURXQGVWKHVKDSH
FDOFXODWHWKHFHQWHURIWKDWUHFWDQJOHDQGURWDWHWKHVKDSHDURXQGWKDWSRLQW
"UTTHEAMOEBASHAPEWASSUPPOSEDTOROTATEAROUNDAPOINTONONEENDLIKEACLOCKHAND
h)MTOASTvTHOUGHT,ARRYVISUALIZINGCHARRED7ONDERBREAD©h!LTHOUGHHMMMM)COULD
JUSTADDANOTHERIFELSETOTHEROTATEPROCEDUREANDTHENJUSTHARD
CODETHEROTATIONPOINT
CODEFORTHEAMOEBA4HATPROBABLYWONTBREAKANYTHINGv"UTTHELITTLEVOICEATTHEBACKOF
HISHEADSAIDh"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
4ESTINGRECOMPILINGTHEWHOLENINEYARDSALLOVER METHODBUTONLYINTHE!MOEBACLASS(ENEVER
AGAIN4HINGSTHATUSEDTOWORKDIDNT TOUCHEDTHETESTEDWORKING
URWDWHVKDSH1XP[3W\3W^ COMPILEDCODEFORTHEOTHER $PRHED
LIWKHVKDSHLVQRWDQDPRHED PARTSOFTHEPROGRAM4O LQW[3RLQW
GIVETHE!MOEBAAROTA
LQW\3RLQW
FDOFXODWHWKHFHQWHUSRLQW
TIONPOINTHEADDEDAN URWDWH^
EDVHGRQDUHFWDQJOH
ATTRIBUTETHATALL!MOEBAS FRGHWRURWDWHDQDPRHED
WKHQURWDWH WOULDHAVE(EMODI
XVLQJDPRHED·V[DQG\
HOVH lEDTESTEDANDDELIVERED `
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
INACCOUNTINGHEHADTOTURNTHISTHINGAROUND
,!2299OUVEGOTDUPLICATEDCODE4HEROTATE
PROCEDUREISINALLFOUR3HAPETHINGS
"2!$)TSAMETHODNOTAPROCEDURE!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[
URWDWHDQGSOD\6RXQGIURPWKHRWKHUVKDSHVVRQRZ
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'
,!2297ASNTTHATTHEWHOLEPROBLEMHERETHATTHEAMOEBASHAPE
HADACOMPLETELYDIFFERENTROTATEANDPLAY3OUNDPROCEDURE
UULGH 1RZ
"2!$-ETHOD YH
2
,!2297HATEVER(OWCANAMOEBADOSOMETHINGDIFFERENTIF
$V Z
IThINHERITSvITSFUNCTIONALITYFROMTHE3HAPECLASS N 0H +R
"2!$4HATSTHELASTSTEP4HE!MOEBACLASSOVERRIDESTHE
METHODSOFTHE3
HAPECLASS4HENATRUNTIMETHE*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
PROCEDURESORRYMETHODANDTHENTELLIT ,NQRZKRZD6KDSHLV LVVXSSRVHGWRURWDWH
WHICHTHINGTOROTATE VXSSRVHGWREHKDYH<RXU DQGSOD\DVRXQG
MRELVWRWHOOPHZKDWWR
"2!$4HATSTHEREALLYCOOLTHINGABOUT//
GRDQGP\MRELVWRPDNHLWKDSSHQ
7HENITSTIMEFORSAYTHETRIANGLETOROTATE 'RQ·W\RXZRUU\\RXUOLWWOHSURJUDP
THEPROGRAMCODEINVOKESCALLS THEROTATE PHUKHDGDERXWKRZ,GRLW
METHODONTHETRIANGLEOBJECT4HERESTOFTHE
PROGRAMREALLYDOESNTKNOWORCAREHOWTHE
TRIANGLEDOESIT!NDWHENYOUNEEDTOADD
SOMETHINGNEWTOTHEPROGRAMYOUJUSTWRITE
ANEWCLASSFORTHENEWOBJECTTYPESOTHENEW
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
UNBEKNOWNSTTOALLTHE0ROJECT
-ANAGERHADGIVENTHESPECTO
THREEPROGRAMMERS
YiX`e
?PI\LWaW]TQSMIJW]\77' gfn\i
4IMETOPUMPSOMENEURONS
´,WKHOSVPHGHVLJQLQDPRUHQDWXUDOZD\7KLQJV 9OUJUSTREADASTORYBOUTAPROCEDURAL
KDYHDZD\RIHYROYLQJµ PROGRAMMERGOINGHEAD
TO
HEADWITHAN//
-R\VRIWZDUHDUFKLWHFW PROGRAMMER9OUGOTAQUICKOVERVIEWOFSOME
KEY//CONCEPTSINCLUDINGCLASSESMETHODSAND
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µ YOUREDESIGNINGACLASSWHATWOULDBEONTHE
&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
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
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
EXAMPLEYOUMIGHTUSETHE"UTTON
CLASSTOMAKEDOZENSOFDIFFERENT
BUTTONSANDEACHBUTTONMIGHTHAVE
FODVV
ITSOWNCOLORSIZESHAPELABELANDSOON
/RRNDWLWWKLVZD\ !NOBJECTISLIKEONEENTRYINYOURADDRESSBOOK
/NEANALOGYFOROBJECTSISAPACKETOFUNUSED2OLODEX»CARDS
%ACHCARDHASTHESAMEBLANKFIELDSTHEINSTANCEVARIABLES 7HEN
YOUFILLOUTACARDYOUARECREATINGANINSTANCEOBJECT ANDTHE
ENTRIESYOUMAKEONTHATCARDREPRESENTITSSTATE
4HEMETHODSOFTHECLASSARETHETHINGSYOUDOTOAPARTICULARCARD
GET.AME CHANGE.AME SET.AME COULDALLBEMETHODSFOR
CLASS2OLODEX
3OEACHCARDCANDOTHESAMETHINGSGET.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#LOCK4ELEVISION 7KH'RW2SHUDWRU
ETC ANDANOTHERCLASSTOTESTYOURNEWCLASS4HETESTERCLASSISWHEREYOUPUT
THEMAINMETHODANDINTHATMAIN METHODYOUCREATEANDACCESSOBJECTS 4HEDOTOPERATOR GIVES
OFYOURNEWCLASSTYPE4HETESTERCLASSHASONLYONEJOBTOTRYOUTTHEMETH
YOUACCESSTOANOBJECTS
ODSANDVARIABLESOFYOURNEWOBJECTCLASSTYPE STATEANDBEHAVIORINSTANCE
VARIABLESANDMETHODS
&ROMTHISPOINTFORWARDINTHEBOOKYOULLSEETWOCLASSESINMANYOF
OUREXAMPLES/NEWILLBETHEREALCLASSnTHECLASSWHOSEOBJECTSWE
REALLYWANTTOUSEANDTHEOTHERCLASSWILLBETHETESTERCLASSWHICHWE MAKEANEWOBJECT
CALLWHATEVER9OUR#LASS.AME)S7HVW'ULYH&OREXAMPLEIFWEMAKEA $OGDNEW$OG
%XQJHHCLASSWELLNEEDA%XQJHH7HVW'ULYHCLASSASWELL/NLYTHE
SOME#LASS.AME7HVW'ULYHCLASSWILLHAVEAMAIN METHODANDITSSOLE
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´
`
` :ULWHDWHVWHU7HVW'ULYHFODVV
FODVV'RJ7HVW'ULYH^
KRG
V W D P DLQPHW RGH SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
X F
M
·U H J R QQDSXHW[WVWHS 'RJWHVWFRGHJRHVKHUH
ZH LWLQWKHQ `
LQ `
,Q\RXUWHVWHUPDNHDQREMHFWDQGDFFHVV
WKHREMHFW·VYDULDEOHVDQGPHWKRGV
FODVV'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
'RJG QHZ'RJ PDNHD'RJR
EMHFW
GVL]H XVHWKHGRWRSHUDWRU
GRW WRG
U EDUN WRVHWWKHVL]HRIWKH'
RJ
RSHUD ` DQGWRFDOOLWVEDU
NPHWKRG
,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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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
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
PROGRAMTORUNWITHINTHEMAINMETHODBUTINATRUE//APPLICATIONYOU
NEEDOBJECTSTALKINGTOOTHEROBJECTSASOPPOSEDTOASTATICMAIN METHOD
CREATINGANDTESTINGOBJECTS
<PM\ _W][M[WNUIQV"
NWRWHVW\RXUUHDOFODVV
NWRODXQFKVWDUW\RXU-DYDDSSOLFDWLRQ
!REAL*AVAAPPLICATIONISNOTHINGBUTOBJECTSTALKINGTOOTHEROBJECTS)NTHIS
CASETALKINGMEANSOBJECTSCALLINGMETHODSONONEANOTHER/NTHEPREVIOUS
PAGEANDINCHAPTERWELOOKATUSINGAMAIN METHODFROMASEPARATE
4EST$RIVECLASSTOCREATEANDTESTTHEMETHODSANDVARIABLESOFANOTHERCLASS)N
CHAPTERWELOOKATUSINGACLASSWITHAMAIN METHODTOSTARTTHEBALLROLLING
ONAREAL*AVAAPPLICATIONBYMAKINGOBJECTSANDTHENTURNINGTHOSEOBJECTS
*DPH/DXQFKHU
LOOSETOINTERACTWITHOTHEROBJECTSETC
PDNH
!SA@SNEAKPREVIEWTHOUGHOFHOWAREAL*AVAAPPLICATIONMIGHTBEHAVE *XHVV*VD
HERESALITTLEEXAMPLE"ECAUSEWERESTILLATTHEEARLIESTSTAGESOFLEARNING*AVA REMHFW DPH
WEREWORKINGWITHASMALLTOOLKITSOYOULLlNDTHISPROGRAMALITTLECLUNKY PDLQ6WULQJ>@DUJV WHOOV DQG
ANDINEFlCIENT9OUMIGHTWANTTOTHINKABOUTWHATYOUCOULDDOTOIMPROVE VWDUW*LWWR
ITANDINLATERCHAPTERSTHATSEXACTLYWHATWELLDO$ONTWORRYIFSOMEOFTHE DPH
CODEISCONFUSINGTHEKEYPOINTOFTHISEXAMPLEISTHATOBJECTSTALKTOOBJECTS
<PM/]M[[QVO/IUM *XHVV*DPH
LQVWDQ
3UMMARY S YDULDEOHFVH
S IRUWK
SOD\HUVHWKUHH
4HEGUESSINGGAMEINVOLVESA@GAMEOBJECTANDTHREE@PLAYEROBJECTS4HEGAMEGEN
ERATESARANDOMNUMBERBETWEENANDANDTHETHREEPLAYEROBJECTSTRYTOGUESS S
IT7EDIDNTSAYITWASAREALLYEXCITINGGAME
VWDUW*DPH
#LASSES
*XHVV*DPHFODVV3OD\HUFODVV*DPH/DXQFKHUFODVV
WKH
3OD\HU WKLVSQOXPEHU
4HE,OGIC
JXHVVHGD\HU
4HE'AME,AUNCHERCLASSISWHERETHEAPPLICATIONSTARTSITHASTHEMAIN METHOD QXPEHU
)NTHEMAIN METHODA'UESS'AMEOBJECTISCREATEDANDITSSTART'AME METHOD PHWK
PDNLQJRGIRU
ISCALLED JXHVV
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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 LQW0DWKUDQGRP
PDNHD¶WDUJHW·QXPEHUWKDWWKH
6\VWHPRXWSULQWOQ³,¶PWKLQNLQJRIDQXPEHUEHWZHHQDQG´ SOD\HUVKDYHWRJXHVV
ZKLOHWUXH^
6\VWHPRXWSULQWOQ³1XPEHUWRJXHVVLV³WDUJHW1XPEHU
SJXHVV
SJXHVV
FDOOHDFKSOD\HU·VJXHVVPHWKRG
SJXHVV
JXHVVS SQXPEHU
6\VWHPRXWSULQWOQ³3OD\HURQHJXHVVHG³JXHVVS
JXHVVS SQXPEHU JHWHDFKSOD\HU·VJXHVVWKHUHVXOWRI LU
6\VWHPRXWSULQWOQ³3OD\HUWZRJXHVVHG³JXHVVS JXHVVPHWKRGUXQQLQJE\DFFHVVLQJWWKH
KH
JXHVVS SQXPEHU QXPEHUYDULDEOHRIHDFKSOD\HU
6\VWHPRXWSULQWOQ³3OD\HUWKUHHJXHVVHG³JXHVVS
LIJXHVVS WDUJHW1XPEHU^
SLV5LJKW WUXH
` FKHFNHDFKSOD\HU·VJXHVVWRVHHLILWPDWFKHV
LIJXHVVS WDUJHW1XPEHU^ WKHWDUJHWQXPEHU,IDSOD\HULVULJKW
SLV5LJKW WUXH WKHQVHWWKDWSOD\HU·VYDULDEOHWREHWUXH
` UHPHPEHUZHVHWLWIDOVHE\GHIDXOW
LIJXHVVS WDUJHW1XPEHU^
SLV5LJKW WUXH
`
LISOD\HURQH25SOD\HUWZR25SOD\HUWKUHHLVULJ
LISLV5LJKW__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 LQW0DWKUDQGRP
6\VWHPRXWSULQWOQ³,¶PJXHVVLQJ³ )LOH(GLW:LQGRZ+HOS([SORGH
QXPEHU MDYD*DPH/DXQFKHU
`
` ,¶PWKLQNLQJRIDQXPEHUEHWZHHQDQG
1XPEHUWRJXHVVLV
SXEOLFFODVV*DPH/DXQFKHU^ ,¶PJXHVVLQJ
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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*AVAITGOESINTOANAREAOF ,¶PJXHVVLQJ
MEMORYKNOWNAS4HE(EAP ,¶PJXHVVLQJ
!LLOBJECTSNOMATTERWHENWHERE
3OD\HURQHJXHVVHG
ORHOWTHEYRECREATEDnLIVEONTHE
HEAP"UTITSNOTJUSTANYOLDMEMORY 3OD\HUWZRJXHVVHG
HEAPTHE*AVAHEAPISACTUALLYCALLEDTHE 3OD\HUWKUHHJXHVVHG
'ARBAGE
#OLLECTIBLE(EAP7HENYOU
CREATEANOBJECT*AVAALLOCATESMEMORY
3OD\HUVZLOOKDYHWRWU\DJDLQ
SPACEONTHEHEAPACCORDINGTOHOW 1XPEHUWRJXHVVLV
MUCHTHATPARTICULAROBJECTNEEDS!N ,¶PJXHVVLQJ
OBJECTWITHSAYINSTANCEVARIABLES
WILLPROBABLYNEEDMORESPACETHANAN ,¶PJXHVVLQJ
OBJECTWITHONLYTWOINSTANCEVARIABLES ,¶PJXHVVLQJ
"UTWHATHAPPENSWHENYOUNEEDTO 3OD\HURQHJXHVVHG
RECLAIMTHATSPACE(OWDOYOUGETAN
OBJECTOUTOFTHEHEAPWHENYOUREDONE 3OD\HUWZRJXHVVHG
WITHIT*AVAMANAGESTHATMEMORY 3OD\HUWKUHHJXHVVHG
FORYOU7HENTHE*6-CAN@SEETHATAN
:HKDYHDZLQQHU
OBJECTCANNEVERBEUSEDAGAINTHAT
OBJECTBECOMESELIGIBLEFORGARBAGE 3OD\HURQHJRWLWULJKW"WUXH
COLLECTION!NDIFYOURERUNNINGLOWON 3OD\HUWZRJRWLWULJKW"IDOVH
MEMORYTHE'ARBAGE#OLLECTORWILLRUN
THROWOUTTHEUNREACHABLEOBJECTSAND 3OD\HUWKUHHJRWLWULJKW"IDOVH
FREEUPTHESPACESOTHATTHESPACECAN *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*AVAAPPLICATIONONEOF
N
@GLOBALVARIABLESANDMETHODSIN THECLASSESMUSTHAVEAMAIN
!CLASSISLI
A*AVA//PROGRAM)NPRACTICAL METHODUSEDTOSTART
UPTHE KEARECIP
E
USEHOWEVERTHEREARETIMES PROGRAM3OASAPROGRAMMER /BJECTSA
RELIKE
WHENYOUWANTAMETHODOR YOUWRITEONEORMORECLASSES COOKIES
ACONSTANT TOBEAVAILABLE !NDTHOSECLASSESAREWHATYOU
TOANYCODERUNNINGINANY DELIVER)FTHEEND
USERDOESNT
PARTOFYOURPROGRAM4HINK HAVEA*6-THENYOULLALSO
OFTHEUDQGRPMETHODIN NEEDTOINCLUDETHATWITH
THE0HRASE
/
-ATICAPPITSA YOURAPPLICATIONSCLASSES
METHODTHATSHOULDBECALLABLE SOTHATTHEYCANRUNYOUR
FROMANYWHERE/RWHATABOUT PROGRAM4HEREAREANUMBER
ACONSTANTLIKEPI9OULLLEARN OFINSTALLERPROGRAMSTHAT
INCHAPTERTHATMARKING LETYOUBUNDLEYOURCLASSES
AMETHODASSXEOLFAND WITHAVARIETYOF*6-SSAYFOR
VWDWLFMAKESITBEHAVEMUCH DIFFERENTPLATFORMS ANDPUTITALL
LIKEA@GLOBAL!NYCODEINANY ONA#$
2/-4HENTHEEND
USER :MDD=LHGAFLK
CLASSOFYOURAPPLICATIONCAN CANINSTALLTHECORRECTVERSIONOF
THE*6-ASSUMINGTHEYDONT
2EMHFWRULHQWHGSURJUDPPLQJOHWV\RXH[WHQG
ACCESSAPUBLICSTATICMETHOD
ALREADYHAVEITONTHEIRMACHINE
DSURJUDPZLWKRXWKDYLQJWRWRXFKSUHYLRXVO\
!NDIFYOUMARKAVARIABLEAS
SXEOLFVWDWLFAND¿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
\RXDUHKHUH
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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^ SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
'9'3OD\HUG QHZ'9'3OD\HU
WFDQ5HFRUG WUXH GFDQ5HFRUG WUXH
WSOD\7DSH GSOD\'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
UPSOFEELFREETOADDASMANYOFTHOSE
ASYOUNEED
WUXH
ERROHDQWRS+DW
WUXH
ERROHDQVQDUH
YRLGSOD\6QDUH^
EDEDQJµ
6\VWHPRXWSULQWOQ´EDQJEDQJ
`
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
L
IGVQ
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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
(FKRH QHZ(FKR
BBBBBBBBBBBBBBBBBBBBBBBBB
3RRO3X]]OH LQW[
9OURJOBISTOTAKECODESNIPPETSFROM ZKLOHBBBBBBBBBBB^
THEPOOLANDPLACETHEMINTOTHE
BLANKLINESINTHECODE9OUMAY HKHOOR
USETHESAMESNIPPETMORETHAN BBBBBBBBBBBBBBBBBBBBBBBBBB
ONCEANDYOUWONTNEEDTOUSE
LIBBBBBBBBBBBB^
ALLTHESNIPPETS9OURGOALISTO
MAKECLASSESTHATWILLCOMPILEAND HFRXQW HFRXQW
RUNANDPRODUCETHEOUTPUTLISTED `
LIBBBBBBBBBBBB^
/UTPUT HFRXQW HFRXQWHFRXQW
)LOH(GLW:LQGRZ+HOS,PSORGH `
MDYD(FKR7HVW'ULYH [ [
KHOORRRR `
KHOORRRR 6\VWHPRXWSULQWOQHFRXQW
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
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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
FODVV'UXP.LW^
7DSH'HFNW QHZ7DSH'HFN
ERROHDQWRS+DW WUXH WFDQ5HFRUG WUXH
ERROHDQVQDUH WUXH WSOD\7DSH
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^ 7HOAM)
(FKRH QHZ(FKR
(FKRH QHZ(FKRWKHFRUUHFWDQVZHU ,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\VWHPRXWSULQWOQHFRXQW 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
USEDVARIABLESINTWOPLACESASOBJECTVWDWHINSTANCEVARIABLES ANDASORFDOVARIABLES
VARIABLESDECLAREDWITHINAMETHOD ,ATERWELLUSEVARIABLESASDUJXPHQWVVALUESSENTTOA
METHODBYTHECALLINGCODE ANDASUHWXUQW\SHVVALUESSENTBACKTOTHECALLEROFTHEMETHOD
9OUVESEENVARIABLESDECLAREDASSIMPLESULPLWLYHINTEGERVALUESTYPELQW 9OUVESEEN
VARIABLESDECLAREDASSOMETHINGMOREFRPSOH[LIKEA3TRINGORANARRAY"UTWKHUH·VJRWWDEH
PRUHWROLIHTHANINTEGERS3TRINGSANDARRAYS7HATIFYOUHAVEA0ET/WNEROBJECTWITHA$OG
INSTANCEVARIABLE/RA#ARWITHAN%NGINE)NTHISCHAPTERWELLUNWRAPTHEMYSTERIESOF*AVA
TYPESANDLOOKATWHATYOUCANDECLAREASAVARIABLEWHATYOUCANPUTINAVARIABLEANDWHATYOU
CANDOWITHAVARIABLE!NDWELLFINALLYSEEWHATLIFEISTRULYLIKEONTHEGARBAGE
COLLECTIBLEHEAP
WKLVLVDQHZFKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
requires prior written consent from the copyright owner. Unauthorized use, reproduction and/or distribution are strictly prohibited and violate applicable laws. All rights reserved.
GHFODULQJDYDULDEOH
,MKTIZQVOI^IZQIJTM
*AVACARESABOUTTYPE)TWONTLETYOUDO
SOMETHINGBIZARREANDDANGEROUSLIKESTUFFA
'IRAFFEREFERENCEINTOA2ABBITVARIABLEWHAT
HAPPENSWHENSOMEONETRIESTOASKTHESO
CALLED
2ABBITTOKRS!NDITWONTLETYOUPUTA
mOATINGPOINTNUMBERINTOANINTEGERVARIABLE
UNLESSYOUACKNOWLEDGETOTHECOMPILERTHATYOU
KNOWYOUMIGHTLOSEPRECISIONLIKEEVERYTHING
AFTERTHEDECIMALPOINT
4HECOMPILERCANSPOTMOSTPROBLEMS
5DEELWKRSSHU QHZ*LUDIIH
\SH
D Y D FD U H VDERXWW DIIH $ONTEXPECTTHATTOCOMPILE4HANKFULLY
- SXWD*LU
<RXFDQ·W LWYDULDEOH &ORALLTHISTYPE
SAFETYTOWORKYOUMUSTDECLARE
LQD5DEE THETYPEOFYOURVARIABLE)SITANINTEGERA$OG
!SINGLECHARACTER6ARIABLESCOMEINTWOmAVORS
PRIMITIVEANDOBJECTREFERENCE0RIMITIVESHOLD
FUNDAMENTALVALUESTHINKSIMPLEBITPATTERNS
INCLUDINGINTEGERSBOOLEANSANDmOATINGPOINT
NUMBERS/BJECTREFERENCESHOLDWELLREFERENCES
TOOBJECTSGEEDIDNTTHATCLEARITUP
7ELLLOOKATPRIMITIVESlRSTANDTHENMOVE
ONTOWHATANOBJECTREFERENCEREALLYMEANS
"UTREGARDLESSOFTHETYPEYOUMUSTFOLLOWTWO
DECLARATIONRULES
YDULDEOHVPXVWKDYHDW\SH
"ESIDESATYPEAVARIABLENEEDSANAMESOTHAT
YOUCANUSETHATNAMEINCODE
YDULDEOHVPXVWKDYHDQDPH
LQWFRXQW
W\SH QDPH
.OTE7HENYOUSEEASTATEMENTLIKEhANOBJECT
OFTYPE8vTHINKOFTYPEANDCLASSASSYNONYMS
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*AVAVARIABLESTHINKOFCUPS#OFFEECUPSTEACUPSGIANT 7\SH%LW'HSWK 9DOXH5DQJH
CUPSTHATHOLDLOTSANDLOTSOFBEERTHOSEBIGCUPSTHEPOPCORNCOMESINAT ERROHDQDQGFKDU
THEMOVIESCUPSWITHCURVYSEXYHANDLESANDCUPSWITHMETALLICTRIMTHAT
YOULEARNEDCANNEVEREVERGOINTHEMICROWAVE BOOLEAN*6-
SPECIFIC TRUEORFALSE
!VARIABLEISJUSTACUP!CONTAINER)THOLDSSOMETHING CHAR BITS TO
VPDOOVKRUWWDOOJUDQGH 3ULPLWLYHGHFODUDWLRQV
ZLWKDVVLJQPHQWV
INTX
!NDIN*AVAPRIMITIVESCOMEINDIFFERENTSIZESANDTHOSESIZES
HAVENAMES7HENYOUDECLAREAVARIABLEIN*AVA X
YOUMUSTDECLAREITWITHASPECIlCTYPE4HE BYTEB
FOURCONTAINERSHEREAREFORTHEFOUR BOOLEANIS&UNTRUE
INTEGERPRIMITIVESIN*AVA
DOUBLED
CHARC@F
ORQJLQWVKRUWE\WH INTZX
%ACHCUPHOLDSAVALUESOFOR*AVAPRIMITIVESRATHERTHANSAYINGh)DLIKEA BOOLEANIS0UNK2OCK
TALLFRENCHROASTvYOUSAYTOTHECOMPILERh)DLIKEANINTVARIABLEWITHTHE
IS0UNK2OCKFALSE
NUMBERPLEASEv%XCEPTFORONETINYDIFFERENCEIN*AVAYOUALSOHAVETO
GIVEYOURCUPANAME3OITSACTUALLYh)DLIKEANINTPLEASEWITHTHEVALUE BOOLEANPOWER/N
OFANDNAMETHEVARIABLEHEIGHTv%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
Licensed by
ARELEGALANDWHICHARENT
INT
FULLOFSTUFFINTOABYTE
SIZED 7EHAVENTCOVEREDALLTHE
CONTAINERASFOLLOWS RULESYETSOONSOMEOFTHESE
LQW[ YOULLHAVETOUSEYOURBEST
JUDGMENT4IP4HECOMPILER
E\WHE [
Eduard Simons
ALWAYSERRSONTHESIDEOF
SAFETY
ZRQ¶WZRUN
&ROMTHEFOLLOWINGLIST#IRCLE
THESTATEMENTSTHATWOULDBE
7HYDOESNTTHISWORKYOUASK!FTERALLTHEVALUEOFXISANDISDElNITELY
104038
LEGALIFTHESELINESWEREINA
SMALLENOUGHTOlTINTOABYTE9OUKNOWTHATANDWEKNOWTHATBUTALLTHE SINGLEMETHOD
COMPILERCARESABOUTISTHATYOURETRYINGTOPUTABIGTHINGINTOASMALLTHING
ANDTHERESTHEPOSSIBILITYOFSPILLING$ONTEXPECTTHECOMPILERTOKNOWWHATTHE LQW[
VALUEOFXISEVENIFYOUHAPPENTOBEABLETOSEEITLITERALLYINYOURCODE ERROHDQERR [
9OUCANASSIGNAVALUETOAVARIABLEINONEOFSEVERALWAYSINCLUDING
LQWJ
NTYPEALITERALVALUEAFTERTHEEQUALSSIGNXIS'OODTRUEETC
LQW\ J
NASSIGNTHEVALUEOFONEVARIABLETOANOTHERXY
\ \
NUSEANEXPRESSIONCOMBININGTHETWOXY
)NTHEEXAMPLESBELOWTHELITERALVALUESAREINBOLDITALICS VKRUWV
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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
CANNAMEACLASSMETHODORVARIABLEACCORDINGTOTHE
WLFN
0DNH LW 6
FOLLOWINGRULESTHEREALRULESARESLIGHTLYMOREmEXIBLE
BUTTHESEWILLKEEPYOUSAFE
YPESARE ATDOUB
LE
Q ,WPXVWVWDUWZLWKDOHWWHUXQGHUVFRUHBRU 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
COMPILERTHENJUSTTRY
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
NEEDTOKNOWWHATTHEYMEANYOUSTILLNEEDTOKNOWYOUCANTUSE
@EMYOURSELF$ONOTnUNDERANYCIRCUMSTANCESnTRYTOMEMORIZETHESE
NOW4OMAKEROOMFORTHESEINYOURHEADYOUDPROBABLYHAVETO
LOSESOMETHINGELSE,IKEWHEREYOURCARISPARKED$ONTWORRYBY
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\ZRUGVDQGRWKHUUHVHUYHGZRUGVLQQRXVHIXORUGHU,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
WORDSWHATABOUTOBJECTS '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
ITTHATWAYWESAYTHINGSLIKEh)PASSEDTHE3TRINGTOTHE
3YSTEMOUTPRINTLN METHODv/Rh4HEMETHODRETURNSA$OGv
ORh)PUTANEW&OOOBJECTINTOTHEVARIABLENAMEDMY&OOv
"UTTHATSNOTWHATHAPPENS4HEREARENTGIANT
EXPANDABLECUPSTHATCANGROWTOTHESIZEOFANY 7KLQNRID'RJ
OBJECT/BJECTSLIVEINONEPLACEANDONEPLACE UHIHUHQFHYDULDEOHDV
ONLYTHEGARBAGECOLLECTIBLEHEAP9OULL
LEARNMOREABOUTTHATLATERINTHISCHAPTER D'RJUHPRWHFRQWURO
!LTHOUGHAPRIMITIVEVARIABLEISFULLOF <RXXVHLWWRJHWWKH
BITSREPRESENTINGTHEACTUALVALUEOFTHE
REMHFWWRGRVRPHWKLQJ
VARIABLEANOBJECTREFERENCEVARIABLEISFULL
OFBITSREPRESENTINGAWAYTOGETTOTHE LQYRNHPHWKRGV
OBJECT
9OUUSETHEDOTOPERATOR
ONAREFERENCEVARIABLETOSAY
hUSETHETHINGBEFORETHEDOTTO
GETMETHETHINGAFTERTHEDOTv&OR
EXAMPLE
P\'RJEDUN
MEANShUSETHEOBJECTREFERENCEDBYTHEVARIABLEMY$OGTO
INVOKETHEBARK METHODv7HENYOUUSETHEDOTOPERATORON
ANOBJECTREFERENCEVARIABLETHINKOFITLIKEPRESSINGABUTTON
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
:MNMZMVKM>IZQIJTM &UHDWHDQREMHFW
HFW
'RJP\'RJ QHZ'RJ
EM
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-SDEVELOPMENTTEAMYOU KWV\ZWTLQNNMZMV\WJRMK\[
DONTKNOWHOWAREFERENCEIS
REPRESENTED4HEREAREPOINTERS
+HDG)LUVW,WaW]UMIVLQNNMZMV\WJRMK\[M^MV_PQTMaW]¼ZMZ]VVQVO'4QSMKIVaW]
INTHERESOMEWHEREBUTYOU 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/+IFYOUINSISTYOU \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'
ALLOCATIONISSUESYOUR"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: 3ODOESTHATMEANTHAT JMI[[QOVML\WUM
ALLOBJECTREFERENCESARETHE +HDG)LUVWAW]¼ZMZQOP\_MLWV¼\_IV\\W\ITSIJW]\\PI\VW_73[W]VTM[[aW]¼ZM
SAMESIZEREGARDLESSOFTHESIZE
¿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'
THEYREFERENCEBUTEACH*6-
MIGHTHAVEADIFFERENTWAYOF 5HIHUHQFH7PQXOOQ[I^IT]M1¼U[\QTTIZMUW\MKWV\ZWTJ]\Q\¼[TQSMaW]JZW]OP\
REPRESENTINGREFERENCESSO 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
REFERENCEVARIABLEINCREMENTIT
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
2ATHERTHANCREATINGANEWTHIRD"OOK
OBJECTASSIGNTHEVALUEOFVARIABLECTO
%R
RNREMHFW
VARIABLED"UTWHATDOESTHISMEAN
)TSLIKESAYINGh4AKETHEBITSINCMAKEA
COPYOFTHEMANDSTICKTHATCOPYINTODv
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
BARECOPIEDANDTHATNEWCOPYIS %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
4HEBITSINSIDEVARIABLECARECOPIEDAND
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
4HISMAKESCANULLREFERENCEMEANING 1RW\HWWRDJVWDVE
ITDOESNTREFERTOANYTHING"UTITSSTILL
%R VDIHDVORQ
RNREMHFW UHIHUVWRLW
AREFERENCEVARIABLEANDANOTHER"OOK
OBJECTCANSTILLBEASSIGNEDTOIT
EAP
2EMHFWVWLOOKDVDQDFWLYH
W
UHIHUHQFHEDQGDVORQJ 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\REMHFWLQW>@
QXPV>@ QXPV
QXPV>@
QXPV>@ LQW>@ 1RWLFHWKDWWKHDUUD\LWVHOILVDQREMHFW
HYHQWKRXJKWKHHOHPHQWVDUHSULPLWLYHV
)ZZIa[IZMWJRMK\[\WW
4HE*AVASTANDARDLIBRARYINCLUDES REFERENCEVARIABLE!NYTHINGYOU "ESURETONOTICEONEKEYTHING
LOTSOFSOPHISTICATEDDATASTRUCTURES WOULDPUTINAVARIABLEOFTHATTYPE INTHEPICTUREABOVEnTHEARRAYIS
INCLUDINGMAPSTREESANDSETS CANBEASSIGNEDTOANARRAYELEMENT ANOBJECTEVENTHOUGHITSANARRAYOF
SEE!PPENDIX" BUTARRAYSARE OFTHATTYPE3OINANARRAYOFTYPE PRIMITIVES
GREATWHENYOUJUSTWANTAQUICK INTINT;= EACHELEMENTCANHOLD !RRAYSAREALWAYSOBJECTSWHETHER
ORDEREDEFlCIENTLISTOFTHINGS ANINT)NA$OGARRAY$OG;= EACH THEYREDECLAREDTOHOLDPRIMITIVES
!RRAYSGIVEYOUFASTRANDOM ELEMENTCANHOLDA$OG.O OROBJECTREFERENCES"UTYOUCAN
ACCESSBYLETTINGYOUUSEANINDEX REMEMBERTHATAREFERENCEVARIABLE HAVEANARRAYOBJECTTHATSDECLARED
POSITIONTOGETTOANYELEMENTIN JUSTHOLDSAREFERENCEAREMOTE TOHOLDPRIMITIVEVALUES)NOTHER
THEARRAY CONTROL NOTTHEOBJECTITSELF3O WORDSTHEARRAYOBJECTCANHAVE
%VERYELEMENTINANARRAYISJUST INA$OGARRAYEACHELEMENTCAN ELEMENTSWHICHAREPRIMITIVESBUT
AVARIABLE)NOTHERWORDSONEOF HOLDAREMOTECONTROLTOA$OG/F THEARRAYITSELFISNEVERAPRIMITIVE
THEEIGHTPRIMITIVEVARIABLETYPES COURSEWESTILLHAVETOMAKETHE 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$OGREFERENCESBUTNO
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
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 THEDOTOPERATORBUTONWHAT
WKH\DVNHDFKRQ XU NLQ J $QG
WKHUH·VDFDWO
KRUURUGLVFRYHU OH L QW RD QL QW DUUD\ 7HENTHE$OGISINANARRAYWEDONT
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
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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\VWHPRXWSULQWOQP\'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
8VLQJWKHGRWRSHUDWRURQDUHIHUHQFH
YDULDEOHLVOLNHSUHVVLQJDEXWWRQRQWKHUHPRWH
SXEOLFYRLGEDUN^
FRQWUROWRDFFHVVDPHWKRGRULQVWDQFHYDULDEOH
6\VWHPRXWSULQWOQQDPH³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
`
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
FODVV%RRNV7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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\VWHPRXWSULQWP\%RRNV>[@WLWOH `
6\VWHPRXWSULQW´E\´ 6\VWHPRXWSULQWK>]@QDPH´LVD´
6\VWHPRXWSULQWOQP\%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
LQWUHI
ZKLOH\^
6\VWHPRXWSULQWOQLVODQGV>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
LGPDLQ6WULQJ>@
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
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
9OURJOBISTOTAKECODESNIPPETSFROM BBBBBBBBBBBB
THEPOOLANDPLACETHEMINTOTHE BBBBBBBBBBBBBBBBBBBBBBB
BLANKLINESINTHECODE9OUMAY
USETHESAMESNIPPETMORETHAN ZKLOHBBBBBBBBBB^
ONCEANDYOUWONTNEEDTOUSE 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 `
&OREXTRABONUSPOINTSUSESNIPPETS 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 SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
!SHORT*AVAPROGRAMISLISTEDTOTHE +HDS4XL]>@KT QHZ+HDS4XL]>@
RIGHT7HEN@DOSTUFFISREACHEDSOME
OBJECTSANDSOMEREFERENCEVARIABLES ZKLOH[^
WILLHAVEBEENCREATED9OURTASKIS KT>[@ QHZ+HDS4XL]
TODETERMINEWHICHOFTHEREFERENCE KT>[@LG [
VARIABLESREFERTOWHICHOBJECTS.OTALL [ [
THEREFERENCEVARIABLESWILLBEUSEDAND
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
REMHFWV 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^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
%RRNV>@P\%RRNV QHZ%RRNV>@
LQW[
$ P\%RRNV>@ QHZ%RRNV5HPHPEHU:HKDYHWR
&RGH0DJQHWV P\%RRNV>@ QHZ%RRNVDFWXDOO\PDNHWKH%RRNV
P\%RRNV>@ QHZ%RRNVREMHFWV
FODVV7HVW$UUD\V^ P\%RRNV>@WLWOH ´7KH*UDSHVRI-DYDµ
P\%RRNV>@WLWOH ´7KH-DYD*DWVE\µ
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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\VWHPRXWSULQWP\%RRNV>[@WLWOH
6WULQJ>@LVODQGV QHZ6WULQJ>@ 6\VWHPRXWSULQW´E\´
6\VWHPRXWSULQWOQP\%RRNV>[@DXWKRU
LVODQGV>@ ´%HUPXGDµ
[ [
LVODQGV>@ ´)LMLµ `
LVODQGV>@ ´$]RUHVµ `
LVODQGV>@ ´&R]XPHOµ `
LQW\
LQWUHI FODVV+REELWV^
6WULQJQDPH
ZKLOH\^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
UHI LQGH[>\@ +REELWV>@K QHZ+REELWV>@
6\VWHPRXWSULQW´LVODQG ´ LQW] 5HPHPEHUDUUD\VVWDUWZLWK
6\VWHPRXWSULQWOQLVODQGV>UHI@ ZKLOH]^HOHPHQW
\ \ ] ]
` K>]@ QHZ+REELWV
FKDSWHU
Head First Java, 2nd Edition. Head First Java, 2nd Edition, ISBN: 0596009208
Prepared for e.simons@icarin.fiuc.org, Eduard Simons
Copyright © 2005 Bert Bates and Kathy Sierra. This PDF is made available for personal use only during the relevant subscription term, subject to the Safari Terms of Service. Any other use
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"OBBUTTHEREWASNOWAYTOACCESSANY
LQWOHQJWK BUTTHELASTOFTHE#ONTACTOBJECTSTHATHISMETHODCRE
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@DUJV^
LQW[
LQW[
ATED7ITHEACHTRIPTHROUGHTHELOOPHEWASASSIGN
7ULDQJOH>@WD
7ULDQJOH>@WD QHZ7ULDQJOH>@ INGANEWOBJECTTOTHEONEREFERENCEVARIABLESOTHE
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
HAVESTATEANDBEHAVIORREPRESENTEDBYINSTANCEVARIABLESANDMETHODS"UTUNTILNOWWE
HAVENTLOOKEDATHOWSTATEANDBEHAVIORARERELATED7EALREADYKNOWTHATEACHINSTANCEOFA
CLASSEACHOBJECTOFAPARTICULARTYPE CANHAVEITSOWNUNIQUEVALUESFORITSINSTANCEVARIABLES
$OG!CANHAVEANAMEh&IDOvANDAWEIGHTOFPOUNDS$OG"ISh+ILLERvANDWEIGHSPOUNDS
!NDIFTHE$OGCLASSHASAMETHODMAKE.OISE WELLDONTYOUTHINKA
POUNDDOGBARKSA
BITDEEPERTHANTHELITTLE
POUNDER!SSUMINGTHATANNOYINGYIPPYSOUNDCANBECONSIDERED
ABARK &ORTUNATELYTHATSTHEWHOLEPOINTOFANOBJECTITHASBEHAVIORTHATACTSONITSSTATE)N
OTHERWORDSMETHODSUSEINSTANCEVARIABLEVALUES,IKEhIFDOGISLESSTHANPOUNDSMAKE
YIPPYSOUNDELSEvORhINCREASEWEIGHTBYv,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
WRITEACLASSYOUREDESCRIBINGHOWTHE*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
METHODSBUTTHEMETHODSCANBEHAVEDIFFERENTLY
BASEDONTHEVALUEOFTHEINSTANCEVARIABLES
RIFODVV 3ROLWLN
Eduard Simons
4HE3ONGCLASSHASTWOINSTANCEVARIABLESTITLE &ROGSOD\ 0\:D\
ANDARTIST4HEPLAY METHODPLAYSASONGBUT 6LQDWUD
THEINSTANCEYOUCALLPLAY ONWILLPLAYTHESONG
REPRESENTEDBYTHEVALUEOFTHETITLEINSTANCE
0\:D\
VARIABLEFORTHATINSTANCE3OIFYOUCALLTHEPLAY 'DUNVWDU
104038
METHODONONEINSTANCEYOULLHEARTHESONG *UDWHIXO 6H[3LVWROV
h0OLITIKvWHILEANOTHERINSTANCEPLAYSh$ARKSTARv 'HDG 6LQJ
4HEMETHODCODEHOWEVERISTHESAME
7UDYLV
YRLGSOD\^
VRXQG3OD\HUSOD\6RXQGWLWOH
`
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$OGCLASSHASANINSTANCEVARIABLESIZETHATTHE
BARK METHODUSESTODECIDEWHATKINDOFBARKSOUND
TOMAKE
'RJ
FODVV'RJ^
LQWVL]H VL]H
QDPH
6WULQJQDPH
EDUN
YRLGEDUN^
LIVL]H!^
6\VWHPRXWSULQWOQ³:RRRI:RRRI´
`HOVHLIVL]H!^
6\VWHPRXWSULQWOQ³5XII5XII´
`HOVH^
6\VWHPRXWSULQWOQ³<LS<LS´
`
`
`
FODVV'RJ7HVW'ULYH^
SXEOLFVWDWLFYRLGPDLQ6WULQJ>@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
*USTASYOUEXPECTFROMANYPROGRAMMINGLANGUAGEYOUCANPASSVALUESINTO
YOURMETHODS9OUMIGHTFOREXAMPLEWANTTOTELLA$OGOBJECTHOWMANY
TIMESTOBARKBYCALLING
GEDUN
$EPENDINGONYOURPROGRAMMINGBACKGROUNDANDPERSONALPREFERENCES
YOUMIGHTUSETHETERMARGUMENTSORPERHAPSPARAMETERSFORTHEVALUESPASSED
INTOAMETHOD!LTHOUGHTHEREAREFORMALCOMPUTERSCIENCEDISTINCTIONSTHAT
PEOPLEWHOWEARLABCOATSANDWHOWILLALMOSTCERTAINLYNOTREADTHISBOOK
MAKEWEHAVEBIGGERlSHTOFRYINTHISBOOK3OYOUCANCALLTHEMWHATEVER
YOULIKEARGUMENTSDONUTSHAIRBALLSETC BUTWEREDOINGITLIKETHIS
$PHWKRGXVHVSDUDPHWHUV$FDOOHUSDVVHVDUJXPHQWV
!RGUMENTSARETHETHINGSYOUPASSINTOTHEMETHODS!NARGUMENTAVALUE
LIKEh&OOvORAREFERENCETOA$OG LANDSFACE
DOWNINTOAWAITFORIT
PARAMETER!NDAPARAMETERISNOTHINGMORETHANALOCALVARIABLE!VARIABLE
WITHATYPEANDANAMETHATCANBEUSEDINSIDETHEBODYOFTHEMETHOD
"UTHERESTHEIMPORTANTPART)FAMETHODTAKESAPARAMETERYOUMUSTPASS
ITSOMETHING!NDTHATSOMETHINGMUSTBEAVALUEOFTHEAPPROPRIATETYPE
'RJG QHZ'RJ
&DOOWKHEDUNPHWKRGRQWKH'RJUHIHU
HQFHDQGSDVVLQWKHYDOXHDVWKH GEDUN
DUJXPHQWWRWKHPHWKRG
DUJXPHQW
7KHELWVUHSUHVHQWLQJWKHLQW
YDOXHDUHGHOLYHUHGLQWRWKH
EDUNPHWKRG
SDUDPHWHU
7KHELWVODQGLQWKHQXP2I%DUNV
SDUDPHWHUDQLQWVL]HGYDULDEOH
LQW
YRLGEDUNLQWQXP2I%DUNV^
8VHWKHQXP2I%DUNV
ZKLOHQXP2I%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.