Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java




descargar 450.71 Kb.
títuloTaller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java
página3/6
fecha de publicación14.01.2016
tamaño450.71 Kb.
tipoTaller
med.se-todo.com > Documentos > Taller
1   2   3   4   5   6

HolaMundo


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.

//

// Aplicación HolaMundo de ejemplo

//

Estas tres primera líneas son comentarios. Hay tres tipos de comentarios en Java, // es un comentario orientado a línea.

class HolaMundoApp {

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[] ) {

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.

public significa que el método main puede ser llamado por cualquiera, incluyendo el intérprete Java.

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.

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.

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 ...

System.out.println( "Hola Mundo!" );

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 .

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.

}

}

Finalmente, se cierran las llaves que limitan el método main() y la clase HolaMundoApp .

COMPILACION Y EJECUCION DE HOLA MUNDO

 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.

Ficheros Fuente Java

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 HolaMundoApp.java . 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.

Compilación

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.

Una vez creado el fichero fuente HolaMundoApp.java, se puede compilar con la línea siguiente:

%javac HolaMundoApp.java

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.

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.

Ejecución

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 HolaMundoApp

y debería aparecer en pantalla la respuesta de Java: %Hola Mundo!

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.

Problemas de compilación

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.

%javac: Command not found

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!); ^

Error tipográfico, el método es println no printl. %In class HolaMundoApp: main must be public and static

