New 2 Java: Suplementos

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

  1. Crea un programa que haga un bucle por todos los argumentos de la l�nea de comandos para crear una lista delimitada por comas.
  2. Usa un StringBuffer como el contenedor de la lista. Asegurate de que no hay ninguna coma despu�s del �ltimo elemento.
  3. 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:

    1. Ejemplarizar el objeto Date: Date d = new Date();
    2. Llamar al m�todo getTime sobre ese objeto y asignarlo a una referencia Timestamp : Timestamp ts = (d.getTime());
    3. 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.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
SIGUIENTE ARTÍCULO