public class Test {
public String toString() {//重写toString方法
System.out.print("I ");//输出字符"I"
return "java ";//返回“Java”字符串
}
public static void main(String[] args) {
System.out.println("LOVE "+new Test());
}
}
你在toString中先在控制台输出的I后return的java,那么实际执行的时候一定是先执行输出I再执行return操作,所以I输出在java之前这是没有毛病的
整个System.out.println("LOVE "+new Test());的执行过程是这样的:
发现println()方法中有调用其他方法,先执行其他方法
执行new Test()创建Test类的实例
执行Test类的实例的toString()方法
toString() 执行到 System.out.print("I "), 输出 "I"
toString() 返回字符串"java",toString()出栈,回到println()方法
执行 System.out.println("LOVE "+"java)"); 输出"LOVEjava"
println()方法出栈
main()方法出栈
执行结束