Error de ejecución, se olvidó colocar la palabra static en la declaración del método main de la aplicación. %Can´t find class HolaMundoApp

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 {

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.

UN APPLET BASICO

 Vamos a comenzar la creación del código fuente del un applet que satisfaga nuestras necesidades. Recordamos que Java utiliza la extensión .java para designar los ficheros fuente.

HolaMundo

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 HolaMundo.java .

//

// Applet HolaMundo de ejemplo

//

import java.awt.Graphics;

import java.applet.Applet;
public class HolaMundo extends Applet {

public void paint( Graphics g ) {

g.drawString( "Hola Mundo!",25,25 ) ;

}

}

Componentes básicos de un Applet

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.

Veamos cómo se descompone un applet en sus piezas/objetos:

/*

Sección de importaciones

*/
public class NombreDelNuevoApplet extends Applet {

/*

Aquí se declaran las variables de estado (public y private)

*/

/*

Los métodos para la interacción con los objetos se

declaran y definen aquí

*/

public void MetodoUno( parámetros ) {

/*

Aquí viene para cada método, el código Java que

desempeña la tarea.

Qué código se use depende del applet

*/

}

}

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

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

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.

import java.applet.Applet;

. . .

public class HolaMundo extends Applet {

Métodos de Applet

La parte del applet a modificar es el método paint() . 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. En nuestro caso, lo que hacemos es:

public void paint( Graphics g ) {

g.drawString( "Hola Mundo!",25,25 );

}

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.

Otros métodos básicos para dibujar son:

drawLine( int x1,int y1,int x2,int y2 )

drawRect( int x,int y,int ancho,int alto )

drawOval( int x,int y,int ancho,int alto )

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).

Para saber como poner un Applet en una página web puedes mirar aquí

LA CLASE MATH

 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.

Funciones matemáticas

Si se importa la clase, se tiene acceso al conjunto de funciones matemáticas estándar:

Math.abs( x )           para int, long, float y double
Math.sin( double )
Math.cos( double )
Math.tan( double )
Math.asin( double )
Math.acos( double )
Math.atan( double )
Math.atan2( double,double )
Math.exp( double )
Math.log( double )
Math.sqrt( double )
Math.ceil( double )
Math.floor( double )
Math.rint( double )
Math.pow( a,b )
Math.round( x )        para double y float
Math.random()          devuelve un double
Math.max( a,b )        para int, long, float y double
Math.min( a,b )        para int, long, float y double
Math.E                 para la base exponencial
Math.PI                para PI

He aquí un ejemplo, Mates.java , de uso de algunas funciones de la clase Math:

class Mates {

public static void main( String args[] ) {

int x;

double rand,y,z;

float max;

rand = Math.random();

x = Math.abs( -123 );

y = Math.round( 123.567 );

z = Math.pow( 2,4 );

max = Math.max( (float)1e10,(float)3e9 );

System.out.println( rand );

System.out.println( x );

System.out.println( y );

System.out.println( z );

System.out.println( max );

}

}
LA CLASE CHARACTER

 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 .

Declaraciones

La primera sentencia creará una variable carácter y la segunda un objeto Character:

char c;

Character C;

Comprobaciones booleanas

Character.isLowerCase( c )

Character.isUpperCase( c )

Character.isDigit( c )

Character.isSpace( c )

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. Estas funciones son estáticas y no conocen al objeto, por eso hay que crearlo antes.

Traslaciones de caracteres

char c2 = Character.toLowerCase( c );

char c2 = Character.toUpperCase( c );

Traslaciones de carácter/dígito

int i = Character.digit( c,base );

char c = Character.forDigit( i,base );

Métodos de la clase Character

C = new Character( 'J' );

char c = C.charValue();

String s = C.toString();

LA CLASE FLOAT

 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 .

Declaraciones

La primera sentencia creará una variable float y la segunda un objeto Float:

float f;

Float F;

Valores de Float

Float.POSITIVE_INFINITY

Float.NEGATIVE_INFINITY

Float.NaN

Float.MAX_VALUE

Float.MIN_VALUE

Conversiones de Clase/Cadena

String s = Float.toString( f );

f = Float.valueOf( "3.14" );

Comprobaciones

boolean b = Float.isNaN( f );

boolean b = Float.isInfinite( f );

La función isNaN() comprueba si f es un No-Número . Un ejemplo de no-número es raiz cuadrada de -2.

Conversiones de Objetos

Float F = new Float( Float.PI );

String s = F.toString();

int i = F.intValue();

long l = F.longValue();

float F = F.floatValue();

double d = F.doubleValue();

Otros Métodos

int i = F.hashCode();

boolean b = F.equals( Object obj );

int i = Float.floatToIntBits( f );

float f = Float.intBitsToFloat( i );

LA CLASE DOUBLE

 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 .

Declaraciones

La primera sentencia creará una variable double y la segunda un objeto Double:

double d;

Double D;

Valores de Double

Double.POSITIVE_INFINITY

Double.NEGATIVE_INFINITY

Double.NaN

Double.MAX_VALUE

Double.MIN_VALUE
Métodos de Double

D.isNaN();

Double.isNaN( d );

D.isInfinite();

Double.isInfinite( d );

boolean D.equals();

String D.toString();

int D.intValue();

long D.longValue();

float D.floatValue();

double D.doubleValue();

int i = D.hashCode();

Double V.valueOf( String s );

long l = Double.doubleToLongBits( d );

double d = Double.longBitsToDouble( l );
Ejemplo debe de crear un número de tipo doublé, pero tome en cuenta lo siguiente: es diferente

Doublé x;

Que

Double x;

Ya que el Segundo es un constructor de un objeto x de tipo Double mientras que el primero es una declaración de tipo doublé.

double arreglo[] = new double [6];

Double doble=new Double (x);

En este caso la primera es una variable de tipo double, es un arreglo de variables de este tipo, y la segunda es un objeto de tipo double, tambien puedes ver si es un bojeto poniendo un punto , esto producira:

Es un listado, con la posibilidad de convertir el valor de doublé a algún valor diferente de este tipo, en este caso lo utilice para convertir el tipo doublé a un tipo entero.

LA CLASE INTEGER

 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 .

Declaraciones

La primera sentencia creará una variable int y la segunda un objeto Integer:

Integer.MIN_VALUE;

Integer.MAX_VALUE;

Valores de Integer

Integer.MIN_VALUE;

Integer.MAX_VALUE;

Métodos de Integer

String Integer.toString( int i,int base );

String Integer.toString( int i );

int I.parseInt( String s,int base );

int I.parseInt( String s );

Integer Integer.valueOf( String s,int base );

Integer Integer.valueOf( String s );

int I.intValue();

long I.longValue();

float I.floatValue();

double I.doubleValue();

String I.toString();

int I.hashCode();

boolean I.equals( Object obj );


Para leer un entero podemos hacerlo con:



LA CLASE LONG

 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 .

Declaraciones

La primera sentencia creará una variable long y la segunda un objeto Long:

long l;

Long L;

Valores de Long

Long.MIN_VALUE;

Long.MAX_VALUE;

Métodos de Long

String Long.toString( long l,int base );

String Long.toString( long l );

long L.parseLong( String s,int base );

long L.parseLong( String s );

Long Long.valueOf( String s,int base );

Long Long.valueOf( String s );

int L.intValue();

long L.longValue();

float L.floatValue();

double L.doubleValue();

String L.toString();

int L.hashCode();

boolean L.equals( Object obj );

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 .

LA CLASE BOOLEAN

 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.

Declaraciones

La primera sentencia creará una variable boolean y la segunda un objeto Boolean:

boolean b;

Boolean B;

Valores de Boolean

Boolean.TRUE;

Boolean.FALSE;

Métodos de Boolean

boolean B.booleanValue();

String B.toString();

boolean B.equals( Object obj );

LA CLASE STRING

 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.

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.

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.

Existen muchos constructores para crear nuevas cadenas:

String();

String( String str );

String( char val[] );

String( char val[],int offset,int count );

String( byte val[],int hibyte );

String( byte val[],int hibyte,int offset,int count );

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 .

Funciones Básicas

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 :

int length();

char charAt( int indice );

Funciones de Comparación de Strings

boolean equals( Object obj );

boolean equalsIgnoreCase( Object obj );

Lo mismo que equals() pero no tiene en cuenta mayúsculas o minúsculas.

int compareTo( String str2 );

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 .

Funciones de Comparación de Subcadenas

boolean regionMatch( int thisoffset,String s2,int s2offset,int len );

boolean regionMatch( boolean ignoreCase,int thisoffset,String s2,

int s2offset,int 1 );

Comprueba si una región de esta cadena es igual a una región de otra cadena.

boolean startsWith( String prefix );

boolean startsWith( String prefix,int offset );

boolean endsWith( String suffix );

Devuelve si esta cadena comienza o termina con un cierto prefijo o sufijo comenzando en un determinado desplazamiento.

int indexOf( int ch );

int indexOf( int ch,int fromindex );

int lastIndexOf( int ch );

int lastIndexOf( int ch,int fromindex );

int indexOf( String str );

int indexOf( String str,int fromindex );

int lastIndexOf( String str );

int lastIndexOf( String str,int fromindex );

Devuelve el primer/último índice de un carácter/cadena empezando la búsqueda a partir de un determinado desplazamiento.

String substring( int beginindex );

String substring( int beginindex,int endindex );

String concat( String str );

String replace( char oldchar,char newchar );

String toLowerCase();

String toUpperCase();

String trim();

Ajusta los espacios en blanco al comienzo y al final de la cadena.

void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin );

