1.a) h: s:Sin nombre,i:1 p: s:padre a1: s:abuelo a2: s:Sin nombre,i:2 h: s:Sin nombre,i:1 1.b) 4.5 equals 4.5 ds:[3.1, 4.5] ds:[3.1, 4.5] c:e public static void main(String[] args) { Double d1 = 4.5; <----------------------------------- Creación Double d2 = 4.5; <----------------------------------- Creación if (d1.equals(d2)) System.out.println(d1 + " equals " + d2); if (d1==d2) System.out.println(d1 + " == " + d2); Double[] ds = new Double[2]; <----------------------- Creación ds[0] = new Double(3.1); <--------------------------- Creación ds[1] = d2; System.out.println("ds:" + Arrays.toString(ds)); d1 = 2.4; <---------------------------------- Creación de 2.4 y basura 4.5 d2 = d1; System.out.println("ds:" + Arrays.toString(ds)); char c='a'; //c = c + d2 + d1; <-------------------------------- ERROR c = (char)(c + d2 + d1); //c = c + (char)d2 + d1; <------------------------------ ERROR System.out.println("c:" + c); } Además se produce creación de strings en todos los println.