February 15, 2012 at 19:02
Me encantan los arrays en php, son un saco en el que cabe de todo:
$datos = array(
'nombre' => 'Víctor',
'apellidos' => 'Jiménez',
'Cero',
'0' => 'Otro Cero',
1 => 'uno',
'dos',
'1' => 'UUUUNO'
);
foreach ($datos as $key => $value) { ?>
print "$key : $value \n";
}
Es curioso cómo se pueden mezclar claves escalares y asociativas en un mismo objeto. Y más curioso es ver cómo convierte ’0′ a 0. El código anterior muestra:
nombre: Víctor
apellidos: Jiménez
0: Otro Cero
1: UUUUNO
2: dos
1 Comentario
Publicado en Curiosidades, Programación, Tecnología, Warp
August 27, 2010 at 20:08
A principios de mes proponía un Acertijo Java.
¿Qué sale por pantalla al ejecutar la clase FooBar?
import static java.lang.System.*;
public class FooBar {
public FooBar() {
out.print(" Instance ");
}
static {
out.print(" Static ");
}
public static void main (String args) {
out.print(" Main ");
new FooBar();
}
}
Simplificando, lo que ocurre es lo siguiente:
- Se carga la clase FooBar en memoria
- Se ejecutan los bloques estáticos: static{}
- out.print(” Static “); está en un bloque estático
- Una vez cargada la clase, ya se pueden ejecutar métodos estáticos como main
- out.print(” Main “); está dentro del método main
- Se crea una instancia de la clase FooBar en el método main
- Para ello se ejecuta el constructor
- out.print(” Instance “); está en el constructor
Siguiendo este razonamiento, la opción correcta sería la c: “Static Main Instance”.
La opción c parece correcta, pero no se llega a ejecutar el método main. Recordemos la firma que tiene que tener el método main para ser la entrada de un programa java:
public static void main (String[] args) {}
Ha de ser esa o equivalente. ¿Ves la diferencia? El parámetro args tiene que ser un array [] de String, ya que representa los argumentos introducidos por línea de comandos. En la clase FooBar el parámetro args es simplemente un String.
Por ello, el código no se ejcutará. Java mostrará un error indicando que en la clase FooBar no existe un método main. Es por ello que la opción correcta era la f: No se ejecutará
En el día a día, un programador no sólo tiene que saber traducir ideas a código. En algunas ocasiones el código no se comporta como queremos y es cuando hay que buscar el detalle.
La agilidad con la que uno detecta pequeños detalles marca la diferencia. Algunos factores que afectan a esta agilidad son, la paciencia, saber escribir código claro, y sobre todo el conocimiento de las herramientas con las que uno trabaja.
Igual que hice en el otro post, animo a cualquiera a ponerse a prueba estudiando la certificación de Programador Java o acudir a uno de los cursos oficiales que imparto, es toda una experiencia.
1 Comentario
Publicado en Curiosidades, Eventos, Java, Programación, Publicidad, Warp
August 2, 2010 at 14:08
Volvemos después de la resaca de año nuevo con un acertijo java.
Suponiendo que el contenido del archivo FooBar.java es el siguiente… ¿Qué saldrá por pantalla al ejecutar la clase FooBar?
import static java.lang.System.*;
public class FooBar {
public FooBar() {
out.print(" Instance ");
}
static {
out.print(" Static ");
}
public static void main (String args) {
out.print(" Main ");
new FooBar();
}
}
- Main Static Instance
- Instance Static Main
- Static Main Instance
- Main Instance
- No compilará
- No se ejecutará
Hagan sus apuestas…
Antes de empezar a preparar la certificación SCJP (Sun Certified Java Programmer) no había caído en la cuenta de cuántas cosas desconocía de programación.
Estés preparando o no la certificación de programador, recomiendo la guía de Kathy Sierra. Además, si quieres que un experto en java (modestia aparte) te asista, puedes invitarme a tomar una cerveza, o apuntarte al curso oficial que impartiré en septiembre: SL-275-SE6 Java Programming Language
¡Date prisa, al tercero que me invite a una cerveza ya no hablaré coherentemente, y el curso tiene las plazas limitadas!
Un Saludo!
Actualizado: Puedes encontrar la solución aquí.
4 Commentarios
Publicado en Curiosidades, Eventos, Java, Programación, Publicidad, Warp