void getBytes( int srcBegin,int srcEnd,byte dst[],int dstBegin );

String toString();

char toCharArray();

int hashCode();

Funciones ValueOf

La clase String posee numerosas funciones para transformar valores de otros tipos de datos a su representación como cadena. Todas estas funciones tienen el nombre de valueOf , estando el método sobrecargado para todos los tipos de datos básicos.

Veamos un ejemplo de su utilización:

String Uno = new String( "Hola Mundo" );

float f = 3.141592;
String PI = Uno.valueOf( f );

String PI = String.valueOf( f ); // Mucho más correcto

Funciones de Conversión

String valueOf( boolean b );

String valueOf( int i );

String valueOf( long l );

String valueOf( float f );

String valueOf( double d );

String valueOf( Object obj );

String valueOf( char data[] );

String valueOf( char data[],int offset,int count );

Usa arrays de caracteres para la cadena.

String copyValueOf( char data[] );

String copyValueOf( char data[],int offset,int count );

Crea un nuevo array equivalente para la cadena.

LA CLASE STRINGBUFFER

 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.

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.

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:

StringBuffer();

StringBuffer( int len );

StringBuffer( String str );

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.

StringBuffer Dos = new StringBuffer( 20 );

StringBuffer Uno = new StringBuffer( "Hola Mundo" );

Cambio de Tamaño

El cambio de tamaño de un StringBuffer necesita varias funciones específicas para manipular el tamaño de las cadenas:

int length();

char charAt( int index );

void getChars( int srcBegin,int srcEnd,char dst[],int dstBegin );

String toString();

void setLength( int newlength );

void setCharAt( int index,char ch );

int capacity();

void ensureCapacity( int minimum );

void copyWhenShared();

Obervar que una de las funciones devuelve una cadena constante normal de tipo String. Este objeto se puede usar con cualquier función String, como por ejemplo, en las funciones de comparación.

Modificación del Contenido

Para cambiar el contenido de un StringBuffer, se pueden utilizar dos métodos: append() e insert() .

En el ejemplo CadAppend.java , vemos el uso de estos dos métodos:

class CadAppend {

public static void main( String args[] ) {

StringBuffer str = new StringBuffer( "Hola" );

str.append( " Mundo" );

System.out.println( str );

}

}

En este otro ejemplo, CadInversa.java , mostramos un método muy simple que le da la vuelta a una cadena:

class CadInversa {

public static String cadenaInversa( String fuente ) {

int longitud = fuente.length();

StringBuffer destino = new StringBuffer( longitud );

for( int i=(longitud-1); i >= 0; i-- )

destino.append( fuente.charAt( i ) );

return( destino.toString() );

}

public static void main( String args[] ) {

System.out.println( cadenaInversa( "Hola Mundo" ) );

}

}

Las funciones que cambian el tamaño son pues:

StringBuffer append( Object obj );

StringBuffer append( String str );

StringBuffer append( char str[] );

StringBuffer append( char str[],int offset,int len );

StringBuffer append( boolean b );

StringBuffer append( int i );

StringBuffer append( long l );

