为什么先输出的是I 而不是Love

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