public class ToStringTest {
static int i =1;
public static void main(String[] args){
System.out.println("Love"+ new ToStringTest());
ToStringTest a = new ToStringTest();
a.i++;
System.out.println("me "+a.i);
}
public String toString(){
System.out.println("I ");
return "java ";
}
}
因为执行 "Love"+ new ToStringTest() 时,需要先把这个对象转换为字符串,这时就会调用对象的toString方法,所以先输出了 I
System.out.println()先计算括号里的参数,而这个括号里有函数,所以先调用它(这时输出了“I”),然后再输出。
System.out.println("Love"+ new ToStringTest());
相当于
System.out.println("Love"+ (new ToStringTest()).toString());
相当于
String temp = (new ToStringTest()).toString();
System.out.println("Love"+ temp);
所以可见,I会先输出,然后是Love java