StringBuffer append( float f );

StringBuffer append( double d );

StringBuffer append( char ch );

StringBuffer insert( int offset,Object obj );

StringBuffer insert( int offset,String str );

StringBuffer insert( int offset,char str[] );

StringBuffer insert( int offset,boolean b );

StringBuffer insert( int offset,int i );

StringBuffer insert( int offset,long l );

StringBuffer insert( int offset,float f );

StringBuffer insert( int offset,double d );

StringBuffer insert( int offset,char ch );

Operadores de Concatenación

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.

Por ejemplo, la sentencia:

String s = "¿Qué" + " tal ?";

es interpretada por el compilador como:

String s =

new StringBuffer().append( "¿Qué" ).append( " tal ?" ).toString();

y se marcaría el StringBuffer para borrarlo ya que el contenido pasa al objeto String. También, la sentencia:

s += " por ahí!";

sería interpretada por el sistema como:

String s =

new StringBuffer().append( s ).append( " por ahí!" ).toString();

y volvería a marcar para borrar el nuevo StringBuffer.

USO DE CONVERSIONES

 Veamos un ejemplo de utilidad de estas funciones. En el applet Conversion.java , 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 Conversion extends Applet {

int RatonX = 25;

int RatonY = 25;

String Status = "Haz click con el ratón";

public void paint( Graphics g ) {

g.drawString( Status,RatonX,RatonY );

}

public boolean mouseDown( Event evt,int x,int y ) {

Integer X = new Integer( x );

Integer Y = new Integer( y );

RatonX = x;

RatonY = y;

Status = X.toString()+","+Y.toString();

repaint();

return true;

}

}
MANEJO DE EXCEPCIONES

 Vamos a mostrar como se utilizan las excepciones, reconvirtiendo nuestro applet de saludo a partir de la versión iterativa de HolaIte.java :

import java.awt.*;

import java.applet.Applet;
public class HolaIte extends Applet {

private int i = 0;

private String Saludos[] = {

"Hola Mundo!",

"HOLA Mundo!",

"HOLA MUNDO!!"

};
public void paint( Graphics g ) {

g.drawString( Saludos[i],25,25 );

i++;

}

}

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.

Vamos a reescribir el método paint() de nuestra versión iterativa del saludo:

public void paint( Graphics g ) {

try {

g.drawString( Saludos[i],25,25 );

} catch( ArrayIndexOutOfBoundsException e ) {

g.drawString( "Saludos desbordado",25,25 );

} catch( Exception e ) {

// Cualquier otra excepción

System.out.println( e.toString() );

} finally {

System.out.println( "Esto se imprime siempre!" );

}

i++;

}

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 ¡Esto se imprime siempre!

GENERAR EXCEPCIONES

 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.

void MetodoAsesino() throws NullPointerException,CaidaException

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.

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.

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;

El objeto ObjetoException es un objeto de una clase que extiende la clase Exception .

El siguiente código de ejemplo origina una excepción de división por cero:

class melon {

public static void main( String[] a ) {

int i=0, j=0, k;
k = i/j; // Origina un error de division-by-zero

}

}

Si compilamos y ejecutamos esta aplicación Java, obtendremos la siguiente salida por pantalla:

> javac melon.java

> java melon

java.lang.ArithmeticException: / by zero

at melon.main(melon.java:5)

Las excepciones predefinidas, como ArithmeticException , se conocen como excepciones runtime. Actualmente, como todas las excepciones son eventos runtime, sería mejor llamarlas excepciones irrecuperables. 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.

EXCEPCIONES PREDEFINIDAS

 Las excepciones predefinidas y su jerarquía de clases es la que se muestra en la figura:

excepciones predefinidas java

Los nombres de las excepciones indican la condición de error que representan. Las siguientes son las excepciones predefinidas más frecuentes que se pueden encontrar:
1   2   3   4   5   6

similar:

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconIntroduccion al lenguaje quimico

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconDibujo tecnico introducción al curso. Alfabeto de líneas. Letras...

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconIntroducción al lenguaje de Jesús Tusón Valls (Editorial uoc. Aragón, España. 2003)

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconManual de Introducción

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconIntroducción a la programación gráfica en C

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconTaller de Introducción a la Ingeniería en Alimentos

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconProgramación general. Introducción (fundamentos legales y datos informativos)

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconIntroducción a la Epistemología Introducción

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconEvaluacion 2012 1° taller de la lic. En bioquímica, modificatoria...

Taller com/manual-java/introduccion-java php >Introducción a Java Introducción al lenguaje de programación Java iconEvaluacion 2014 1° taller de la lic. En bioquímica, modificatoria...


Medicina



Todos los derechos reservados. Copyright © 2015
contactos
med.se-todo.com