El lenguaje de programaci�n Java tiene tres diferentes construcciones de bucles:
- bucle for
- bucle while
- bucle do-while
Cada una de estas construcciones ejecuta repetidamente un bloque de c�digo, hasta que se alcance alguna condici�n. Este �rticulo explica la estructura de una de estas construcciones, el bucle for.
La estructura b�sica de un bucle for consta de cuatro partes:
- la secci�n de inicializaci�n.
- la secci�n de condici�n de finalizaci�n.
- la secci�n de actualizaci�n.
- el cuerpo del bucle.
Esa estructura se parece a esto:
for (initialization; ending condition; update) body;
Siguiendo a la palabra clave for, las primeras tres secciones van entre par�ntesis, cada secci�n separada por puntos y coma. El cuerpo es la parte que se ejecuta repetidametne. Sigue fuera del par�ntesis.
Si no queremos que se ejecute ning�n c�digo, detr�s de las tres seccciones internas, seguimos al par�ntesis de cierre con un punto y coma. Este un error de programaci�n com�n, ya que significa que no hay cuerpo que ejecutar.
for (initialization; ending condition; update);
System.out.println("Executes after for loop is done.");
M�s comunmente, encerraremos el cuerpo entre corhetes { y } indicando que se van a ejecutar varias sentencias. Si la parte del cuerpo no est� entre corchetes, la �nica sentencia que siga inmediatamente al bucle for ser� ejecutada en cada pasada. Aqu� est� lo que podremos ver m�s comunmente: for (initialization; ending condition; update) { statement1; statement2; statement3; ... statementn; }
- La secci�n de inicializaci�n es la sentencia que queremos que se ejecute antes de que empiece el bucle. Las variables declaradas en la secci�n de inicializaci�n son locales al bucle for, y son �tiles para la variable de control del bucle.
- La condici�n de finalizaci�n contiene una expresi�n booleanda chequeada para ver si el cuerpo del bucle deberia ejecutarse si la condici�n es verdadera.
- La secci�n de actualizaci�n es la sentencia que se ejecuta despues de que se ejecute el cuerpo pero antes de que se compruebe la condici�n de finalizaci�n para la siguiente pasada a trav�s del bucle.
Para demostrarlo, el siguiente bucle, suma los n�meros del 1 al 3:
int sum = 0;
for (int i=1; i<=3; i++)
sum += i;
System.out.println("The sum is " + sum);
La primera l�nea (int sum = 0;) declara una variable para contener la suma a calcular. Necesita ser declarada fuera del bucle para que podamos imprimirla cuando hayamos terminado el bucle.
La siguiente l�nea (int i=1; i<;=3; i++) es un poco m�s complicada. Primero, la secci�n de inicializaci�n declara la variable i y le pone el valor 1. La condici�n de finalizaci�n i<=3 ejecuta el cuerpo del bucle mientras que el valor de i sea menor o igual que 3. Originalmente si i fuera mayor que 3, el bucle nunca se ejecutar�a. Como i empieza menor que 3, se ejecuta al menos una vez. Finalmente la secci�n de actualizaci�n i++ dice que se incremente el valor de i en uno despu�s de cada ejecuci�n del cuerpo del bucle. La siguiente l�nea (sum += i;) es el cuerpo del bucle. Se ejecuta mientras que la condifici�n de finalizaci�n sea verdadera.
La �ltima l�nea System.out.println("The sum is " + sum); es la salida del bucle y se ejecuta cuando el bucle se ha finalizado. Todo el fragmento del bucle se ejecuta de esta forma:
sum = 0;
int i = 1;
is i<=3? 1 is less then or equal
to 3 so yes, okay to execute body
sum = sum + 1;
i++; i is now 2
is i<=3? 2 is less then or equal
to 3 so yes, okay to execute body
sum = sum + 2;
i++; i is now 3
is i<=3? 3 is less then or equal
to 3 so yes, okay to execute body
sum = sum + 3;
i++; i is now 4
is i<=3? 4 is not less then or equal
to 3 so no, stop the for loop
System.out.println("The sum is " +
sum); prints out The sum is 6
Esto es esencialmente un bucle for. Hay cosas definitivamente m�s complicadas que podemos hacer con un bucle for, pero esto te servir� para empezar.
�Entender la Librer�a de Clases Java
�La Clase StringBuffer
Las dos clases comunes usadas para crear y manipular objetos string son:
- String -- crea objetos que son constantes y de longitud fija. Una vez que se ha creado un objeto string, no se puede modificar.
- StringBuffer -- crea un objeto StringBuffer que es escribible. Una que se ha creado un objeto StringBuffer si se puede modificar.
Entonces �por qu� no usar siempre la clase StringBuffer en lugar de String? Rendimiento. Muchas referencias se pueden referir a un objeto String, y como el tama�o de este objeto en memoria es fijo, esto es un mejor rendimiento.
Por otro lado, StringBuffer, puede expandirse si se excede su capacidad. Usamos StringBuffer cuando necesitamos a�adir, borrar o reemplazar substrings en un string. En estas situaciones, usar StringBuffer es m�s eficiente.
Para crear un objeto StringBuffer, usamos la palabra clave new y llamamos a cualquiera de sus tres constructores disponibles:
- StringBuffer()
Construye un buffer string vac�o y con una capacidad inicial de 16 caracteres. - StringBuffer(int length)
Construye un buffer string vac�o y con una capacidad inicial especificada por el argumento length. - StringBuffer(String str)
Construye un buffer string que representa la misma secuencia de caracteres que el argumento str.
Los m�todos de la clase StringBuffer se usan para manipular el string, para a�adir, borrar o insertar texto dentro del string. Por ejemplo:
public class UsingStringBuffers
{
public static void main(String [] args)
{
// Creates a StringBuffer object
// with the third
// constructor mentioned above.
StringBuffer buf =
new StringBuffer("Java technologies");
// The append method adds text at the
// end of the buffer.
// Prints result to screen.
buf.append(" are used on desktops and
the Internet.");
System.out.println(buf);
// Prints buf capacity and its actual
// length, using
// the length and capacity methods.
System.out.println("This string is " +
buf.length() +
" in length.");
System.out.println(
"But the actual capacity of this
buffer is " + buf.capacity());
}
}
resulta en:
Java technologies are used on desktops and the Internet. This string is 56 in length. But the actual capacity of this buffer is 68
Podemos cambiar la longitud y la capacidad de un StringBuffer, y esta clase tiene otros m�todos de edici�n �tiles como insert, setCharAt, substring, y m�s.
�Programa Ejercicio
- Crea un programa que haga un bucle por todos los argumentos de la l�nea de comandos para crear una lista delimitada por comas.
- Usa un StringBuffer como el contenedor de la lista. Asegurate de que no hay ninguna coma despu�s del �ltimo elemento.
- Imprime la lista despu�s de haber combinado todos los argumentos.
Cuando ejecutes esta l�nea de comandos de ejemplo:
java Append one two three
El resultado deber�a ser:
one, two, three
�Un poco de Java
�Atajos en la Programaci�n Java
El c�digo de ejemplo es una de las herramientas m�s �tiles para aprender el lenguaje de programaci�n Java, pero tambi�n puede ser confuso. El lenguaje Java es un lenguaje estrictamente tipado, lo que significa que siempre tenemos que declarar las variables como de un tipo espec�fico, como int, String, o JPanel. Pero esto no signfica que no haya alguna flexibilidad en la forma de escribir nuestra sentencias.
Los atajos (o accesos directos) en la programaci�n son �tiles, pero tratar de entenderlos sin una explicaci�n puede confundirnos. Hay dos tipos de atajos que has visto en el c�digo y que puedes usar en tus propios desarrollos:
- Declaraciones de Variables:
Las variables deben declararse con un tipo, pero podemos poner variables del mismo tipo en la misma sentencia, separadas por comas: En lugar de esto:
int month; int day; int year;
podemos usar esto:
int month, day, year;
algunos desarrolladores podr�an preferir:
int month, day, year; - Crear objetos y llamar a m�todos:
Crear un objeto Timestamp que devuelve la hora actual puede tomar tres pasos:
- Ejemplarizar el objeto Date: Date d = new Date();
- Llamar al m�todo getTime sobre ese objeto y asignarlo a una referencia Timestamp : Timestamp ts = (d.getTime());
- Devolver la hora como un Timestamp: return ts;
En su lugar podemos crear un objeto y llamar a uno de sus m�todos en un s�lo paso:
return new Timestamp(new Date().getTime());
Aqu� hay una aplicaci�n de ejemplo que puedes ejecutar:
import java.sql.Timestamp; import java.util.Date; public class TimeTest { // Method that returns a Timestamp // object. public static Timestamp getCurrentTime() { // Instantiates a Date object and calls // the getTime method, and creates and // returns the Timestamp object with the // current time. In one line! return new Timestamp(new Date().getTime()); } //The main method that calls the // getCurrentTime method and returns // the Timestamp object and prints // to screen public static void main(String[] args) { System.out.println(getCurrentTime()); } }
�Soluci�n al Programa de Ejercicio
Esta es una posible soluci�n para el Programa del Ejercicio:
public class Append {
public static void main(String args[]) {
// Create a StringBuffer object and
// assign it to the variable buf.
StringBuffer buf = new StringBuffer();
// Initializes the for loop.
// Checks for the number of arguments on
// the command line, then loops through them
for (int i=0; i< args.length; i++) {
// For each argument besides the first,
// append comma to end of buffer
if (i != 0) {
buf.append(", ");
}
// Add all arguments to the
// StringBuffer object buf.
buf.append(args[i]);
}
// Converts the StringBuffer arguments
// to simple strings and prints to screen.
System.out.println(buf.toString());
}
}
�Descargar la Plataforma Java 2
Para la mayor�a del desarrollo Java, necesitas las librer�as de clases Java, el compilador, las herramientas, y el entorno de ejecuci�n proporcionado por el kit de desarrollo de Java 2, Standard Edition.
- Descarga el Paquete de Software J2SE 1.4.
- A�ade a tu Bookmark las Especificaciones del API