Hola a todos tengo una duda con el siguiente codigo. Ojala me puedan ayudar a comprender.
package Dudas; import java.util.*; class WaterSource{ private String s; WaterSource(){ System.out.println("WaterSource()"); s="Constructed"; } public String toString(){ System.out.println("entre aqui 1"); return s; } } public class Duda1 { private String valve1,valve2; private WaterSource source =new WaterSource(); private int i; private float f; public String toString(){ System.out.println("entre aqui 2"); return "valve1= " + valve1 + " " + "valve2= " + valve2 + " " + "i= " + i + " " + "f= " + f + " " + "source= " + source; } public static void main(String[] args){ Duda1 duda1= new Duda1(); System.out.println(duda1); } }
la salida es la siguiente: WaterSource() entre aqui 2 entre aqui 1 valve1= null valve2= null i= 0 f= 0.0 source= Constructed
Mi duda es en que momento el metodo toString() de la clase WaterSource le asigna el valor de "s" a la referencia "source" para que dicha referencia cambie a un objeto de tipo String(Ya que originalmente "source" apuntaba a un objeto de tipo WaterSource) y luego imprimirlo en pantalla.
El método toString se llama automáticamente cuando hace falta un string . Al usar un operador de concatenación si un operando es un string se crean strings para los otros que no lo son
Hola a todos tengo una duda con el siguiente codigo. Ojala me puedan ayudar a comprender.
package Dudas;
import java.util.*;
class WaterSource{
private String s;
WaterSource(){
System.out.println("WaterSource()");
s="Constructed";
}
public String toString(){
System.out.println("entre aqui 1");
return s;
}
}
public class Duda1 {
private String valve1,valve2;
private WaterSource source =new WaterSource();
private int i;
private float f;
public String toString(){
System.out.println("entre aqui 2");
return
"valve1= " + valve1 + " " +
"valve2= " + valve2 + " " +
"i= " + i + " " +
"f= " + f + " " +
"source= " + source;
}
public static void main(String[] args){
Duda1 duda1= new Duda1();
System.out.println(duda1);
}
}
la salida es la siguiente:
WaterSource()
entre aqui 2
entre aqui 1
valve1= null valve2= null i= 0 f= 0.0 source= Constructed
Mi duda es en que momento el metodo toString() de la clase WaterSource le asigna el valor de "s" a la referencia "source" para que dicha referencia cambie a un objeto de tipo String(Ya que originalmente "source" apuntaba a un objeto de tipo WaterSource) y luego imprimirlo en pantalla.