gerard = odrarg

En nuestro mundo, sea lo que sea lo que la mente humana pueda crear puede ser reproducido y distribuido infinitamente sin ningun costo.

Historia de un Letrero

By odrarg

Static explicito en Java

By odrarg


Java permite agrupar todas las inicializaciones estáticas dentro de una "cláusula de construcción estática" (llamada a veces bloque estático) dentro de una clase. Tiene la siguiente apariencia:


Class Cuchara {
static int i;
static {
i = 47;
}
}


Parece un método, pero es simplemente la palabra clave static seguida de un cuerpo de método.
Este código, como otras inicializaciones estáticas, se ejecuta sólo una vez, la primera vez que se cree un objeto de esa clase o la primera vez que se acceda a un miembro estático de esa clase (incluso si nunca se llega a hacer un objeto de esa clase). Por ejemplo:

 
class Taza {

Taza (int marcador) {
System.out.println ("Taza (" + marcador + " ) ") ;
}

void f (int marcador){
System.out.println ("f(" + marcador + ")");
}
}

class Tazas {

static Taza cl;
static Taza c2;

static {
cl = new Taza(1);
c2 = new Taza(2);
}

Tazas ( ) {
System.out.println ("Tazas ( ) " ) ;
}
}

public class StaticExplicito {
public static void main(String[] args) {
System.out.println ("Dentro de main ( ) " ) ;
//Tazas.cl.f(99); // (1)
}

//static Tazas x = new Tazas (); // ( 2 )
//static Tazas y = new Tazas (); // (2)
}



Los inicializadores estáticos de Tazas se ejecutan cuando se da el acceso al objeto estático cl en la línea marcada (l), si la línea (1) se marca como un comentario, y se quita el signo de comentario de las líneas marcadas como (2). Si tanto (1) como (2) se consideran comentarios, la inicialización estática de Tazas no se realizará nunca. Además, no importa si una o las dos líneas marcadas (2) dejan de ser comentarios; la inicialización sólo ocurre una vez.

Creación de Objetos en Java

By odrarg

Explicación acerca del creación de un objeto.

En java todo se trata como un objeto pero aunque se trata todo como un objeto, el identificador que se manipula es una "referencia" a un objeto1.

Se podría imaginar esta escena como si se tratara de una televisión (el objeto) con su mando a distancia (la referencia). A medida que se hace uso de la referencia, se está conectado a la televisión, pero cuando alguien dice "cambia de canal" o "baja el
volumen", lo que se manipula es la referencia, que será la que manipule el objeto. Si desea moverse por la habitación y seguir controlando la televisión, se toma el mando a distancia (la referencia), en vez de la televisión. Además, el mando a distancia puede existir por sí mismo, aunque no haya televisión. Es decir, el mero hecho de tener una referencia no implica necesariamente la existencia de un objeto conectado
al mismo. De esta forma si se desea tener una palabra o frase, se crea una referencia String:


String S;


Pero esta sentencia solamente crea la referencia, y no el objeto. Si se decide enviar un mensaje a S en este momento, se obtendrá un error (en tiempo de ejecución) porque S no se encuentra, de hecho,
vinculado a nada (no hay televisión). Una práctica más segura, por consiguiente, es inicializar la referencia en el mismo momento de su creación:


String S = "asdf';


Sin embargo, esta sentencia hace uso de una característica especial de Java: las cadenas de texto pueden inicializarse con texto entre comillas. Normalmente, es necesario usar un tipo de inicialización más general para los objetos.

Cuando se crea una referencia, se desea conectarla con un nuevo objeto. Así se hace, en general, con la palabra clave new, que dice "Créame un objeto nuevo de éstos". Por ello, en el ejemplo anterior se puede decir:


String s = new String ( "asdf") ;


Esto no sólo significa "Créame un nuevo String", sino que también proporciona información sobre cómo crear el String proporcionando una cadena de caracteres inicial.

Fuente: Piensa en Java (bruce ekel).