ebook img

Head First Java 2e by Kathy Sierra and Bert Bates PDF

690 Pages·2008·33.97 MB·English
by  
Save to my drive
Quick download
Download
Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.

Preview Head First Java 2e by Kathy Sierra and Bert Bates

����������������� ����������� ��������������� ���������������� ���������� ���� ����������������� �������������������� ������������������ ������������������� ������������������������� ��������������� ��������� ������������ ������������������������������������ ������������������������������ ��������������� ��������������� ix i Intro Your brain on Java. �������������������������������������������������������������� ������������������������������������������������������������������������������������������������ ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ������������������������� Who is this book for? xxii What your brain is thinking xxiii Metacognition xxv Bend your brain into submission xxvii What you need for this book xxviii Technical editors xxx Acknowledgements xxxi Table of Contents (summary) Intro xxi 1 Breaking the Surface: a quick dip 1 2 A Trip to Objectville: yes, there will be objects 27 3 Know Your Variables: primitives and references 49 4 How Objects Behave: object state affects method behavior 71 5 Extra-Strength Methods: flow control, operations, and more 95 6 Using the Java Library: so you don’t have to write it all yourself 125 7 Better Living in Objectville: planning for the future 165 8 Serious Polymorphism: exploiting abstract classes and interfaces 197 9 Life and Death of an Object: constructors and memory management 235 10 Numbers Matter: math, formatting, wrappers, and statics 273 11 Risky Behavior: exception handling 315 12 A Very Graphic Story: intro to GUI, event handling, and inner classes 353 13 Work on Your Swing: layout managers and components 399 14 Saving Objects: serialization and I/O 429 15 Make a Connection: networking sockets and multithreading 471 16 Data Structures: collections and generics 529 17 Release Your Code: packaging and deployment 581 18 Distributed Computing: RMI with a dash of servlets, EJB, and Jini 607 A Appendix A: Final code kitchen 649 B Appendix B: Top Ten Things that didn’t make it into the rest of the book 659 Index 677 Table of Contents (the full version) x You Bet Shoot Me 2 A Trip to Objectville I was told there would be objects. ������������������������������������� ������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ �������������������������������������������������������������������������������� 1 Breaking the Surface Java takes you to new places. ��������������������������������������������� ������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������������� ����������������������������� The way Java works 2 Code structure in Java 7 Anatomy of a class 8 The main() method 9 Looping 11 Conditional branching (if tests) 13 Coding the “99 bottles of beer” app 14 Phrase-o-matic 16 Fireside chat: compiler vs. JVM 18 Exercises and puzzles 20 Method Party() 0 aload_0 1 invokespe- cial #1 <Method java.lang.Object()> 4 return Compiled bytecode Virtual Machines Chair Wars (Brad the OO guy vs. Larry the procedural guy) 28 Inheritance (an introduction) 31 Overriding methods (an introduction) 32 What’s in a class? (methods, instance variables) 34 Making your fi rst object 36 Using main() 38 Guessing Game code 39 Exercises and puzzles 42 xi pass-by-value means pass-by-copy 3 Know Your Variables Variables come in two flavors: primitive and reference. ���������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������������� �������������������������������� Dog reference D o g o b j e ct size 24 int fido 4 How Objects Behave State affects behavior, behavior affects state. ��������������������� ����������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� ��������������������������������������������������������������� 00000111 int X 00000111 int Z copy of x foo.go(x); void go(int z){ } Declaring a variable (Java cares about type) 50 Primitive types (“I’d like a double with extra foam, please”) 51 Java keywords 53 Reference variables (remote control to an object) 54 Object declaration and assignment 55 Objects on the garbage-collectible heap 57 Arrays (a fi rst look) 59 Exercises and puzzles 63 Methods use object state (bark different) 73 Method arguments and return types 74 Pass-by-value (the variable is always copied) 77 Getters and Setters 79 Encapsulation (do it or risk humiliation) 80 Using references in an array 83 Exercises and puzzles 88 xii 5 Extra-Strength Methods Let’s put some muscle in our methods. ���������������������������� ������������������������������������������������������������������������������������ ������������������������������������������������������������������������������ ������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ��������������������������������������������������� 6 Using the Java Library Java ships with hundreds of pre-built classes. ������������������ ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������� � � � � � � � � � � � � � � � � � � � � � ��������� �������� ������� We’re gonna build the Sink a Dot Com game �������������������������������������� ������������������������������������������ ������������������������������� - Julia, 31, hand model Building the Sink a Dot Com game 96 Starting with the Simple Dot Com game (a simpler version) 98 Writing prepcode (pseudocode for the game) 100 Test code for Simple Dot Com 102 Coding the Simple Dot Com game 103 Final code for Simple Dot Com 106 Generating random numbers with Math.random() 111 Ready-bake code for getting user input from the command-line 112 Looping with for loops 114 Casting primitives from a large size to a smaller size 117 Converting a String to an int with Integer.parseInt() 117 Exercises and puzzles 118 Analying the bug in the Simple Dot Com Game 126 ArrayList (taking advantage of the Java API) 132 Fixing the DotCom class code 138 Building the real game (Sink a Dot Com) 140 Prepcode for the real game 144 Code for the real game 146 boolean expressions 151 Using the library (Java API) 154 Using packages (import statements, fully-qualifi ed names) 155 Using the HTML API docs and reference books 158 Exercises and puzzles 161 xiii Some classes just should not be instantiated 200 Abstract classes (can’t be instantiated) 201 Abstract methods (must be implemented) 203 Polymorphism in action 206 Class Object (the ultimate superclass of everything) 208 Taking objects out of an ArrayList (they come out as type Object) 211 Compiler checks the reference type (before letting you call a method) 213 Get in touch with your inner object 214 Polymorphic references 215 Casting an object reference (moving lower on the inheritance tree) 216 Deadly Diamond of Death (multiple inheritance problem) 223 Using interfaces (the best solution!) 224 Exercises and puzzles 230 7 Better Living in Objectville Plan your programs with the future in mind. ������������������������� ��������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� 8 Serious Polymorphism Inheritance is just the beginning. ��������������������������������� ��������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������������� Make it Stick �������������������������������� ������������������������������������������ �������������������������������� ��������������������������������������������� ������������������������������������������� ��������������������������������������������� ���������������������������������������������� Object o = al.get(id); Dog d = (Dog) o; d.bark(); Object o D o g o b j ect Dog d cast the Object back to a Dog we know is there. Object Understanding inheritance (superclass and subclass relationships) 168 Designing an inheritance tree (the Animal simulation) 170 Avoiding duplicate code (using inheritance) 171 Overriding methods 172 IS-A and HAS-A (bathtub girl) 177 What do you inherit from your superclass? 180 What does inheritance really buy you? 182 Polymorphism (using a supertype reference to a subclass object) 183 Rules for overriding (don’t touch those arguments and return types!) 190 Method overloading (nothing more than method name re-use) 191 Exercises and puzzles 192 xiv 9 Life and Death of an Object Objects are born and objects die. �������������������������������������� ������������������������������������������������������������������������������������ ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ���������������������������������������������������������������������� 10 Numbers Matter Do the Math.����������������������������������������������������������������������� ��������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������� ���������������������������������������������������������������������������� ‘d’ is assigned a new Duck object, leaving the original (first) Duck object abandoned. That first Duck is toast.. D u c k o b j e c t Heap d D u c k o b j e c t When someone calls the go() method, this Duck is abandoned. His only reference has been reprogrammed for a different Duck. kid instance one kid instance two static variable: iceCream Static variables are shared by all instances of a class. instance variables: one per instance static variables: one per class The stack and the heap, where objects and variables live 236 Methods on the stack 237 Where local variables live 238 Where instance variables live 239 The miracle of object creation 240 Constructors (the code that runs when you say new) 241 Initializing the state of a new Duck 243 Overloaded constructors 247 Superclass constructors (constructor chaining) 250 Invoking overloaded constructors using this() 256 Life of an object 258 Garbage Collection (and making objects eligible) 260 Exercises and puzzles 266 Math class (do you really need an instance of it?) 274 static methods 275 static variables 277 Constants (static fi nal variables) 282 Math methods (random(), round(), abs(), etc.) 286 Wrapper classes (Integer, Boolean, Character, etc.) 287 Autoboxing 289 Number formatting 294 Date formatting and manipulation 301 Static imports 307 Exercises and puzzles 310 xv 11 Risky Behavior Stuff happens. ��������������������������������������������������������������� ������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������������� 12 A Very Graphic Story Face it, you need to make GUIs. ���������������������������������������������� ������������������������������������������������������������������������������������������������ ��������������������������������������������������������������������������������������� ��������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ class with a risky method t h r o w s a n e xce pti o n bac k class Cow { void moo() { if (serverDown){ explode(); } } } your code class Bar { void go() { moo(); } int stuff() { x.beep(); } } calls risky method 1 2 class MyOuter { class MyInner { void go() { } } } The outer and inner objects are now intimately linked. These two objects on the heap have a special bond. The inner can use the outer’s variables (and vice-versa). i n n e r o u t e r Your fi rst GUI 355 Getting a user event 357 Implement a listener interface 358 Getting a button’s ActionEvent 360 Putting graphics on a GUI 363 Fun with paintComponent() 365 The Graphics2D object 366 Putting more than one button on a screen 370 Inner classes to the rescue (make your listener an inner class) 376 Animation (move it, paint it, move it, paint it, move it, paint it...) 382 Code Kitchen (painting graphics with the beat of the music) 386 Exercises and puzzles 394 Making a music machine (the BeatBox) 316 What if you need to call risky code? 319 Exceptions say “something bad may have happened...” 320 The compiler guarantees (it checks) that you’re aware of the risks 321 Catching exceptions using a try/catch (skateboarder) 322 Flow control in try/catch blocks 326 The fi nally block (no matter what happens, turn off the oven!) 327 Catching multiple exceptions (the order matters) 329 Declaring an exception (just duck it) 335 Handle or declare law 337 Code Kitchen (making sounds) 339 Exercises and puzzles 348 xvi 13 Work on your Swing Swing is easy. ������������������������������������������������������������������ �������������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ �������������������������������������������������������������������� 14 Saving Objects Objects can be flattened and inflated. ��������������������������������� �������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ���������������������������������������������������������������������������������������� Components in the east and west get their preferred width. Things in the north and south get their preferred height. The center gets whatever’s left. Swing Components 400 Layout Managers (they control size and placement) 401 Three Layout Managers (border, flow, box) 403 BorderLayout (cares about five regions) 404 FlowLayout (cares about the order and preferred size) 408 BoxLayout (like flow, but can stack components vertically) 411 JTextField (for single-line user input) 413 JTextArea (for multi-line, scrolling text) 414 JCheckBox (is it selected?) 416 JList (a scrollable, selectable list) 417 Code Kitchen (The Big One - building the BeatBox chat client) 418 Exercises and puzzles 424 Saving object state 431 Writing a serialized object to a file 432 Java input and output streams (connections and chains) 433 Object serialization 434 Implementing the Serializable interface 437 Using transient variables 439 Deserializing an object 441 Writing to a text file 447 java.io.File 452 Reading from a text file 454 Splitting a String into tokens with split() 458 CodeKitchen 462 Exercises and puzzles 466 serialized deserialized Any questions? xvii 15 Make a Connection Connect with the outside world. ����������������������������������������� ���������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������������� ������������������������������������������������������������������������������ Socket connection to port 5000 on the server at 196.164.1.103 Socket connection back to the client at 196.164.1.100, port 4242 Server Client Chat program overview 473 Connecting, sending, and receiving 474 Network sockets 475 TCP ports 476 Reading data from a socket (using BufferedReader) 478 Writing data to a socket (using PrintWriter) 479 Writing the Daily Advice Client program 480 Writing a simple server 483 Daily Advice Server code 484 Writing a chat client 486 Multiple call stacks 490 Launching a new thread (make it, start it) 492 The Runnable interface (the thread’s job) 494 Three states of a new Thread object (new, runnable, running) 495 The runnable-running loop 496 Thread scheduler (it’s his decision, not yours) 497 Putting a thread to sleep 501 Making and starting two threads 503 Concurrency issues: can this couple be saved? 505 The Ryan and Monica concurrency problem, in code 506 Locking to make things atomic 510 Every object has a lock 511 The dreaded “Lost Update” problem 512 Synchronized methods (using a lock) 514 Deadlock! 516 Multithreaded ChatClient code 518 Ready-bake SimpleChatServer 520 Exercises and puzzles 524 xviii 17 Release Your Code It’s time to let go. ������������������������������������������������������������������ ���������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������������� MyApp.jar classes com foo 101101 10 110 1 0 11 0 001 10 001 01 MyApp.class JWS Web Server Lorper iure eugue tat vero conse euguero- MyApp.jnlp MyApp.jar MyApp.jar Deployment options 582 Keep your source code and class fi les separate 584 Making an executable JAR (Java ARchives) 585 Running an executable JAR 586 Put your classes in a package! 587 Packages must have a matching directory structure 589 Compiling and running with packages 590 Compiling with -d 591 Making an executable JAR (with packages) 592 Java Web Start (JWS) for deployment from the web 597 How to make and deploy a JWS application 600 Exercises and puzzles 601 16 Data Structures Sorting is a snap in Java. ������������������������������������������������������� ��������������������������������������������������������������������������������� ���������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������ ���������������������������������������������������������������� Collections 533 Sorting an ArrayList with Collections.sort() 534 Generics and type-safety 540 Sorting things that implement the Comparable interface 547 Sorting things with a custom Comparator 552 The collection API—lists, sets, and maps 557 Avoiding duplicates with HashSet 559 Overriding hashCode() and equals() 560 HashMap 567 Using wildcards for polymorphism 574 Exercises and puzzles 576 0 1 2 3 List Set Map “Ball” “Fish” “Car” “Ball1” “Ball2” “Fish” “Car” xix 18 Distributed Computing Being remote doesn’t have to be a bad thing. ������������������������ ������������������������������������������������������������������������������������������� �������������������������������������������������������������������������������������������� ����������������������������������������������������������������������������������� ������������������������������������������������������������������������������������������� ��������������������������������������������������������������������������� Java Remote Method Invocation (RMI), hands-on, very detailed 614 Servlets (a quick look) 625 Enterprise JavaBeans (EJB), a very quick look 631 Jini, the best trick of all 632 Building the really cool universal service browser 636 The End 648 Server Client S e r v i c e o b j e c t C li e n t o b j ect C li e n t h e l p er S e r v i c e h e l p e r RMI STUB RMI SKELETON B Appendix B The Top Ten Things that didn’t make it into the book. �������������� �������������������������������� �������������������������������������������������������������� �������������������������������������� Top Ten List 660 A Appendix A The final Code Kitchen project. ��������������������������������������������� ����������������������������������������� ��������������� ���������������������� ����������������� ���������� BeatBoxFinal (client code) 650 MusicServer (server code) 657 i Index 677 how to use thOIS book Intro IY\ -this stl.bOf\I 'Wt. .lYlS'Ht:Y -the bl>Yl\i,,~ ,~tiOf\: 'So, whY DID \:h<'1 f.t Wl ,•• J••• \""~,.~-;~boo\<r" xxi how to use this book Who is this book for? If you can answer "yes" to all of these: E!)" Have you done some programming? ® ® Do you want to learn Java? Do you prefer stimulating dinner party conversation to dry, dull, technical lectures? This is NOT a reference book. Head First Java is a book designed for 'earning, not an encyclopedia of Java facts. this book is for you. Who should probably back away frotH this book? If you can answer "yes" to anyone of these: Is your programming background limited to HTML only, with no scripting language experience? (If you've done anything with looping, or if/then logic, you'll do fine with this book, but HTML tagging alone might not be enough.) this book is not for you. ® ® Are you a kick-butt C++ programmer looking for a reference book? Are you afraid to try something different? Would you rather have a root canal than mix stripes with plaid? Do you believe than a technical book can't be serious If there's a picture of a duck in the memory management section? I xxii intro the intra We k.,ow what you"re thittkhtg. A.,d we kt10w what your brain is thittkittg. Your brain craves novelty. It's always searching, scanning, waiting for something unusual. It was built that way,and it helps you stay alive. Today, you're less likely to be a tiger snack. But your brain's still looking. Youjust never know. So what does your brain do with all the routine, ordinary, normal things you encounter? Everything it can to stop them from interfering with the brain's realjotr-recording things that matter. It doesn't bother saving the boring things; they never make it past the "this is obviously not important" filter. How does your brain know what's important? Suppose you're out for a day hike and a tigerjumps in front of you , what happens inside your head? Neurons fire. Emotions crank up. ChemicalssuW And that's how your brain knows ... This must be Importantl Don't forget ItI But imagine you're at home, or in a library. It's a safe, warm, tiger-free zone. You're studying. Getting ready for an exam. Or trying to learn some tough technical topic your boss thinks will take a week, ten days at the most, Just one problem. Your brain's trying to do you a big favor. It's trying to make sure that this obviou.sly non-important content doesn't clutter up scarce resources. Resources that are better spent storing the really bigthings. Like tigers. Like the danger of fire. Like how you should never again snowboard in shorts. And there's no simple way to tell your brain, "Hey brain, thank you very much, but no matter how dull this book is. and how little I'm registering on the emotional richter scale right now, I really do want you to keep this stuff around.h "How can this be a seriousJava programming book?" "What's with all the graphics?" "Can I actually learn it this way?" "Do I smell pizza?" you are here ~ xxiII

See more

The list of books you might like

Most books are stored in the elastic cloud where traffic is expensive. For this reason, we have a limit on daily download.