<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4137985624664202180</id><updated>2011-07-28T23:45:09.108-07:00</updated><title type='text'>Java un Lenguaje Potente</title><subtitle type='html'>Java es un lenguaje multiplataforma que permite realizar aplicaciones para todo tipo de entornos, para web, dispositivos móviles, aplicaciones de escritorio, servidor, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>94</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2770416460100237531</id><published>2009-11-20T20:20:00.000-08:00</published><updated>2009-11-20T20:20:00.205-08:00</updated><title type='text'>Actualización de Información</title><content type='html'>&lt;p&gt;      &lt;strong&gt;Actualización de Información &lt;/strong&gt;       &lt;/p&gt;&lt;p&gt;Se pueden utilizar ficheros de acceso aleatorio para añadir información a ficheros existentes: &lt;/p&gt;       &lt;pre&gt;    miRAFile = new RandomAccessFile( "/tmp/kk.log","rw" );&lt;br /&gt;   miRAFile.seek( miRAFile.length() );&lt;br /&gt;   // Cualquier write() que hagamos a partir de este punto del código&lt;br /&gt;   // añadirá información al fichero&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt; Vamos a ver un pequeño ejemplo, &lt;a href="http://www.webtaller.com/construccion/lenguajes/manuales/java/Log.java"&gt;Log.java &lt;/a&gt;, que añade una cadena a un fichero existente: &lt;/p&gt;       &lt;pre&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;// Cada vez que ejecutemos este programita, se incorporara una nueva&lt;br /&gt;// linea al fichero de log que se crea la primera vez que se ejecuta&lt;br /&gt;//&lt;br /&gt;class Log {&lt;br /&gt;   public static void main( String args[] ) throws IOException {&lt;br /&gt;       RandomAccessFile miRAFile;&lt;br /&gt;       String s = "Informacion a incorporarnTutorial de Javan";&lt;br /&gt;&lt;br /&gt;       // Abrimos el fichero de acceso aleatorio&lt;br /&gt;       miRAFile = new RandomAccessFile( "/tmp/java.log","rw" );&lt;br /&gt;       // Nos vamos al final del fichero&lt;br /&gt;       miRAFile.seek( miRAFile.length() );&lt;br /&gt;       // Incorporamos la cadena al fichero    &lt;br /&gt;       miRAFile.writeBytes( s );&lt;br /&gt;       // Cerramos el fichero&lt;br /&gt;       miRAFile.close();&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt;&lt;br /&gt;      &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2770416460100237531?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2770416460100237531/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2770416460100237531' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2770416460100237531'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2770416460100237531'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/11/actualizacion-de-informacion.html' title='Actualización de Información'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6278152447940757054</id><published>2009-11-15T20:19:00.000-08:00</published><updated>2009-11-15T20:19:00.861-08:00</updated><title type='text'>Acceso a la Información</title><content type='html'>&lt;p&gt;      &lt;strong&gt;Acceso a la Información &lt;/strong&gt;       &lt;/p&gt;&lt;p&gt;Los objetos RandomAccessFile esperan información de lectura/escritura de la misma manera que los objetos DataInput/DataOutput. Se tiene acceso a todas las operaciones &lt;em&gt;read() &lt;/em&gt; y &lt;em&gt;write() &lt;/em&gt; de las clases &lt;strong&gt;DataInputStream &lt;/strong&gt; y &lt;strong&gt;DataOutputStream &lt;/strong&gt;. &lt;/p&gt;       &lt;p&gt;También se tienen muchos métodos para moverse dentro de un fichero: &lt;/p&gt;       &lt;p&gt;long getFilePointer(); &lt;/p&gt;       &lt;p&gt;Devuelve la posición actual del puntero del fichero       &lt;/p&gt;&lt;p&gt;void seek( long pos ); &lt;/p&gt;       &lt;p&gt;Coloca el puntero del fichero en una posición determinada. La posición se da como un desplazamiento en bytes desde el comienzo del fichero. La posición 0 marca el comienzo de ese fichero. &lt;/p&gt;&lt;p&gt;long length(); &lt;/p&gt;       &lt;p&gt;Devuelve la longitud del fichero. La posición &lt;em&gt;length() &lt;/em&gt;marca el final de ese fichero.       &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6278152447940757054?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6278152447940757054/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6278152447940757054' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6278152447940757054'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6278152447940757054'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/11/acceso-la-informacion.html' title='Acceso a la Información'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8836683842386319541</id><published>2009-11-10T20:19:00.000-08:00</published><updated>2009-11-10T20:19:00.834-08:00</updated><title type='text'>FICHEROS DE ACCESO ALEATORIO</title><content type='html'>&lt;div class="titularManual"&gt; FICHEROS DE ACCESO ALEATORIO &lt;/div&gt;  &lt;p&gt;A menudo, no se desea leer un fichero de principio a fin; sino acceder al fichero como una base de datos, donde se salta de un registro a otro; cada uno en diferentes partes del fichero. Java proporciona una clase &lt;strong&gt;RandomAccessFile &lt;/strong&gt; para este tipo de entrada/salida. &lt;/p&gt;       &lt;p&gt;      &lt;strong&gt;Creación de un Fichero de Acceso Aleatorio &lt;/strong&gt;       &lt;/p&gt;&lt;p&gt;Hay dos posibilidades para abrir un fichero de acceso aleatorio: &lt;/p&gt;       &lt;p&gt;Con el nombre del fichero: &lt;/p&gt;&lt;pre&gt;    miRAFile = new RandomAccessFile( String nombre,String modo );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;Con un objeto File: &lt;/p&gt;&lt;pre&gt;    miRAFile = new RandomAccessFile( File fichero,String modo );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;El argumento modo determina si se tiene acceso de sólo lectura ( r ) o de lectura/escritura ( r/w ). Por ejemplo, se puede abrir un fichero de una base de datos para actualización: &lt;/p&gt;       &lt;pre&gt;    RandomAccessFile miRAFile;&lt;br /&gt;   miRAFile = new RandomAccessFile( "/tmp/kk.dbf","rw" );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8836683842386319541?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8836683842386319541/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8836683842386319541' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8836683842386319541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8836683842386319541'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/11/ficheros-de-acceso-aleatorio.html' title='FICHEROS DE ACCESO ALEATORIO'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2916385664943287090</id><published>2009-11-05T20:18:00.000-08:00</published><updated>2009-11-05T20:18:00.306-08:00</updated><title type='text'>Escritura en un objeto DataOutputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Escritura en un objeto DataOutputStream&lt;/strong&gt;&lt;br /&gt;Cada uno de los métodos write() accesibles por los FileOutputStream también lo son a través de los DataOutputStream. También encontrará métodos complementarios a los de DataInputStream:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    void writeBoolean( boolean b );&lt;br /&gt;   void writeByte( int i );&lt;br /&gt;   void writeShort( int i );&lt;br /&gt;   void writeChar( int i );&lt;br /&gt;   void writeInt( int i );&lt;br /&gt;   void writeFloat( float f );&lt;br /&gt;   void writeDouble( double d );&lt;br /&gt;   void writeBytes( String s );&lt;br /&gt;   void writeChars( string s );&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt;Para las cadenas, se tienen dos posibilidades: bytes y caracteres. Hay que recordar que los bytes son objetos de 8 bits y los caracteres lo son de 16 bits. Si nuestras cadenas utilizan caracteres Unicode, debemos escribirlas con writeChars().&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Contabilidad de la salida&lt;/strong&gt;&lt;br /&gt;Otra función necesaria durante la salida es el método size(). Este método simplemente devuelve el número total de bytes escritos en el fichero. Se puede utilizar size() para ajustar el tamaño de un fichero a múltiplo de cuatro. Por ejemplo, de la forma siguiente:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    . . .&lt;br /&gt;   int numBytes = miDataStream.size() % 4;&lt;br /&gt;   for( int i=0; i &lt; numBytes; i++ )&lt;br /&gt;       miDataStream.write( 0 );&lt;br /&gt;   . . . &lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2916385664943287090?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2916385664943287090/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2916385664943287090' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2916385664943287090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2916385664943287090'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/11/escritura-en-un-objeto-dataoutputstream.html' title='Escritura en un objeto DataOutputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2608058074393597277</id><published>2009-10-25T20:17:00.000-07:00</published><updated>2009-10-25T20:19:03.583-07:00</updated><title type='text'>Streams DataOutput</title><content type='html'>Streams DataOutput&lt;br /&gt;Java también implementa una clase de salida complementaria a la clase DataInputStream. Con la clase DataOutputStream, se pueden escribir datos binarios en un fichero.&lt;br /&gt;&lt;br /&gt;Apertura y cierre de objetos DataOutputStream&lt;br /&gt;Para abrir y cerrar objetos DataOutputStream, se utilizan los mismos métodos que para los objetos FileOutputStream:&lt;br /&gt;&lt;br /&gt;   DataOutputStream miDataStream;&lt;br /&gt;   FileOutputStream miFileStream;&lt;br /&gt;   BufferedOutputStream miBufferStream;&lt;br /&gt;&lt;br /&gt;   // Obtiene un controlador de fichero&lt;br /&gt;   miFileStream = new FileOutputStream( "/tmp/kk" );&lt;br /&gt;   // Encadena un stream de salida con buffer (por eficiencia)&lt;br /&gt;   miBufferStream = new BufferedOutputStream( miFileStream );&lt;br /&gt;   // Encadena un fichero de salida de datos&lt;br /&gt;   miDataStream = new DataOutputStream( miBufferStream );&lt;br /&gt;&lt;br /&gt;   // Ahora se pueden utilizar los dos streams de entrada para&lt;br /&gt;   // acceder al fichero (si se quiere)&lt;br /&gt;   miBufferStream.write( b );&lt;br /&gt;   miDataStream.writeInt( i );&lt;br /&gt;&lt;br /&gt;   // Cierra el fichero de datos explícitamente. Siempre se cierra&lt;br /&gt;   // primero el fichero stream de mayor nivel&lt;br /&gt;   miDataStream.close();&lt;br /&gt;   miBufferStream.close();&lt;br /&gt;   miFileStream.close();&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2608058074393597277?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2608058074393597277/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2608058074393597277' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2608058074393597277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2608058074393597277'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/10/streams-dataoutput.html' title='Streams DataOutput'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7799292097318599687</id><published>2009-10-20T20:17:00.000-07:00</published><updated>2009-10-20T20:17:00.171-07:00</updated><title type='text'>Volcado y Cierre de Streams de salida con buffer</title><content type='html'>&lt;p&gt;&lt;strong&gt;Volcado y Cierre de Streams de salida con buffer&lt;/strong&gt;&lt;br /&gt;Al contrario que los streams FileOutput, cada escritura al buffer no se corresponde con una escritura en disco. A menos que se llene el buffer antes de que termine el programa, cuando se quiera volcar el buffer explícitamente se debe hacer mediante una llamada a flush():&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    // Se fuerza el volcado del buffer a disco&lt;br /&gt;   miBufferStream.flush();&lt;br /&gt;   // Cerramos el fichero de datos. Siempre se ha de cerrar primero el&lt;br /&gt;   // fichero stream de mayor nivel&lt;br /&gt;   miBufferStream.close();&lt;br /&gt;   miFileStream.close();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7799292097318599687?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7799292097318599687/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7799292097318599687' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7799292097318599687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7799292097318599687'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/10/volcado-y-cierre-de-streams-de-salida.html' title='Volcado y Cierre de Streams de salida con buffer'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4168215891630943812</id><published>2009-10-15T20:16:00.000-07:00</published><updated>2009-10-15T20:16:00.139-07:00</updated><title type='text'>Escritura en un FileOutputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Escritura en un FileOutputStream&lt;/strong&gt;&lt;br /&gt;Una vez abierto el fichero, se pueden escribir bytes de datos utilizando el método write(). Como con el método read() de los streams de entrada, tenemos tres posibilidades:&lt;/p&gt;       &lt;p&gt;void write( int b );&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Escribe un byte. &lt;/p&gt;       &lt;p&gt;void write( byte b[] );&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Escribe todo el array, si es posible. &lt;/p&gt;       &lt;p&gt;void write( byte b[],int offset,int longitud );&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Escribe longitud bytes en b comenzando por b[offset].&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Cierre de FileOutputStream&lt;/strong&gt;&lt;br /&gt;      Cerrar un stream de salida es similar a cerrar streams de entrada. Se puede utilizar el método explícito:&lt;/p&gt;       &lt;pre&gt;    miFicheroSt.close();&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt;O, se puede dejar que el sistema cierre el fichero cuando se recicle miFicheroSt.&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Ejemplo: Almacenamiento de Información&lt;/strong&gt;&lt;br /&gt;Este programa, Telefonos.java, pregunta al usuario una lista de nombres y números de teléfono. Cada nombre y número se añade a un fichero situado en una localización fija. Para indicar que se ha introducido toda la lista, el usuario especifica "Fin" ante la solicitud de entrada del nombre.&lt;/p&gt;       &lt;p&gt;Una vez que el usuario ha terminado de teclear la lista, el programa creará un fichero de salida que se mostrará en pantalla o se imprimirá. Por ejemplo:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    95-4751232,Juanito&lt;br /&gt;   564878,Luisa&lt;br /&gt;   123456,Pepe&lt;br /&gt;   347698,Antonio&lt;br /&gt;   91-3547621,Maria&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt;El código fuente del programa es el siguiente:&lt;/p&gt;       &lt;pre&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class Telefonos {&lt;br /&gt;   static FileOutputStream fos;&lt;br /&gt;   public static final int longLinea = 81;&lt;br /&gt;&lt;br /&gt;   public static void main( String args[] ) throws IOException {&lt;br /&gt;       byte tfno[] = new byte[longLinea];&lt;br /&gt;       byte nombre[] = new byte[longLinea];&lt;br /&gt;&lt;br /&gt;       fos = new FileOutputStream( "telefono.dat" );&lt;br /&gt;       while( true )&lt;br /&gt;           {&lt;br /&gt;           System.err.println( "Teclee un nombre ('Fin' termina)" );&lt;br /&gt;           leeLinea( nombre );&lt;br /&gt;           if( "fin".equalsIgnoreCase( new String( nombre,0,0,3 ) ) )&lt;br /&gt;               break;&lt;br /&gt;&lt;br /&gt;           System.err.println( "Teclee el numero de telefono" );&lt;br /&gt;           leeLinea( tfno );&lt;br /&gt;           for( int i=0; tfno[i] != 0; i++ )&lt;br /&gt;               fos.write( tfno[i] );&lt;br /&gt;           fos.write( ',' );&lt;br /&gt;           for( int i=0; nombre[i] != 0; i++ )&lt;br /&gt;               fos.write( nombre[i] );&lt;br /&gt;           fos.write( 'n' );&lt;br /&gt;           }&lt;br /&gt;       fos.close();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   private static void leeLinea( byte linea[] ) throws IOException {&lt;br /&gt;       int b = 0;&lt;br /&gt;       int i = 0;&lt;br /&gt;&lt;br /&gt;       while( (i &lt; ( longLinea-1) ) &amp;amp;&amp;amp;&lt;br /&gt;           ( ( b = System.in.read() ) != 'n' ) )&lt;br /&gt;           linea[i++] = (byte)b;&lt;br /&gt;       linea[i] = (byte)0;&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4168215891630943812?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4168215891630943812/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4168215891630943812' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4168215891630943812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4168215891630943812'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/10/escritura-en-un-fileoutputstream.html' title='Escritura en un FileOutputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7949979271483904632</id><published>2009-10-10T20:15:00.000-07:00</published><updated>2009-10-10T20:15:00.218-07:00</updated><title type='text'>Objetos FileOutputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Objetos FileOutputStream&lt;/strong&gt;&lt;br /&gt;Los objetos FileOutputStream son útiles para la escritura de ficheros de texto. Como con los ficheros de entrada, primero se necesita abrir el fichero para luego escribir en él.&lt;br /&gt;&lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Apertura de un FileOutputStream&lt;/strong&gt;&lt;br /&gt;Para abrir un objeto FileOutputStream, se tienen las mismas posibilidades que para abrir un fichero stream de entrada. Se le da al constructor un String o un objeto File.&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    FileOutputStream miFicheroSt;&lt;br /&gt;   miFicheroSt = new FileOutputStream( "/etc/kk" );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;Como con los streams de entrada, también se puede utilizar:&lt;/p&gt;       &lt;p&gt;File miFichero FileOutputStream miFicheroSt;&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;File miFichero FileOutputStream miFicheroSt;&lt;br /&gt;&lt;br /&gt;   miFichero = new File( "/etc/kk" );&lt;br /&gt;   miFicheroSt = new FileOutputStream( miFichero );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7949979271483904632?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7949979271483904632/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7949979271483904632' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7949979271483904632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7949979271483904632'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/10/objetos-fileoutputstream.html' title='Objetos FileOutputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8831758949718505065</id><published>2009-10-05T20:15:00.000-07:00</published><updated>2009-10-05T20:15:00.552-07:00</updated><title type='text'>STREAMS DE SALIDA</title><content type='html'>&lt;div class="titularManual"&gt; STREAMS DE SALIDA&lt;/div&gt;  &lt;p&gt;La contrapartida necesaria de la lectura de datos es la escritura de datos. Como con los Streams de entrada, las clases de salida están ordenadas jerárquicamente:&lt;/p&gt;       &lt;p align="center"&gt; &lt;img alt="Stream de Salida Java" src="http://www.webtaller.com/images/manuales/output.gif" width="537" height="136" /&gt;  &lt;/p&gt;       Examinaremos las clases FileOutputStream y DataOutputStream para complementar los streams de entrada que se han visto. En los ficheros fuente del directorio $JAVA_HOME/src/java/io se puede ver el uso y métodos de estas clases, así como de los streams de entrada ($JAVA_HOME es el directorio donde se haya instalado el Java Development Kit, en sistemas UNIX).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8831758949718505065?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8831758949718505065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8831758949718505065' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8831758949718505065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8831758949718505065'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/10/streams-de-salida.html' title='STREAMS DE SALIDA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4992257451770289950</id><published>2009-09-28T20:14:00.000-07:00</published><updated>2009-09-28T20:14:00.264-07:00</updated><title type='text'>Apertura de un Stream de entrada de URL</title><content type='html'>Apertura de un Stream de entrada de URL&lt;br /&gt;También se puede abrir un stream de entrada a partir de un URL. Por ejemplo, se puede utilizar un fichero de datos para un applet:&lt;br /&gt;&lt;br /&gt;   ImputStream is;&lt;br /&gt;   byte buffer[] = new byte[24];&lt;br /&gt;   is = new URL( getDocumentBase(),datos).openStream();&lt;br /&gt;&lt;br /&gt;Ahora se puede utilizar is para leer información de la misma forma que se hace con un objeto FileInputStream:&lt;br /&gt;&lt;br /&gt;   is.read( buffer,0,buffer.length );&lt;br /&gt;&lt;br /&gt;NOTA: Debe tenerse muy en cuenta que algunos usuarios pueden haber configurado la seguridad de sus navegadores para que los applets no accedan a ficheros.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4992257451770289950?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4992257451770289950/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4992257451770289950' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4992257451770289950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4992257451770289950'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/09/apertura-de-un-stream-de-entrada-de-url.html' title='Apertura de un Stream de entrada de URL'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3990527099986637461</id><published>2009-09-25T20:13:00.000-07:00</published><updated>2009-09-25T20:13:00.314-07:00</updated><title type='text'>Streams de entrada de URLs</title><content type='html'>&lt;p&gt;&lt;strong&gt;Streams de entrada de URLs&lt;/strong&gt;&lt;br /&gt;Además del acceso a ficheros, Java proporciona la posibilidad de acceder a URLs como una forma de acceder a objetos a través de la red. Se utiliza implícitamente un objeto URL al acceder a sonidos e imágenes, con el método getDocumentBase() en los applets:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    String imagenFich = new String( "imagenes/pepe.gif" );&lt;br /&gt;   imagenes[0] = getImage( getDocumentBase(),imagenFich );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;No obstante, se puede proporcionar directamente un URL, si se quiere:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    URL imagenSrc;&lt;br /&gt;   imagenSrc = new URL( "http://enterprise.com/~info" );&lt;br /&gt;   imagenes[0] = getImage( imagenSrc,"imagenes/pepe.gif" );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3990527099986637461?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3990527099986637461/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3990527099986637461' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3990527099986637461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3990527099986637461'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/09/streams-de-entrada-de-urls.html' title='Streams de entrada de URLs'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1457066502327791131</id><published>2009-09-20T20:16:00.000-07:00</published><updated>2009-09-20T20:16:00.332-07:00</updated><title type='text'>Streams de salida con buffer</title><content type='html'>&lt;p&gt;&lt;strong&gt;Streams de salida con buffer&lt;/strong&gt;&lt;br /&gt;Si se trabaja con gran cantidad de datos, o se escriben muchos elementos pequeños, será una buena idea utilizar un stream de salida con buffer. Los streams con buffer ofrecen los mismos métodos de la clase FileOutputStream, pero toda salida se almacena en un buffer. Cuando se llena el buffer, se envía a disco con una única operación de escritura; o, en caso necesario, se puede enviar el buffer a disco en cualquier momento.&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Creación de Streams de salida con buffer&lt;/strong&gt;&lt;br /&gt;Para crear un stream BufferedOutput, primero se necesita un stream FileOutput normal; entonces se le añade un buffer al stream:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    FileOutputStream miFileStream;&lt;br /&gt;   BufferdOutpurStream miBufferStream;&lt;br /&gt;   // Obtiene un controlador de fichero&lt;br /&gt;   miFileStream = new FileOutputStream( "/tmp/kk" );&lt;br /&gt;   // Encadena un stream de salida con buffer&lt;br /&gt;   miBufferStream = new BufferedOutputStream( miFileStream );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1457066502327791131?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1457066502327791131/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1457066502327791131' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1457066502327791131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1457066502327791131'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/09/streams-de-salida-con-buffer.html' title='Streams de salida con buffer'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-326839949382401901</id><published>2009-09-15T20:13:00.000-07:00</published><updated>2009-09-15T20:13:00.250-07:00</updated><title type='text'>Lectura de un DataInputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Lectura de un DataInputStream&lt;/strong&gt;&lt;br /&gt;Al acceder a un fichero como DataInputStream, se pueden utilizar los mismos métodos read() de los objetos FileInputStream. No obstante, también se tiene acceso a otros métodos diseñados para leer cada uno de los tipos de datos:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    byte readByte()&lt;br /&gt;   int readUnsignedByte()&lt;br /&gt;   short readShort()&lt;br /&gt;   int readUnsignedShort()&lt;br /&gt;   char readChar()&lt;br /&gt;   int readInt()&lt;br /&gt;   long readLong()&lt;br /&gt;   float readFloat()&lt;br /&gt;   double readDouble()&lt;br /&gt;   String readLine()&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;Cada método leerá un objeto del tipo pedido.&lt;/p&gt;       &lt;p&gt;Para el método String readLine(), se marca el final de la cadena con n, r, rn o con EOF.&lt;/p&gt;       &lt;p&gt;Para leer un long, por ejemplo:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    long numeroSerie;&lt;br /&gt;   ...&lt;br /&gt;   numeroSerie = miDStream.readLong();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-326839949382401901?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/326839949382401901/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=326839949382401901' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/326839949382401901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/326839949382401901'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/09/lectura-de-un-datainputstream.html' title='Lectura de un DataInputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8363417900479789266</id><published>2009-09-08T20:12:00.000-07:00</published><updated>2009-09-08T20:12:00.401-07:00</updated><title type='text'>Objetos DataInputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Objetos DataInputStream&lt;/strong&gt;&lt;br /&gt;Los objetos DataInputStream se comportan como los FileInputStream. Los streams de datos pueden leer cualquiera de las variables de tipo nativo, como floats, ints o chars. Generalmente se utilizan DataInputStream con ficheros binarios.&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Apertura y cierre de DataInputStream&lt;/strong&gt;&lt;br /&gt;        Para abrir y cerrar un objeto DataInputStream, se utilizan los mismos métodos que para FileInputStream:&lt;/p&gt;       &lt;pre&gt;DataInputStream miDStream;&lt;br /&gt;FileInputStream miFStream;&lt;br /&gt;&lt;br /&gt;// Obtiene un controlador de fichero&lt;br /&gt;miFStream = new FileInputStream "/etc/ejemplo.dbf" );&lt;br /&gt;//Encadena un fichero de entrada de datos&lt;br /&gt;miDStream = new DataInputStream( miFStream );&lt;br /&gt;&lt;br /&gt;// Ahora se pueden utilizar los dos streams de entrada para&lt;br /&gt;// acceder al fichero (si se quiere...)&lt;br /&gt;miFStream.read( b );&lt;br /&gt;i = miDStream.readInt();&lt;br /&gt;&lt;br /&gt;// Cierra el fichero de datos explícitamente&lt;br /&gt;//Siempre se cierra primero el fichero stream de mayor nivel&lt;br /&gt;miDStream.close();&lt;br /&gt;miFStream.close();&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8363417900479789266?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8363417900479789266/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8363417900479789266' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8363417900479789266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8363417900479789266'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/09/objetos-datainputstream.html' title='Objetos DataInputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1990502967279702929</id><published>2009-08-28T20:12:00.000-07:00</published><updated>2009-08-28T20:12:00.071-07:00</updated><title type='text'>Lectura de un FileInputStream</title><content type='html'>&lt;p&gt;&lt;strong&gt;Lectura de un FileInputStream&lt;/strong&gt;&lt;br /&gt;        Una vez abierto el FileInputStream, se puede leer de él. El método read() tiene muchas opciones:&lt;/p&gt;       &lt;p&gt;int read();&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Lee un byte y devuelve -1 al final del stream. &lt;/p&gt;       &lt;p&gt;int read( byte b[] );&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Llena todo el array, si es posible. Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream.&lt;/p&gt;       &lt;p&gt;int read( byte b[],int offset,int longitud );&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Lee longitud bytes en b comenzando por b[offset]. Devuelve el número de bytes leídos o -1 si se alcanzó el final del stream.&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;Cierre de FileInputStream&lt;br /&gt;Cuando se termina con un fichero, existen dos opciones para cerrarlo: explícitamente, o implícitamente cuando se recicla el objeto (el garbage collector se encarga de ello).&lt;/p&gt;       &lt;p&gt;Para cerrarlo explícitamente, se utiliza el método close():&lt;/p&gt;       &lt;pre&gt;    miFicheroSt.close();&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;&lt;strong&gt;Ejemplo: Visualización de un fichero&lt;/strong&gt;&lt;br /&gt;Si la configuración de la seguridad de Java permite el acceso a ficheros, se puede ver el contenido de un fichero en un objeto TextArea. El código siguiente contiene los elementos necesarios para mostrar un fichero:&lt;/p&gt;       &lt;pre&gt;    FileInputStream fis;&lt;br /&gt;   TextArea ta;&lt;br /&gt;&lt;br /&gt;   public void init() {&lt;br /&gt;       byte b[] = new byte[1024];&lt;br /&gt;       int i;&lt;br /&gt;&lt;br /&gt;       // El buffer de lectura se debe hacer lo suficientemente grande&lt;br /&gt;       // o esperar a saber el tamaño del fichero&lt;br /&gt;       String s;&lt;br /&gt;&lt;br /&gt;       try {&lt;br /&gt;           fis = new FileInputStream( "/etc/kk" );&lt;br /&gt;       } catch( FileNotFoundException e ) {&lt;br /&gt;           /* Hacer algo */&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;       try {&lt;br /&gt;           i = fis.read( b );&lt;br /&gt;       } catch( IOException e ) {&lt;br /&gt;           /* Hacer algo */&lt;br /&gt;           }&lt;br /&gt;&lt;br /&gt;       s = new String( b,0 );&lt;br /&gt;       ta = new TextArea( s,5,40 );&lt;br /&gt;       add( ta );&lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;       Hemos desarrollado un ejemplo, Agenda.java, en el que partimos de un fichero agenda que dispone de los datos que nosotros deseamos de nuestros amigos, como son: nombre, teléfono y dirección. Si tecleamos un nombre, buscará en el fichero de datos si existe ese nombre y presentará la información que se haya introducido. Para probar, intentar que aparezca la información de Pepe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1990502967279702929?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1990502967279702929/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1990502967279702929' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1990502967279702929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1990502967279702929'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/08/lectura-de-un-fileinputstream.html' title='Lectura de un FileInputStream'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3464531138107551244</id><published>2009-08-25T20:11:00.000-07:00</published><updated>2009-08-25T20:11:00.739-07:00</updated><title type='text'>STREAMS DE ENTRADA</title><content type='html'>&lt;div class="titularManual"&gt; STREAMS DE ENTRADA&lt;/div&gt;   &lt;p&gt;Hay muchas clases dedicadas a la obtención de entrada desde un fichero. Este es el esquema de la jerarquía de clases de entrada por fichero:&lt;br /&gt;    &lt;/p&gt;       &lt;p align="center"&gt;        &lt;img alt="Stream de Entrada Java" src="http://www.webtaller.com/images/manuales/input.gif" width="524" height="214" /&gt;&lt;br /&gt;      &lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Objetos FileInputStream&lt;/strong&gt;&lt;br /&gt;Los objetos FileInputStream típicamente representan ficheros de texto accedidos en orden secuencial, byte a byte. Con FileInputStream, se puede elegir acceder a un byte, varios bytes o al fichero completo.&lt;br /&gt;&lt;/p&gt;       &lt;p&gt;&lt;strong&gt;Apertura de un FileInputStream&lt;/strong&gt;&lt;br /&gt;        Para abrir un FileInputStream sobre un fichero, se le da al constructor un String o un objeto File:&lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    FileInputStream mi FicheroSt;&lt;br /&gt;   miFicheroSt = new FileInputStream( "/etc/kk" );&lt;br /&gt;&lt;/pre&gt; También se puede utilizar: &lt;pre&gt;    File miFichero FileInputStream miFicheroSt;&lt;br /&gt;   miFichero = new File( "/etc/kk" );&lt;br /&gt;   miFicheroSt = new FileInputStream(&lt;br /&gt;   miFichero );&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3464531138107551244?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3464531138107551244/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3464531138107551244' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3464531138107551244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3464531138107551244'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/08/streams-de-entrada.html' title='STREAMS DE ENTRADA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7646204486494319827</id><published>2009-08-15T20:10:00.000-07:00</published><updated>2009-08-15T20:10:00.244-07:00</updated><title type='text'>Comprobaciones y Utilidades</title><content type='html'>&lt;p&gt;       &lt;strong&gt;Comprobaciones y Utilidades &lt;/strong&gt;      &lt;/p&gt;&lt;p&gt;Una vez creado un objeto File, se puede utilizar uno de los siguientes métodos para reunir información sobre el fichero: &lt;/p&gt;       &lt;ul&gt;&lt;li&gt;Nombres de fichero &lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;        String getName()&lt;br /&gt;       String getPath()&lt;br /&gt;       String getAbsolutePath()&lt;br /&gt;       String getParent()&lt;br /&gt;       boolean renameTo( File nuevoNombre )&lt;br /&gt;&lt;/pre&gt;       &lt;ul&gt;&lt;li&gt;Comprobaciones &lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;        boolean exists()&lt;br /&gt;       boolean canWrite()&lt;br /&gt;       boolean canRead()&lt;br /&gt;       boolean isFile()&lt;br /&gt;       boolean isDirectory()&lt;br /&gt;       boolean isAbsolute()&lt;br /&gt;&lt;/pre&gt;       &lt;ul&gt;&lt;li&gt;Información general del fichero &lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;        long lastModified()&lt;br /&gt;       long length()&lt;br /&gt;&lt;/pre&gt;       &lt;ul&gt;&lt;li&gt;Utilidades de directorio &lt;/li&gt;&lt;/ul&gt; &lt;pre&gt;        boolean mkdir()&lt;br /&gt;       String[] list()&lt;br /&gt;&lt;/pre&gt;      &lt;p&gt;Vamos a desarrollar una pequeña aplicación que muestra información sobre los ficheros pasados como argumentos en la línea de comandos, &lt;a href="http://www.webtaller.com/construccion/lenguajes/manuales/java/InfoFichero.java"&gt;InfoFichero.java &lt;/a&gt;: &lt;/p&gt; &lt;pre&gt;import java.io.*;&lt;br /&gt;&lt;br /&gt;class InfoFichero {&lt;br /&gt;&lt;br /&gt;   public static void main( String args[] ) throws IOException {&lt;br /&gt;       if( args.length &gt; 0 )&lt;br /&gt;           {&lt;br /&gt;           for( int i=0; i &lt; args.length; i++ )&lt;br /&gt;               {&lt;br /&gt;               File f = new File( args[i] );&lt;br /&gt;               System.out.println( "Nombre: "+f.getName() );&lt;br /&gt;               System.out.println( "Camino: "+f.getPath() );&lt;br /&gt;               if( f.exists() )&lt;br /&gt;                   {&lt;br /&gt;                   System.out.print( "Fichero existente " );&lt;br /&gt;                   System.out.print( (f.canRead() ?&lt;br /&gt;                       " y se puede Leer" : "" ) );&lt;br /&gt;                   System.out.print( (f.canWrite() ?&lt;br /&gt;                       " y se puese Escribir" : "" ) );&lt;br /&gt;                   System.out.println( "." );&lt;br /&gt;                   System.out.println( "La longitud del fichero son "+&lt;br /&gt;                       f.length()+" bytes" );&lt;br /&gt;                   }&lt;br /&gt;               else&lt;br /&gt;                   System.out.println( "El fichero no existe." );&lt;br /&gt;               }&lt;br /&gt;           }&lt;br /&gt;       else&lt;br /&gt;           System.out.println( "Debe indicar un fichero." );&lt;br /&gt;       }&lt;br /&gt;   }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7646204486494319827?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7646204486494319827/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7646204486494319827' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7646204486494319827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7646204486494319827'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/08/comprobaciones-y-utilidades.html' title='Comprobaciones y Utilidades'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6173925550353677425</id><published>2009-08-10T20:10:00.000-07:00</published><updated>2009-08-10T20:10:00.303-07:00</updated><title type='text'>Creación de un objeto File</title><content type='html'>&lt;p&gt;       &lt;strong&gt;Creación de un objeto File &lt;/strong&gt;       &lt;/p&gt;&lt;p&gt;Para crear un objeto File nuevo, se puede utilizar cualquiera de los tres constructores siguientes: &lt;/p&gt; &lt;pre&gt;    File miFichero;&lt;br /&gt;   miFichero = new File( "/etc/kk" );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;o &lt;/p&gt; &lt;pre&gt;    miFichero = new File( "/etc","kk" );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;o &lt;/p&gt; &lt;pre&gt;    File miDirectorio = new File( "/etc" );&lt;br /&gt;   miFichero = new File( miDirectorio,"kk" );&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;El constructor utilizado depende a menudo de otros objetos File necesarios para el acceso. Por ejemplo, si sólo se utiliza un fichero en la aplicación, el primer constructor es el mejor. Si en cambio, se utilizan muchos ficheros desde un mismo directorio, el segundo o tercer constructor serán más cómodos. Y si el directorio o el fichero es una variable, el segundo constructor será el más útil. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6173925550353677425?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6173925550353677425/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6173925550353677425' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6173925550353677425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6173925550353677425'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/08/creacion-de-un-objeto-file.html' title='Creación de un objeto File'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7094173731019728596</id><published>2009-08-05T20:09:00.000-07:00</published><updated>2009-08-05T20:09:00.930-07:00</updated><title type='text'>FICHEROS</title><content type='html'>&lt;div class="titularManual"&gt; FICHEROS &lt;/div&gt;  &lt;p&gt;Todos los lenguajes de programación tienen alguna forma de interactuar con los sistemas de ficheros locales; Java no es una excepción. &lt;/p&gt;       &lt;p&gt;Cuando se desarrollan applets para utilizar en red, hay que tener en cuenta que la entrada/salida directa a fichero es una violación de seguridad de acceso. Muchos usuarios configurarán sus navegadores para permitir el acceso al sistema de ficheros, pero otros no. &lt;/p&gt;       &lt;p&gt;Por otro lado, si se está desarrollando una aplicación Java para uso interno, probablemente será necesario el acceso directo a ficheros. &lt;/p&gt;       &lt;strong&gt;Ficheros &lt;/strong&gt;      &lt;p&gt;Antes de realizar acciones sobre un fichero, necesitamos un poco de información sobre ese fichero. La clase &lt;strong&gt;File &lt;/strong&gt; proporciona muchas utilidades relacionadas con ficheros y con la obtención de información básica sobre esos ficheros. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7094173731019728596?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7094173731019728596/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7094173731019728596' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7094173731019728596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7094173731019728596'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/08/ficheros.html' title='FICHEROS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3530083954928004688</id><published>2009-07-29T20:09:00.000-07:00</published><updated>2009-07-29T20:09:00.259-07:00</updated><title type='text'>Clases comunes de Entrada/Salida</title><content type='html'>&lt;p&gt;&lt;strong&gt;Clases comunes de Entrada/Salida &lt;/strong&gt;&lt;/p&gt;       &lt;p&gt;Además de la entrada por teclado y salida por pantalla, se necesita entrada/salida por fichero, como son: &lt;/p&gt; &lt;pre&gt;    FileInputStream&lt;br /&gt;   DataInputStream&lt;br /&gt;   FileOutputStream&lt;br /&gt;   DataOutputStream&lt;br /&gt;&lt;/pre&gt;       &lt;p&gt;También existen otras clases para aplicaciones más específicas, que no vamos a tratar, por ser de un uso muy concreto: &lt;/p&gt; &lt;pre&gt;    PipedInputStream&lt;br /&gt;   BufferedInputStream&lt;br /&gt;   PushBackInputStream&lt;br /&gt;   StreamTokenizer&lt;br /&gt;   PipedOutputStream&lt;br /&gt;   BufferedOutputStream&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3530083954928004688?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3530083954928004688/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3530083954928004688' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3530083954928004688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3530083954928004688'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/clases-comunes-de-entradasalida_29.html' title='Clases comunes de Entrada/Salida'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6095292088634888183</id><published>2009-07-23T20:08:00.000-07:00</published><updated>2009-07-23T20:08:00.646-07:00</updated><title type='text'>ENTRADA/SALIDA ESTANDAR</title><content type='html'>&lt;p&gt;Los usuarios de Unix, y aquellos familiarizados con las líneas de comandos de otros sistemas como DOS, han utilizado un tipo de entrada/salida conocida comúnmente por &lt;em&gt;entrada/salida estándar &lt;/em&gt;. El fichero de &lt;em&gt;entrada estándar &lt;/em&gt; ( &lt;strong&gt;stdin &lt;/strong&gt;) es simplemente el teclado. El fichero de &lt;em&gt;salida estándar &lt;/em&gt; ( &lt;strong&gt;stdout &lt;/strong&gt;) es típicamente la pantalla (o la ventana del terminal). El fichero de &lt;em&gt;salida de error estándar &lt;/em&gt; ( &lt;strong&gt;stderr &lt;/strong&gt;) también se dirige normalmente a la pantalla, pero se implementa como otro fichero de forma que se pueda distinguir entre la salida normal y (si es necesario) los mensajes de error. &lt;/p&gt;       &lt;strong&gt;La clase System &lt;/strong&gt;      &lt;p&gt;Java tiene acceso a la entrada/salida estándar a través de la clase &lt;strong&gt;System &lt;/strong&gt;. En concreto, los tres ficheros que se implementan son: &lt;/p&gt;       &lt;strong&gt;Stdin &lt;/strong&gt;       &lt;p&gt;&lt;em&gt;System.in &lt;/em&gt; implementa &lt;em&gt;stdin &lt;/em&gt; como una instancia de la clase &lt;strong&gt;InputStream &lt;/strong&gt;. Con &lt;em&gt;System.in &lt;/em&gt;, se accede a los métodos &lt;em&gt;read() &lt;/em&gt; y &lt;em&gt;skip( &lt;/em&gt;). El método &lt;em&gt;read() &lt;/em&gt; permite leer un byte de la entrada. skip( long n ) , salta n bytes de la entrada. &lt;/p&gt;       &lt;strong&gt;Stdout &lt;/strong&gt;       &lt;p&gt;&lt;em&gt;System.out &lt;/em&gt; implementa &lt;em&gt;stdout &lt;/em&gt; como una instancia de la clase &lt;strong&gt;PrintStream &lt;/strong&gt;. Se pueden utilizar los métodos &lt;em&gt;print() &lt;/em&gt; y &lt;em&gt;println() &lt;/em&gt; con cualquier tipo básico Java como argumento. &lt;/p&gt;       &lt;strong&gt;Stderr &lt;/strong&gt;      &lt;p&gt;&lt;em&gt;System.err &lt;/em&gt; implementa &lt;em&gt;stderr &lt;/em&gt; de la misma forma que stdout. Como con System.out, se tiene acceso a los métodos de PrintStream. &lt;/p&gt;       &lt;p&gt;Vamos a ver un pequeño ejemplo de entrada/salida en Java. El código siguiente, &lt;a href="http://www.webtaller.com/construccion/lenguajes/manuales/java/miType.java"&gt;miType.java &lt;/a&gt;, reproduce, o funciona como la utilidad &lt;em&gt;cat &lt;/em&gt; de Unix o &lt;em&gt;type &lt;/em&gt; de DOS: &lt;/p&gt;       &lt;p&gt; &lt;/p&gt;&lt;pre&gt;    import java.io.*;&lt;br /&gt;&lt;br /&gt;   class miType {&lt;br /&gt;       public static void main( String args[] ) throws IOException {&lt;br /&gt;           int c;&lt;br /&gt;           int contador = 0;&lt;br /&gt;&lt;br /&gt;           while( (c = System.in.read() ) != 'n' )&lt;br /&gt;               {&lt;br /&gt;               contador++;&lt;br /&gt;               System.out.print( (char)c );&lt;br /&gt;               }&lt;br /&gt;           System.out.println();    // Línea en blanco&lt;br /&gt;           System.err.println( "Contados "+ contador +" bytes en total." );&lt;br /&gt;           }&lt;br /&gt;       }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6095292088634888183?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6095292088634888183/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6095292088634888183' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6095292088634888183'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6095292088634888183'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/entradasalida-estandar_23.html' title='ENTRADA/SALIDA ESTANDAR'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8919842021388499441</id><published>2009-07-19T18:49:00.000-07:00</published><updated>2009-07-19T18:49:01.091-07:00</updated><title type='text'>Clases comunes de Entrada/Salida</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Además de la entrada por teclado y salida por pantalla, se necesita entrada/salida por fichero, como son: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;FileInputStream&lt;br /&gt;DataInputStream&lt;br /&gt;FileOutputStream&lt;br /&gt;DataOutputStream&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;También existen otras clases para aplicaciones más específicas, que no vamos a tratar, por ser de un uso muy concreto: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;PipedInputStream&lt;br /&gt;BufferedInputStream&lt;br /&gt;PushBackInputStream&lt;br /&gt;StreamTokenizer&lt;br /&gt;PipedOutputStream&lt;br /&gt;BufferedOutputStream&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8919842021388499441?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8919842021388499441/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8919842021388499441' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8919842021388499441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8919842021388499441'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/clases-comunes-de-entradasalida.html' title='Clases comunes de Entrada/Salida'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3005630372164380960</id><published>2009-07-15T18:48:00.000-07:00</published><updated>2009-07-15T18:48:00.714-07:00</updated><title type='text'>La clase System</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java tiene acceso a la entrada/salida estándar a través de la clase System . En concreto, los tres ficheros que se implementan son: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Stdin&lt;br /&gt;System.in implementa stdin como una instancia de la clase InputStream . Con System.in , se accede a los métodos read() y skip( ). El método read() permite leer un byte de la entrada. skip( long n ) , salta n bytes de la entrada. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Stdout&lt;br /&gt;System.out implementa stdout como una instancia de la clase PrintStream . Se pueden utilizar los métodos print() y println() con cualquier tipo básico Java como argumento. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Stderr&lt;br /&gt;System.err implementa stderr de la misma forma que stdout. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como con System.out, se tiene acceso a los métodos de PrintStream.&lt;br /&gt;Vamos a ver un pequeño ejemplo de entrada/salida en Java. El código siguiente, &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;reproduce, o funciona como la utilidad cat de Unix o type de DOS:&lt;br /&gt;import java.io.*;&lt;br /&gt;class miType {&lt;br /&gt;public static void main( String args[] ) throws IOException {&lt;br /&gt;int c;&lt;br /&gt;int contador = 0;&lt;br /&gt;while( (c = System.in.read() ) != 'n' )&lt;br /&gt;{&lt;br /&gt;contador++;&lt;br /&gt;System.out.print( (char)c );&lt;br /&gt;}&lt;br /&gt;System.out.println(); // Línea en blanco&lt;br /&gt;System.err.println( "Contados "+ contador +" bytes en total." );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3005630372164380960?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3005630372164380960/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3005630372164380960' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3005630372164380960'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3005630372164380960'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/la-clase-system.html' title='La clase System'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1648609306211128863</id><published>2009-07-11T18:47:00.000-07:00</published><updated>2009-07-11T18:47:00.684-07:00</updated><title type='text'>ENTRADA/SALIDA ESTANDAR</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los usuarios de Unix, y aquellos familiarizados con las líneas de comandos de otros sistemas como DOS, han utilizado un tipo de entrada/salida conocida comúnmente por entrada/salida estándar . El fichero de entrada estándar ( stdin ) es simplemente el teclado. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;El fichero de salida estándar ( stdout ) es típicamente la pantalla (o la ventana del terminal). El fichero de salida de error estándar ( stderr ) también se dirige normalmente a la pantalla, pero se implementa como otro fichero de forma que se pueda distinguir entre la salida normal y (si es necesario) los mensajes de error.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1648609306211128863?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1648609306211128863/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1648609306211128863' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1648609306211128863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1648609306211128863'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/entradasalida-estandar.html' title='ENTRADA/SALIDA ESTANDAR'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1370380348890128049</id><published>2009-07-08T18:46:00.000-07:00</published><updated>2009-07-08T18:46:02.131-07:00</updated><title type='text'>PROPAGACION DE EXCEPCIONES II</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cuando se crea una nueva excepción, derivando de una clase Exception ya existente, se puede cambiar el mensaje que lleva asociado. La cadena de texto puede ser recuperada a través de un método. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Normalmente, el texto del mensaje proporcionará información para resolver el problema o sugerirá una acción alternativa. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Por ejemplo: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;class SinGasolina extends Exception {&lt;br /&gt;SinGasolina( String s ) { // constructor&lt;br /&gt;super( s );&lt;br /&gt;}&lt;br /&gt;....&lt;br /&gt;// Cuando se use, aparecerá algo como esto&lt;br /&gt;try {&lt;br /&gt;if( j &lt; 1 )&lt;br /&gt;throw new SinGasolina( "Usando deposito de reserva" );&lt;br /&gt;} catch( SinGasolina e ) {&lt;br /&gt;System.out.println( o.getMessage() );&lt;br /&gt;}&lt;br /&gt;Esto, en tiempo de ejecución originaría la siguiente salida por pantalla: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&gt; Usando deposito de reserva&lt;br /&gt;Otro método que es heredado de la superclase Throwable es printStackTrace() . Invocando a este método sobre una excepción se volcará a pantalla todas las llamadas hasta el momento en donde se generó la excepción (no donde se maneje la excepción). Por ejemplo: // Capturando una excepción en un método&lt;br /&gt;class testcap {&lt;br /&gt;static int slice0[] = { 0,1,2,3,4 };&lt;br /&gt;public static void main( String a[] ) {&lt;br /&gt;try {&lt;br /&gt;uno();&lt;br /&gt;} catch( Exception e ) {&lt;br /&gt;System.out.println( "Captura de la excepcion en main()" );&lt;br /&gt;e.printStackTrace();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;static void uno() {&lt;br /&gt;try {&lt;br /&gt;slice0[-1] = 4;&lt;br /&gt;} catch( NullPointerException e ) {&lt;br /&gt;System.out.println( "Captura una excepcion diferente" );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Cuando se ejecute ese código, en pantalla observaremos la siguiente salida: &gt; Captura de la excepcion en main()&lt;br /&gt;&gt; java.lang.ArrayIndexOutOfBoundsException: -1&lt;br /&gt;at testcap.uno(test5p.java:19)&lt;br /&gt;at testcap.main(test5p.java:9)&lt;br /&gt;Con todo el manejo de excepciones podemos concluir que proporciona un método más seguro para el control de errores, además de representar una excelente herramienta para organizar en sitios concretos todo el manejo de los errores y, además, que podemos proporcionar mensajes de error más decentes al usuario indicando qué es lo que ha fallado y por qué, e incluso podemos, a veces, recuperarnos de los errores. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;La degradación que se produce en la ejecución de programas con manejo de excepciones está ampliamente compensada por las ventajas que representa en cuanto a seguridad de funcionamiento de esos mismos programas.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1370380348890128049?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1370380348890128049/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1370380348890128049' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1370380348890128049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1370380348890128049'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/propagacion-de-excepciones-ii.html' title='PROPAGACION DE EXCEPCIONES II'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6038484301056473549</id><published>2009-07-04T18:45:00.000-07:00</published><updated>2009-07-04T18:45:01.375-07:00</updated><title type='text'>PROPAGACION DE EXCEPCIONES I</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;La cláusula catch comprueba los argumentos en el mismo orden en que aparezcan en el programa. Si hay alguno que coincida, se ejecuta el bloque y sigue el flujo de control por el bloque finally (si lo hay) y concluye el control de la excepción. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;Si ninguna de las cláusulas catch coincide con la excepción que se ha producido, entonces se ejecutará el código de la cláusula finally (en caso de que la haya). Lo que ocurre en este caso, es exactamente lo mismo que si la sentencia que lanza la excepción no se encontrase encerrada en el bloque try. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;El flujo de control abandona este método y retorna prematuramente al método que lo llamó. Si la llamada estaba dentro del ámbito de una sentencia try, entonces se vuelve a intentar el control de la excepción, y así continuamente. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Veamos lo que sucede cuando una excepción no es tratada en la rutina en donde se produce. El sistema Java busca un bloque try..catch más allá de la llamada, pero dentro del método que lo trajo aquí. Si la excepción se propaga de todas formas hasta lo alto de la pila de llamadas sin encontrar un controlador específico para la excepción, entonces la ejecución se detendrá dando un mensaje. Es decir, podemos suponer que Java nos está proporcionando un bloque catch por defecto, que imprime un mensaje de error y sale. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;No hay ninguna sobrecarga en el sistema por incorporar sentencias try al código. La sobrecarga se produce cuando se genera la excepción. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Hemos dicho ya que un método debe capturar las excepciones que genera, o en todo caso, declararlas como parte de su llamada, indicando a todo el mundo que es capaz de generar excepciones. Esto debe ser así para que cualquiera que escriba una llamada a ese método esté avisado de que le puede llegar una excepción, en lugar del valor de retorno normal. Esto permite al programador que llama a ese método, elegir entre controlar la excepción o propagarla hacia arriba en la pila de llamadas. &lt;/p&gt;&lt;p&gt;La siguiente línea de código muestra la forma general en que un método declara excepciones que se pueden propagar fuera de él: tipo_de_retorno( parametros ) throws e1,e2,e3 { }&lt;br /&gt;Los nombres e1,e2,... deben ser nombres de excepciones, es decir, cualquier tipo que sea asignable al tipo predefinido Throwable . Observar que, como en la llamada al método se especifica el tipo de retorno, se está especificando el tipo de excepción que puede generar (en lugar de un objeto exception). &lt;/p&gt;&lt;p&gt;&lt;br /&gt;He aquí un ejemplo, tomado del sistema Java de entrada/salida: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;byte readByte() throws IOException;&lt;br /&gt;short readShort() throws IOException;&lt;br /&gt;char readChar() throws IOException;&lt;br /&gt;void writeByte( int v ) throws IOException;&lt;br /&gt;void writeShort( int v ) throws IOException;&lt;br /&gt;void writeChar( int v ) throws IOException;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Lo más interesante aquí es que la rutina que lee un char, puede devolver un char; no el entero que se requiere en C. C necesita que se devuelva un int, para poder pasar cualquier valor a un char, y además un valor extra (-1) &lt;/p&gt;&lt;p&gt;para indicar que se ha alcanzado el final del fichero. Algunas de las rutinas Java lanzan una excepción cuando se alcanza el fin del fichero. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;En el siguiente diagrama se muestra gráficamente cómo se propaga la excepción que se genera en el código, a través de la pila de llamadas durante la ejecución del código:&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6038484301056473549?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6038484301056473549/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6038484301056473549' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6038484301056473549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6038484301056473549'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/propagacion-de-excepciones-i.html' title='PROPAGACION DE EXCEPCIONES I'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3166980884285711649</id><published>2009-07-01T18:44:00.000-07:00</published><updated>2009-07-01T18:44:01.192-07:00</updated><title type='text'>finally</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Es el bloque de código que se ejecuta siempre, haya o no excepción. Hay una cierta controversia entre su utilidad, pero, por ejemplo, podría servir para hacer un log o un seguimiento de lo que está pasando, porque como se ejecuta siempre puede dejarnos grabado si se producen excepciones y nos hemos recuperado de ellas o no. &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Este bloque finally puede ser útil cuando no hay ninguna excepción. Es un trozo de código que se ejecuta independientemente de lo que se haga en el bloque try. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Cuando vamos a tratar una excepción, se nos plantea el problema de qué acciones vamos a tomar. En la mayoría de los casos, bastará con presentar una indicación de error al usuario y un mensaje avisándolo de que se ha producido un error y que decida si quiere o no continuar con la ejecución del programa. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Por ejemplo, podríamos disponer de un diálogo como el que se presenta en el código siguiente: &lt;/p&gt;&lt;p align="justify"&gt;public class DialogoError extends Dialog {&lt;br /&gt;DialogoError( Frame padre ) {&lt;br /&gt;super( padre,true );&lt;br /&gt;setLayout( new BorderLayout() );&lt;br /&gt;// Presentamos un panel con continuar o salir&lt;br /&gt;Panel p = new Panel();&lt;br /&gt;p.add( new Button( "¿Continuar?" ) );&lt;br /&gt;p.add( new Button( "Salir" ) );&lt;br /&gt;add( "Center",new Label(&lt;br /&gt;"Se ha producido un error. ¿Continuar?" ) )&lt;br /&gt;add( "South",p );&lt;br /&gt;}&lt;br /&gt;public boolean action( Event evt,Object obj ) {&lt;br /&gt;if( "Salir".equals( obj ) )&lt;br /&gt;{&lt;br /&gt;dispose();&lt;br /&gt;System.exit( 1 );&lt;br /&gt;}&lt;br /&gt;return false;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Y la invocación, desde algún lugar en que se suponga que se generarán errores, podría ser como sigue: try {&lt;br /&gt;// Código peligroso&lt;br /&gt;}&lt;br /&gt;catch( AlgunaExcepcion e ) {&lt;br /&gt;VentanaError = new DialogoError( this );&lt;br /&gt;VentanaError.show();&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3166980884285711649?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3166980884285711649/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3166980884285711649' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3166980884285711649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3166980884285711649'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/07/finally.html' title='finally'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1005194528752485764</id><published>2009-06-26T18:43:00.002-07:00</published><updated>2009-06-26T18:43:02.433-07:00</updated><title type='text'>catch</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Es el código que se ejecuta cuando se produce la excepción. Es como si dijésemos "controlo cualquier excepción que coincida con mi argumento". &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En este bloque tendremos que asegurarnos de colocar código que no genere excepciones. Se pueden colocar sentencias catch sucesivas, cada una controlando una excepción diferente. No debería intentarse capturar todas las excepciones con una sola cláusula, como esta: catch( Excepcion e ) { ...&lt;br /&gt;Esto representaría un uso demasiado general, podrían llegar muchas más excepciones de las esperadas. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En este caso es mejor dejar que la excepción se propague hacia arriba y dar un mensaje de error al usuario. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Se pueden controlar grupos de excepciones, es decir, que se pueden controlar, a través del argumento, excepciones semejantes. &lt;/p&gt;&lt;p align="justify"&gt;Por ejemplo: class Limites extends Exception {}&lt;br /&gt;class demasiadoCalor extends Limites {}&lt;br /&gt;class demasiadoFrio extends Limites {}&lt;br /&gt;class demasiadoRapido extends Limites {}&lt;br /&gt;class demasiadoCansado extends Limites {}&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;try {&lt;br /&gt;if( temp &gt; 40 )&lt;br /&gt;throw( new demasiadoCalor() );&lt;br /&gt;if( dormir &lt; 8 )&lt;br /&gt;throw( new demasiado Cansado() );&lt;br /&gt;} catch( Limites lim ) {&lt;br /&gt;if( lim instanceof demasiadoCalor )&lt;br /&gt;{&lt;br /&gt;System.out.println( "Capturada excesivo calor!" );&lt;br /&gt;return;&lt;br /&gt;}&lt;br /&gt;if( lim instanceof demasiadoCansado )&lt;br /&gt;{&lt;br /&gt;System.out.println( "Capturada excesivo cansancio!" );&lt;br /&gt;return;&lt;br /&gt;}&lt;br /&gt;} finally&lt;br /&gt;System.out.println( "En la clausula finally" );&lt;br /&gt;La cláusula catch comprueba los argumentos en el mismo orden en que aparezcan en el programa. Si hay alguno que coincida, se ejecuta el bloque. El operador instanceof se utiliza para identificar exactamente cual ha sido la identidad de la excepción.&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1005194528752485764?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1005194528752485764/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1005194528752485764' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1005194528752485764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1005194528752485764'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/catch.html' title='catch'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-5162363540390768217</id><published>2009-06-22T18:42:00.000-07:00</published><updated>2009-06-22T23:45:18.022-07:00</updated><title type='text'>CAPTURAR EXCEPCIONES</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Las excepciones lanzadas por un método que pueda hacerlo deben recoger en bloque try/catch o try/finally . &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;int valor;&lt;br /&gt;try {&lt;br /&gt;for( x=0,valor = 100; x &lt; 100; x ++ )&lt;br /&gt;valor /= x;&lt;br /&gt;}&lt;br /&gt;catch( ArithmeticException e ) {&lt;br /&gt;System.out.println( "Matemáticas locas!" );&lt;br /&gt;}&lt;br /&gt;catch( Exception e ) {&lt;br /&gt;System.out.println( "Se ha producido un error" );&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;try&lt;br /&gt;Es el bloque de código donde se prevé que se genere una excepción. Es como si dijésemos "intenta estas sentencias y mira a ver si se produce una excepción". El bloque try tiene que ir seguido, al menos, por una cláusula catch o una cláusula finally&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-5162363540390768217?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/5162363540390768217/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=5162363540390768217' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5162363540390768217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5162363540390768217'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/capturar-excepciones.html' title='CAPTURAR EXCEPCIONES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6499726037801538720</id><published>2009-06-17T18:41:00.000-07:00</published><updated>2009-06-18T05:56:43.828-07:00</updated><title type='text'>CREAR EXCEPCIONES</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;También podemos lanzar nuestras propias excepciones, extendiendo la clase System.exception . Por ejemplo, consideremos un programa cliente/servidor. El código cliente se intenta conectar al servidor, y durante 5 segundos se espera a que conteste el servidor. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Si el servidor no responde, el servidor lanzaría la excepción de time-out: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;class ServerTimeOut&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Exception extends Exception {}&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;public void conectame( String nombreServidor ) throws Exception {&lt;br /&gt;int exito;&lt;br /&gt;int puerto = 80;&lt;br /&gt;exito = open( nombreServidor,puerto );&lt;br /&gt;if( exito == -1 )&lt;br /&gt;throw ServerTimeOutException;&lt;br /&gt;}&lt;br /&gt;Si se quieren capturar las propias excepciones, se deberá utilizar la sentencia try : public void encuentraServidor() {&lt;br /&gt;...&lt;br /&gt;try {&lt;br /&gt;conectame( servidorDefecto );&lt;br /&gt;catch( ServerTimeOutException e ) {&lt;br /&gt;g.drawString(&lt;br /&gt;"Time-out del Servidor, intentando alternativa",&lt;br /&gt;5,5 );&lt;br /&gt;conectame( servidorAlterno );&lt;br /&gt;}&lt;br /&gt;...&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Cualquier método que lance una excepción también debe capturarla, o declararla como parte de la interface del método. Cabe preguntarse entonces, el porqué de lanzar una excepción si hay que capturarla en el mismo método. La respuesta es que las excepciones no simplifican el trabajo del control de errores. Tienen la ventaja de que se puede tener muy localizado el control de errores y no tenemos que controlar millones de valores de retorno, pero no van más allá.&lt;br /&gt;&lt;/span&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6499726037801538720?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6499726037801538720/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6499726037801538720' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6499726037801538720'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6499726037801538720'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/crear-excepciones.html' title='CREAR EXCEPCIONES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3043126462844786939</id><published>2009-06-12T18:38:00.000-07:00</published><updated>2009-06-12T18:38:01.048-07:00</updated><title type='text'>EXCEPCIONES PREDEFINIDAS</title><content type='html'>&lt;span style="font-family:arial;"&gt;Las excepciones predefinidas y su jerarquía de clases es la que se muestra en la figura:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Los nombres de las excepciones indican la condición de error que representan. &lt;/span&gt;&lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="left"&gt;&lt;span style="font-family:arial;"&gt;Las siguientes son las excepciones predefinidas más frecuentes que se pueden encontrar: &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="left"&gt;&lt;br /&gt;ArithmeticException &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Las excepciones aritméticas son típicamente el resultado de una división por 0: int i = 12 / 0;&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;NullPointerException &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Se produce cuando se intenta acceder a una variable o método antes de ser definido: class Hola extends Applet {&lt;br /&gt;Image img;&lt;br /&gt;paint( Graphics g ) {&lt;br /&gt;g.drawImage( img,25,25,this );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;IncompatibleClassChangeException &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;El intento de cambiar una clase afectada por referencias en otros objetos, específicamente cuando esos objetos todavía no han sido recompilados. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;ClassCastException&lt;br /&gt;El intento de convertir un objeto a otra clase que no es válida. y = (Prueba)x; // donde&lt;br /&gt;x no es de tipo Prueba&lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;NegativeArraySizeException&lt;br /&gt;Puede ocurrir si hay un error aritmético al intentar cambiar el tamaño de un array. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;OutOfMemoryException &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;¡No debería producirse nunca! El intento de crear un objeto con el operador new ha fallado por falta de memoria. Y siempre tendría que haber memoria suficiente porque el garbage collector se encarga de proporcionarla al ir liberando objetos que no se usan y devolviendo memoria al sistema. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;NoClassDefFoundException&lt;br /&gt;Se referenció una clase que el sistema es incapaz de encontrar. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;ArrayIndexOutOfBoundsException&lt;br /&gt;Es la excepción que más frecuentemente se produce. Se genera al intentar acceder a un elemento de un array más allá de los límites definidos inicialmente para ese array. &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;UnsatisfiedLinkException &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Se hizo el intento de acceder a un método nativo que no existe. Aquí no existe un método a.kk &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="left"&gt;class A {&lt;br /&gt;native void kk();&lt;br /&gt;}&lt;br /&gt;InternalException &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="left"&gt; &lt;/div&gt;&lt;div align="left"&gt;&lt;br /&gt;Este error se reserva para eventos que no deberían ocurrir. Por definición, el usuario nunca debería ver este error y esta excepción no debería lanzarse.&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3043126462844786939?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3043126462844786939/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3043126462844786939' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3043126462844786939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3043126462844786939'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/excepciones-predefinidas.html' title='EXCEPCIONES PREDEFINIDAS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6118552637526611126</id><published>2009-06-09T23:38:00.000-07:00</published><updated>2009-06-09T23:38:00.624-07:00</updated><title type='text'>GENERAR EXCEPCIONES</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cuando se produce un error se debería generar, o lanzar, una excepción. Para que un método en Java, pueda lanzar excepciones, hay que indicarlo expresamente. &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;void MetodoAsesino() throws &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;NullPointerException,CaidaException&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Se pueden definir excepciones propias, no hay por qué limitarse a las predefinidas; bastará con extender la clase Exception y proporcionar la funcionalidad extra que requiera el tratamiento de esa excepción. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;También pueden producirse excepciones no de forma explícita como en el caso anterior, sino de forma implícita cuando se realiza alguna acción ilegal o no válida. &lt;/p&gt;&lt;p&gt;&lt;br /&gt;Las excepciones, pues, pueden originarse de dos modos: el programa hace algo ilegal (caso normal), o el programa explícitamente genera una excepción ejecutando la sentencia throw (caso menos normal). La sentencia throw tiene la siguiente forma: throw ObtejoExcepction;&lt;br /&gt;El objeto Objeto&lt;/p&gt;&lt;p&gt;Exception es un objeto de una clase que extiende la clase Exception . &lt;/p&gt;&lt;p&gt;&lt;br /&gt;El siguiente código de ejemplo origina una excepción de división por cero: &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;p&gt;class melon {&lt;br /&gt;public static void main( String[] a ) {&lt;br /&gt;int i=0, j=0, k;&lt;br /&gt;k = i/j; // Origina un error de division-by-zero&lt;br /&gt;}&lt;br /&gt;}&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Si compilamos y ejecutamos esta aplicación Java, obtendremos la siguiente salida por pantalla:&lt;/p&gt;&lt;p&gt; &gt; javac melon.java&lt;br /&gt;&gt; java melon&lt;br /&gt;java.lang.ArithmeticException: / by zero&lt;br /&gt;at melon.main(melon.java:5)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Las excepciones predefinidas, como ArithmeticException , se conocen como excepciones runtime. Actualmente, como todas las excepciones son eventos runtime, sería mejor llamarlas excepciones irrecuperables. &lt;/p&gt;&lt;p&gt;Esto contrasta con las excepciones que generamos explícitamente, que suelen ser mucho menos severas y en la mayoría de los casos podemos recuperarnos de ellas. Por ejemplo, si un fichero no puede abrirse, preguntamos al usuario que nos indique otro fichero; o si una estructura de datos se encuentra completa, podremos sobreescribir algún elemento que ya no se necesite. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6118552637526611126?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6118552637526611126/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6118552637526611126' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6118552637526611126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6118552637526611126'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/generar-excepciones.html' title='GENERAR EXCEPCIONES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6246386404163360744</id><published>2009-06-06T23:33:00.000-07:00</published><updated>2009-06-06T23:33:00.937-07:00</updated><title type='text'>Ejemplo de Excepciones</title><content type='html'>// // HolaIte.java&lt;br /&gt;// Copyright (c) 1996, Agustin Froufe&lt;br /&gt;// Todos los derechos reservados.&lt;br /&gt;// // No se asume ninguna responsabilidad por el uso o alteracion de este&lt;br /&gt;// software. Este software se proporciona COMO ES, sin garantia de ningun&lt;br /&gt;// tipo de su funcionamiento y en ningun caso sera el autor responsable de&lt;br /&gt;// daños o perjuicios que se deriven del mal uso del software, aun cuando&lt;br /&gt;// este haya sido notificado de la posibilidad de dicho daño.&lt;br /&gt;// // Compilador: javac 1.0&lt;br /&gt;// Autor: Agustin Froufe&lt;br /&gt;// Creacion: 17-Sep-1996 06:03:59&lt;br /&gt;// //--------------------------------------------------------------------------// Esta informacion no es necesariamente definitiva y esta sujeta a cambios// que pueden ser incorporados en cualquier momento, sin avisar.//--------------------------------------------------------------------------&lt;br /&gt;import java.awt.*;import java.applet.Applet;&lt;br /&gt;public class HolaIte extends Applet {&lt;br /&gt;private int i = 0;&lt;br /&gt;private String Saludos[] = { "Hola Mundo!", "HOLA Mundo!", "HOLA MUNDO!!" };&lt;br /&gt;&lt;br /&gt;public void paint( Graphics g )&lt;br /&gt;{&lt;br /&gt;try {&lt;br /&gt;g.drawString( Saludos[i],25,25 );&lt;br /&gt;} catch( ArrayIndexOutOfBoundsException e )&lt;br /&gt;{&lt;br /&gt;g.drawString( "Saludos desbordado",25,25 );&lt;br /&gt;} catch( Exception e )&lt;br /&gt;{&lt;br /&gt;// Cualquier otra excepción System.out.println( e.toString() );&lt;br /&gt;} finally {&lt;br /&gt;System.out.println( "Esto se imprime siempre!" );&lt;br /&gt;} i++; } }&lt;br /&gt;//------------------------------------------- Final del fichero HolaIte.java&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6246386404163360744?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6246386404163360744/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6246386404163360744' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6246386404163360744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6246386404163360744'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/ejemplo-de-excepciones.html' title='Ejemplo de Excepciones'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4799564662111793397</id><published>2009-06-02T23:32:00.000-07:00</published><updated>2009-06-02T23:32:00.891-07:00</updated><title type='text'>MANEJO DE EXCEPCIONES</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Vamos a mostrar como se utilizan las excepciones, reconvirtiendo nuestro applet de saludo a partir de la versión iterativa de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;HolaIte.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;: import java.awt.*;&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;import java.applet.Applet;&lt;br /&gt;public class HolaIte extends Applet {&lt;br /&gt;private int i = 0;&lt;br /&gt;private String Saludos[] = {&lt;br /&gt;"Hola Mundo!",&lt;br /&gt;"HOLA Mundo!",&lt;br /&gt;"HOLA MUNDO!!"&lt;br /&gt;};&lt;br /&gt;public void paint( Graphics g ) {&lt;br /&gt;g.drawString( Saludos[i],25,25 );&lt;br /&gt;i++;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Normalmente, un programa termina con un mensaje de error cuando se lanza una excepción. Sin embargo, Java tiene mecanismos para excepciones que permiten ver qué excepción se ha producido e intentar recuperarse de ella.&lt;br /&gt;Vamos a reescribir el método paint() de nuestra versión iterativa del saludo: public void paint( Graphics g ) {&lt;br /&gt;try {&lt;br /&gt;g.drawString( Saludos[i],25,25 );&lt;br /&gt;} catch( ArrayIndexOutOfBoundsException e ) {&lt;br /&gt;g.drawString( "Saludos desbordado",25,25 );&lt;br /&gt;} catch( Exception e ) {&lt;br /&gt;// Cualquier otra excepción&lt;br /&gt;System.out.println( e.toString() );&lt;br /&gt;} finally {&lt;br /&gt;System.out.println( "Esto se imprime siempre!" );&lt;br /&gt;}&lt;br /&gt;i++;&lt;br /&gt;}&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;La palabra clave finally define un bloque de código que se quiere que sea ejecutado siempre, de acuerdo a si se capturó la excepción o no. En el ejemplo anterior, la salida en la consola, con i=4 sería: Saludos desbordado &lt;/p&gt;&lt;p align="justify"&gt;¡Esto se imprime siempre! &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4799564662111793397?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4799564662111793397/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4799564662111793397' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4799564662111793397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4799564662111793397'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/06/manejo-de-excepciones.html' title='MANEJO DE EXCEPCIONES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7676727122274353247</id><published>2009-05-28T23:31:00.000-07:00</published><updated>2009-05-28T23:31:00.684-07:00</updated><title type='text'>USO DE CONVERSIONES</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Veamos un ejemplo de utilidad de estas funciones. En el applet &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Conversion.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;, que se muestra en el código que sigue, se usan estas funciones para producir una salida útil en un programa, presentando las coordenadas en las que se ha hecho click con el botón del ratón. public class &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Conversion extends Applet {&lt;br /&gt;int RatonX = 25;&lt;br /&gt;int RatonY = 25;&lt;br /&gt;String Status = "Haz click con el ratón";&lt;br /&gt;&lt;br /&gt;public void paint( Graphics g ) {&lt;br /&gt;g.drawString( Status,RatonX,RatonY );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public boolean mouseDown( Event evt,int x,int y ) {&lt;br /&gt;Integer X = new Integer( x );&lt;br /&gt;Integer Y = new Integer( y );&lt;br /&gt;&lt;br /&gt;RatonX = x;&lt;br /&gt;RatonY = y;&lt;br /&gt;Status = X.toString()+","+Y.toString();&lt;br /&gt;&lt;br /&gt;repaint();&lt;br /&gt;return true;&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7676727122274353247?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7676727122274353247/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7676727122274353247' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7676727122274353247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7676727122274353247'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/uso-de-conversiones.html' title='USO DE CONVERSIONES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6361085159801915688</id><published>2009-05-24T23:29:00.000-07:00</published><updated>2009-05-24T23:29:00.481-07:00</updated><title type='text'>Operadores de Concatenación</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hay que recordar que los operadores " + " y " += " también se pueden aplicar a cadenas. Ambos realizan una concatenación y están implementados con objetos StringBuffer. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Por ejemplo, la sentencia: String s = "¿Qué" + " tal ?";&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;es interpretada por el compilador como: String s = new StringBuffer().append( "¿Qué" ).append( " tal ?" ).toString();&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;y se marcaría el StringBuffer para borrarlo ya que el contenido pasa al objeto String. También, la sentencia: s += " por ahí!";&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;sería interpretada por el sistema como: String s = new StringBuffer().append( s ).append( " por ahí!" ).toString();&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;y volvería a marcar para borrar el nuevo StringBuffer. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6361085159801915688?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6361085159801915688/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6361085159801915688' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6361085159801915688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6361085159801915688'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/operadores-de-concatenacion.html' title='Operadores de Concatenación'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8489241805356389620</id><published>2009-05-21T23:28:00.000-07:00</published><updated>2009-05-21T23:28:00.675-07:00</updated><title type='text'>Modificación del Contenido</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Para cambiar el contenido de un StringBuffer, se pueden utilizar dos métodos: append() e insert() .&lt;br /&gt;En el ejemplo &lt;/span&gt;&lt;span style="font-family:arial;"&gt;CadAppend.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;, vemos el uso de estos dos métodos: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;class CadAppend {&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;StringBuffer str = new StringBuffer( "Hola" );&lt;br /&gt;str.append( " Mundo" );&lt;br /&gt;System.out.println( str );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;En este otro ejemplo, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;CadInversa.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;, mostramos un método muy simple que le da la vuelta a una &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;cadena: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;class CadInversa {&lt;br /&gt;public static String cadenaInversa( String fuente ) {&lt;br /&gt;int longitud = fuente.length();&lt;br /&gt;&lt;br /&gt;StringBuffer destino = new StringBuffer( longitud );&lt;br /&gt;for( int i=(longitud-1); i &gt;= 0; i-- )&lt;br /&gt;destino.append( fuente.charAt( i ) );&lt;br /&gt;&lt;br /&gt;return( destino.toString() );&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;System.out.println( cadenaInversa( "Hola Mundo" ) );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Las funciones que cambian el tamaño son pues: StringBuffer append( Object obj );&lt;br /&gt;StringBuffer append( String str );&lt;br /&gt;StringBuffer append( char str[] );&lt;br /&gt;StringBuffer append( char str[],int offset,int len );&lt;br /&gt;StringBuffer append( boolean b );&lt;br /&gt;StringBuffer append( int i );&lt;br /&gt;StringBuffer append( long l );&lt;br /&gt;StringBuffer append( float f );&lt;br /&gt;StringBuffer append( double d );&lt;br /&gt;StringBuffer append( char ch );&lt;br /&gt;StringBuffer insert( int offset,Object obj );&lt;br /&gt;StringBuffer insert( int offset,String str );&lt;br /&gt;StringBuffer insert( int offset,char str[] );&lt;br /&gt;StringBuffer insert( int offset,boolean b );&lt;br /&gt;StringBuffer insert( int offset,int i );&lt;br /&gt;StringBuffer insert( int offset,long l );&lt;br /&gt;StringBuffer insert( int offset,float f );&lt;br /&gt;StringBuffer insert( int offset,double d );&lt;br /&gt;StringBuffer insert( int offset,char ch );&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8489241805356389620?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8489241805356389620/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8489241805356389620' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8489241805356389620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8489241805356389620'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/modificacion-del-contenido.html' title='Modificación del Contenido'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-199049214552627462</id><published>2009-05-18T23:27:00.000-07:00</published><updated>2009-05-18T23:27:00.257-07:00</updated><title type='text'>LA CLASE STRINGBUFFER</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer . Un objeto String representa una cadena alfanumérica de un valor constante que no puede ser cambiada después de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamaño puede variar. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;La clase StringBuffer dispone de muchos métodos para modificar el contenido de los objetos StringBuffer. Si el contenido de una cadena va a ser modificado en un programa, habrá que sacrificar el uso de objetos String en beneficio de StringBuffer, que aunque consumen más recursos del sistema, permiten ese tipo de manipulaciones. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Al estar la mayoría de las características de los StringBuffers basadas en su tamaño variable, se necesita un nuevo método de creación: &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;StringBuffer();&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;StringBuffer( int len );&lt;br /&gt;StringBuffer( String str );&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Se puede crear un StringBuffer vacío de cualquier longitud y también se puede utilizar un String como punto de partida para un StringBuffer. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;StringBuffer Dos = new StringBuffer( 20 );&lt;br /&gt;StringBuffer Uno = new StringBuffer( "Hola Mundo" );&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-199049214552627462?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/199049214552627462/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=199049214552627462' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/199049214552627462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/199049214552627462'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/la-clase-stringbuffer.html' title='LA CLASE STRINGBUFFER'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2261732167786100343</id><published>2009-05-15T23:27:00.000-07:00</published><updated>2009-05-15T23:27:00.430-07:00</updated><title type='text'>Cambio de Tamaño</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;El cambio de tamaño de un StringBuffer necesita varias funciones específicas para manipular el tamaño de las cadenas: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;int length();&lt;/span&gt;&lt;/div&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;char charAt( int index );&lt;br /&gt;void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin );&lt;br /&gt;String toString();&lt;br /&gt;void setLength( int newlength );&lt;br /&gt;void setCharAt( int index,char ch );&lt;br /&gt;int capacity();&lt;br /&gt;void ensureCapacity( int minimum );&lt;br /&gt;void copyWhenShared();&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;Obervar que una de las funciones devuelve una cadena constante normal de tipo String. &lt;/p&gt;&lt;p&gt;Este objeto se puede usar con cualquier función String, como por ejemplo, en las funciones de comparación. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2261732167786100343?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2261732167786100343/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2261732167786100343' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2261732167786100343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2261732167786100343'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/cambio-de-tamano.html' title='Cambio de Tamaño'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4387298650312336778</id><published>2009-05-12T23:26:00.000-07:00</published><updated>2009-05-12T23:26:00.452-07:00</updated><title type='text'>Funciones ValueOf</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;La clase String posee numerosas funciones para transformar valores de otros tipos de datos a su representación como cadena. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Todas estas funciones tienen el nombre de valueOf , estando el método sobrecargado para todos los tipos de datos básicos. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Veamos un ejemplo de su utilización: &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;String Uno = new String( "Hola Mundo" );&lt;br /&gt;float f = 3.141592;&lt;br /&gt;String PI = Uno.valueOf( f );&lt;br /&gt;String PI = String.valueOf( f ); // Mucho más correcto&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Funciones de Conversión String valueOf( boolean b );&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;String valueOf( int i );&lt;br /&gt;String valueOf( long l );&lt;br /&gt;String valueOf( float f );&lt;br /&gt;String valueOf( double d );&lt;br /&gt;String valueOf( Object obj );&lt;br /&gt;String valueOf( char data[] );&lt;br /&gt;String valueOf( char data[],int offset,int count );&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Usa arrays de caracteres para la cadena. String copyValueOf( char data[] );&lt;br /&gt;String copyValueOf( char data[],int offset,int count );&lt;br /&gt;Crea un nuevo array equivalente para la cadena. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4387298650312336778?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4387298650312336778/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4387298650312336778' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4387298650312336778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4387298650312336778'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/funciones-valueof.html' title='Funciones ValueOf'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3050942129755792139</id><published>2009-05-09T23:25:00.000-07:00</published><updated>2009-05-09T23:25:00.611-07:00</updated><title type='text'>Funciones de Comparación de Subcadenas</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;boolean regionMatch( int thisoffset,String s2,int s2offset,int len );&lt;br /&gt;boolean regionMatch( boolean ignoreCase,int thisoffset,String s2,&lt;br /&gt;int s2offset,int 1 );&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Comprueba si una región de esta cadena es igual a una región de otra cadena. boolean startsWith&lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;p align="justify"&gt;( String prefix );&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;boolean startsWith( String prefix,int offset );&lt;br /&gt;boolean endsWith( String suffix );&lt;br /&gt;Devuelve si esta cadena comienza o termina con un cierto prefijo o sufijo comenzando en un determinado desplazamiento. int indexOf( int ch );&lt;br /&gt;int indexOf( int ch,int fromindex );&lt;br /&gt;int lastIndexOf( int ch );&lt;br /&gt;int lastIndexOf( int ch,int fromindex );&lt;br /&gt;int indexOf( String str );&lt;br /&gt;int indexOf( String str,int fromindex );&lt;br /&gt;int lastIndexOf( String str );&lt;br /&gt;int lastIndexOf( String str,int fromindex );&lt;br /&gt;Devuelve el primer/último índice de un carácter/cadena empezando la búsqueda a partir de un determinado desplazamiento. String substring( int beginindex );&lt;br /&gt;String substring( int beginindex,int endindex );&lt;br /&gt;String concat( String str );&lt;br /&gt;String replace( char oldchar,char newchar );&lt;br /&gt;String toLowerCase();&lt;br /&gt;String toUpperCase();&lt;br /&gt;String trim();&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Ajusta los espacios en blanco al comienzo y al final de la cadena. &lt;/p&gt;&lt;p align="justify"&gt;void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin );&lt;br /&gt;void getBytes( int srcBegin,int srcEnd,byte dst[],int dstBegin );&lt;br /&gt;String toString();&lt;br /&gt;char toCharArray();&lt;br /&gt;int hashCode();&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3050942129755792139?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3050942129755792139/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3050942129755792139' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3050942129755792139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3050942129755792139'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/funciones-de-comparacion-de-subcadenas.html' title='Funciones de Comparación de Subcadenas'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-259179527610179457</id><published>2009-05-06T23:24:00.000-07:00</published><updated>2009-05-06T23:24:00.466-07:00</updated><title type='text'>LA CLASE STRING</title><content type='html'>&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Java posee gran capacidad para el manejo de cadenas dentro de sus clases String y StringBuffer . Un objeto String representa una cadena alfanumérica de un valor constante que no puede ser cambiada después de haber sido creada. Un objeto StringBuffer representa una cadena cuyo tamaño puede variar. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Los Strings son objetos constantes y por lo tanto muy baratos para el sistema. La mayoría de las funciones relacionadas con cadenas esperan valores String como argumentos y devuelven valores String. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Hay que tener en cuenta que las funciones estáticas no consumen memoria del objeto, con lo cual es más conveniente usar Character que char. No obstante, char se usa, por ejemplo, para leer ficheros que están escritos desde otro lenguaje. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Existen muchos constructores para crear nuevas cadenas: String();&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;String( String str );&lt;br /&gt;String( char val[] );&lt;br /&gt;String( char val[],int offset,int count );&lt;br /&gt;String( byte val[],int hibyte );&lt;br /&gt;String( byte val[],int hibyte,int offset,int count );&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Tal como uno puede imaginarse, las cadenas pueden ser muy complejas, existiendo muchas funciones muy útiles para trabajar con ellas y, afortunadamente, la mayoría están codificadas en la clase String . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Funciones Básicas &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;La primera devuelve la longitud de la cadena y la segunda devuelve el carácter que se encuentra en la posición que se indica en indice :&lt;br /&gt;int length();&lt;br /&gt;char charAt( int indice );&lt;br /&gt;Funciones de Comparación de Strings&lt;br /&gt;boolean equals( Object obj );&lt;br /&gt;boolean equalsIgnoreCase( Object obj );&lt;br /&gt;Lo mismo que equals() pero no tiene en cuenta mayúsculas o minúsculas. int compareTo( String str2 );&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Devuelve un entero menor que cero si la cadena es léxicamente menor que str2 . Devuelve cero si las dos cadenas son léxicamente iguales y un entero mayor que cero si la cadena es léxicamente mayor que str2 . &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-259179527610179457?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/259179527610179457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=259179527610179457' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/259179527610179457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/259179527610179457'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/la-clase-string.html' title='LA CLASE STRING'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2541587794764582782</id><published>2009-05-02T11:21:00.000-07:00</published><updated>2009-05-02T11:21:00.486-07:00</updated><title type='text'>LA CLASE BOOLEAN</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los valores boolean también tienen su tipo asociado Boolean , aunque en este caso hay menos métodos implementados que para el resto de las clases numéricas. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;La primera sentencia creará una variable boolean y la segunda un objeto Boolean:&lt;br /&gt;boolean b;&lt;br /&gt;Boolean B;&lt;br /&gt;Valores de Boolean&lt;br /&gt;Boolean.TRUE;&lt;br /&gt;Boolean.FALSE;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Métodos de Boolean&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;boolean B.booleanValue();&lt;br /&gt;String B.toString();&lt;br /&gt;boolean B.equals( Object obj );&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2541587794764582782?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2541587794764582782/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2541587794764582782' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2541587794764582782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2541587794764582782'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/05/la-clase-boolean.html' title='LA CLASE BOOLEAN'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1401091745375093725</id><published>2009-04-29T11:20:00.000-07:00</published><updated>2009-04-29T11:20:00.739-07:00</updated><title type='text'>LA CLASE LONG</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cada tipo numérico tiene su propia clase de objetos. Así el tipo long tiene el objeto Long . De la misma forma que con la clase Character , se han codificado muchas funciones útiles dentro de los métodos de la clase Long .&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;La primera sentencia creará una variable long y la segunda un objeto Long: &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;long l;&lt;br /&gt;Long L;&lt;br /&gt;Valores de Long&lt;br /&gt;Long.MIN_VALUE;&lt;br /&gt;Long.MAX_VALUE;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Métodos de Long&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;String Long.toString( long l,int base );&lt;br /&gt;String Long.toString( long l );&lt;br /&gt;long L.parseLong( String s,int base );&lt;br /&gt;long L.parseLong( String s );&lt;br /&gt;Long Long.valueOf( String s,int base );&lt;br /&gt;Long Long.valueOf( String s );&lt;br /&gt;int L.intValue();&lt;br /&gt;long L.longValue();&lt;br /&gt;float L.floatValue();&lt;br /&gt;double L.doubleValue();&lt;br /&gt;String L.toString();&lt;br /&gt;int L.hashCode();&lt;br /&gt;boolean L.equals( Object obj );&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;En los métodos toString() , parseInt() y valueOf() que no se especifica la base sobre la que se trabaja, se asume que es base 10 . &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1401091745375093725?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1401091745375093725/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1401091745375093725' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1401091745375093725'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1401091745375093725'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-long.html' title='LA CLASE LONG'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3004380820165700582</id><published>2009-04-26T11:20:00.000-07:00</published><updated>2009-04-26T11:20:01.057-07:00</updated><title type='text'>LA CLASE INTEGER</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cada tipo numérico tiene su propia clase de objetos. Así el tipo int tiene el objeto Integer . De la misma forma que con la clase Character , se han codificado muchas funciones útiles dentro de los métodos de la clase Integer . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;La primera sentencia creará una variable int y la segunda un objeto Integer: &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Integer.MIN_VALUE;&lt;br /&gt;Integer.MAX_VALUE;&lt;br /&gt;Valores de Integer&lt;br /&gt;Integer.MIN_VALUE;&lt;br /&gt;Integer.MAX_VALUE;&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Métodos de Integer&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;String Integer.toString( int i,int base );&lt;br /&gt;String Integer.toString( int i );&lt;br /&gt;int I.parseInt( String s,int base );&lt;br /&gt;int I.parseInt( String s );&lt;br /&gt;Integer Integer.valueOf( String s,int base );&lt;br /&gt;Integer Integer.valueOf( String s );&lt;br /&gt;int I.intValue();&lt;br /&gt;long I.longValue();&lt;br /&gt;float I.floatValue();&lt;br /&gt;double I.doubleValue();&lt;br /&gt;String I.toString();&lt;br /&gt;int I.hashCode();&lt;br /&gt;boolean I.equals( Object obj );&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3004380820165700582?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3004380820165700582/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3004380820165700582' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3004380820165700582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3004380820165700582'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-integer.html' title='LA CLASE INTEGER'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8039525984828916354</id><published>2009-04-23T11:19:00.000-07:00</published><updated>2009-04-23T11:19:00.883-07:00</updated><title type='text'>LA CLASE DOUBLE</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cada tipo numérico tiene su propia clase de objetos. Así el tipo double tiene el objeto Double . De la misma forma que con la clase Character , se han codificado muchas funciones útiles dentro de los métodos de la clase Double . &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:Arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;La primera sentencia creará una variable double y la segunda un objeto Double: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;double d;&lt;br /&gt;Double D;&lt;br /&gt;Valores de Double&lt;br /&gt;Double.POSITIVE_INFINITY&lt;br /&gt;Double.NEGATIVE_INFINITY&lt;br /&gt;Double.NaN&lt;br /&gt;Double.MAX_VALUE&lt;br /&gt;Double.MIN_VALUE&lt;br /&gt;Métodos de Double&lt;br /&gt;D.isNaN();&lt;br /&gt;Double.isNaN( d );&lt;br /&gt;D.isInfinite();&lt;br /&gt;Double.isInfinite( d );&lt;br /&gt;boolean D.equals();&lt;br /&gt;String D.toString();&lt;br /&gt;int D.intValue();&lt;br /&gt;long D.longValue();&lt;br /&gt;float D.floatValue();&lt;br /&gt;double D.doubleValue();&lt;br /&gt;int i = D.hashCode();&lt;br /&gt;Double V.valueOf( String s );&lt;br /&gt;long l = Double.doubleToLongBits( d );&lt;br /&gt;double d = Double.longBitsToDouble( l );&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8039525984828916354?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8039525984828916354/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8039525984828916354' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8039525984828916354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8039525984828916354'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-double.html' title='LA CLASE DOUBLE'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7895841600061530572</id><published>2009-04-20T11:18:00.000-07:00</published><updated>2009-04-20T11:18:00.516-07:00</updated><title type='text'>LA CLASE FLOAT</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cada tipo numérico tiene su propia clase de objetos. Así el tipo float tiene el objeto Float . De la misma forma que con la clase Character , se han codificado muchas funciones útiles dentro de los métodos de la clase Float . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;La primera sentencia creará una variable float y la segunda un objeto Float: &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;float f;&lt;br /&gt;Float F;&lt;br /&gt;Valores de Float&lt;br /&gt;Float.POSITIVE_INFINITY&lt;br /&gt;Float.NEGATIVE_INFINITY&lt;br /&gt;Float.NaN&lt;br /&gt;Float.MAX_VALUE&lt;br /&gt;Float.MIN_VALUE&lt;br /&gt;Conversiones de Clase/Cadena&lt;br /&gt;String s = Float.toString( f );&lt;br /&gt;f = Float.valueOf( "3.14" );&lt;br /&gt;Comprobaciones&lt;br /&gt;boolean b = Float.isNaN( f );&lt;br /&gt;boolean b = Float.isInfinite( f );&lt;br /&gt;La función isNaN() comprueba si f es un No-Número . &lt;/p&gt;&lt;p align="justify"&gt;Un ejemplo de no-número es raiz cuadrada de -2. Conversiones de Objetos&lt;br /&gt;Float F = new Float( Float.PI );&lt;br /&gt;String s = F.toString();&lt;br /&gt;int i = F.intValue();&lt;br /&gt;long l = F.longValue();&lt;br /&gt;float F = F.floatValue();&lt;br /&gt;double d = F.doubleValue();&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Otros Métodos&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;int i = F.hashCode();&lt;br /&gt;boolean b = F.equals( Object obj );&lt;br /&gt;int i = Float.floatToIntBits( f );&lt;br /&gt;float f = Float.intBitsToFloat( i );&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7895841600061530572?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7895841600061530572/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7895841600061530572' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7895841600061530572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7895841600061530572'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-float.html' title='LA CLASE FLOAT'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7836299123412533229</id><published>2009-04-17T11:17:00.000-07:00</published><updated>2009-04-17T11:17:00.622-07:00</updated><title type='text'>LA CLASE CHARACTER</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Al trabajar con caracteres se necesitan muchas funciones de comprobación y traslación. Estas funciones están empleadas en la clase Character . De esta clase sí que se pueden crear instancias, al contrario que sucede con la clase Math . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Declaraciones&lt;br /&gt;La primera sentencia creará una variable carácter y la segunda un objeto Character: &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;char c;&lt;br /&gt;Character C;&lt;br /&gt;Comprobaciones booleanas&lt;br /&gt;Character.isLowerCase( c )&lt;br /&gt;Character.isUpperCase( c )&lt;br /&gt;Character.isDigit( c )&lt;br /&gt;Character.isSpace( c )&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;En este caso, si tuviésemos un objeto Character C , no se podría hacer C.isLowerCase , porque no se ha hecho un new de Character. &lt;/p&gt;&lt;p align="justify"&gt;Estas funciones son estáticas y no conocen al objeto, por eso hay que crearlo antes. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Traslaciones de caracteres&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;char c2 = Character.toLowerCase( c );&lt;br /&gt;char c2 = Character.toUpperCase( c );&lt;br /&gt;Traslaciones de carácter/dígito&lt;br /&gt;int i = Character.digit( c,base );&lt;br /&gt;char c = Character.forDigit( i,base );&lt;br /&gt;Métodos de la clase Character&lt;br /&gt;C = new Character( 'J' );&lt;br /&gt;char c = C.charValue();&lt;br /&gt;String s = C.toString();&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7836299123412533229?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7836299123412533229/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7836299123412533229' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7836299123412533229'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7836299123412533229'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-character.html' title='LA CLASE CHARACTER'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3920001919144329179</id><published>2009-04-14T11:16:00.000-07:00</published><updated>2009-04-14T11:16:01.118-07:00</updated><title type='text'>LA CLASE MATH</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;La clase Math representa la librería matemática de Java. Las funciones que contiene son las de todos los lenguajes, parece que se han metido en una clase solamente a propósito de agrupación, por eso se encapsulan en Math, y lo mismo sucede con las demás clases que corresponden a objetos que tienen un tipo equivalente (Character, Float, etc.). El constructor de la clase es privado, por los que no se pueden crear instancias de la clase. Sin embargo, Math es public para que se pueda llamar desde cualquier sitio y static para que no haya que inicializarla.&lt;br /&gt;Funciones matemáticas&lt;br /&gt;&lt;br /&gt;Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar:&lt;br /&gt;&lt;br /&gt;Math.abs( x ) para int, long, float y double&lt;br /&gt;Math.sin( double )&lt;br /&gt;Math.cos( double )&lt;br /&gt;Math.tan( double )&lt;br /&gt;Math.asin( double )&lt;br /&gt;Math.acos( double )&lt;br /&gt;Math.atan( double )&lt;br /&gt;Math.atan2( double,double )&lt;br /&gt;Math.exp( double )&lt;br /&gt;Math.log( double )&lt;br /&gt;Math.sqrt( double )&lt;br /&gt;Math.ceil( double )&lt;br /&gt;Math.floor( double )&lt;br /&gt;Math.rint( double )&lt;br /&gt;Math.pow( a,b )&lt;br /&gt;Math.round( x ) para double y float&lt;br /&gt;Math.random() devuelve un double&lt;br /&gt;Math.max( a,b ) para int, long, float y double&lt;br /&gt;Math.min( a,b ) para int, long, float y double&lt;br /&gt;Math.E para la base exponencial&lt;br /&gt;Math.PI para PI&lt;br /&gt;&lt;br /&gt;He aquí un ejemplo, Mates.java , de uso de algunas funciones de la clase Math:&lt;br /&gt;&lt;br /&gt;class Mates {&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;int x;&lt;br /&gt;double rand,y,z;&lt;br /&gt;float max;&lt;br /&gt;&lt;br /&gt;rand = Math.random();&lt;br /&gt;x = Math.abs( -123 );&lt;br /&gt;y = Math.round( 123.567 );&lt;br /&gt;z = Math.pow( 2,4 );&lt;br /&gt;max = Math.max( (float)1e10,(float)3e9 );&lt;br /&gt;&lt;br /&gt;System.out.println( rand );&lt;br /&gt;System.out.println( x );&lt;br /&gt;System.out.println( y );&lt;br /&gt;System.out.println( z );&lt;br /&gt;System.out.println( max );&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3920001919144329179?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3920001919144329179/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3920001919144329179' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3920001919144329179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3920001919144329179'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-clase-math.html' title='LA CLASE MATH'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-678247787587565284</id><published>2009-04-11T11:15:00.000-07:00</published><updated>2009-04-11T11:15:00.536-07:00</updated><title type='text'>La marca applet en HTML</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;El visualizador de applets (appletviewer) es una aplicación que permite ver en funcionamiento applets, sin necesidad de la utilización de un navegador World-Wide-Web como HotJava, &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Microsoft Explorer o Nescape. En adelante, recurriremos muchas veces a él, ya que el objetivo del tutorial es el lenguaje Java.&lt;br /&gt;Applet&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;La definición más extendida de applet, muy bien resumida por Patrick Naughton, indica que un applet es "una pequeña aplicación accesible en un servidor Internet, que se transporta por la red, se instala automáticamente y se ejecuta in situ como parte de un documento web". Claro que así la definición establece el entorno (Internet, Web, etc.). En realidad, un applet es una aplicación pretendidamente corta (nada impide que ocupe más de un gigabyte, a no ser el pensamiento de que se va a transportar por la red y una mente sensata) basada en un formato gráfico sin representación independiente: es decir, se trata de un elemento a embeber en otras aplicaciones; es un componente en su sentido estricto.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Un ejemplo en otro ámbito de cosas podría ser el siguiente: Imaginemos una empresa, que cansada de empezar siempre a codificar desde cero, diseña un formulario con los datos básicos de una persona (nombre, dirección, etc.). Tal formulario no es un diálogo por sí mismo, pero se podría integrar en diálogos de clientes, proveedores, empleados, etc. El hecho de que se integre estática (embebido en un ejecutable) o dinámicamente (intérpretes, DLLs, etc.) no afecta en absoluto a la esencia de su comportamiento como componente con que construir diálogos con sentido autónomo.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Pues bien, así es un applet. Lo que ocurre es que, dado que no existe una base adecuada para soportar aplicaciones industriales Java en las que insertar nuestras miniaplicaciones (aunque todo se andará), los applets se han construido mayoritariamente, y con gran acierto comercial (parece), como pequeñas aplicaciones interactivas, con movimiento, luces y sonido... en Internet.&lt;br /&gt;Llamadas a Applets con appletviewer&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Un applet es una mínima aplicación Java diseñada para ejecutarse en un navegador Web. Por tanto, no necesita preocuparse por un método main() ni en dónde se realizan las llamadas. El applet asume que el código se está ejecutando desde dentro de un navegador. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;El appletviewer se asemeja al mínimo navegador. Espera como argumento el nombre del fichero html que debe cargar, no se le puede pasar directamente un programa Java. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Este fichero html debe contener una marca que especifica el código que cargará el appletviewer:&lt;br /&gt;&lt;html&gt;&lt;applet code="HolaMundo.class" width="300" height="100"&gt;&lt;/applet&gt;&lt;/html&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;El appletviewer crear un espacio de navegación, incluyendo un área gráfica, donde se ejecutará el applet, entonces llamará a la clase applet apropiada. En el ejemplo anterior, el appletviewer cargará una clase de nombre HolaMundo y le permitirá trabajar en su espacio gráfico.&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-678247787587565284?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/678247787587565284/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=678247787587565284' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/678247787587565284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/678247787587565284'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/la-marca-applet-en-html.html' title='La marca applet en HTML'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8141612734887697741</id><published>2009-04-08T11:14:00.000-07:00</published><updated>2009-04-08T11:14:00.736-07:00</updated><title type='text'>UN APPLET BASICO</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Vamos a comenzar la creación del código fuente del un applet que satisfaga nuestras necesidades. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Recordamos que Java utiliza la extensión .java para designar los ficheros fuente. HolaMundo &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;A continuación está el código fuente del applet HolaMundo, que es la versión applet de la mínima aplicación Java que antes habíamos escrito. Guardar este código en un fichero fuente Java como &lt;/span&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;HolaMundo.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;.&lt;br /&gt;//&lt;br /&gt;// Applet HolaMundo de ejemplo&lt;br /&gt;//&lt;br /&gt;import java.awt.Graphics;&lt;br /&gt;import java.applet.Applet;&lt;br /&gt;public class HolaMundo extends Applet {&lt;br /&gt;public void paint( Graphics g ) {&lt;br /&gt;g.drawString( "Hola Mundo!",25,25 ) ;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Componentes básicos de un Applet&lt;br /&gt;El lenguaje Java implementa un modelo de Programación Orientada a Objetos. Los objetos sirven de bloques centrales de construcción de los programas Java. De la misma forma que otros lenguajes de programación, Java tiene variables de estado y métodos.&lt;br /&gt;Veamos como se descompone un applet en sus piezas/objetos: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;/*&lt;br /&gt;Sección de importaciones&lt;br /&gt;*/&lt;br /&gt;public class NombreDelNuevoApplet extends Applet {&lt;br /&gt;/*&lt;br /&gt;Aquí se declaran las variables de estado (public y private)&lt;br /&gt;*/&lt;br /&gt;&lt;br /&gt;/*&lt;br /&gt;Los métodos para la interacción con los objetos se&lt;br /&gt;declaran y definen aquí&lt;br /&gt;*/&lt;br /&gt;public void MetodoUno( parámetros ) {&lt;br /&gt;/*&lt;br /&gt;Aquí viene para cada método, el código Java que&lt;br /&gt;desempeña la tarea.&lt;br /&gt;Qué código se use depende del applet&lt;br /&gt;*/&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Para HolaMundo, se importan las dos clases que necesita. No hay variables de estado, y sólo se tiene que definir un método para que el applet tenga el comportamiento esperado. Clases incluidas &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;El comando import carga otras clases dentro de nuestro código fuente. El importar una clase desde un paquete de Java hace que esa clase importada esté disponible para todo el código incluido en el fichero fuente Java que la importa. Por ejemplo, en el applet HolaMundo se importa la clase java.awt.Graphics , y podremos llamar a los métodos de esta clase desde cualquier método de nuestro programa que se encuentre en el fichero HolaMundo.java . Esta clase define una área gráfica y métodos para poder dibujar dentro de ella. La función paint() declara a g como un objeto de tipo Graphics ; luego, paint() usa el método drawString() de la clase Graphics para generar su salida. La clase Applet &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Se puede crear una nueva clase, en este caso HolaMundo , extendiendo la clase básica de Java: Applet . De esta forma, se hereda todo lo necesario para crear un applet. Modificando determinados métodos del applet, podemos lograr que lleve a cabo las funciones que deseamos.&lt;br /&gt;import java.applet.Applet;&lt;br /&gt;. . .&lt;br /&gt;public class HolaMundo extends Applet {&lt;br /&gt;Métodos de Applet&lt;br /&gt;La parte del applet a modificar es el método paint() . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En la clase Applet , se llama al método paint() cada vez que el método arranca o necesita ser refrescado, pero no hace nada. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En nuestro caso, lo que hacemos es:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;public void paint( Graphics g ) {&lt;br /&gt;g.drawString( "Hola Mundo!",25,25 );&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;De acuerdo a las normas de sobrecarga, se ejecutará este último paint() y no el paint() vacío de la clase Applet . Luego, aquí se ejecuta el método drawString() , que le dice al applet cómo debe aparecer un texto en el  área de dibujo.&lt;br /&gt;Otros métodos básicos para dibujar son: drawLine( int x1,int y1,int x2,int y2 )&lt;br /&gt;drawRect( int x,int y,int ancho,int alto )&lt;br /&gt;drawOval( int x,int y,int ancho,int alto )&lt;br /&gt;Tanto para drawRect() como para drawOval() , las coordenadas ( x,y ) son la esquina superior izquierda del rectángulo (para drawOval, el óvalo es encajado en el rectángulo que lo circunscribe). &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8141612734887697741?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8141612734887697741/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8141612734887697741' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8141612734887697741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8141612734887697741'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/un-applet-basico.html' title='UN APPLET BASICO'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3320658685243141305</id><published>2009-04-05T11:13:00.000-07:00</published><updated>2009-04-05T11:13:00.185-07:00</updated><title type='text'>COMPILACION Y EJECUCION DE HOLA MUNDO II</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Ejecución &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Para ejecutar la aplicación HolaMundoApp, hemos de recurrir al intérprete java , que también se encuentra en el directorio bin , bajo el directorio java . Se ejecutará la aplicación con la línea: %java &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;HolaMundoApp &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;y debería aparecer en pantalla la respuesta de Java: %Hola Mundo! &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;El símbolo % representa al prompt del sistema, y lo utilizaremos para presentar las respuestas que nos ofrezca el sistema como resultado de la ejecución de los comandos que se indiquen en pantalla o para indicar las líneas de comandos a introducir. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Problemas de compilación &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;A continuación presentamos una lista de los errores más frecuentes que se presentan a la hora de compilar un fichero con código fuente Java, nos basaremos en errores provocados sobre nuestra mínima aplicación Java de la sección anterior, pero podría generalizarse sin demasiados problemas. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;%javac: Command not found &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;No se ha establecido correctamente la variable PATH del sistema para el compilador javac . El compilador javac se encuentra en el directorio bin , que cuelga del directorio java , que cuelga del directorio donde se haya instalado el JDK (Java Development Kit). %HolaMundoApp.java:3: Method printl(java.lang.String) not found in class java.io.PrintStream. System.out.printl( "HolaMundo!); ^ &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Error tipográfico, el método es println no printl. %In class HolaMundoApp: main must be public and static &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Error de ejecución, se olvidó colocar la palabra static en la declaración del método main de la aplicación. &lt;/p&gt;&lt;p align="justify"&gt;%Can´t find class HolaMundoApp &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Este es un error muy sutil. Generalmente significa que el nombre de la clase es distinto al del fichero que contiene el código fuente, con lo cual el fichero nombre_fichero.class que se genera es diferente del que cabría esperar. Por ejemplo, si en nuestro fichero de código fuente de nuestra aplicación HolaMundoApp.java colocamos en vez de la declaración actual de la clase HolaMundoApp , la línea: class HolaMundoapp {&lt;br /&gt;se creará un fichero HolaMundoapp.class , que es diferente del HolaMundoApp.class , que es el nombre esperado de la clase; la diferencia se encuentra en la a minúscula y mayúscula. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3320658685243141305?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3320658685243141305/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3320658685243141305' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3320658685243141305'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3320658685243141305'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/compilacion-y-ejecucion-de-hola-mundo_05.html' title='COMPILACION Y EJECUCION DE HOLA MUNDO II'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2801063428023104063</id><published>2009-04-02T11:12:00.000-07:00</published><updated>2009-04-02T11:12:00.355-07:00</updated><title type='text'>COMPILACION Y EJECUCION DE HOLA MUNDO</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Vamos a ver a continuación como podemos ver el resultado de nuestra primera aplicación Java en pantalla. Generaremos un fichero con el código fuente de la aplicación, lo compilaremos y utilizaremos el intérprete java para ejecutarlo. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Ficheros Fuente Java &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Los ficheros fuente en Java terminan con la extensión " .java ". Crear un fichero utilizando cualquier editor de texto ascii que tenga como contenido el código de las ocho líneas de nuestra mínima aplicación, y salvarlo en un fichero con el nombre de &lt;/span&gt;&lt;span style="font-family:arial;"&gt;HolaMundoApp.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Para crear los ficheros con código fuente Java no es necesario un procesador de textos, aunque puede utilizarse siempre que tenga salida a fichero de texto plano o ascii, sino que es suficiente con cualquier otro editor.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Compilación &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;El compilador javac se encuentra en el directorio bin por debajo del directorio java , donde se haya instalado el JDK. Este directorio bin , si se han seguido las instrucciones de instalación, debería formar parte de la variable de entorno PATH del sistema. Si no es así, tendría que revisar la Instalación del JDK . El compilador de Java traslada el código fuente Java a byte-codes, que son los componentes que entiende la Máquina Virtual Java que está incluida en los navegadores con soporte Java y en appletviewer. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Una vez creado el fichero fuente HolaMundoApp.java, se puede compilar con la línea siguiente: &lt;/p&gt;&lt;p align="justify"&gt;%javac HolaMundoApp.java &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Si no se han cometido errores al teclear ni se han tenido problemas con el path al fichero fuente ni al compilador, no debería aparecer mensaje alguno en la pantalla, y cuando vuelva a aparecer el prompt del sistema, se debería ver un fichero HolaMundoApp.class nuevo en el directorio donde se encuentra el fichero fuente. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Si ha habido algún problema, en Problemas de compilación al final de esta sección, hemos intentado reproducir los que más frecuentemente se suelen dar, se pueden consultar por si pueden aportar un poco de luz al error que haya aparecido. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2801063428023104063?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2801063428023104063/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2801063428023104063' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2801063428023104063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2801063428023104063'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/04/compilacion-y-ejecucion-de-hola-mundo.html' title='COMPILACION Y EJECUCION DE HOLA MUNDO'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4783248607031796682</id><published>2009-03-30T17:59:00.000-07:00</published><updated>2009-03-30T17:59:00.322-07:00</updated><title type='text'>UNA MINIMA APLICACION</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;La aplicación más pequeña posible es la que simplemente imprimir un mensaje en la pantalla. Tradicionalmente, el mensaje suele ser "Hola Mundo!". Esto es justamente lo que hace el siguiente fragmento de código:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt; //&lt;br /&gt;// Aplicación HolaMundo de ejemplo&lt;br /&gt;//&lt;br /&gt;class HolaMundoApp {&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;System.out.println( "Hola Mundo!" ) ;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;HolaMundo&lt;br /&gt;Vamos ver en detalle la aplicación anterior, línea a línea. Esas líneas de código contienen los componenetes mínimos para imprimir Hola Mundo! en la pantalla. //&lt;br /&gt;// Aplicación HolaMundo de ejemplo&lt;br /&gt;//&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Estas tres primera líneas son comentarios. Hay tres tipos de comentarios en Java, // es un comentario orientado a línea. class HolaMundoApp {&lt;br /&gt;Esta línea declara la clase HolaMundoApp . El nombre de la clase especificado en el fichero fuente se utiliza para crear un fichero nombredeclase.class en el directorio en el que se compila la aplicación. En nuestro caso, el compilador creará un fichero llamado HolaMundoApp.class. public static void main( String args[] ) &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;{&lt;br /&gt;Esta línea especifica un método que el intérprete Java busca para ejecutar en primer lugar. Igual que en otros lenguajes, Java utiliza una palabra clave main para especificar la primera función a ejecutar. En este ejemplo tan simple no se pasan argumentos.&lt;br /&gt;public significa que el método main puede ser llamado por cualquiera, incluyendo el intérprete Java. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;static es una palabra clave que le dice al compilador que main se refiere a la propia clase HolaMundoApp y no a ninguna instancia de la clase. De esta forma, si alguien intenta hacer otra instancia de la clase, el método main no se instanciaría.&lt;br /&gt;void indica que main no devuelve nada. Esto es importante ya que Java realiza una estricta comprobación de tipos, incluyendo los tipos que se ha declarado que devuelven los métodos.&lt;br /&gt;args[] es la declaración de un array de Strings. Estos son los argumentos escritos tras el nombre de la clase en la línea de comandos: %java HolaMundoApp arg1 arg2 ...&lt;br /&gt;System.out.println( "Hola Mundo!" );&lt;br /&gt;Esta es la funcionalidad de la aplicación. Esta línea muestra el uso de un nombre de clase y método. Se usa el método println() de la clase out que está en el paquete System .&lt;br /&gt;El método println() toma una cadena como argumento y la escribe en el stream de salida estándar; en este caso, la ventana donde se lanza la aplicación. }&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Finalmente, se cierran las llaves que limitan el método main() y la clase HolaMundoApp . &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4783248607031796682?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4783248607031796682/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4783248607031796682' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4783248607031796682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4783248607031796682'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/una-minima-aplicacion.html' title='UNA MINIMA APLICACION'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1952284206019421845</id><published>2009-03-27T17:57:00.000-07:00</published><updated>2009-03-27T17:57:00.205-07:00</updated><title type='text'>Referencias y Listas Segunda Parte</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Revisemos pues el código de nuestro Hotel, ahora &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Hotel3.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;, que será prácticamente el mismo que en el caso de los arrays: &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;public class Hotel3&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt; {&lt;br /&gt;// Número de habitaciones por ala&lt;br /&gt;public static final int habPorAla = 12;&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;ListaEnlazada llaveMaestra; // paso 1&lt;br /&gt;llaveMaestra = new ListaEnlazada(); // pasos 2-5&lt;br /&gt;int numPiso = 1;&lt;br /&gt;for( int i=0; i &lt; habPorAla; i++ ) // pasos 6-9&lt;br /&gt;llaveMaestra.insertAt( i,&lt;br /&gt;new Habitacion( numPiso * 100 + i,&lt;br /&gt;( 0 == (i%2)) ? 2 : 1 );&lt;br /&gt;for( int i=0; i &lt; habPorAla; i++ ) // pasos 10-12&lt;br /&gt;( (Habitacion)llaveMaestra.getAt(i) ).printData();&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;El paso 1 es la llave maestra de la lista. Está representada por una lista genérica; es decir, una lista de llaves que cumple la convención que nosotros hemos establecido. Podríamos acelerar el tiempo de compilación metiendo la lista genérica ListaEnlazada dentro de una ListaEnlazadaHabitacion .&lt;br /&gt;Los pasos 2 a 5 son equivalentes a los del primer ejemplo. Construimos e inicializamos una nueva ListaEnlazada , que usaremos como juego de llaves maestras.&lt;br /&gt;Los pasos 6 a 9 son funcionalmente idénticos a los del ejemplo anterior con arrays, pero con diferente sintaxis. En Java, los arrays y el operador [] son internos del lenguaje. Como Java no soporta la sobrecarga de operadores por parte del usuario, tenemos que usarlo siempre en su forma normal. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;La ListaEnlazada proporciona el método insertAt() que coge el índice en la lista, donde el nuevo nodo ha de ser insertado, como primer argumento. El segundo argumento es el objeto que será almacenado en la lista. Obsérvese que no es necesario colocar moldeo alguno para hacer algo a una clase descendiente que depende de uno de sus padres. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Los pasos 10 a 12 provocan la misma salida que los pasos 10 y 11 del ejemplo con arrays. El paso 10 coge la llave del juego que se indica en el método getAt() . En este momento, el sistema no sabe qué datos contiene la llave, porque el contenido de la habitación es genérico. Pero nosotros sí sabemos lo que hay en la lista, así que informamos al sistema haciendo un moldeado a la llave de la habitación (este casting generará un chequeo en tiempo de ejecución por el compilador, para asegurarse de que se trata de una Habitacion ). El paso 12 usa la llave para imprimir la información. &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1952284206019421845?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1952284206019421845/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1952284206019421845' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1952284206019421845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1952284206019421845'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/referencias-y-listas-segunda-parte.html' title='Referencias y Listas Segunda Parte'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3296401699061798131</id><published>2009-03-24T17:56:00.000-07:00</published><updated>2009-03-24T17:56:00.390-07:00</updated><title type='text'>REFERENCIAS Y LISTAS</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Hay gente que piensa que como Java no dispone de punteros, resulta demasiado complejo construir listas enlazadas, árboles binarios y grafos. Vamos a demostrar que quien así piense está bastante equivocado. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Retomemos el ejemplo de los arrays, y en vez de éstos vamos a usar una lista doblemente enlazada. El paquete de la lista simple se compone de dos clases. Cada elemento de la lista es un NodoListaEnlazada , NodoListaEnlazada.java : &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;public class NodoListaEnlazada&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt; {&lt;br /&gt;private NodoListaEnlazada siguiente;&lt;br /&gt;private NodoListaEnlazada anterior;&lt;br /&gt;private Object datos;&lt;br /&gt;// . . .&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Cada NodoListaEnlazada contiene una referencia a su nodo precedente en la lista y una referencia al nodo que le sigue. También contiene una referencia genérica a cualquier clase que se use para proporcionar acceso a los datos que el usuario proporcione.&lt;br /&gt;La lista enlazada, ListaEnlazada.java , contiene un nodo principio-fin y un contador para el número de nodos en la lista: &lt;/p&gt;&lt;p align="justify"&gt;public class ListaEnlazada&lt;/p&gt;&lt;p align="justify"&gt; {&lt;br /&gt;public NodoListaEnlazada PrincipioFin;&lt;br /&gt;private int numNodos;&lt;br /&gt;// . . .&lt;br /&gt;}&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;El nodo especial PrincipioFin es sencillo, para simplificar el código. El contador se usa para optimizar los casos más habituales. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3296401699061798131?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3296401699061798131/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3296401699061798131' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3296401699061798131'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3296401699061798131'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/referencias-y-listas.html' title='REFERENCIAS Y LISTAS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2225464167221737223</id><published>2009-03-21T17:55:00.000-07:00</published><updated>2009-03-21T17:55:00.217-07:00</updated><title type='text'>REFERENCIAS Y ARRAYS</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Como en C y C++, Java dispone de arrays de tipos primitivos o de clases. Los arrays en C y C++ son básicamente un acompañante para los punteros. En Java, sin embargo, son ciudadanos de primera clase. &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Vamos a expandir nuestro hotel creando todo un ala de habitaciones, &lt;/span&gt;&lt;span style="font-family:arial;"&gt;Hotel2.java &lt;/span&gt;&lt;span style="font-family:arial;"&gt;. Crearemos un juego de llaves maestras y luego construiremos las habitaciones: public class Hotel2&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt; {&lt;br /&gt;// Número de habitaciones por ala&lt;br /&gt;public static final int habPorAla = 12;&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;Habitacion llavesMaestras[]; // paso 1&lt;br /&gt;llavesMaestras = new Habitacion[ habPorAla ]; // pasos 2-5&lt;br /&gt;// ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^&lt;br /&gt;// A B, C, D y E&lt;br /&gt;int numPiso = 1;&lt;br /&gt;for( int i=0; i &lt; habPorAla; i++ ) // pasos 6-9&lt;br /&gt;llavesMaestras[ i ] = new Habitacion( numPiso * 100 + i,&lt;br /&gt;( 0 == (i%2)) ? 2 : 1 );&lt;br /&gt;for( int i=0; i &lt; habPorAla; i++ ) // pasos 10-11&lt;br /&gt;llavesMaestras[i].printData();&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Cada paso en el ejemplo es semejante al que ya vimos antes. El paso 1 especifica que el juego de llaves maestras es un grupo de llaves de habitaciones.&lt;br /&gt;Los pasos 2 a 5 son, en este caso, la parte principal. En lugar de crear una habitación, el gerente ordena construir un grupo contiguo de habitaciones. El número de llaves se especifica entre corchetes y todas se crean en blanco.&lt;br /&gt;Los pasos 6 a 9 son idénticos a los pasos 2 a 5 del ejemplo anterior, excepto en que en este caso todas las llaves pasan a formar parte del juego maestro. Los números de piso se dan en miles para que cuando se creen las habitaciones, todas tengan el mismo formato. También todas las habitaciones de número par tienen una sola cama, mientras que las habitaciones impares tendrán dos camas.&lt;br /&gt;Los pasos 10 y 11 nos permiten obtener información de cada una de las habitaciones. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2225464167221737223?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2225464167221737223/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2225464167221737223' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2225464167221737223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2225464167221737223'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/referencias-y-arrays.html' title='REFERENCIAS Y ARRAYS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4788123614018387465</id><published>2009-03-18T17:55:00.000-07:00</published><updated>2009-03-18T17:55:00.556-07:00</updated><title type='text'>REFERENCIAS</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Las referencias en Java no son punteros ni referencias como en C++. Este hecho crea un poco de confusión entre los programadores que llegan por primera vez a Java. Las referencias en Java son identificadores de instancias de las clases Java. Una referencia dirige la atención a un objeto de un tipo específico. No tenemos por qué saber cómo lo hace ni necesitamos saber qué hace ni, por supuesto, su implementación.&lt;br /&gt;Pensemos en una referencia como si se tratase de la llave electrónica de la habitación de un hotel. Vamos a utilizar precisamente este ejemplo del Hotel para demostrar el uso y la utilización que podemos hacer de las referencias en Java. Primero crearemos la clase Habitacion , implementada en el fichero &lt;/span&gt;&lt;a href="http://www.webtaller.com/construccion/lenguajes/manuales/java/Habitacion.java"&gt;&lt;span style="font-family:arial;"&gt;Habitacion.java &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;, mediante instancias de la cual construiremos nuestro Hotel: public class Habitacion {&lt;br /&gt;private int numHabitacion;&lt;br /&gt;private int numCamas;&lt;br /&gt;public Habitacion() {&lt;br /&gt;habitacion( 0 );&lt;br /&gt;}&lt;br /&gt;public Habitacion( int numeroHab ) {&lt;br /&gt;habitacion( numeroHab );&lt;br /&gt;}&lt;br /&gt;public Habitacion( int numeroHab,int camas ) {&lt;br /&gt;habitacion( numeroHab );&lt;br /&gt;camas( camas );&lt;br /&gt;}&lt;br /&gt;public synchornized int habitacion() {&lt;br /&gt;return( numHabitacion );&lt;br /&gt;}&lt;br /&gt;public synchronized void habitacion( int numeroHab ) {&lt;br /&gt;numHabitacion = numeroHab;&lt;br /&gt;}&lt;br /&gt;public synchronized int camas() {&lt;br /&gt;return( camas );&lt;br /&gt;}&lt;br /&gt;public syncronized void camas( int camas ) {&lt;br /&gt;numCamas = camas;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;El código anterior sería el corazón de la aplicación. Vamos pues a construir nuestro Hotel creando Habitaciones y asignándole a cada una de ellas su llave electrónica; tal como muestra el código siguiente, &lt;/span&gt;&lt;a href="http://www.webtaller.com/construccion/lenguajes/manuales/java/Hotel1.java"&gt;&lt;span style="font-family:arial;"&gt;Hotel1.java &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;: public class Hotel1 {&lt;br /&gt;public static void main( String args[] ) {&lt;br /&gt;Habitacion llaveHab1; // paso 1&lt;br /&gt;Habitacion llaveHab2;&lt;br /&gt;llaveHab1 = new Habitacion( 222 ); // pasos 2, 3, 4 y 5&lt;br /&gt;llaveHab2 = new Habitacion( 1144,3 );&lt;br /&gt;// ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^&lt;br /&gt;// A B y D C&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Para explicar el proceso, dividimos las acciones en los cinco pasos necesarios para poder entrar en nuestra habitación. Aunque no se incluye, podemos también considerar el caso de que necesitemos un cerrajero, para que cuando perdamos la llave, nos abra la puerta; y que en nuestro caso sería el garbage collector , que recicla la habitación una vez que se hayan perdido todas las llaves.&lt;br /&gt;El primer paso es la creación de la llave, es decir, definir la variable referencia, por defecto nula .&lt;br /&gt;El resto de los pasos se agrupan en una sola sentencia Java. La parte B en el código anterior indica al gerente del Hotel que ya dispone de una nueva habitación. La parte C llama al decorador de interiores para que " vista " la habitación según un patrón determinado, para que no desentonen unas habitaciones con otras y no se pierdan las señas de identidad del hotel. El código electrónico que nos permitirá acceder a la habitación se genera en la parte D, una vez conocido el interior de la habitación y se programa en la llave en la parte A.&lt;br /&gt;Si dejamos el ejemplo real a un lado y nos vamos a lo que ocurre en la ejecución del código, vemos que el operador new busca espacio para una instancia de un objeto de una clase determinada e inicializa la memoria a los valores adecuados. Luego invoca al método constructor de la clase, proporcionándole los argumentos adecuados. El operador new devuelve una referencia a sí mismo, que es inmediatamente asignada a la variable referencia.&lt;br /&gt;Podemos tener múltiples llaves para una misma habitación: . . . Habitacion llaveHab3,llaveHab4; llaveHab3 = llaveHab1; llaveHab4 = llavehab2;&lt;br /&gt;De este modo conseguimos copias de las llaves. Las habitaciones en sí mismas no se han tocado en este proceso. Así que, ya tenemos dos llaves para la habitación 222 y otras dos para la habitación 1144.&lt;br /&gt;Una llave puede ser programada para que funcione solamente con una habitación en cualquier momento, pero podemos cambiar su código electrónico para que funcione con alguna otra habitación; por ejemplo, para cambiar una habitación anteriormente utilizada por un empedernido fumador por otra limpia de olores y con vistas al mar. Cambiemos pues la llave duplicada de la habitación del fumador (la 222) por la habitación con olor a sal marina, 1144: . . . llaveHab3 = llaveHab2;&lt;br /&gt;Ahora tenemos una llave para la habitación 222 y tres para la habitación 1144. Mantendremos una llave para cada habitación en la conserjería, para poder utilizarla como llave maestra, en el caso de que alguien pierda su llave propia.&lt;br /&gt;Alguien con la llave de una habitación puede hacer cambios en ella, y los compañeros que tengan llave de esa misma habitación, no tendrán conocimiento de esos cambios hasta que vuelvan a entrar en la habitación. Por ejemplo, vamos a quitar una de las camas de la habitación, entrando en ella con la llave maestra: . . . llaveHab2.camas( 2 );&lt;br /&gt;Ahora cuando los inquilinos entren en la habitación podrán comprobar el cambio realizado: . . . llaveHab4.printData(); &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4788123614018387465?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4788123614018387465/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4788123614018387465' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4788123614018387465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4788123614018387465'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/referencias.html' title='REFERENCIAS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1488412337990623716</id><published>2009-03-17T17:54:00.000-07:00</published><updated>2009-03-17T17:54:00.838-07:00</updated><title type='text'>Paquetes de Java</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;El lenguaje Java proporciona una serie de paquetes que incluyen ventanas, utilidades, un sistema de entrada/salida general, herramientas y comunicaciones. En la versión actual del JDK, los paquetes Java que se incluyen son:&lt;br /&gt;java.applet&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Este paquete contiene clases diseñadas para usar con applets. Hay una clase Applet y tres interfaces: AppletContext, AppletStub y AudioClip.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;java.awt&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;El paquete Abstract Windowing Toolkit (awt) contiene clases para generar widgets y componentes GUI (Interfaz Gráfico de Usuario). Incluye las clases Button, Checkbox, Choice, Component, Graphics, Menu, Panel, TextArea y TextField.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;java.io&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;El paquete de entrada/salida contiene las clases de acceso a ficheros: FileInputStream y FileOutputStream.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;java.lang&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Este paquete incluye las clases del lenguaje Java propiamente dicho: Object, Thread, Exception, System, Integer, Float, Math, String, etc.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;java.net&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Este paquete da soporte a las conexiones del protocolo TCP/IP y, además, incluye las clases Socket, URL y URLConnection. &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;java.util&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Este paquete es una miscelánea de clases útiles para muchas cosas en programación. Se incluyen, entre otras, Date (fecha), Dictionary (diccionario), Random (números aleatorios) y Stack (pila FIFO).&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1488412337990623716?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1488412337990623716/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1488412337990623716' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1488412337990623716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1488412337990623716'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/paquetes-de-java.html' title='Paquetes de Java'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2795893435642912971</id><published>2009-03-15T17:53:00.001-07:00</published><updated>2009-03-15T17:53:00.758-07:00</updated><title type='text'>Import</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los paquetes de clases se cargan con la palabra clave import, especificando el nombre del paquete como ruta y nombre de clase (es lo mismo que #include de C/C++). Se pueden cargar varias clases utilizando un asterisco.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;import java.Date;import java.awt.*;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Si un fichero fuente Java no contiene ningún package, se coloca en el paquete por defecto sin nombre. Es decir, en el mismo directorio que el fichero fuente, y la clase puede ser cargada con la sentencia import:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;import MiClase;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2795893435642912971?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2795893435642912971/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2795893435642912971' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2795893435642912971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2795893435642912971'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/import.html' title='Import'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-634903118241057349</id><published>2009-03-15T17:53:00.000-07:00</published><updated>2009-03-15T17:53:01.022-07:00</updated><title type='text'>Import</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los paquetes de clases se cargan con la palabra clave import, especificando el nombre del paquete como ruta y nombre de clase (es lo mismo que #include de C/C++). Se pueden cargar varias clases utilizando un asterisco.&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;import java.Date;import java.awt.*;&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Si un fichero fuente Java no contiene ningún package, se coloca en el paquete por defecto sin nombre. Es decir, en el mismo directorio que el fichero fuente, y la clase puede ser cargada con la sentencia import:&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;import MiClase;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-634903118241057349?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/634903118241057349/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=634903118241057349' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/634903118241057349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/634903118241057349'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/import_15.html' title='Import'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7592752834854551075</id><published>2009-03-13T17:53:00.000-07:00</published><updated>2009-03-13T17:53:00.697-07:00</updated><title type='text'>PAQUETES</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;La palabra clave package permite agrupar clases e interfaces. Los nombres de los paquetes son palabras separadas por puntos y se almacenan en directorios que coinciden con esos nombres.&lt;br /&gt;Por ejemplo, los ficheros siguientes, que contienen código fuente Java:&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Applet.java, AppletContext.java, AppletStub.java, AudioClip.java&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;contienen en su código la línea:&lt;br /&gt;package java.applet;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Y las clases que se obtienen de la compilación de los ficheros anteriores, se encuentran con el nombre nombre_de_clase.class, en el directorio:&lt;br /&gt;java/applet&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7592752834854551075?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7592752834854551075/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7592752834854551075' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7592752834854551075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7592752834854551075'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/paquetes.html' title='PAQUETES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-957989034819589134</id><published>2009-03-11T17:52:00.000-07:00</published><updated>2009-03-11T17:52:00.382-07:00</updated><title type='text'>METODOS NATIVOS</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java proporciona un mecanismo para la llamada a funciones C y C++ desde nuestro código fuente Java. Para definir métodos como funciones C o C++ se utiliza la palabra clave native . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;public class Fecha &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;{&lt;br /&gt;int ahora;&lt;br /&gt;public Fecha() {&lt;br /&gt;ahora = time();&lt;br /&gt;}&lt;br /&gt;private native int time();&lt;br /&gt;static {&lt;br /&gt;System.loadLibrary( "time" );&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Una vez escrito el código Java, se necesitan ejecutar los pasos siguientes para poder integrar el código C o C++:&lt;br /&gt;Utilizar javah para crear un fichero de cabecera (.h)&lt;br /&gt;Utilizar javah para crear un fichero de stubs , es decir, que contiene la declaración de las funciones&lt;br /&gt;Escribir el código del método nativo en C o C++, es decir, rellenar el código de la función, completando el trabajo de javah al crear el fichero de stubs&lt;br /&gt;Compilar el fichero de stubs y el fichero .c en una librería de carga dinámica ( DLL en Windows '95 o libXX.so en Unix) &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Ejecutar la aplicación con el appletviewer &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Más adelante trataremos en profundidad los métodos nativos, porque añaden una gran potencia a Java, al permitirle integrar a través de librería dinámica cualquier algoritmo desarrollado en C o C++, lo cual, entre otras cosas, se utiliza como método de protección contra la descompilación completa del código Java. &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-957989034819589134?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/957989034819589134/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=957989034819589134' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/957989034819589134'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/957989034819589134'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/metodos-nativos.html' title='METODOS NATIVOS'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2598362576211432019</id><published>2009-03-09T12:31:00.000-07:00</published><updated>2009-03-09T12:31:00.205-07:00</updated><title type='text'>Interfaces</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los métodos abstractos son útiles cuando se quiere que cada implementación de la clase parezca y funcione igual, pero necesita que se cree una nueva clase para utilizar los métodos abstractos.&lt;br /&gt;Los interfaces proporcionan un mecanismo para abstraer los métodos a un nivel superior.&lt;br /&gt;Un interface contiene una colección de métodos que se implementan en otro lugar. Los métodos de una clase son public , static y final . &lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;La principal diferencia entre interface y abstract es que un interface proporciona un mecanismo de encapsulación de los protocolos de los métodos sin forzar al usuario a utilizar la herencia.&lt;br /&gt;Por ejemplo: &lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;p align="justify"&gt;public interface VideoClip {&lt;br /&gt;// comienza la reproduccion del video&lt;br /&gt;void play();&lt;br /&gt;// reproduce el clip en un bucle&lt;br /&gt;void bucle();&lt;br /&gt;// detiene la reproduccion&lt;br /&gt;void stop();&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Las clases que quieran utilizar el interface VideoClip utilizarán la palabra implements y proporcionarán el código necesario para implementar los métodos que se han definido para el interface: &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;class MiClase implements VideoClip {&lt;br /&gt;void play() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;br /&gt;void bucle() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;br /&gt;void stop() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Al utilizar implements para el interface es como si se hiciese una acción de copiar-y-pegar del código del interface, con lo cual no se hereda nada, solamente se pueden usar los métodos.&lt;br /&gt;La ventaja principal del uso de interfaces es que una clase interface puede ser implementada por cualquier número de clases, permitiendo a cada clase compartir el interfaz de programación sin tener que ser consciente de la implementación que hagan las otras clases que implementen el interface . &lt;/span&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;class MiOtraClase implements VideoClip {&lt;br /&gt;void play() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;br /&gt;void bucle() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;br /&gt;void stop() {&lt;br /&gt;&lt;código&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2598362576211432019?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2598362576211432019/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2598362576211432019' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2598362576211432019'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2598362576211432019'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/interfaces.html' title='Interfaces'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7908570549644108988</id><published>2009-03-07T12:30:00.000-08:00</published><updated>2009-03-07T12:30:00.303-08:00</updated><title type='text'>Clases Abstractas</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Una de las características más útiles de cualquier lenguaje orientado a objetos es la posibilidad de declarar clases que definen como se utiliza solamente, sin tener que implementar métodos. Esto es muy útil cuando la implementación es específica para cada usuario, pero todos los usuarios tienen que utilizar los mismos métodos. Un ejemplo de clase abstracta en Java es la clase Graphics : public abstract class Graphics {&lt;br /&gt;public abstract void drawLine( int x1,int y1,int x2,&lt;br /&gt;int y2 );&lt;br /&gt;public abstract void drawOval( int x,int y,int width,&lt;br /&gt;int height );&lt;br /&gt;public abstract void drawArc( int x,int y,int width,&lt;br /&gt;int height,int startAngle,int arcAngle );&lt;br /&gt;. . .&lt;br /&gt;}&lt;br /&gt;Los métodos se declaran en la clase Graphics , pero el código que ejecutará el método está en algún otro sitio: public class MiClase extends Graphics {&lt;br /&gt;public void drawLine( int x1,int y1,int x2,int y2 ) {&lt;br /&gt;&lt;código para pintar líneas -específico de&lt;br /&gt;la arquitectura-&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Cuando una clase contiene un método abstracto tiene que declararse abstracta. No obstante, no todos los métodos de una clase abstracta tienen que ser abstractos. Las clases abstractas no pueden tener métodos privados (no se podrían implementar) ni tampoco estáticos. Una clase abstracta tiene que derivarse obligatoriamente, no se puede hacer un new de una clase abstracta.&lt;br /&gt;Una clase abstracta en Java es lo mismo que en C++ virtual func() = 0; lo que obliga a que al derivar de la clase haya que implementar forzosamente los métodos de esa clase abstracta. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7908570549644108988?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7908570549644108988/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7908570549644108988' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7908570549644108988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7908570549644108988'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/clases-abstractas.html' title='Clases Abstractas'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8075957283262711811</id><published>2009-03-05T12:29:00.000-08:00</published><updated>2009-03-05T12:29:00.298-08:00</updated><title type='text'>this y super</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Al acceder a variables de instancia de una clase, la palabra clave this hace referencia a los miembros de la propia clase. Volviendo al ejemplo de MiClase, se puede añadir otro constructor de la forma siguiente: public class MiClase {&lt;br /&gt;int i;&lt;br /&gt;public MiClase() {&lt;br /&gt;i = 10;&lt;br /&gt;}&lt;br /&gt;// Este constructor establece el valor de i&lt;br /&gt;public MiClase( int valor ) {&lt;br /&gt;this.i = valor; // i = valor&lt;br /&gt;}&lt;br /&gt;public void Suma_a_i( int j ) {&lt;br /&gt;i = i + j;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;Aquí this.i se refiere al entero i en la clase MiClase .&lt;br /&gt;Si se necesita llamar al método padre dentro de una clase que ha reemplazado ese método, se puede hacer referencia al método padre con la palabra clave super : import MiClase;&lt;br /&gt;public class MiNuevaClase extends MiClase {&lt;br /&gt;public void Suma_a_i( int j ) {&lt;br /&gt;i = i + ( j/2 );&lt;br /&gt;super.Suma_a_i( j );&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;En el siguiente código, el constructor establecerá el valor de i a 10, después lo cambiará a 15 y finalmente el método Suma_a_i() de la clase padre (MiClase) lo dejará en 25: MiNuevaClase mnc; mnc = new MiNuevaClase(); mnc.Suma_a_i( 10 );&lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8075957283262711811?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8075957283262711811/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8075957283262711811' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8075957283262711811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8075957283262711811'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/this-y-super.html' title='this y super'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-836241813340217367</id><published>2009-03-03T12:26:00.000-08:00</published><updated>2009-03-03T12:26:00.335-08:00</updated><title type='text'>Variables y Métodos Estáticos</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En un momento determinado se puede querer crear una clase en la que el valor de una variable de instancia sea el mismo (y de hecho sea la misma variable) para todos los objetos instanciados a partir de esa clase. Es decir, que exista una única copia de la variable de instancia. Se usará para ello la palabra clave static . class Documento extends Pagina {&lt;br /&gt;static int version = 10;&lt;br /&gt;}&lt;br /&gt;El valor de la variable version será el mismo para cualquier objeto instanciado de la clase Documento . Siempre que un objeto instanciado de Documento cambie la variable version , ésta cambiará para todos los objetos.&lt;br /&gt;De la misma forma se puede declarar un método como estático, lo que evita que el método pueda acceder a las variables de instancia no estáticas: class Documento extends Pagina {&lt;br /&gt;static int version = 10;&lt;br /&gt;int numero_de_capitulos;&lt;br /&gt;static void annade_un_capitulo() {&lt;br /&gt;numero_de_capitulos++; // esto no funciona&lt;br /&gt;}&lt;br /&gt;static void modifica_version( int i ) {&lt;br /&gt;version++; // esto si funciona&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;La modificación de la variable numero_de_capitulos no funciona porque se está violando una de las reglas de acceso al intentar acceder desde un método estático a una variable no estática.&lt;br /&gt;Todas las clases que se derivan, cuando se declaran estáticas, comparten la misma página de variables; es decir, todos los objetos que se generen comparten la misma zona de memoria. Las funciones estáticas se usan para acceder solamente a variables estáticas. class UnaClase {&lt;br /&gt;int var;&lt;br /&gt;UnaClase()&lt;br /&gt;{&lt;br /&gt;var = 5;&lt;br /&gt;}&lt;br /&gt;UnaFuncion()&lt;br /&gt;{&lt;br /&gt;var += 5;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;En el código anterior, si se llama a la función UnaFuncion a través de un puntero a función, no se podría acceder a var , porque al utilizar un puntero a función no se pasa implícitamente el puntero al propio objeto ( this ). Sin embargo, sí se podría acceder a var si fuese estática, porque siempre estaría en la misma posición de memoria para todos los objetos que se creasen de UnaClase. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-836241813340217367?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/836241813340217367/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=836241813340217367' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/836241813340217367'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/836241813340217367'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/variables-y-metodos-estaticos.html' title='Variables y Métodos Estáticos'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3446071459145494605</id><published>2009-03-01T11:59:00.000-08:00</published><updated>2009-03-01T11:59:01.662-08:00</updated><title type='text'>CONTROL DE ACCESO</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Cuando se crea una nueva clase en Java, se puede especificar el nivel de acceso que se quiere para las variables de instancia y los métodos definidos en la clase: &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;public public void CualquieraPuedeAcceder(){}&lt;br /&gt;Cualquier clase desde cualquier lugar puede acceder a las variables y métodos de instacia públicos.&lt;br /&gt;protected protected void SoloSubClases(){}&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Sólo las subclases de la clase y nadie más puede acceder a las variables y métodos de instancia protegidos.&lt;br /&gt;private private String NumeroDelCarnetDeIdentidad;&lt;/p&gt;&lt;p align="justify"&gt;Las variables y métodos de instancia privados sólo pueden ser accedidos desde dentro de la clase. No son accesibles desde las subclases. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;friendly (sin declaración específica) void MetodoDeMiPaquete(){}&lt;/p&gt;&lt;p align="justify"&gt;Por defecto, si no se especifica el control de acceso, las variables y métodos de instancia se declaran friendly (amigas), lo que significa que son accesibles por todos los objetos dentro del mismo paquete, pero no por los externos al paquete. Es lo mismo que protected. &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Los métodos protegidos (protected) pueden ser vistos por las clases derivadas, como en C++, y también, en Java, por los paquetes (packages). &lt;/p&gt;&lt;p align="justify"&gt;Todas las clases de un paquete pueden ver los métodos protegidos de ese paquete. Para evitarlo, se deben declarar como private protected , lo que hace que ya funcione como en C++ en donde sólo se puede acceder a las variables y métodos protegidos de las clases derivadas. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3446071459145494605?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3446071459145494605/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3446071459145494605' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3446071459145494605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3446071459145494605'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/03/control-de-acceso.html' title='CONTROL DE ACCESO'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7530486690526310441</id><published>2009-02-27T11:58:00.000-08:00</published><updated>2009-02-27T11:58:00.625-08:00</updated><title type='text'>HERENCIA</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;La Herencia es el mecanismo por el que se crean nuevos objetos definidos en términos de objetos ya existentes. Por ejemplo, si se tiene la clase Ave, se puede crear la subclase Pato, que es una especialización de Ave. class Pato extends Ave {&lt;br /&gt;int numero_de_patas;&lt;br /&gt;}&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;La palabra clave extends se usa para generar una subclase (especialización) de un objeto. Una Pato es una subclase de Ave. Cualquier cosa que contenga la definición de Ave será copiada a la clase Pato, además, en Pato se pueden definir sus propios métodos y variables de instancia. Se dice que Pato deriva o hereda de Ave.&lt;br /&gt;Además, se pueden sustituir los métodos proporcionados por la clase base. Utilizando nuestro anterior ejemplo de MiClase, aquí hay un ejemplo de una clase derivada sustituyendo a la función Suma_a_i() : import MiClase;&lt;br /&gt;public class MiNuevaClase extends MiClase {&lt;br /&gt;public void Suma_a_i( int j ) {&lt;br /&gt;i = i + ( j/2 );&lt;br /&gt;}&lt;br /&gt;}&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ahora cuando se crea una instancia de MiNuevaClase, el valor de i también se inicializa a 10, pero la llamada al método Suma_a_i() produce un resultado diferente: MiNuevaClase mnc;&lt;br /&gt;mnc = new MiNuevaClase();&lt;br /&gt;mnc.Suma_a_i( 10 );&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;En Java no se puede hacer herencia múltiple. Por ejemplo, de la clase aparato con motor y de la clase animal no se puede derivar nada, sería como obtener el objeto toro mecánico a partir de una máquina motorizada (aparato con motor) y un toro (aminal). &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;En realidad, lo que se pretende es copiar los métodos, es decir, pasar la funcionalidad del toro de verdad al toro mecánico, con lo cual no sería necesaria la herencia múltiple sino simplemente la compartición de funcionalidad que se encuentra implementada en Java a través de interfaces . &lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7530486690526310441?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7530486690526310441/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7530486690526310441' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7530486690526310441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7530486690526310441'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/herencia.html' title='HERENCIA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-703949809148754414</id><published>2009-02-25T11:58:00.000-08:00</published><updated>2009-02-25T11:58:01.131-08:00</updated><title type='text'>ALCANCE DE OBJETOS Y RECICLADO DE MEMORIA</title><content type='html'>&lt;span style="font-family:arial;"&gt;&lt;p&gt;&lt;br /&gt;Los objetos tienen un tiempo de vida y consumen recursos durante el mismo. Cuando un objeto no se va a utilizar más, debería liberar el espacio que ocupaba en la memoria de forma que las aplicaciones no la agoten (especialmente las grandes). &lt;/p&gt;&lt;p&gt;&lt;br /&gt;En Java, la recolección y liberación de memoria es responsabilidad de un thread llamado automatic garbage collector (recolector automático de basura). Este thread monitoriza el alcance de los objetos y marca los objetos que se han salido de alcance. Veamos un ejemplo: String s; // no se ha asignado todavia&lt;br /&gt;s = new String( "abc" ); // memoria asignada&lt;br /&gt;s = "def"; // se ha asignado nueva memoria&lt;br /&gt;// (nuevo objeto)&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Más adelante veremos en detalle la clase String , pero una breve descripción de lo que hace esto es; crear un objeto String y rellenarlo con los caracteres "abc" y crear otro (nuevo) String y colocarle los caracteres "def".&lt;br /&gt;En esencia se crean dos objetos: Objeto String "abc"&lt;br /&gt;Objeto String "def"&lt;/p&gt;&lt;p&gt;&lt;br /&gt;Al final de la tercera sentencia, el primer objeto creado de nombre s que contiene "abc" se ha salido de alcance. No hay forma de acceder a él. Ahora se tiene un nuevo objeto llamado s y contiene "def". Es marcado y eliminado en la siguiente iteración del thread reciclador de memoria.&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-703949809148754414?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/703949809148754414/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=703949809148754414' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/703949809148754414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/703949809148754414'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/alcance-de-objetos-y-reciclado-de.html' title='ALCANCE DE OBJETOS Y RECICLADO DE MEMORIA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-501533163736646843</id><published>2009-02-23T11:57:00.000-08:00</published><updated>2009-02-23T11:57:02.123-08:00</updated><title type='text'>Finalizadores</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Java no utiliza destructores (al contrario que C++) ya que tiene una forma de recoger automáticamente todos los objetos que se salen del alcance. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;No obstante proporciona un método que, cuando se especifique en el código de la clase, el reciclador de memoria (garbage collector) llamará: &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;// Cierra el canal cuando este objeto es reciclado&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;protected void finalize() {&lt;br /&gt;close();&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-501533163736646843?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/501533163736646843/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=501533163736646843' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/501533163736646843'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/501533163736646843'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/finalizadores.html' title='Finalizadores'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8822314508668749394</id><published>2009-02-21T11:57:00.000-08:00</published><updated>2009-02-21T11:57:00.892-08:00</updated><title type='text'>Métodos y Constructores</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/p&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los métodos son funciones que pueden ser llamadas dentro de la clase o por otras clases. El constructor es un tipo específico de método que siempre tiene el mismo nombre que la clase.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Cuando se declara una clase en Java, se pueden declarar uno o más constructores opcionales que realizan la inicialización cuando se instancia (se crea una ocurrencia) un objeto de dicha clase.&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Utilizando el código de ejemplo anterior, cuando se crea una nueva instancia de MiClase, se crean (instancian) todos los métodos y variables, y se llama al constructor de la clase: MiClase mc;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;mc = new MiClase();&lt;br /&gt;La palabra clave new se usa para crear una instancia de la clase. Antes de ser instanciada con new no consume memoria, simplemente es una declaración de tipo. Después de ser instanciado un nuevo objeto mc, el valor de i en el objeto mc será igual a 10. Se puede referenciar la variable (de instancia) i con el nombre del objeto: mc.i++; // incrementa la instancia de i de mc&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;Al tener mc todas las variables y métodos de MiClase, se puede usar la primera sintaxis para llamar al método Suma_a_i() utilizando el nuevo nombre de clase mc: mc.Suma_a_i( 10 );&lt;br /&gt;y ahora la variable mc.i vale 21.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8822314508668749394?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8822314508668749394/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8822314508668749394' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8822314508668749394'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8822314508668749394'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/metodos-y-constructores.html' title='Métodos y Constructores'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2787126320848888044</id><published>2009-02-19T11:56:00.000-08:00</published><updated>2009-02-19T11:56:02.707-08:00</updated><title type='text'>Ambito de una variable</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;"&gt;Los bloques de sentencias compuestas en Java se delimitan con dos llaves. Las variables de Java sólo son válidas desde el punto donde están declaradas hasta el final de la sentencia compuesta que la engloba. Se pueden anidar estas sentencias compuestas, y cada una puede contener su propio conjunto de declaraciones de variables locales. &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;Sin embargo, no se puede declarar una variable con el mismo nombre que una de ámbito exterior.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;El siguiente ejemplo intenta declarar dos variables separadas con el mismo nombre. En C y C++ son distintas, porque están declaradas dentro de ámbitos diferentes. En Java, esto es ilegal.Class Ambito {&lt;br /&gt;int i = 1; // ámbito exterior&lt;br /&gt;{ // crea un nuevo ámbito&lt;br /&gt;int i = 2; // error de compilación&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2787126320848888044?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2787126320848888044/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2787126320848888044' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2787126320848888044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2787126320848888044'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/ambito-de-una-variable.html' title='Ambito de una variable'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7142790161915179904</id><published>2009-02-17T11:56:00.000-08:00</published><updated>2009-02-17T11:56:00.179-08:00</updated><title type='text'>VARIABLES Y METODOS DE INSTANCIA</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;br /&gt;Una clase en Java puede contener variables y métodos. Las variables pueden ser tipos primitivos como int, char, etc. Los métodos son funciones.&lt;br /&gt;Por ejemplo, en el siguiente trozo de código podemos observarlo: public MiClase {&lt;br /&gt;int i;&lt;br /&gt;public MiClase() {&lt;br /&gt;i = 10;&lt;br /&gt;}&lt;br /&gt;public void Suma_a_i( int j ) {&lt;br /&gt;i = i + j;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;La clase MiClase contiene una variable (i) y dos métodos, MiClase que es el constructor de la clase y Suma_a_i( int j ).&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7142790161915179904?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7142790161915179904/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7142790161915179904' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7142790161915179904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7142790161915179904'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/variables-y-metodos-de-instancia.html' title='VARIABLES Y METODOS DE INSTANCIA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8002039439465174186</id><published>2009-02-15T11:55:00.000-08:00</published><updated>2009-02-15T11:55:00.879-08:00</updated><title type='text'>Tipos de Clases</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Hasta ahora sólo se ha utilizado la palabra clave public para calificar el nombre de las clases que hemos visto, pero hay tres modificadores más. Los tipos de clases que podemos definir son:&lt;br /&gt;abstract&lt;br /&gt;Una clase abstract tiene al menos un método abstracto. Una clase abstracta no se instancia, sino que se utiliza como clase base para la herencia.&lt;br /&gt;final&lt;br /&gt;Una clase final se declara como la clase que termina una cadena de herencia. No se puede heredar de una clase final. Por ejemplo, la clase Math es una clase final.&lt;br /&gt;public&lt;br /&gt;Las clases public son accesibles desde otras clases, bien sea directamente o por herencia. Son accesibles dentro del mismo paquete en el que se han declarado. Para acceder desde otros paquetes, primero tienen que ser importadas.&lt;br /&gt;synchronizable&lt;br /&gt;Este modificador especifica que todos los métodos definidos en la clase son sincronizados, es decir, que no se puede acceder al mismo tiempo a ellos desde distintos threads; el sistema se encarga de colocar los flags necesarios para evitarlo. Este mecanismo hace que desde threads diferentes se puedan modificar las mismas variables sin que haya problemas de que se sobreescriban.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8002039439465174186?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8002039439465174186/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8002039439465174186' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8002039439465174186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8002039439465174186'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/tipos-de-clases.html' title='Tipos de Clases'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-2493458971381554342</id><published>2009-02-13T11:55:00.000-08:00</published><updated>2009-02-13T11:55:00.745-08:00</updated><title type='text'>CLASES</title><content type='html'>&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Las clases son lo más simple de Java. Todo en Java forma parte de una clase, es una clase o describe como funciona una clase. El conocimiento de las clases es fundamental para poder entender los programas Java.&lt;br /&gt;Todas las acciones de los programas Java se colocan dentro del bloque de una clase o un objeto. Todos los métodos se definen dentro del bloque de la clase, Java no soporta funciones o variables globales. Esto puede despistar a los programadores de C++, que pueden definir métodos fuera del bloque de la clase, pero esta posibilidad es más un intento de no separarse mucho y ser compatible con C, que un buen diseño orientado a objetos. Así pues, el esqueleto de cualquier aplicación Java se basa en la definición de una clase.&lt;br /&gt;Todos los datos básicos, como los enteros, se deben declarar en las clases antes de hacer uso de ellos. En C la unidad fundamental son los ficheros con código fuente, en Java son las clases. De hecho son pocas las sentencias que se pueden colocar fuera del bloque de una clase. La palabra clave import (equivalente al #include) puede colocarse al principio de un fichero, fuera del bloque de la clase. Sin embargo, el compilador reemplazará esa sentencia con el contenido del fichero que se indique, que consistirá, como es de suponer, en más clases.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-2493458971381554342?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/2493458971381554342/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=2493458971381554342' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2493458971381554342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/2493458971381554342'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/clases.html' title='CLASES'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8886397336053267801</id><published>2009-02-11T12:32:00.000-08:00</published><updated>2009-02-11T12:33:17.668-08:00</updated><title type='text'>Métodos Nativos</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java proporciona un mecanismo para la llamada a funciones C y C++ desde nuestro código fuente Java. Para definir métodos como funciones C o C++ se utiliza la palabra clave native . &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;public class Fecha {&lt;br /&gt;int ahora;&lt;br /&gt;public Fecha() {&lt;br /&gt;ahora = time();&lt;br /&gt;}&lt;br /&gt;private native int time();&lt;br /&gt;static {&lt;br /&gt;System.loadLibrary( "time" );&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Una vez escrito el código Java, se necesitan ejecutar los pasos siguientes para poder integrar el código C o C++:&lt;br /&gt;Utilizar javah para crear un fichero de cabecera (.h)&lt;br /&gt;Utilizar javah para crear un fichero de stubs , es decir, que contiene la declaración de las funciones&lt;br /&gt;Escribir el código del método nativo en C o C++, es decir, rellenar el código de la función, completando el trabajo de javah al crear el fichero de stubs &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Compilar el fichero de stubs y el fichero .c en una librería de carga dinámica ( DLL en Windows '95 o libXX.so en Unix) &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Ejecutar la aplicación con el appletviewer &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Más adelante trataremos en profundidad los métodos nativos, porque añaden una gran potencia a Java, al permitirle integrar a través de librería dinámica cualquier algoritmo desarrollado en C o C++, lo cual, entre otras cosas, se utiliza como método de protección contra la descompilación completa del código Java.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8886397336053267801?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8886397336053267801/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8886397336053267801' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8886397336053267801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8886397336053267801'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/metodos-nativos.html' title='Métodos Nativos'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8876303568042856038</id><published>2009-02-11T11:54:00.000-08:00</published><updated>2009-02-11T11:54:01.295-08:00</updated><title type='text'>Control General del Flujo</title><content type='html'>&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;break&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;continue [etiqueta]&lt;br /&gt;return expr;&lt;br /&gt;etiqueta: sentencia;&lt;br /&gt;En caso de que nos encontremos con bucles anidados, se permite el uso de etiquetas para poder salirse de ellos, por ejemplo: uno: for( )&lt;br /&gt;{&lt;br /&gt;dos: for( )&lt;br /&gt;{&lt;br /&gt;continue; // seguiría en el bucle interno&lt;br /&gt;continue uno; // seguiría en el bucle principal&lt;br /&gt;break uno; // se saldría del bucle principal&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;En el código de una función siempre hay que ser consecuentes con la declaración que se haya hecho de ella. Por ejemplo, si se declara una función para que devuelva un entero, es imprescindible que se coloque un return final para salir de esa función, independientemente de que haya otros en medio del código que también provoquen la salida de la función. En caso de no hacerlo se generará un Warning, y el código Java no se puede compilar con Warnings. int func()&lt;br /&gt;{&lt;br /&gt;if( a == 0 )&lt;br /&gt;return 1;&lt;br /&gt;return 0; // es imprescindible porque se retorna un entero&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8876303568042856038?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8876303568042856038/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8876303568042856038' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8876303568042856038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8876303568042856038'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/control-general-del-flujo.html' title='Control General del Flujo'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7286219387754460844</id><published>2009-02-09T11:54:00.000-08:00</published><updated>2009-02-09T11:54:00.302-08:00</updated><title type='text'>CONTROL DE FLUJO</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;Muchas de las sentencias de control del flujo del programa se han tomado del C:&lt;br /&gt;Sentencias de Salto&lt;br /&gt;if/else if( Boolean ) {&lt;br /&gt;sentencias;&lt;br /&gt;}&lt;br /&gt;else {&lt;br /&gt;sentencias;&lt;br /&gt;}&lt;br /&gt;switch switch( expr1 ) {&lt;br /&gt;case expr2:&lt;br /&gt;sentencias;&lt;br /&gt;break;&lt;br /&gt;case expr3:&lt;br /&gt;sentencias;&lt;br /&gt;break;&lt;br /&gt;default:&lt;br /&gt;sentencias;&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;Sentencias de Bucle&lt;br /&gt;Bucles for for( expr1 inicio; expr2 test; expr3 incremento ) {&lt;br /&gt;sentencias;&lt;br /&gt;}&lt;br /&gt;El siguiente trocito de código Java que dibuja varias líneas en pantalla alternando sus colores entre rojo, azul y verde. Este fragmento sería parte de una función Java (método): int contador;&lt;br /&gt;for( contador=1; contador &lt;= 12; contador++ ) {&lt;br /&gt;switch( contador % 3 ) {&lt;br /&gt;case 0:&lt;br /&gt;setColor( Color.red );&lt;br /&gt;break;&lt;br /&gt;case 1:&lt;br /&gt;setColor( Color.blue );&lt;br /&gt;break;&lt;br /&gt;case 2:&lt;br /&gt;setColor( Color.green );&lt;br /&gt;break;&lt;br /&gt;}&lt;br /&gt;g.drawLine( 10,contador*10,80,contador*10 );&lt;br /&gt;}&lt;br /&gt;También se soporta el operador coma (,) en los bucles for for( a=0,b=0; a &lt; 7; a++,b+=2 )&lt;br /&gt;Bucles while while( Boolean ) {&lt;br /&gt;sentencias;&lt;br /&gt;}&lt;br /&gt;Bucles do/while do {&lt;br /&gt;sentencias;&lt;br /&gt;}while( Boolean );&lt;br /&gt;Excepciones&lt;br /&gt;try-catch-throw try {&lt;br /&gt;sentencias;&lt;br /&gt;} catch( Exception ) {&lt;br /&gt;sentencias;&lt;br /&gt;}&lt;br /&gt;Java implementa excepciones para facilitar la construcción de código robusto. Cuando ocurre un error en un programa, el código que encuentra el error lanza una excepción, que se puede capturar y recuperarse de ella. Java proporciona muchas excepciones predefinidas.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7286219387754460844?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7286219387754460844/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7286219387754460844' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7286219387754460844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7286219387754460844'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/control-de-flujo.html' title='CONTROL DE FLUJO'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-5270125119127301197</id><published>2009-02-07T14:58:00.000-08:00</published><updated>2009-02-07T14:58:01.229-08:00</updated><title type='text'>Identificadores</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los identificadores nombran variables, funciones, clases y objetos; cualquier cosa que el programador necesite identificar o usar. En Java, un identificador comienza con una letra, un subrayado (_) o un símbolo de dólar ($). Los siguientes caracteres pueden ser letras o dígitos. Se distinguen las mayúsculas de las minúsculas y no hay longitud máxima. Serían identificadores válidos: identificador nombre_usuario Nombre_Usuario _variable_del_sistema $transaccion y su uso sería, por ejemplo: int contador_principal; char _lista_de_ficheros; float $cantidad_en_Ptas;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-5270125119127301197?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/5270125119127301197/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=5270125119127301197' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5270125119127301197'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5270125119127301197'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/identificadores.html' title='Identificadores'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-5793666252704502401</id><published>2009-02-05T14:59:00.000-08:00</published><updated>2009-02-05T14:59:00.352-08:00</updated><title type='text'>Palabras clave</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Las siguientes son las palabras clave que están definidas en Java y que no se pueden utilizar como indentificadores: abstract continue for new switch boolean default goto null synchronized break do if package this byte double implements private threadsafe byvalue else import protected throw case extends instanceof public transient catch false int return true char final interface short try class finally long static void const float native super while Palabras ReservadasAdemás, el lenguaje se reserva unas cuantas palabras más, pero que hasta ahora no tienen un cometido específico. Son: cast future generic inner operator outer rest var LiteralesUn valor constante en Java se crea utilizando una representación literal de él. Java utiliza cinco tipos de elementos: enteros, reales en coma flotante, booleanos, caracteres y cadenas, que se pueden poner en cualquier lugar del código fuente de Java. Cada uno de estos literales tiene un tipo correspondiente asociado con él. Enteros: byte 8 bits complemento a dos short 16 bits complemento a dos int 32 bits complemento a dos long 64 bits complemento a dos Por ejemplo: 21 077 0xDC00 Reales en coma flotante: float 32 bits IEEE 754 double 64 bits IEEE 754 Por ejemplo: 3.14 2e12 3.1E12 Booleanos: true false Caracteres: Por ejemplo: a t u???? [????] es un número unicode Cadenas: Por ejemplo: "Esto es una cadena literal" ArraysSe pueden declarar en Java arrays de cualquier tipo: char s[]; int iArray[]; Incluso se pueden construir arrays de arrays: int tabla[][] = new int[4][5]; Los límites de los arrays se comprueban en tiempo de ejecución para evitar desbordamientos y la corrupción de memoria. En Java un array es realmente un objeto, porque tiene redefinido el operador []. Tiene una función miembro: length. Se puede utilizar este método para conocer la longitud de cualquier array. int a[][] = new int[10][3]; a.length; /* 10 */ a[0].length; /* 3 */ Para crear un array en Java hay dos métodos básicos. Crear un array vacío: int lista[] = new int[50]; o se puede crear ya el array con sus valores iniciales: String nombres[] = { "Juan","Pepe","Pedro","Maria" }; Esto que es equivalente a: String nombres[]; nombres = new String[4]; nombres[0] = new String( "Juan" ); nombres[1] = new String( "Pepe" ); nombres[2] = new String( "Pedro" ); nombres[3] = new String( "Maria" ); No se pueden crear arrays estáticos en tiempo de compilación: int lista[50]; // generará un error en tiempo de compilación Tampoco se puede rellenar un array sin declarar el tamaño con el operador new: int lista[]; for( int i=0; i &lt;&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-5793666252704502401?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/5793666252704502401/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=5793666252704502401' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5793666252704502401'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5793666252704502401'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/palabras-clave.html' title='Palabras clave'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1168070714874596921</id><published>2009-02-03T14:58:00.000-08:00</published><updated>2009-02-03T14:58:00.079-08:00</updated><title type='text'>Separadores</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Sólo hay un par de secuencias con otros caracteres que pueden aparecer en el código Java; son los separadores simples, que van a definir la forma y función del código. Los separadores admitidos en Java son:&lt;br /&gt;() - paréntesis. Para contener listas de parámetros en la definición y llamada a métodos. También se utiliza para definir precedencia en expresiones, contener expresiones para control de flujo y rodear las conversiones de tipo.&lt;br /&gt;{} - llaves. Para contener los valores de matrices inicializadas automáticamente. También se utiliza para definir un bloque de código, para clases, métodos y ámbitos locales.&lt;br /&gt;[] - corchetes. Para declarar tipos matriz. También se utiliza cuando se referencian valores de matriz.&lt;br /&gt;; - punto y coma. Separa sentencias.&lt;br /&gt;, - coma. Separa identificadores consecutivos en una declaración de variables. También se utiliza para encadenar sentencias dentro de una sentencia for.&lt;br /&gt;. - punto. Para separar nombres de paquete de subpaquetes y clases. También se utiliza para separar una variable o método de una variable de referencia.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1168070714874596921?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1168070714874596921/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1168070714874596921' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1168070714874596921'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1168070714874596921'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/separadores.html' title='Separadores'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-4205579737080359159</id><published>2009-02-01T14:57:00.000-08:00</published><updated>2009-02-01T14:57:00.508-08:00</updated><title type='text'>Operadores</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los operadores de Java son muy parecidos en estilo y funcionamiento a los de C. En la siguiente tabla aparecen los operadores que se utilizan en Java, por orden de precedencia: . [] () ++ -- ! ~ instanceof * / % + - &lt;&lt; &gt;&gt; &gt;&gt;&gt; &lt; &gt; &lt;= &gt;= == != &amp;amp; ^ &amp;amp;&amp;amp; ? : = op= (*= /= %= += -= etc.) ,&lt;br /&gt;Los operadores numéricos se comportan como esperamos: int + int = int&lt;br /&gt;Los operadores relacionales devuelven un valor booleano.&lt;br /&gt;Para las cadenas, se pueden utilizar los operadores relacionales para comparaciones además de + y += para la concatenación: String nombre = "nombre" + "Apellido";&lt;br /&gt;El operador = siempre hace copias de objetos, marcando los antiguos para borrarlos, y ya se encargará el garbage collector de devolver al sistema la memoria ocupada por el objeto eliminado.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-4205579737080359159?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/4205579737080359159/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=4205579737080359159' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4205579737080359159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/4205579737080359159'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/02/operadores.html' title='Operadores'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6287925195560444290</id><published>2009-01-31T14:56:00.000-08:00</published><updated>2009-01-31T14:56:01.097-08:00</updated><title type='text'>Programación</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;Cuando se programa en Java, se coloca todo el código en métodos, de la misma forma que se escriben funciones en lenguajes como C.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;span style="font-family:arial;"&gt;&lt;strong&gt;Comentarios&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;En Java hay tres tipos de comentarios: // comentarios para una sola línea/* comentarios de una o más líneas *//** comentario de documentación, de una o más líneas */&lt;br /&gt;Los dos primeros tipos de comentarios son los que todo programador conoce y se utilizan del mismo modo. Los comentarios de documentación, colocados inmediatamente antes de una declaración (de variable o función), indican que ese comentario ha de ser colocado en la documentación que se genera automáticamente cuando se utiliza la herramienta de Java, javadoc. Dichos comentarios sirven como descripción del elemento declarado permitiendo generar una documentación de nuestras clases escrita al mismo tiempo que se genera el código.&lt;br /&gt;En este tipo de comentario para documentación, se permite la introducción de algunos tokens o palabras clave, que harán que la información que les sigue aparezca de forma diferente al resto en la documentación.&lt;br /&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6287925195560444290?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6287925195560444290/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6287925195560444290' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6287925195560444290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6287925195560444290'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/01/programacion.html' title='Programación'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3702028262397051457</id><published>2009-01-18T12:38:00.000-08:00</published><updated>2009-01-22T10:31:30.558-08:00</updated><title type='text'>Café Saludable</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Acabo de descrubrir algo importante para la salud y lo comparto contigo se trata del llamado "cafecito milagroso". A continuación una pequeña explicación y la página de internet muy interesante:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;br /&gt;En una breve descripción el Lingzhi es un hongo usado desde hace mas de 2000 años por la medicina oriental y considerado como la hierba curativa por excelencia, su efecto no consiste en atacar alguna enfermedad especifica, nuestro cuerpo es una maquina extraordinaria y el es capaz de deshacerse por si mismo de cualquier enfermedad, pero a veces necesita un poco de ayuda, esa es la ayuda que proporciona el Ganoderma Lucidum, al consumirlo usted notara como su organismo comenzara a deshacerse por si mismo de todas las sustancias dañinas que antes no podía desechar y terminaban en forma de grasa en las arterias y obesidad, toxinas por todo nuestro cuerpo.&lt;br /&gt;&lt;br /&gt;La pagina es:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.cafesaludable.tk/" target="_blank"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;www.cafesaludable.tk&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.blogger.com/www.cafesaludable.tk"&gt;&lt;img id="BLOGGER_PHOTO_ID_5292736325491238034" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 338px; CURSOR: hand; HEIGHT: 200px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_cXMixKGyWMw/SXOTpVq2JJI/AAAAAAAAAN4/K3m_J6v3vlc/s320/Ganoderma.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3702028262397051457?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3702028262397051457/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3702028262397051457' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3702028262397051457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3702028262397051457'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/01/acabo-de-descrubrir-algo-importante.html' title='Café Saludable'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_cXMixKGyWMw/SXOTpVq2JJI/AAAAAAAAAN4/K3m_J6v3vlc/s72-c/Ganoderma.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8416842410660064410</id><published>2009-01-15T19:26:00.001-08:00</published><updated>2009-01-28T15:00:14.846-08:00</updated><title type='text'>Conceptos Basicos</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Ahora que ya hemos visto a grandes rasgos lo que Java puede ofrecernos, y antes de entrar a saco en la generación de nuestro primer código Java, vamos a echar un vistazo al lenguaje Java en sí. Lo básico resultará muy familiar a los que tengan conocimientos de C/C++. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Los programadores con experiencia en otros lenguajes procedurales reconocerán la mayor parte de las construcciones. Esperemos que este capítulo no resulte demasiado intenso, no obstante, sí debe estar presente, porque más de una vez recurriremos a él como referencia. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En posteriores capítulos profundizaremos sobre aspectos de la programación en Java po&lt;/span&gt;&lt;span style="font-family:arial;"&gt;r los que aquí pasaremos de puntillas e iremos presentando ejemplos de código de cada uno de esos aspectos de la programación en Java.&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8416842410660064410?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8416842410660064410/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8416842410660064410' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8416842410660064410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8416842410660064410'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/01/conceptos-basicos.html' title='Conceptos Basicos'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8706312976917323539</id><published>2009-01-15T19:23:00.000-08:00</published><updated>2009-01-15T19:25:28.347-08:00</updated><title type='text'>Instalación del JSDK</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;El SDK de Java (JSDK) se proporciona gratuitamente desde la web de SUN. Para los ejemplos que aparecen en este manual la versión más idónea es J2SE (Java 2 Standardad Edition). Es la distribución base que cualquier kit de Java necesitará. Se puede obtener desde aquí &lt;/span&gt;&lt;a href="http://java.sun.com/j2se/1.4.2/download.html" target="_blank"&gt;&lt;span style="font-family:arial;"&gt;http://java.sun.com/j2se/1.4.2/download.html &lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;Además, en esa misma dirección podremos descargar el NetBeans, un potente editor de Java que nos facilitará la tarea de programar, compilar y resolver errores entre otras muchas cosas. Java es actualmente uno de los lenguajes más populares y existen multitud de editores para él. Los más conocidos son el JDeveloper, JBuilder, Visual J++ y por supuesto el propio NetBeans, de SUN.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;"&gt;&lt;p align="justify"&gt;&lt;br /&gt;Sin embargo, aquí trataremos solo el uso del SDK, sin editor, ya que es lo más recomendable. Si sabemos utilizar el SDK sin herramientas adicionales, tendremos mayor facilidad para usar cualquier editor y siempre que estemos faltos de algún editor, podremos salir del paso sin él.&lt;/p&gt;&lt;p align="justify"&gt;Las herramientas que trae el SDK y que más utilizaremos son:&lt;/p&gt;&lt;p align="justify"&gt;java (ejecutable): Ejecuta cualquier programa compilado de Java&lt;/p&gt;&lt;p align="justify"&gt;javac (compilador): Compilará el código fuente escrito en Java. &lt;/p&gt;&lt;p align="justify"&gt;Java no se ofrece de forma gratuita. No todas las máquinas disponen de la versión del Java Development Kit para ejecutarse en ellas. Por ello, solamente comentaré la instalación de JDK en Solaris, Windows y Linux.&lt;br /&gt;Actualmente ya hay entornos de desarrollo integrados completos para Java, diferentes del JDK de Sun. Oracle dispone de un entorno de desarrollo de Java, la propia SUN ofrece el entorno NetBeans y Borland posee el JBuilder. Además Microsoft ofrece soporte Java en su plataforma .NET.&lt;/p&gt;&lt;p align="justify"&gt;No obstante, trataremos solamente el JDK. El entorno básico del JDK de Java que proporciona Sun está formado por herramientas en modo texto, que son: java, intérprete que ejecuta programas en byte-code. javac, compilador de Java que convierte el código fuente en byte-code. javah, crea ficheros de cabecera para implementar métodos para cualquier clase. javap, es un descompilador de byte-code a código fuente Java. javadoc, es un generador automático de documentos HTML a partir del código fuente Java. javaprof, es un profiler para aplicaciones de un solo thread. &lt;/p&gt;&lt;p align="justify"&gt;El entorno habitual pues, consiste en un navegador que pueda ejecutar applets, un compilador que convierta el código fuente Java a byte-code y el intérprete Java para ejecutar los programas. Estos son los componenetes básicos para desarrollar algo en Java. No obstante se necesita un editor para escribir el código fuente, y no son estrictamente necesarias otras herramientas como el debugger, un entorno visual, la documentación o un visualizador de jerarquía de clases. Cualquier navegador actual servirá para mostrar los Applets Java que realicemos.&lt;br /&gt;La instalación en un principio es como la de cualquier otro programa, pero una vez lo hayamos instalado tenemos que incluir en el path del sistema operativo la ruta hacia el directorio bin. Por ejemplo si hemos instalado Java en:&lt;/p&gt;&lt;p align="justify"&gt;c:java&lt;/p&gt;&lt;p align="justify"&gt;En el PATH de nuestro sistema operativo debe estar presente la ruta:&lt;/p&gt;&lt;p align="justify"&gt;c:javabin&lt;/p&gt;&lt;p align="justify"&gt;En Windows XP, para cambiar las variables del sistema, se debe ir a Inicio &gt; Configuración &gt; Panel de Control &gt; Sistema &gt; Opciones Avanzadas &gt; Variables de entorno.&lt;/p&gt;&lt;p align="justify"&gt;Una vez hecho esto, abrimos la consola, Inicio &gt; Ejecutar &gt; cmd y ya deberían estar disponibles los comandos "java" y "javac".&lt;/p&gt;&lt;p align="justify"&gt;En Linux la instalación es muy similar.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8706312976917323539?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8706312976917323539/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8706312976917323539' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8706312976917323539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8706312976917323539'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2009/01/instalacin-del-jsdk.html' title='Instalación del JSDK'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3331025454927220186</id><published>2008-12-31T15:40:00.000-08:00</published><updated>2008-12-31T15:49:29.111-08:00</updated><title type='text'>Características de Java</title><content type='html'>&lt;div&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Las características principales que nos ofrece Java respecto a cualquier otro lenguaje de programación, son:&lt;br /&gt;Es SIMPLE :&lt;br /&gt;Java ofrece toda la funcionalidad de un lenguaje potente, pero sin las características menos usadas y más confusas de éstos. C++ es un lenguaje que adolece de falta de seguridad, pero C y C++ son lenguajes más difundidos, por ello Java se diseñó para ser parecido a C++ y así facilitar un rápido y fácil aprendizaje.&lt;br /&gt;Java elimina muchas de las características de otros lenguajes como C++, para mantener reducidas las especificaciones del lenguaje y añadir características muy útiles como el garbage collector (reciclador de memoria dinámica). No es necesario preocuparse de liberar memoria, el reciclador se encarga de ello y como es un thread de baja prioridad, cuando entra en acción, permite liberar bloques de memoria muy grandes, lo que reduce la fragmentación de la memoria.&lt;br /&gt;Java reduce en un 50% los errores más comunes de programación con lenguajes como C y C++ al eliminar muchas de las características de éstos, entre las que destacan:&lt;br /&gt;aritmética de punteros&lt;br /&gt;no existen referencias&lt;br /&gt;registros (struct)&lt;br /&gt;definición de tipos (typedef)&lt;br /&gt;macros (#define)&lt;br /&gt;necesidad de liberar memoria (free)&lt;br /&gt;Aunque, en realidad, lo que hace es eliminar las palabras reservadas (struct, typedef), ya que las clases son algo parecido.&lt;br /&gt;Además, el intérprete completo de Java que hay en este momento es muy pequeño, solamente ocupa 215 Kb de RAM. &lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:arial;"&gt;&lt;/p&gt;&lt;/span&gt;&lt;img id="BLOGGER_PHOTO_ID_5286104938868021506" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 243px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_cXMixKGyWMw/SVwEb1aqmQI/AAAAAAAAALY/yWtD53UTxMg/s320/platf.gif" border="0" /&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;Es ORIENTADO A OBJETOS :&lt;br /&gt;Java implementa la tecnología básica de C++ con algunas mejoras y elimina algunas cosas para mantener el objetivo de la simplicidad del lenguaje. Java trabaja con sus datos como objetos y con interfaces a esos objetos. Soporta las tres características propias del paradigma de la orientación a objetos: encapsulación, herencia y polimorfismo. Las plantillas de objetos son llamadas, como en C++, clases y sus copias, instancias . Estas instancias, como en C++, necesitan ser construidas y destruidas en espacios de memoria.&lt;br /&gt;Java incorpora funcionalidades inexistentes en C++ como por ejemplo, la resolución dinámica de métodos. Esta característica deriva del lenguaje Objective C, propietario del sistema operativo Next. En C++ se suele trabajar con librerías dinámicas (DLLs) que obligan a recompilar la aplicación cuando se retocan las funciones que se encuentran en su interior. Este inconveniente es resuelto por Java mediante una interfaz específica llamada RTTI ( RunTime Type Identification ) que define la interacción entre objetos excluyendo variables de instancias o implementación de métodos. Las clases en Java tienen una representación en el runtime que permite a los programadores interrogar por el tipo de clase y enlazar dinámicamente la clase con el resultado de la búsqueda.&lt;br /&gt;Es DISTRIBUIDO :&lt;br /&gt;Java se ha construido con extensas capacidades de interconexión TCP/IP. Existen librerías de rutinas para acceder e interactuar con protocolos como http y ftp . Esto permite a los programadores acceder a la información a través de la red con tanta facilidad como a los ficheros locales.&lt;br /&gt;La verdad es que Java en sí no es distribuido, sino que proporciona las librerías y herramientas para que los programas puedan ser distribuidos, es decir, que se corran en varias máquinas, interactuando.&lt;br /&gt;Es ROBUSTO :&lt;br /&gt;Java realiza verificaciones en busca de problemas tanto en tiempo de compilación como en tiempo de ejecución. La comprobación de tipos en Java ayuda a detectar errores, lo antes posible, en el ciclo de desarrollo. Java obliga a la declaración explícita de métodos, reduciendo así las posibilidades de error. Maneja la memoria para eliminar las preocupaciones por parte del programador de la liberación o corrupción de memoria. También implementa los arrays auténticos , en vez de listas enlazadas de punteros, con comprobación de límites, para evitar la posibilidad de sobreescribir o corromper memoria resultado de punteros que señalan a zonas equivocadas. Estas características reducen drásticamente el tiempo de desarrollo de aplicaciones en Java.&lt;br /&gt;Además, para asegurar el funcionamiento de la aplicación, realiza una verificación de los byte-codes , que son el resultado de la compilación de un programa Java. Es un código de máquina virtual que es interpretado por el intérprete Java. No es el código máquina directamente entendible por el hardware, pero ya ha pasado todas las fases del compilador: análisis de instrucciones, orden de operadores, etc., y ya tiene generada la pila de ejecución de órdenes.&lt;br /&gt;Java proporciona, pues:&lt;br /&gt;Comprobación de punteros&lt;br /&gt;Comprobación de límites de arrays&lt;br /&gt;Excepciones&lt;br /&gt;Verificación de byte-codes&lt;br /&gt;Es de ARQUITECTURA NEUTRAL :&lt;br /&gt;Para establecer Java como parte integral de la red, el compilador Java compila su código a un fichero objeto de formato independiente de la arquitectura de la máquina en que se ejecutará. Cualquier máquina que tenga el sistema de ejecución ( run-time ) puede ejecutar ese código objeto, sin importar en modo alguno la máquina en que ha sido generado. Actualmente existen sistemas run-time para Solaris 2.x, SunOs 4.1.x, Windows 95, Windows NT, Linux, Irix, Aix, Mac, Apple y probablemente haya grupos de desarrollo trabajando en el porting a otras plataformas. &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;El código fuente Java se "compila" a un código de bytes de alto nivel independiente de la máquina. Este código (byte-codes) está diseñado para ejecutarse en una máquina hipotética que es implementada por un sistema run-time, que sí es dependiente de la máquina.&lt;br /&gt;En una representación en que tuviésemos que indicar todos los elementos que forman parte de la arquitectura de Java sobre una plataforma genérica.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;En ella podemos ver que lo verdaderamente dependiente del sistema es la Máquina Virtual Java (JVM) y las librerías fundamentales, que también nos permitirían acceder directamente al hardware de la máquina. Además, habrá APIs de Java que también entren en contacto directo con el hardware y serán dependientes de la máquina, como ejemplo de este tipo de APIs podemos citar:&lt;br /&gt;Java 2D: gráficos 2D y manipulación de imágenes&lt;br /&gt;Java Media Framework : Elementos críticos en el tiempo: audio, video...&lt;br /&gt;Java Animation: Animación de objetos en 2D&lt;br /&gt;Java Telephony: Integración con telefonía&lt;br /&gt;Java Share: Interacción entre aplicaciones multiusuario&lt;br /&gt;Java 3D: Gráficos 3D y su manipulación&lt;br /&gt;Es SEGURO :&lt;br /&gt;La seguridad en Java tiene dos facetas. En el lenguaje, características como los punteros o el casting implícito que hacen los compiladores de C y C++ se eliminan para prevenir el acceso ilegal a la memoria. Cuando se usa Java para crear un navegador, se combinan las características del lenguaje con protecciones de sentido común aplicadas al propio navegador.&lt;br /&gt;El lenguaje C, por ejemplo, tiene lagunas de seguridad importantes, como son los errores de alineación . Los programadores de C utilizan punteros en conjunción con operaciones aritméticas. Esto le permite al programador que un puntero referencie a un lugar conocido de la memoria y pueda sumar (o restar) algún valor, para referirse a otro lugar de la memoria. Si otros programadores conocen nuestras estructuras de datos pueden extraer información confidencial de nuestro sistema. Con un lenguaje como C, se pueden tomar números enteros aleatorios y convertirlos en punteros para luego acceder a la memoria: printf( "Escribe un valor entero: " );&lt;br /&gt;scanf( "%u",&amp;amp;puntero );&lt;br /&gt;printf( "Cadena de memoria: %sn",puntero );&lt;br /&gt;Otra laguna de seguridad u otro tipo de ataque, es el Caballo de Troya . Se presenta un programa como una utilidad, resultando tener una funcionalidad destructiva. Por ejemplo, en UNIX se visualiza el contenido de un directorio con el comando ls . Si un programador deja un comando destructivo bajo esta referencia, se puede correr el riesgo de ejecutar código malicioso, aunque el comando siga haciendo la funcionalidad que se le supone, después de lanzar su carga destructiva. Por ejemplo, después de que el caballo de Troya haya enviado por correo el /etc/shadow a su creador, ejecuta la funcionalidad de ls persentando el contenido del directorio. Se notará un retardo, pero nada inusual.&lt;br /&gt;El código Java pasa muchos tests antes de ejecutarse en una máquina. El código se pasa a través de un verificador de byte-codes que comprueba el formato de los fragmentos de código y aplica un probador de teoremas para detectar fragmentos de código ilegal -código que falsea punteros, viola derechos de acceso sobre objetos o intenta cambiar el tipo o clase de un objeto-.&lt;br /&gt;Si los byte-codes pasan la verificación sin generar ningún mensaje de error, entonces sabemos que:&lt;br /&gt;El código no produce desbordamiento de operandos en la pila&lt;br /&gt;El tipo de los parámetros de todos los códigos de operación son conocidos y correctos&lt;br /&gt;No ha ocurrido ninguna conversión ilegal de datos, tal como convertir enteros en punteros&lt;br /&gt;El acceso a los campos de un objeto se sabe que es legal: public, private, protected&lt;br /&gt;No hay ningún intento de violar las reglas de acceso y seguridad establecidas&lt;br /&gt;El Cargador de Clases también ayuda a Java a mantener su seguridad, separando el espacio de nombres del sistema de ficheros local, del de los recursos procedentes de la red. Esto limita cualquier aplicación del tipo Caballo de Troya , ya que las clases se buscan primero entre las locales y luego entre las procedentes del exterior.&lt;br /&gt;Las clases importadas de la red se almacenan en un espacio de nombres privado, asociado con el origen. Cuando una clase del espacio de nombres privado accede a otra clase, primero se busca en las clases predefinidas (del sistema local) y luego en el espacio de nombres de la clase que hace la referencia. Esto imposibilita que una clase suplante a una predefinida.&lt;br /&gt;En resumen, las aplicaciones de Java resultan extremadamente seguras, ya que no acceden a zonas delicadas de memoria o de sistema, con lo cual evitan la interacción de ciertos virus. Java no posee una semántica específica para modificar la pila de programa, la memoria libre o utilizar objetos y métodos de un programa sin los privilegios del kernel del sistema operativo. Además, para evitar modificaciones por parte de los crackers de la red, implementa un método ultraseguro de autentificación por clave pública. El Cargador de Clases puede verificar una firma digital antes de realizar una instancia de un objeto. Por tanto, ningún objeto se crea y almacena en memoria, sin que se validen los privilegios de acceso. Es decir, la seguridad se integra en el momento de compilación, con el nivel de detalle y de privilegio que sea necesario.&lt;br /&gt;Dada, pues la concepción del lenguaje y si todos los elementos se mantienen dentro del estándar marcado por Sun, no hay peligro. Java imposibilita, también, abrir ningún fichero de la máquina local (siempre que se realizan operaciones con archivos, éstas trabajan sobre el disco duro de la máquina de donde partió el applet), no permite ejecutar ninguna aplicación nativa de una plataforma e impide que se utilicen otros ordenadores como puente, es decir, nadie puede utilizar nuestra máquina para hacer peticiones o realizar operaciones con otra. Además, los intérpretes que incorporan los navegadores de la Web son aún más restrictivos. Bajo estas condiciones (y dentro de la filosofía de que el único ordenador seguro es el que está apagado, desenchufado, dentro de una cámara acorazada en un bunker y rodeado por mil soldados de los cuerpos especiales del ejército), se puede considerar que Java es un lenguaje seguro y que los applets están libres de virus.&lt;br /&gt;Respecto a la seguridad del código fuente, no ya del lenguaje, JDK proporciona un desemsamblador de byte-code, que permite que cualquier programa pueda ser convertido a código fuente, lo que para el programador significa una vulnerabilidad total a su código. Utilizando javap no se obtiene el código fuente original, pero sí desmonta el programa mostrando el algoritmo que se utiliza, que es lo realmente interesante. La protección de los programadores ante esto es utilizar llamadas a programas nativos, externos (incluso en C o C++) de forma que no sea descompilable todo el código; aunque así se pierda portabilidad. Esta es otra de las cuestiones que Java tiene pendientes.&lt;br /&gt;Es PORTABLE :&lt;br /&gt;Más allá de la portabilidad básica por ser de arquitectura independiente, Java implementa otros estándares de portabilidad para facilitar el desarrollo. Los enteros son siempre enteros y además, enteros de 32 bits en complemento a 2. Además, Java construye sus interfaces de usuario a través de un sistema abstracto de ventanas de forma que las ventanas puedan ser implantadas en entornos Unix, Pc o Mac.&lt;br /&gt;Es INTERPRETADO :&lt;br /&gt;El intérprete Java (sistema run-time) puede ejecutar directamente el código objeto. Enlazar (linkar) un programa, normalmente, consume menos recursos que compilarlo, por lo que los desarrolladores con Java pasarán más tiempo desarrollando y menos esperando por el ordenador. No obstante, el compilador actual del JDK es bastante lento. Por ahora, que todavía no hay compiladores específicos de Java para las diversas plataformas, Java es más lento que otros lenguajes de programación, como C++, ya que debe ser interpretado y no ejecutado como sucede en cualquier programa tradicional.&lt;br /&gt;Se dice que Java es de 10 a 30 veces más lento que C, y que tampoco existen en Java proyectos de gran envergadura como en otros lenguajes. La verdad es que ya hay comparaciones ventajosas entre Java y el resto de los lenguajes de programación, y una ingente cantidad de folletos electrónicos que supuran fanatismo en favor y en contra de los distintos lenguajes contendientes con Java. Lo que se suele dejar de lado en todo esto, es que primero habría que decidir hasta que punto Java, un lenguaje en pleno desarrollo y todavía sin definición definitiva, está maduro como lenguaje de programación para ser comparado con otros; como por ejemplo con Smalltalk, que lleva más de 20 años en cancha.&lt;br /&gt;La verdad es que Java para conseguir ser un lenguaje independiente del sistema operativo y del procesador que incorpore la máquina utilizada, es tanto interpretado como compilado. Y esto no es ningún contrasentido, me explico, el código fuente escrito con cualquier editor se compila generando el byte-code. Este código intermedio es de muy bajo nivel, pero sin alcanzar las instrucciones máquina propias de cada plataforma y no tiene nada que ver con el p-code de Visual Basic. El byte-code corresponde al 80% de las instrucciones de la aplicación. Ese mismo código es el que se puede ejecutar sobre cualquier plataforma. Para ello hace falta el run-time, que sí es completamente dependiente de la máquina y del sistema operativo, que interpreta dinámicamente el byte-code y añade el 20% de instrucciones que faltaban para su ejecución. Con este sistema es fácil crear aplicaciones multiplataforma, pero para ejecutarlas es necesario que exista el run-time correspondiente al sistema operativo utilizado.&lt;br /&gt;Es MULTITHREADED :&lt;br /&gt;Al ser multithreaded (multihilvanado, en mala traducción), Java permite muchas actividades simultáneas en un programa. Los threads (a veces llamados, procesos ligeros), son básicamente pequeños procesos o piezas independientes de un gran proceso. Al estar los threads contruidos en el lenguaje, son más fáciles de usar y más robustos que sus homólogos en C o C++.&lt;br /&gt;El beneficio de ser miltithreaded consiste en un mejor rendimiento interactivo y mejor comportamiento en tiempo real. Aunque el comportamiento en tiempo real está limitado a las capacidades del sistema operativo subyacente (Unix, Windows, etc.), aún supera a los entornos de flujo único de programa (single-threaded) tanto en facilidad de desarrollo como en rendimiento.&lt;br /&gt;Cualquiera que haya utilizado la tecnología de navegación concurrente, sabe lo frustrante que puede ser esperar por una gran imagen que se está trayendo. En Java, las imágenes se pueden ir trayendo en un thread independiente, permitiendo que el usuario pueda acceder a la información en la página sin tener que esperar por el navegador.&lt;br /&gt;Es DINAMICO :&lt;br /&gt;Java se beneficia todo lo posible de la tecnología orientada a objetos. Java no intenta conectar todos los módulos que comprenden una aplicación hasta el tiempo de ejecución. Las librería nuevas o actualizadas no paralizarán las aplicaciones actuales (siempre que mantengan el API anterior). &lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5286103785271223026" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 256px; CURSOR: hand; HEIGHT: 320px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_cXMixKGyWMw/SVwDYr7wYvI/AAAAAAAAALI/aHXFJYVbnyE/s320/dinamico.gif" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;Java también simplifica el uso de protocolos nuevos o actualizados. Si su sistema ejecuta una aplicación Java sobre la red y encuentra una pieza de la aplicación que no sabe manejar, tal como se ha explicado en párrafos anteriores, Java es capaz de traer automáticamente cualquiera de esas piezas que el sistema necesita para funcionar.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5286104472429314498" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 123px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_cXMixKGyWMw/SVwEArzAwcI/AAAAAAAAALQ/XhNPkrbanAk/s320/tiempo.gif" border="0" /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3331025454927220186?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3331025454927220186/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3331025454927220186' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3331025454927220186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3331025454927220186'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/12/caractersticas-de-java.html' title='Características de Java'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cXMixKGyWMw/SVwEb1aqmQI/AAAAAAAAALY/yWtD53UTxMg/s72-c/platf.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-5884693972545978338</id><published>2008-12-11T10:57:00.000-08:00</published><updated>2008-12-11T11:01:49.133-08:00</updated><title type='text'>Muestras Gratis</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;Hola,&lt;br /&gt;Acabo de encontrar un nuevo sitio de Internet donde puedes encontrar muchos freebies, los freebies son muestras gratis que te envian las empresas para probar sus productos.&lt;br /&gt;&lt;br /&gt;Hay algunos que realmente valen la pena.&lt;br /&gt;Aqui dejo la dirección:&lt;/span&gt;&lt;/div&gt;&lt;span style="font-family:arial;"&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;br /&gt;&lt;span style="font-size:130%;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;div align="center"&gt;&lt;a href="http://www.muestrasgratismexico.blogspot.com/" target="_blank"&gt;&lt;span style="font-family:verdana;font-size:130%;color:#6600cc;"&gt;&lt;strong&gt;http://www.muestrasgratismexico.blogspot.com/&lt;/strong&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5278609663688436946" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 395px; CURSOR: hand; HEIGHT: 266px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_cXMixKGyWMw/SUFjhZgX7NI/AAAAAAAAAGM/t-g-D192viU/s320/sitio.JPG" border="0" /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-5884693972545978338?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/5884693972545978338/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=5884693972545978338' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5884693972545978338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/5884693972545978338'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/12/muestras-gratis.html' title='Muestras Gratis'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_cXMixKGyWMw/SUFjhZgX7NI/AAAAAAAAAGM/t-g-D192viU/s72-c/sitio.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-8060998193062956107</id><published>2008-12-09T19:25:00.000-08:00</published><updated>2008-12-09T19:26:03.759-08:00</updated><title type='text'>Origenes de JAVA</title><content type='html'>&lt;div align="justify"&gt;&lt;span style="font-family:arial;"&gt;El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web . Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues, a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo ( plug-in ) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.&lt;br /&gt;Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI ( Common Gateway Interface ), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.&lt;br /&gt;El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.&lt;br /&gt;Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida . Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.&lt;br /&gt;Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo.&lt;/span&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-8060998193062956107?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/8060998193062956107/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=8060998193062956107' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8060998193062956107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/8060998193062956107'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/12/origenes-de-java.html' title='Origenes de JAVA'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-3654468065545445301</id><published>2008-05-23T17:55:00.001-07:00</published><updated>2008-05-23T17:55:53.299-07:00</updated><title type='text'>Agenda</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// Fig. 17.7: Agenda.java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// A class that represents one record of information.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;package com.deitel.jhtp5.ch17;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import java.io.Serializable;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;public class AccountRecord implements Serializable {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private String nombre;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private String Direccion_S;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private String Ocupacion_S;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private String Correo_S;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private int Telefono_S;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public AccountRecord() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;this( &lt;st1:metricconverter productid="0, &amp;quot;" st="on"&gt;0, "&lt;/st1:metricconverter&gt;", "", 0.0 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// initialize a record&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public AccountRecord( String var_nombre, String var_Direccion, String var_ocupacion, String var_correo, int var_telefono )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setAccount( var_nombre );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setDireccion_S( var_Direccion );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setOcupacion_S( var_ocupacion );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setCorreo_S( var_correo );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setTelefono_S( var_telefono );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;//setBalance( bal );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set Nombre&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setAccount( String var_nombre )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;{//Instanciar la variable var_nombre a nombre&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;    &lt;/span&gt;nombre = var_nombre;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get Nombre&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;public int getAccount() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ return nombre; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set Direccion_S&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setDireccion_S( String var_Direccion )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style=""&gt;             &lt;/span&gt;//Instanciar la variable var_Direccion a Direccion_S&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;span style=""&gt;             &lt;/span&gt;Direccion_S = var_Direccion;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get Direccion_S&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;public String getDireccion_S() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;      &lt;/span&gt;return var_Direccion; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set Ocupacion&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setOcupacion_S( String var_ocupacion )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Ocupacion_S = var_ocupacion;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get Ocupacion&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public String getOcupacion_S() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;return var_ocupacion; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set Correo&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setCorreo_S( String var_correo )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;Correo_S = var_correo;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get Correo&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public String getCorreo_S() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;      &lt;/span&gt;return var_correo; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set Telefono&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setTelefono_S( int var_telefono )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;      &lt;/span&gt;Telefono_S = var_telefono;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="PT-BR"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get account number&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public int getTelefono_S() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;      &lt;/span&gt;return var_telefono; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;} &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;} // Final de &lt;st1:personname productid="la Clase Agenda" st="on"&gt;&lt;st1:personname productid="la Clase" st="on"&gt;la Clase&lt;/st1:PersonName&gt; Agenda&lt;/st1:PersonName&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// Fig. 17.6: BankUI.java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// A reusable GUI for the examples in this chapter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;package Agenda_Folder;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import java.awt.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import javax.swing.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;public class BankUI extends JPanel {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// label text for GUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected final static String names[] = { "Nombre",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;"Direccion", "Ocupacion", "Correo Electrónico", "Telefono", "Ardilla" };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// GUI components; protected for future subclass access&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected JLabel labels[];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected JTextField fields[];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected JButton doTask1, doTask2;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected JPanel innerPanelCenter, innerPanelSouth;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;protected int size; // number of text fields in GUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// constants representing text fields in GUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;public static final int NOMBRE = 0, DIRECCION = 1, OCUPACION = 2, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;CORREO = 3, TELEFONO = 4;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// Set up GUI. Constructor argument size determines the number of&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// rows of GUI components.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public BankUI( int mySize )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;size = mySize;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;    &lt;/span&gt;labels = new JLabel[ size ];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;fields = new JTextField[ size ];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create labels&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;labels[ count ] = new JLabel( names[ count ] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create text fields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;fields[ count ] = new JTextField();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create panel to lay out labels and fields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;innerPanelCenter = new JPanel();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;innerPanelCenter.setLayout( new GridLayout( size, 2 ) );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// attach labels and fields to innerPanelCenter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;innerPanelCenter.add( labels[ count ] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;innerPanelCenter.add( fields[ count ] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create generic buttons; no labels or event handlers&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;doTask1 = new JButton();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;doTask2 = new JButton(); &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create panel to lay out buttons and attach buttons&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;innerPanelSouth = new JPanel();&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;innerPanelSouth.add( doTask1 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;innerPanelSouth.add( doTask2 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// set layout of this container and attach panels to it&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setLayout( new BorderLayout() );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;add( innerPanelCenter, BorderLayout.CENTER );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;add( innerPanelSouth, BorderLayout.SOUTH );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;validate(); // validate layout &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;} // end constructor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// return reference to generic task button doTask1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public JButton getDoTask1Button() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;return doTask1; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// return reference to generic task button doTask2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public JButton getDoTask2Button() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;return doTask2; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// return reference to fields array of JTextFields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public JTextField[] getFields() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;return fields; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// clear content of text fields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void clearFields()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;fields[ count ].setText( "" );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set text field values; throw IllegalArgumentException if&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// incorrect number of Strings in argument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void setFieldValues( String strings[] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;throws IllegalArgumentException&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;if ( strings.length != size )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;throw new IllegalArgumentException( "There must be " +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;size + " Strings in the array" );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;fields[ count ].setText( strings[ count ] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// get array of Strings with current text field contents&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public String[] getFieldValues()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{ &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;String values[] = new String[ size ];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;for ( int count = 0; count &lt;&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;values[ count ] = fields[ count ].getText();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;return values;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;} // end class Bangui&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// Fig. 17.8: CreateSequentialFile.java&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;// Writing objecst sequentially to a file with class ObjectOutputStream.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import java.io.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import java.awt.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import java.awt.event.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import javax.swing.*;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import Agenda_Folder.BankUI;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;import Agenda_Folder.AccountRecord;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;public class CreateSequentialFile extends JFrame {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private ObjectOutputStream output;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private BankUI userInterface;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private JButton enterButton, openButton;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// set up GUI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public CreateSequentialFile()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;super( "Creating a Sequential File of Objects" );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// create instance of reusable user interface&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;userInterface = new BankUI( 5 );&lt;span style=""&gt;  &lt;/span&gt;// four textfields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;getContentPane().add( userInterface, BorderLayout.CENTER );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// configure button doTask1 for use in this program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;openButton = userInterface.getDoTask1Button();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;openButton.setText( "Guardar el archivo &lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;como&lt;/st1:place&gt;&lt;/st1:City&gt;..." );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// register listener to call openFile when button pressed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;openButton.addActionListener(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// anonymous inner class to handle openButton event&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;new ActionListener() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;// call openFile when button pressed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;public void actionPerformed( ActionEvent event )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;openFile();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;} // end anonymous inner class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;); // end call to addActionListener&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// configure button doTask2 for use in this program&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;enterButton = userInterface.getDoTask2Button();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;enterButton.setText( "ENTER_SANDMAN" );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;enterButton.setEnabled( false );&lt;span style=""&gt;  &lt;/span&gt;// disable button&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// register listener to call addRecord when button pressed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;enterButton.addActionListener(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// anonymous inner class to handle enterButton event&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;new ActionListener() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;// call addRecord when button pressed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;public void actionPerformed( ActionEvent event )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;addRecord();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;} // end anonymous inner class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;); // end call to addActionListener&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// register window listener to handle window closing event&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;addWindowListener(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// anonymous inner class to handle windowClosing event&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;new WindowAdapter() {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;// add current record in GUI to file, then close file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;           &lt;/span&gt;public void windowClosing( WindowEvent event )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;if ( output != null )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                  &lt;/span&gt;addRecord();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;closeFile();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;} // end anonymous inner class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;); // end call to addWindowListener&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setSize( 500, 600 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;setVisible( true );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;} // end CreateSequentialFile constructor&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// allow user to specify file name&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private void openFile()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// display file dialog, so user can choose file to open&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;JFileChooser fileChooser = new JFileChooser();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;fileChooser.setFileSelectionMode( JFileChooser.FILES_ONLY );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;int result = fileChooser.showSaveDialog( this );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// if user clicked Cancel button on dialog, return&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;if ( result == JFileChooser.CANCEL_OPTION )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;return;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;File fileName = fileChooser.getSelectedFile(); // get selected file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// display error if invalid &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;if ( fileName == null || fileName.getName().equals( "" ) )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;JOptionPane.showMessageDialog( this, "Invalid File Name", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;"Invalid File Name", JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;else {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// open file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;output = new ObjectOutputStream(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;new FileOutputStream( fileName ) );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;openButton.setEnabled( false );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;enterButton.setEnabled( true );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// process exceptions from opening file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;catch ( IOException ioException ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;JOptionPane.showMessageDialog( this, "Error Opening File", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;             &lt;/span&gt;"Error", JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;}&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;} // end else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;} // end method openFile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// close file and terminate application &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;private void closeFile() &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// close file &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;output.close();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;System.exit( 0 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// process exceptions from closing file &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;catch( IOException ioException ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;JOptionPane.showMessageDialog( this, "Error closing file", &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;"Error", JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;span style=""&gt;  &lt;/span&gt;System.exit( 1 );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;} // end method closeFile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;// add record to file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public void addRecord()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;String accountNumber = 0;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;AccountRecord record;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;String fieldValues[] = userInterface.getFieldValues();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;     &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;// if account field value is not empty&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;if ( ! fieldValues[ BankUI.NOMBRE ].equals( "" ) ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// output values to file&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;try {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;accountNumber = Integer.parseInt(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;fieldValues[ BankUI.NOMBRE ] );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;if ( accountNumber &gt; 0 ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;// create new record&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;record = new AccountRecord( accountNumber,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                  &lt;/span&gt;fieldValues[ BankUI.FIRSTNAME ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                  &lt;/span&gt;fieldValues[ BankUI.LASTNAME ],&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                  &lt;/span&gt;Double.parseDouble( fieldValues[ BankUI.BALANCE ] ) );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;// output record and flush buffer&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;output.writeObject( record );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;output.flush();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;            &lt;/span&gt;else&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;            &lt;/span&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;                &lt;/span&gt;JOptionPane.showMessageDialog( this,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt; &lt;/span&gt;&lt;span style=""&gt;                  &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;"Account number must be greater than 0",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                   &lt;/span&gt;"Bad account number", JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;// clear textfields&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;userInterface.clearFields();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;} // end try&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// process invalid account number or balance format&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;catch ( NumberFormatException formatException ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;JOptionPane.showMessageDialog( this,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;"Bad account number or balance", "Invalid Number Format",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;               &lt;/span&gt;JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;// process exceptions from file output&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;catch ( IOException ioException ) {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;             &lt;/span&gt;JOptionPane.showMessageDialog( this, "Error writing to file",&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;                &lt;/span&gt;"IO Exception", JOptionPane.ERROR_MESSAGE );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;            &lt;/span&gt;closeFile();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;         &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;      &lt;/span&gt;} // end if&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;} // end method addRecord&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;public static void main( String args[] )&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="EN-US"&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;      &lt;/span&gt;new CreateSequentialFile();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;span style=""&gt;   &lt;/span&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt;" lang="ES-MX"&gt;} // end class CreateSequentialFile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-3654468065545445301?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/3654468065545445301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=3654468065545445301' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3654468065545445301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/3654468065545445301'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/05/agenda.html' title='Agenda'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-7156942820842088445</id><published>2008-05-19T21:16:00.001-07:00</published><updated>2008-05-19T21:16:43.645-07:00</updated><title type='text'>La cosa acerca de trabajar en la SDN</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;"&gt;La cosa acerca de trabajar en la SDN el contenido de la web del equipo - la multa que la gente lleva developers.sun.com, java.sun.com, la conferencia JavaOne sitio, y el contenido de la JavaOne Hoy periódico - es que mientras que usted está control de todos los períodos de sesiones, BOFs, y el aseado schwag en el Pabellón de palabra, estamos en cranking contenido. Normalmente, los que nos deja fuera de contacto sobre cualquier cosa que no está contenido en nuestro ritmo. Leemos de los demás artículos, y llenar los espacios en blanco de esa manera. Pero este año, es casi más fácil perder de vista el alcance de las cosas a través de la Web de lo que era en realidad para estar allí en la sala. La sesión general webcasts y repeticiones, disponibles en el sitio web de JavaOne, que todo el mundo que no había sido capaz de cuña su camino en la sala de envasados escuchar el mensaje de todos modos. Y aunque no llegué a respirar el mismo aire como Neil Young (sigh. ..), por lo menos llegué a oírlo hablar ... una y otra y otra vez. El Blog de actividad, tanto en la Conferencia y fuera de él, fue intensa. Hay blogs suficiente para llenar dos planetas: BlogCentral en sun.com y JavaOne 2008 sobre planets.sun.com. El actual evento JavaOne en SecondLife fue tremendo. Doce eventos durante cuatro días, sobre todo, desde JavaFX a OpenSolaris a NetBeans. Este fue el primer programa de JavaOne en el mundo, permitiendo a la gente que no puede unirse a nosotros en el Moscone a ser conectados, sin tener que viajar. Puede ser en cualquier parte del mundo, y aún así aprovechar los recursos disponibles en la conferencia JavaOne. ¿Cómo es que Verde? Y si los avatares no sólo fueron de corte por usted, el JavaOne contribuciones a YouTube eran bastante entretenida. El Sun Microsystems Noticias canal tiene algunos grandes cosas. Y, honestamente, el 'Java minuto de serie puede ser, en cierta forma, mejor que estar allí (no tener jostled, no data-room-only, no mochila en la cara ...). Aquí tienes un consejo: La atractiva Tommy Jr videos están en la SDN Total Access Net canal Dicho todo esto, hay algunas cosas que usted no puede conseguir a menos que usted está aquí. La JavaOne periódico Hoy, por ejemplo. Y amigos, tengo más divertido con la realización de los bits por el documento que para cualquier otra cosa que hago aquí. Las preguntas del día nos dio una idea de lo que estás pensando y lo que está participando en por ahí; el Daily Preguntas crack me, y la profundidad de contenido la cobertura nunca deja de salir me impresionó, no sólo con lo que está fuera hay que aprender, pero que la que hay que enseñar y escribir acerca de ello. Las cabinas de Trabajo sobre el Pabellón de suelo es también un buen rendimiento. La SDN stand se colocó así, por lo que no sólo tenemos la oportunidad de reunirse con muchos de ustedes, pero también fueron de pie sobre la alfombra cushier relleno - que, permítame decirle, ayudó a una tonelada. Ya sea hablando de la Web MySDN de demos y DocWeb, o la mecánica de la pequeña clicky-llave regalos, pasé la mayor parte de mi deber horas de risa, y de conocer a usted, que es una cosa maravillosa. Oye, que me fuera del sótano por unas cuantas horas! CommunityOne, convenientemente programada para antes de la verdadera locura JavaOne comienza para nuestro grupo, es realmente asombroso. La mayoría de la gente que conozco que asistieron a las sesiones libres en esta "pre-evento" se sigue tratando de integrar el proceso y lo que había oído, incluso días más tarde. Es una cosa hablar de o para el uso de código abierto, pero es otra muy distinta para discutir las filosofías y las bases de código abierto. "Libre" y "abierto" a fin de tener muchos significados diferentes, y es realmente inspirador ver a la gente participar en las conversaciones en torno a estas definiciones. No puede esperar a ver cómo continúan las discusiones en los blogs! Y lo que JavaOne sin ser como Rock Stars? Seleccionado por los asistentes, estos son individuos que están tan comprometidos con sus tecnologías, de modo entusiasta en sus presentaciones, que el pueblo votó por ellos como digno de mención. El superlativo Rock Star entrevista serie merece la pena leer a través, incluso si se cumplieron sus períodos de sesiones, por lo que sabe lo que debe priorizar en el próximo año calendario. Y hablando de Programación Builder, la SDN personal de pruebas, una manera de hacer que incluso mejor, a modo de microformatting. Descargue el Mozilla Firefox plug-in del operador, y el uso microformatos para ver el calendario de sesiones de JavaOne técnico con más detalle. Debido a los plazos, esto va a imprimir antes de que Dark Después evento, que promete ser espectacular. Pude haber perdido Neil Young en persona, pero usted puede apostar ¡ya existe para Smash Mouth. Así que si usted estuviera aquí en persona, prácticamente, o en el mundo, la tecnología Java fue allí también. Por lo tanto, muchas de las sesiones generales se dirigió a la ubicuidad de Java: Creo que la facilidad de acceso del contenido, no importa que el modo de participación que usted eligió, apoya precisamente eso. JAVA + USTED, conectado.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-7156942820842088445?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/7156942820842088445/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=7156942820842088445' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7156942820842088445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/7156942820842088445'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/05/la-cosa-acerca-de-trabajar-en-la-sdn.html' title='La cosa acerca de trabajar en la SDN'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-1114700423045437347</id><published>2008-04-28T13:46:00.001-07:00</published><updated>2008-04-28T13:46:43.024-07:00</updated><title type='text'>Origen de Java</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web . Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues, a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo ( plug-in ) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.&lt;br /&gt;Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI ( Common Gateway Interface ), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.&lt;br /&gt;El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.&lt;br /&gt;Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida . Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.&lt;br /&gt;Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-1114700423045437347?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/1114700423045437347/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=1114700423045437347' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1114700423045437347'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/1114700423045437347'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/04/origen-de-java.html' title='Origen de Java'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4137985624664202180.post-6331124245923269005</id><published>2008-04-28T13:38:00.000-07:00</published><updated>2008-04-28T13:43:56.416-07:00</updated><title type='text'>Introducción a Java</title><content type='html'>&lt;p align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;El uso principal que se hace de Internet e incluso de las redes internas (corporativas) es correo electrónico (e-mail), aunque actualmente hay un auge sorprendente de la navegación web . Los documentos web pueden contener variedad de texto, gráficos de todas clases y proporcionar enlaces hipertexto hacia cualquier lugar de la red. Los navegadores utilizan documentos escritos en lenguaje HTML. La combinación actual de navegadores HTML/WWW están limitados pues, a texto y gráficos. Si se quiere reproducir un sonido o ejecutar un programa de demostración, primero hemos de bajarnos (download) el fichero en cuestión y luego utilizar un programa en nuestro ordenador capaz de entender el formato de ese fichero, o bien cargar un módulo ( plug-in ) en nuestro navegador para que pueda interpretar el fichero que hemos bajado.&lt;br /&gt;Hasta ahora, la única forma de realizar una página web con contenido interactivo, era mediante la interfaz CGI ( Common Gateway Interface ), que permite pasar parámetros entre formularios definidos en lenguaje HTML y programas escritos en Perl o en C. Esta interfaz resulta muy incómoda de programar y es pobre en sus posibilidades.&lt;br /&gt;El lenguaje Java y los navegadores con soporte Java, proporcionan una forma diferente de hacer que ese navegador sea capaz de ejecutar programas. Con Java se puede reproducir sonido directamente desde el navegador, se pueden visitar home pages con animaciones, se puede enseñar al navegador a manejar nuevos formatos de ficheros, e incluso, cuando se pueda transmitir video por las líneas telefónicas, nuestro navegador estará preparado para mostrar esas imágenes.&lt;br /&gt;Utilizando Java, se pueden eliminar los inconvenientes de la interfaz CGI y también se pueden añadir aplicaciones que vayan desde experimentos científicos interactivos de propósito educativo a juegos o aplicaciones especializadas para la televenta. Es posible implementar publicidad interactiva y periódicos personalizados. Por ejemplo, alguien podría escribir un programa Java que implementara una simulación química interactiva (una cadena de adn). Utilizando un navegador con soporte Java, un usuario podría recibir fácilmente esa simulación e interaccionar con ella, en lugar de conseguir simplemente un dibujo estático y algo de texto. Lo recibido cobra vida . Además, con Java podemos estar seguros de que el código que hace funcionar el experimento químico no contiene ningún trozo de código malicioso que dañe al sistema. El código que intente actuar destructivamente o que contenga errores, no podrá traspasar los muros defensivos colocados por las características de seguridad y robustez de Java.&lt;br /&gt;Además, Java proporciona una nueva forma de acceder a las aplicaciones. El software viaja transparentemente a través de la red. No hay necesidad de instalar las aplicaciones, ellas mismas vienen cuando se necesitan. Por ejemplo, la mayoría de los navegadores del Web pueden procesar un reducido número de formatos gráficos (típicamente GIF y JPEG). Si se encuentran con otro tipo de formato, el navegador estándar no tiene capacidad para procesarlo, tendría que ser actualizado para poder aprovechar las ventajas del nuevo formato. Sin embargo, un navegador con soporte Java puede enlazar con el servidor que contiene el algoritmo que procesa ese nuevo formato y mostrar la imagen. Por lo tanto, si alguien inventa un nuevo algoritmo de compresión para imágenes, el inventor sólo necesita estar seguro de que hay una copia en código Java de ese algoritmo instalada en el servidor que contiene las imágenes que quiere publicar. Es decir, los navegadores con soporte Java se actualizan a sí mismos sobre la marcha, cuando encuentran un nuevo tipo de fichero o algoritmo. &lt;/span&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;span style="font-family:arial;font-size:130%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/4137985624664202180-6331124245923269005?l=javamanual.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javamanual.blogspot.com/feeds/6331124245923269005/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=4137985624664202180&amp;postID=6331124245923269005' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6331124245923269005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4137985624664202180/posts/default/6331124245923269005'/><link rel='alternate' type='text/html' href='http://javamanual.blogspot.com/2008/04/introduccin-java.html' title='Introducción a Java'/><author><name>HELL KNIGHT</name><uri>http://www.blogger.com/profile/01554814433487359001</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/_cXMixKGyWMw/ST8_nCnuKEI/AAAAAAAAAAo/kCvQDMsPQFc/S220/crazycatlady.gif'/></author><thr:total>0</thr:total></entry></feed>
