java manual de referencia, séptima edición, herbert schildt

1059

Upload: martha-radilla-rosales

Post on 13-Jun-2015

924 views

Category:

Engineering


44 download

DESCRIPTION

Java Manual de Referencia, Séptima Edición, Herbert Schildt

TRANSCRIPT

  • 1. JavaManual de referencia

2. Acerca del autorHerbert Schildt Es la mxima autoridad en loslenguajes de programacin Java, C, C++ y C#.Sus libros de programacin han vendido ms de3.5 millones de copias en todo el mundo y se hantraducido a la mayora de los idiomas. Es autor deManual de referencia de C#, Manual de referencia de C,El arte de programar en Java, Fundamentos de Java yJava 2 Manual de referencia entre otros best sellers.Schildt es egresado y posgraduado de la University ofIllinois. Se le puede contactar en la oficina de suconsultora, (217) 586-4683. Su sitio Web es:www.HerbSchildt.com. 3. JavaManual de referencia,Sptima edicinHerbert SchildtTraduccinJavier Gonzlez SnchezTecnolgico de Monterrey Campus GuadalajaraRosana Ramos MoralesUniversidad de GuadalajaraMXICO BOGOT BUENOS AIRES CARACAS GUATEMALALISBOA MADRID NUEVA YORK SAN JUAN SANTIAGOAUCKLAND LONDRES MILN SO PAULO MONTREAL NUEVA DELHISAN FRANCISCO SINGAPUR SAN LUIS SIDNEY TORONTO 4. Director Editorial: Fernando Castellanos RodrguezEditor de desarrollo: Miguel ngel Luna PonceSupervisora de produccin: Jacqueline Brieo lvarezFormacin: Overprint, S.A. de C.V.Java Manual de referenciaSptima edicinProhibida la reproduccin total o parcial de esta obra,por cualquier medio, sin la autorizacin escrita del editor.DERECHOS RESERVADOS 2009 respecto a la sptima edicin en espaol porMcGRAW-HILL INTERAMERICANA EDITORES, S.A. DE C.V.A Subsidiary of The McGraw-Hill Companies, Inc.Corporativo Punta Santa FeProlongacin Paseo de la Reforma 1015 Torre APiso 17, Colonia Desarrollo Santa Fe,Delegacin lvaro ObregnC.P. 01376, Mxico, D. F.Miembro de la Cmara Nacional de la Industria Editorial Mexicana, Reg. Nm. 736ISBN 13: 978-970-10-6288-3ISBN 10: 970-10-6288-4Translated from the 7th English edition ofJava: The Complete ReferenceBy: Herbert SchildtCopyright 2007 by The McGraw-Hill Companies. All rights reserved.ISBN-10: 0-07-226385-7ISBN-13: 978-0-07-226385-57890123456 8765432109Impreso en Mxico Printed in Mexico 5. Resumen del contenidovParte I El Lenguaje Java1 Historia y evolucin de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Introduccin a Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Tipos de dato, variables y arreglos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Operadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 575 Sentencias de control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776 Clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1057 Mtodos y clases . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1258 Herencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1579 Paquetes e interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18310 Gestin de excepciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20511 Programacin multihilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22312 Enumeraciones, autoboxing y anotaciones (metadatos) . . . . . . . . . . . . . . . . . . . . . . . 25513 E/S, applets y otros temas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28514 Tipos parametrizados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 315Parte II La biblioteca de Java15 Gestin de cadenas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35916 Explorando java.lang . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38517 java.util parte 1: colecciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43718 java.util parte 2: ms clases de utilera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50319 Entrada/salida: explorando java.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55520 Trabajo en red . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59921 La clase Applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61722 Gestin de eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63723 AWT: Trabajando con ventanas, grficos y texto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66324 AWT: Controles, gestores de organizacin y mens . . . . . . . . . . . . . . . . . . . . . . . . . . . 70125 Imgenes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75526 Utileras para concurrencia. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78727 NES, expresiones regulares y otros paquetes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813 6. vi Java: Manual de referenciaParte III Desarrollo de software utilizando Java28 Java Beans . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84729 Introduccin a Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85930 Explorando Swing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87931 Servlets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 907Parte IV Aplicaciones en Java32 Applets y servlets aplicados en la solucin de problemas . . . . . . . . . . . . . . . . . . . . . . 93133 Creando un administrador de descargas en Java . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 965A Usando los comentarios de documentacin de Java . . . . . . . . . . . . . . . . . . . . . . . . . . . 991ndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 7. ContenidoPrefacio ........................................................................................................................... xxixviiParte I El lenguaje Java1 Historia y evolucin de Java ..................................................................................... 3Linaje de Java ................................................................................................................. 3El nacimiento de la programacin moderna: C .............................................. 3El Siguiente Paso: C++ ...................................................................................... 5Todo est dispuesto para Java ........................................................................... 6La creacin de Java ........................................................................................................ 6La conexin con C# ........................................................................................... 8Cmo Java cambi al Internet ...................................................................................... 8Java applets ........................................................................................................ 8Seguridad ........................................................................................................... 9Portabilidad ........................................................................................................ 9La magia de Java: el bytecode ....................................................................................... 9Servlets: Java en el lado del servidor ............................................................................ 10Las cualidades de Java ................................................................................................... 11Simple ................................................................................................................. 11Orientado a objetos ........................................................................................... 11Robusto .............................................................................................................. 11Multihilo ............................................................................................................. 12Arquitectura neutral .......................................................................................... 12Interpretado y de alto rendimiento .................................................................. 12Distribuido ......................................................................................................... 12Dinmico ............................................................................................................ 13La evolucin de Java ...................................................................................................... 13Java SE 6 ............................................................................................................. 14Una cultura de innovacin ............................................................................................ 142 Introduccin a Java ..................................................................................................... 15Programacin orientada a objetos ............................................................................... 15Dos paradigmas ................................................................................................. 15Abstraccin ........................................................................................................ 16Los tres principios de la programacin orientada a objetos .......................... 16Un primer programa sencillo ........................................................................................ 21Escribiendo el programa ................................................................................... 21Compilando el programa .................................................................................. 22Anlisis detallado del primer programa de prueba ........................................ 22Un segundo programa breve ........................................................................................ 24 8. viii Java: Manual de referenciaDos sentencias de control ............................................................................................. 26La sentencia if .................................................................................................... 26El ciclo for ........................................................................................................... 27Utilizando bloques de cdigo ....................................................................................... 29Cuestiones de lxico ...................................................................................................... 30Espacios en blanco ............................................................................................ 30Identificadores ................................................................................................... 30Literales .............................................................................................................. 31Comentarios ...................................................................................................... 31Separadores........................................................................................................ 31Palabras clave de Java ........................................................................................ 31La biblioteca de clases de Java ...................................................................................... 323 Tipos de dato, variables y arreglos .......................................................................... 33Java es un lenguaje fuertemente tipificado .................................................................. 33Los tipos primitivos ....................................................................................................... 33Enteros ............................................................................................................................ 34byte ..................................................................................................................... 34short .................................................................................................................... 35int ........................................................................................................................ 35long ..................................................................................................................... 35Tipos con punto decimal ............................................................................................... 36float ..................................................................................................................... 36double ................................................................................................................. 36Caracteres ....................................................................................................................... 37Booleanos ....................................................................................................................... 38Una revisin detallada de los valores literales ............................................................. 39Literales enteros ................................................................................................ 39Literales con punto decimal ............................................................................. 40Literales booleanos............................................................................................ 40Literales de tipo carcter ................................................................................... 40Literales de tipo cadena .................................................................................... 40Variables ......................................................................................................................... 41Declaracin de una variable ............................................................................. 41Inicializacin dinmica ...................................................................................... 42mbito y tiempo de vida de las variables ........................................................ 42Conversin de tipos ....................................................................................................... 45Conversiones automticas de Java ................................................................... 45Conversin de tipos incompatibles .................................................................. 45Promocin automtica de tipos en las expresiones .................................................... 47Reglas de la promocin de tipos ...................................................................... 47Arreglos .......................................................................................................................... 48Arreglos unidimensionales ............................................................................... 48Arreglos multidimensionales............................................................................ 51Sintaxis alternativa para la declaracin de arreglos ........................................ 55 9. Contenido ixUnas breves notas sobre las cadenas ........................................................................... 55Una nota para los programadores de C/C++ sobre los apuntadores ........................ 564 Operadores ................................................................................................................... 57Operadores aritmticos ................................................................................................. 57Operadores aritmticos bsicos ....................................................................... 58El operador de mdulo ..................................................................................... 59Operadores aritmticos combinados con asignacin ..................................... 59Incremento y decremento ................................................................................. 60Operadores a nivel de bit .............................................................................................. 62Operadores lgicos a nivel de bit ..................................................................... 63Desplazamiento a la izquierda ......................................................................... 65Desplazamiento a la derecha............................................................................ 66Desplazamiento a la derecha sin signo ........................................................... 68Operadores a nivel de bit combinados con asignacin .................................. 69Operadores relacionales ................................................................................................ 70Operadores lgicos booleanos ..................................................................................... 71Operadores lgicos en cortocircuito ................................................................ 72El operador de asignacin ............................................................................................. 73El operador ? .................................................................................................................. 73Precedencia de operadores ........................................................................................... 74El uso de parntesis ....................................................................................................... 745 Sentencias de control .................................................................................................. 77Sentencias de seleccin ................................................................................................ 77If .......................................................................................................................... 77switch ................................................................................................................. 80Sentencias de iteracin ................................................................................................ 84while ................................................................................................................... 84do-while ............................................................................................................. 86for ........................................................................................................................ 88La versin for-each del ciclo for ....................................................................... 92Ciclos anidados .................................................................................................. 97Sentencias de salto ........................................................................................................ 98break ................................................................................................................... 98continue.............................................................................................................. 102return .................................................................................................................. 1036 Clases ............................................................................................................................ 105Fundamentos de clases ................................................................................................. 105La forma general de una clase .......................................................................... 105Una clase simple ................................................................................................ 106Declaracin de objetos .................................................................................................. 109El operador new ................................................................................................ 109Asignacin de variables de referencia a objetos .......................................................... 111Mtodos .......................................................................................................................... 111Adicin de un mtodo a la clase Caja .............................................................. 112 10. x Java: Manual de referenciaDevolucin de un valor ..................................................................................... 114Mtodos con parmetros .................................................................................. 115Constructores ................................................................................................................. 117Constructores con parmetros ......................................................................... 119La palabra clave this ...................................................................................................... 120Ocultando variables de instancia ..................................................................... 120Recoleccin automtica de basura .............................................................................. 121El mtodo finalize( ) ..................................................................................................... 121Una clase stack .............................................................................................................. 1227 Mtodos y clases .......................................................................................................... 125Sobrecarga de mtodos ................................................................................................. 125Sobrecarga de constructores ............................................................................. 128Uso de objetos como parmetros ................................................................................. 130Paso de argumentos ..................................................................................................... 132Devolucin de objetos ................................................................................................... 134Recursividad ................................................................................................................... 135Control de acceso .......................................................................................................... 137static ............................................................................................................................ 141final ............................................................................................................................ 143Ms informacin sobre arreglos ................................................................................... 143Introduccin a clases anidadas y clases interiores ...................................................... 145La clase string ................................................................................................................ 148Argumentos en la lnea de rdenes ............................................................................. 150Argumentos de tamao variable .................................................................................. 151Sobrecarga de mtodos con argumentos de tamao variable ....................... 154Argumentos de tamao variable y ambigedad ............................................. 1558 Herencia ........................................................................................................................ 157Fundamentos de la herencia......................................................................................... 157Acceso a miembros y herencia ......................................................................... 159Un ejemplo ms prctico .................................................................................. 160Una variable de una superclase puede referenciara un objeto de tipo subclase ..................................................................... 161super ............................................................................................................................ 162Usando super para llamar a constructores de superclase .............................. 163Un segundo uso de super ................................................................................. 166Creacin de una jerarqua multinivel ........................................................................... 167Cundo son ejecutados los constructores ................................................................... 170Sobrescritura de mtodos ............................................................................................. 171Seleccin dinmica de mtodos ................................................................................... 173Por qu se sobrescriben los mtodos? ........................................................... 175Aplicacin de la sobrescritura de mtodos ...................................................... 175Clases abstractas ............................................................................................................ 177Uso del modificador final con herencia ....................................................................... 180Uso del modificador final para impedir la sobrescritura ................................ 180Uso del modificador final para evitar la herencia ........................................... 180La clase object ................................................................................................................ 181 11. Contenido xi9 Paquetes e interfaces .................................................................................................. 183Paquetes.......................................................................................................................... 183Definicin de paquete ....................................................................................... 184Localizacin de paquetes y CLASSPATH ....................................................... 184Ejemplo de un paquete ..................................................................................... 185Proteccin de acceso ..................................................................................................... 186Ejemplo de acceso ............................................................................................. 187Importar paquetes ......................................................................................................... 190Interfaces ........................................................................................................................ 192Definicin de una interfaz ................................................................................ 193Implementacin de interfaces .......................................................................... 194Interfaces anidadas ............................................................................................ 196Utilizando interfaces ......................................................................................... 197Variables en interfaces ....................................................................................... 200Las Interfaces se pueden extender ................................................................... 20210 Gestin de excepciones .............................................................................................. 205Fundamentos de la gestin de excepciones ................................................................ 205Tipos de excepciones ..................................................................................................... 206Excepciones no capturadas ........................................................................................... 206Utilizando try y catch .................................................................................................... 207Descripcin de una excepcin .......................................................................... 209Clusulas catch mltiples ............................................................................................. 209Sentencias try anidadas ................................................................................................. 211throw ............................................................................................................................ 213throws ............................................................................................................................ 214finally ............................................................................................................................ 216Excepciones integradas en Java .................................................................................... 217Creando excepciones propias ....................................................................................... 219Excepciones encadenadas ............................................................................................. 221Utilizando excepciones ................................................................................................. 22211 Programacin multihilo ............................................................................................. 223El modelo de hilos en Java ............................................................................................ 224Prioridades en hilo ............................................................................................ 224Sincronizacin ................................................................................................... 225Intercambio de mensajes .................................................................................. 226La clase Thread y la interfaz Runnable ............................................................ 226El hilo principal .............................................................................................................. 226Creacin de un hilo ....................................................................................................... 228Implementacin de la interfaz Runnable ........................................................ 228Extensin de la clase Thread ............................................................................. 230Eleccin de una de las dos opciones ................................................................ 232Creacin de mltiples hilos .......................................................................................... 232Uso de isAlive( ) y join( )............................................................................................... 233Prioridades de los Hilos ................................................................................................ 236Sincronizacin ............................................................................................................... 238 12. xii Java: Manual de referenciaMtodos sincronizados ..................................................................................... 239La sentencia synchronized ............................................................................... 241Comunicacin entre hilos ............................................................................................. 242Bloqueos ............................................................................................................. 247Suspensin, reanudacin y finalizacin de hilos ........................................................ 249Suspensin, reanudacin y finalizacin de hiloscon Java 1.1 y versiones anteriores .......................................................... 249La forma moderna de suspensin, reanudaciny finalizacin de hilos ............................................................................... 251Programacin multihilo ................................................................................................ 25412 Enumeraciones, autoboxing y anotaciones (metadatos) ...................................... 255Enumeraciones .............................................................................................................. 255Fundamentos de las enumeraciones ............................................................... 255Los mtodos values ( ) y valuesOf ( ) ............................................................... 258Las enumeraciones en Java son tipos de clase ................................................ 259Las enumeraciones heredan de la clase enum ................................................ 261Otro ejemplo con enumeraciones .................................................................... 263Envoltura de tipos .......................................................................................................... 264Autoboxing ..................................................................................................................... 266Autoboxing y mtodos ...................................................................................... 267Autoboxing en expresiones .............................................................................. 268Autoboxing en valores booleanos y caracteres ............................................... 270Autoboxing y la prevencin de errores ............................................................ 271Una advertencia sobre el uso autoboxing........................................................ 271Anotaciones (metadatos) .............................................................................................. 272Fundamentos de las anotaciones ..................................................................... 272Especificacin de la poltica de retencin ........................................................ 273Obtencin de anotaciones en tiempo de ejecucin ........................................ 273La interfaz annotatedElement .......................................................................... 278Utilizando valores por omisin ........................................................................ 279Anotaciones de marcado .................................................................................. 280Anotaciones de un solo miembro .................................................................... 281Anotaciones predefinidas en Java .................................................................... 282Restricciones para las anotaciones ................................................................... 28413 E/S, applets y otros temas ......................................................................................... 285Fundamentos de E/S .................................................................................................... 285Flujos .................................................................................................................. 285Flujos de bytes y flujos de caracteres ............................................................... 286Flujos predefinidos ............................................................................................ 288Entrada por consola ....................................................................................................... 288Lectura de caracteres ......................................................................................... 289Lectura de cadenas ............................................................................................ 290Salida por consola ......................................................................................................... 292 13. Contenido xiiiLa clase PrintWriter ....................................................................................................... 292Lectura y escritura de archivos ..................................................................................... 293Fundamentos de Applets .............................................................................................. 296Los modificadores transient y volatile ......................................................................... 299instanceof ....................................................................................................................... 300strictfp ............................................................................................................................ 302Mtodos nativos ............................................................................................................ 302Problemas con los mtodos nativos................................................................. 306assert ............................................................................................................................ 306Opciones para activar y desactivar la asercin ................................................ 309Importacin esttica de clases e interfaces .................................................................. 309Invocacin de constructores sobrecargados con la palabra clave this( ) ................... 31214 Tipos parametrizados ................................................................................................. 315Qu son los tipos parametrizados? ............................................................................ 316Un ejemplo sencillo con tipos parametrizados ........................................................... 316Los tipos parametrizados slo trabajan con objetos ....................................... 320Los tipos parametrizados se diferencian por el tipo de sus argumentos ...... 320Los tipos parametrizados son una mejora a la seguridad .............................. 320Una clase con tipos parametrizados con dos tipos como parmetro ........................ 323La forma general de una clase con tipos parametrizados .......................................... 324Tipos delimitados ........................................................................................................... 324Utilizando argumentos comodines .............................................................................. 327Comodines delimitados .................................................................................... 329Mtodos con tipos parametrizados .............................................................................. 334Constructores con tipos parametrizados ......................................................... 336Interfaces con tipos parametrizados ............................................................................ 337Compatibilidad entre el cdigo de versiones anterioresy los tipos parametrizados ...................................................................................... 339Jerarqua de clases con tipos parametrizados .................................................. 342Superclases con tipos parametrizados ............................................................. 342Subclases con tipos parametrizados ................................................................ 344Comparacin de tipos en tiempo de ejecucin ............................................... 345Conversin de tipos .......................................................................................... 348Sobrescritura de mtodos en clases con tipos parametrizados ..................... 348Cmo estn implementados los tipos parametrizados .............................................. 349Mtodos puente ................................................................................................. 351Errores de ambigedad ................................................................................................. 353Restricciones de los tipos parametrizados ................................................................... 354Los tipos parametrizados no pueden ser instanciados .................................. 354Restricciones en miembros estticos ............................................................... 354Restricciones en arreglos con tipos parametrizados ....................................... 355Restricciones en excepciones con tipos parametrizados ................................ 356Comentarios adicionales sobre tipos parametrizados ................................................ 356 14. xiv Java: Manual de referenciaParte II La biblioteca de Java15 Gestin de cadenas ..................................................................................................... 359Los constructores String ............................................................................................... 360Longitud de una cadena ............................................................................................... 362Operaciones especiales con cadenas ........................................................................... 362Literales de cadena ............................................................................................ 362Concatenacin de cadenas ............................................................................... 363Concatenacin de cadenas con otros tipos de datos ...................................... 363Conversin de cadenas y toString( ) ................................................................ 364Extraccin de caracteres ................................................................................................ 365charAt( ) ............................................................................................................. 365getChars( ) ......................................................................................................... 365getBytes( ) .......................................................................................................... 366toCharArray( ) .................................................................................................... 366Comparacin de cadenas .............................................................................................. 366equals( ) y equalsIgnoreCase( ) ........................................................................ 367regionMatches( )................................................................................................ 367startsWith( ) y endsWith( ) ................................................................................ 368Comparando equals( ) con el Operador == ................................................... 368compareTo( ) ...................................................................................................... 369Bsqueda en las Cadenas ............................................................................................. 370Modificacin de una cadena ......................................................................................... 372substring( ) ......................................................................................................... 372concat( ) .............................................................................................................. 373replace( ) ............................................................................................................. 373trim( ) .................................................................................................................. 373Conversin de datos mediante valueOf( ) ................................................................... 374Cambio entre maysculas y minsculas dentro de una cadena ................................ 375Otros mtodos para trabajar con cadenas ................................................................... 376StringBuffer .................................................................................................................... 377Constructores StringBuffer ............................................................................... 377length( ) y capacity( ) ......................................................................................... 378ensureCapacity( ) ............................................................................................... 378setLength( ) ........................................................................................................ 379charAt( ) y setCharAt( ) .................................................................................... 379getChars( ) ......................................................................................................... 379append( ) ............................................................................................................ 380insert( ) ............................................................................................................... 381reverse( ) ............................................................................................................. 381delete( ) y deleteCharAt( ) ................................................................................ 382replace( ) ............................................................................................................. 382substring( ) ......................................................................................................... 383Otros mtodos para trabajar con StringBuffer ................................................ 383StringBuilder .................................................................................................................. 384 15. Contenido xv16 Explorando java.lang .................................................................................................. 385Envoltura de tipos primitivos ........................................................................................ 386Number .............................................................................................................. 386Double y Float.................................................................................................... 386Byte, Short, Integer y Long ............................................................................... 390Character ............................................................................................................ 398Adiciones recientes al tipo character para soporte de unicode...................... 401Boolean ............................................................................................................... 402Void ................................................................................................................................. 403La clase Process ............................................................................................................. 403La clase Runtime ........................................................................................................... 404Administracin de memoria ............................................................................. 405Ejecucin de otros programas .......................................................................... 406La clase ProcessBuilder ................................................................................................. 407La clase System .............................................................................................................. 409Uso de currentTimeMillis( ) .............................................................................. 410Uso de arraycopy( ) ........................................................................................... 411Propiedades del entorno ................................................................................... 412La clase Object ............................................................................................................... 412El mtodo clone( ) y la interfaz Cloneable .................................................................. 413Class ............................................................................................................................... 415ClassLoader .................................................................................................................... 418Math ............................................................................................................................... 418Funciones trascendentes ................................................................................... 418Funciones exponenciales .................................................................................. 419Funciones de redondeo ..................................................................................... 419Otros mtodos en la clase Math ...................................................................... 420StrictMath....................................................................................................................... 422Compiler ......................................................................................................................... 422Thread, ThreadGroup y Runnable ................................................................................ 422La interfaz Runnable ......................................................................................... 422Thread ................................................................................................................ 422ThreadGroup ..................................................................................................... 424ThreadLocal e InheritableThreadLocal ........................................................................ 429Package ........................................................................................................................... 429RuntimePermission ....................................................................................................... 431Throwable ...................................................................................................................... 431SecurityManager ............................................................................................................ 431StackTraceElement ........................................................................................................ 431Enum ............................................................................................................................ 432La interfaz CharSequence ............................................................................................. 433La interfaz Comparable ................................................................................................ 433La interfaz Appendable ................................................................................................. 434 16. xvi Java: Manual de referenciaLa interfaz Iterable ........................................................................................................ 434La interfaz Readable ...................................................................................................... 434Los subpaquetes de java.lang ....................................................................................... 435java.lang.annotation .......................................................................................... 435java.lang.instrument .......................................................................................... 435java.lang.management ...................................................................................... 435java.lang.ref ........................................................................................................ 435java.lang.reflect .................................................................................................. 43617 java.util parte 1: colecciones...................................................................................... 437Introduccin a las colecciones ...................................................................................... 438Cambios recientes en las colecciones .......................................................................... 439Los tipos parametrizados se aplican a las colecciones ................................... 439El autoboxing facilita el uso de tipos primitivos ............................................. 440El ciclo estilo for-each ....................................................................................... 440Las interfaces de la estructura de colecciones ............................................................. 440La interfaz collection ......................................................................................... 441La interfaz List ................................................................................................... 442La interfaz Set .................................................................................................... 444La interfaz SortedSet ......................................................................................... 444La interfaz NavigableSet ................................................................................... 444La interfaz Queue .............................................................................................. 446La interfaz Dequeue .......................................................................................... 447Las clases de la estructura de colecciones ................................................................... 448La clase ArrayList .............................................................................................. 449La clase LinkedList ............................................................................................ 452La clase HashSet ............................................................................................... 454La clase LinkedHashSet.................................................................................... 455La clase TreeSet .................................................................................................. 455La clase PriorityQueue ...................................................................................... 457La clase ArrayDequeue .................................................................................... 457La clase EnumSet .............................................................................................. 458Acceso a una coleccin por medio de un iterador ...................................................... 459Uso de un iterador ............................................................................................. 460for-each como alternativa de los iteradotes .................................................... 462Almacenamiento de clases definidas por el usuario en colecciones ......................... 463La interfaz RandomAccess ........................................................................................... 464Trabajo con mapas ......................................................................................................... 464Las interfaces de Map ....................................................................................... 464La interfaz NavigableMap ................................................................................ 466Las clases Map ................................................................................................... 468Comparadores................................................................................................................ 473Uso de un comparador...................................................................................... 474Los algoritmos de la estructura de colecciones ........................................................... 476 17. Contenido xviiArrays ............................................................................................................................ 481Por qu colecciones con tipos parametrizados? ........................................................ 485Las clases e interfaces preexistentes ............................................................................ 488La interfaz Enumeration ................................................................................... 488Vector .................................................................................................................. 488Stack ................................................................................................................... 492Dictionary ........................................................................................................... 494Hashtable ........................................................................................................... 495Properties ........................................................................................................... 498Uso de store( ) y load( ) ..................................................................................... 501Resumen de las colecciones ......................................................................................... 50218 java.util Parte 2: ms clases de utilera ................................................................... 503StringTokenizer .............................................................................................................. 503BitSet ............................................................................................................................ 505Date ............................................................................................................................ 507Calendar ......................................................................................................................... 509GregorianCalendar ........................................................................................................ 512TimeZone ....................................................................................................................... 513SimpleTimeZone ........................................................................................................... 514Locale ............................................................................................................................ 515Random .......................................................................................................................... 516Observable ..................................................................................................................... 518La interfaz Observer .......................................................................................... 519Un ejemplo con la interfaz Observer ............................................................... 519Timer y TimerTask .......................................................................................................... 522Currency ......................................................................................................................... 524Formatter ........................................................................................................................ 525Constructores de la clase Formatter ................................................................. 526Mtodos de la clase Formatter ......................................................................... 526Principios de formato ........................................................................................ 526Formato de cadenas y caracteres ...................................................................... 529Formato de nmeros ......................................................................................... 529Formato de horas y fechas ................................................................................ 530Los especificadores %n y %% .......................................................................... 532Especificacin del tamao mnimo de un campo ........................................... 532Especificacin de precisin ............................................................................... 533Uso de las banderas de formato ....................................................................... 534Justificado del texto de salida ........................................................................... 535Las banderas de espacio, +, 0 y ( ...................................................................... 535La bandera del signo coma ............................................................................... 536La bandera de # ................................................................................................. 537La opcin maysculas ....................................................................................... 537Uso de ndices de argumento ........................................................................... 538El mtodo printf( ) ............................................................................................. 539 18. xviii Java: Manual de referenciaScanner ........................................................................................................................... 539Constructores de la clase Scanner .................................................................... 539Funcionamiento de Scanner ............................................................................. 540Ejemplos con la clase Scanner .......................................................................... 543Establecer los delimitadores a utilizar ............................................................. 546Caractersticas adicionales de la clase Scanner ............................................... 548Las clases ResourceBundle, ListResourceBundle y PropertyResourceBundle .......... 549Otras clases e interfaces de utilera .............................................................................. 553Los subpaquetes de java.util ......................................................................................... 554Los paquetes java.util.concurrent, java.util.concurrent.atomicy java.util.concurrent.lock......................................................................... 554El paquete java.util.jar ....................................................................................... 554El paquete java.util.logging............................................................................... 554El paquete java.util.prefs ................................................................................... 554El paquete java.util.regex .................................................................................. 554El paquete java.util.spi ...................................................................................... 554El paquete java.util.zip ...................................................................................... 55419 Entrada/salida: explorando java.io .......................................................................... 555Las clases e interfaces de entrada/salida de Java ........................................................ 555File ................................................................................................................................. 556Directorios .......................................................................................................... 559Uso de FilenameFilter ....................................................................................... 560La alternativa listFiles( ) .................................................................................... 561Creacin de directorios ..................................................................................... 561Las interfaces Closeable y Flushable ............................................................................ 561Las clases Stream ........................................................................................................... 562Los flujos de Bytes ......................................................................................................... 562InputStream ....................................................................................................... 562OutputStream .................................................................................................... 562FileInputStream ................................................................................................. 564FileOutputStream .............................................................................................. 565ByteArrayInputStream ...................................................................................... 567ByteArrayOutputStream ................................................................................... 568Flujos de Bytes Filtrados ................................................................................... 569Flujos de Bytes con Bfer .................................................................................. 569SequenceInputStream ....................................................................................... 573PrintStream ........................................................................................................ 574DataOutputStream y DataInputStream .......................................................... 576RandomAccessFile ............................................................................................ 577Los flujos de caracteres ................................................................................................. 578Reader ................................................................................................................ 579Writer.................................................................................................................. 579FileReader .......................................................................................................... 579FileWriter ........................................................................................................... 579 19. Contenido xixCharArrayReader ............................................................................................... 582CharArrayWriter ................................................................................................ 582BufferedReader .................................................................................................. 583BufferedWriter ................................................................................................... 585PushbackReader ................................................................................................ 585PrintWriter ......................................................................................................... 586La clase Console ............................................................................................................ 587Uso de flujos de E/S....................................................................................................... 589Mejora de wc( ) mediante la clase StreamTokenizer ...................................... 590Serializacin ................................................................................................................... 592Serializable ......................................................................................................... 593Externalizable ..................................................................................................... 593ObjectOutput ..................................................................................................... 593ObjectOutputStream ......................................................................................... 593ObjectInput ........................................................................................................ 595ObjectInputStream ............................................................................................ 595Un ejemplo de serializacin ............................................................................. 595Ventajas de los flujos ..................................................................................................... 59820 Trabajo en red .............................................................................................................. 599Fundamentos del trabajo en red .................................................................................. 599Las clases e interfaces para el trabajo en red ............................................................... 600InetAddress .................................................................................................................... 601Mtodos de fbrica ............................................................................................ 601Mtodos de instancia ........................................................................................ 602Inet4Address e Inet6Address ....................................................................................... 603Conectores TCP/lP para clientes .................................................................................. 603URL ................................................................................................................................ 605URLConnection ............................................................................................................. 607HttpURLConnection ..................................................................................................... 610La clase URI ................................................................................................................... 612Cookies ........................................................................................................................... 612ConectoresTCP/lP para servidores ............................................................................... 612Datagramas .................................................................................................................... 613DatagramSocket ................................................................................................ 613DatagramPacket ................................................................................................. 614Un ejemplo utilizando Datagramas ................................................................. 61521 La clase Applet............................................................................................................. 617Dos tipos de applets ...................................................................................................... 617Fundamentos de Applet ................................................................................................ 617La clase Applet ................................................................................................... 618Arquitectura de un Applet ............................................................................................ 620Estructura de un Applet ................................................................................................ 621Comienzo y final de un Applet ........................................................................ 622Sobrescribir el mtodo update( ) ...................................................................... 623 20. xx Java: Manual de referenciaMtodos sencillos de visualizacin de applets ............................................................ 623Repintar la pantalla ....................................................................................................... 625Un Applet sencillo ............................................................................................. 626Uso de la barra de estado .............................................................................................. 628La etiqueta APPLET de HTML ..................................................................................... 629Paso de parmetros a los Applets ................................................................................. 630Mejora del Applet que muestra una frase ....................................................... 631getDocumentBase( ) y getCodeBase( ) ........................................................................ 633AppletContext y showDocument( ) ............................................................................. 634La interfaz AudioClip .................................................................................................... 635La interfaz AppletStub .................................................................................................. 635Salida a consola ................................................................................................. 63622 Gestin de eventos ...................................................................................................... 637Dos mecanismos para gestionar eventos .................................................................... 637El modelo de delegacin de eventos ............................................................................ 638Eventos ............................................................................................................... 638Fuentes de eventos ............................................................................................ 638Auditores de eventos ......................................................................................... 639Clases de eventos .......................................................................................................... 639La clase ActionEvent ......................................................................................... 640La clase AdjustmentEvent ................................................................................ 641La clase ComponentEvent ................................................................................ 642La clase ContainerEvent ................................................................................... 643La clase FocusEvent .......................................................................................... 643La clase InputEvent ........................................................................................... 644La clase ItemEvent ............................................................................................ 644La clase KeyEvent .............................................................................................. 645La clase MouseEvent ......................................................................................... 646La clase MouseWheelEvent .............................................................................. 647La clase TextEvent .............................................................................................. 648La clase WindowEvent ...................................................................................... 648Fuentes de eventos ........................................................................................................ 649Las interfaces de auditores de eventos ........................................................................ 650La interfaz ActionListener ................................................................................ 650La interfaz AdjustmentListener........................................................................ 651La interfaz ComponentListener ....................................................................... 651La interfaz ContainerListener .......................................................................... 651La interfaz FocusListener .................................................................................. 651La interfaz ItemListener.................................................................................... 652La interfaz KeyListener ..................................................................................... 652La interfaz MouseListener ................................................................................ 652La interfaz MouseMotionListener ................................................................... 652La interfaz MouseWheelListener ..................................................................... 652La interfazTextListener ...................................................................................... 652La interfaz WindowFocusListener ................................................................... 652 21. Contenido xxiLa interfaz WindowListener ............................................................................. 653Uso del modelo de delegacin de eventos .................................................................. 653La gestin de eventos de ratn ........................................................................ 653La gestin de eventos de teclado ..................................................................... 656Clases adaptadoras ........................................................................................................ 659Clases internas ............................................................................................................... 660Clases internas annimas ................................................................................. 66223 AWT: trabajando con ventanas, grficos y texto ................................................... 663Las clases de AWT ......................................................................................................... 664Fundamentos bsicos de ventanas ............................................................................... 666Component ........................................................................................................ 666Container ........................................................................................................... 666Panel ................................................................................................................... 667Window .............................................................................................................. 667Frame .................................................................................................................. 667Canvas ................................................................................................................ 667Trabajo con ventanas de tipo Frame ............................................................................ 667Cmo establecer las dimensiones de una ventana ......................................... 668Ocultar y mostrar una ventana......................................................................... 668Poner el ttulo a una ventana ............................................................................ 668Cerrar una ventana de tipo frame .................................................................... 668Crear una ventana de tipo frame en un Applet ......................................................... 669Gestin de eventos en una ventana de tipo Frame ........................................ 670Creacin de un programa con ventanas ...................................................................... 674Visualizacin de informacin dentro de una ventana ................................................ 676Trabajo con grficos ....................................................................................................... 676Dibujar lneas ..................................................................................................... 677Dibujar rectngulos ........................................................................................... 677Dibujar elipses y crculos .................................................................................. 678Dibujar arcos ...................................................................................................... 679Dibujar polgonos .............................................................................................. 680Tamao de los grficos ...................................................................................... 681Trabajar con color .......................................................................................................... 682Mtodos de la clase Color ................................................................................. 683Establecer el color para los grficos ................................................................. 684Un ejemplo de applet con colores .................................................................... 684Establecer el modo de pintado ..................................................................................... 685Trabajo con tipos de letra .............................................................................................. 686Determinacin de los tipos de letra disponibles ............................................. 687Creacin y seleccin de un tipo de letra .......................................................... 689Informacin sobre los tipos de letra ................................................................. 690Gestin de la salida de texto utilizando FontMetrics ................................................. 691Visualizacin de varias lneas de texto ............................................................. 693Centrar el texto .................................................................................................. 694Alineamiento de varias lneas de texto ............................................................ 695 22. xxii Java: Manual de referencia24 AWT: controles, gestores de organizacin y mens ............................................. 701Conceptos bsicos de los controles .............................................................................. 701Aadir y eliminar controles .............................................................................. 702Responder a los controles ................................................................................. 702La Excepcin de tipo HeadlessException ........................................................ 702Label .............................................................................................................................. 702Button ............................................................................................................................ 704Gestin de botones ........................................................................................... 704Checkbox ........................................................................................................................ 707Gestin de Checkbox ........................................................................................ 707CheckboxGroup ............................................................................................................. 709Choice ............................................................................................................................ 711Gestin de Choice ............................................................................................. 711List ................................................................................................................................. 713Gestin de List ................................................................................................... 714Scrollbar.......................................................................................................................... 716Gestin de Scrollbar .......................................................................................... 717TextField ......................................................................................................................... 719Gestin de TextField .......................................................................................... 720TextArea .......................................................................................................................... 721Gestores de organizacin .............................................................................................. 723FlowLayout ........................................................................................................ 724BorderLayout ..................................................................................................... 725Insets .................................................................................................................. 727GridLayout ......................................................................................................... 728CardLayout ........................................................................................................ 730GridBagLayout ................................................................................................... 732Barras de men y mens ............................................................................................... 737Cuadros de dilogo........................................................................................................ 742FileDialog ....................................................................................................................... 747Gestin de eventos extendiendo los componentes AWT........................................... 748Extender Button ................................................................................................. 749Extender Checkbox ........................................................................................... 750Extender CheckboxGroup ................................................................................ 751Extender Choice ................................................................................................ 752Extender List ...................................................................................................... 752Extender Scrollbar ............................................................................................. 75325 Imgenes ....................................................................................................................... 755Formatos de archivos .................................................................................................... 755Conceptos bsicos sobre imgenes: creacin, carga y visualizacin ......................... 756Creacin de un objeto imagen ......................................................................... 756Carga de una imagen ........................................................................................ 756Visualizacin de una imagen ............................................................................ 757 23. Contenido xxiiiImageObserver .............................................................................................................. 758Doble almacenamiento en bferes .............................................................................. 759MediaTracker.................................................................................................................. 762ImageProducer ............................................................................................................... 765MemoryImageSource ........................................................................................ 766ImageConsumer ............................................................................................................ 767PixelGrabber ...................................................................................................... 767ImageFilter ..................................................................................................................... 770CropImageFilter ................................................................................................. 770RGBImageFilter ................................................................................................. 772Animacin de imgenes ............................................................................................... 783Ms clases para trabajo con imgenes ......................................................................... 78626 Utileras para concurrencia ....................................................................................... 787El API para trabajo con concurrencia ........................................................................... 788java.util.concurrent ............................................................................................ 788java.util.concurrent.atomic ............................................................................... 789java.util.concurrent.locks .................................................................................. 789Uso de objetos para sincronizacin.............................................................................. 789Semaphore ......................................................................................................... 789CountDownLatch .............................................................................................. 795CyclicBarrier ...........................................................................................