= { ... }

martes, marzo 20, 2007

Promoción aritmética

Qué pasa con los variables de tipos primitivos distintos cuando se operan mediante un operador binario? Promoción aritmética.

La promoción aritmética sigue estos pasos:

  1. if (alguno de los operandos es de tipo double){
  2. convertir el otro a tipo double
  3. }else if(alguno de los operandos es de tipo float){
  4. convertir el otro a tipo float
  5. }else if(alguno de los operandos es de tipo long){
  6. convertir el otro a tipo long
  7. }else{
  8. convertir el otro a tipo int
  9. }


Se puede observar que todo operador binario para tipos primitivos convertirá automáticamente a los operandos por lo menos a int.

  1. short s = 10;
  2. byte b = 9;
  3. int c = s + b;


Parece una chorrada, pero saberlo nos permite anticipar el tipo que se devolverá al operar dos variables. Así no tendremos que esperar a que eclipse nos indique que hay un error en una maldita suma de dos variables.

sábado, marzo 17, 2007

Actualizando

Otra vez son casi las 02:00, insomnio? No, viernes! Un par de cosas sobre el blog:

  1. He añadido un linkrolls de mi del.icio.us al final de la página.
  2. He añadido un badge de flickr con las imagenes del proyecto helusinfa.
Mañana por la mañana toca seguir con SCJP, así que espero poder postear algo a lo largo del día.

miércoles, marzo 14, 2007

Sacar la basura

Java, gracias a dios, abstrae al programador de la tarea de gestionar la memoria. Pero como todo en la vida, esto tiene un precio: alguien se tiene que encargar de ello por nosotros. Quien? Garbaje Collector (GC en adelante), o como yo lo llamaría el camión de la basura. Camión de la basura? Joder, este tío se ha vuelto idiota. Pues no. La analogía tiene cierto sentido:

Si vemos al GC como un camión de la basura, entonces que somos nosotros? Pues ni más ni menos el hijo pequeño que se encarga de sacar la basura de su familia hasta el contenedor mas próximo. Como? Si, en nuestro código podemos tirar objetos a la basura. Dos maneras:

  1. miObjeto = null;
  2. miObjeto = new OtraClaseViable();
De las dos formas consigo que el objeto al que apuntan las variables se quede sin referencias. Ya hemos caminado hasta el cubo, arrojado la bolsa en el cubo, e incluso cerrado la tapa.
El problema esta en que el camión pasará cuando le venga en gana, o puede que incluso no pase. Así es el GC: imprevisible. Alguna solución? Si, podemos tratar de llamar al ayuntamiento para avisar de que queremos que se recoja la basura. Dos maneras:
  1. System.gc();
  2. Runtime.getRuntime().gc();
El ayuntamiento pasará el aviso al camión de la basura (GC), que otra vez volverá a pasar o no, según le venga en gana. En general pasará, pero no se puede confiar en él.

Un último punto, que pasa si queremos asegurarnos de que lo que tiro a la basura no se lleva consigo cosas de valor? Podemos decir al basurero que abra la basura y compruebe que no quede nada de valor. En que se traduce esto: sobrescribir el método finalize(). Este método garantiza que será invocado antes de que el objeto sea llevado por el camión de la basura al vertedero, aunque con varias peculiaridades:
  1. finalize() solo será invocado una única vez: si reclamamos nuestro objeto de vuelta, la próxima vez que se marque como basura el método finalize() no se ejecutará.
  2. no te fíes del basurero y menos del finalize(), si tiras algo a la basura asegúrate antes de que realmente no se lleva nada de valor, sin esperar o confiar en este método.
Por algo de valor, me refiero por ejemplo a alguna conexión abierta (de cualquier tipo), un recurso no liberado, etc.

Día inspirado ;)

Para tutoriales de verdad :
  1. http://java.sun.com/docs/hotspot/gc1.4.2/
  2. http://www-128.ibm.com/developerworks/library/j-jtp01274.html

martes, marzo 13, 2007

Septiembre 2006 / Marzo 2007

El progreso consiste en renovarse.
Varios meses se han ido, perdí el interés. Quizá es que no tenia nada que decir. Y quizá ahora si.

Para los que alguna vez se hayan fijado en el tagline, habrán notado que ha cambiado, de mis n temas de interés me he quedado solo con uno: java. Y además, centrado en mi preparación para afrontar el examen SCJP para la plataforma J2SE 5.

Antes solía prometer en este blog, cosas del estilo: voy a , tengo en mente, haré .... y supongo que para no perder la costumbre ahí va una más: prometo anotar diariamente mis avances en el camino para ser un SCJP.

Empiezo hoy mismo, pero después de dormir, esto de estar de baja me ha cambiado el sueño pero ya sea acaba, en un día vuelta al tajo.

Por cierto, que he retomado también el proyecto helusinfa en su vertiente artística, como siempre podéis conocer las nuevas entregas en flickr.

newuni @ delicious