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 ";
}
}
为了说明java中代码的执行顺序。
new ToStringTest()会创建一个ToStringTest的对象;
"Love"+ new ToStringTest(),由于对象不是string,这里系统会自动调用对象的toString方法。
最终会输出:I Love java me 2
这是JAVA程序,上面的回答为正确结果,我运行过了
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
public class ToStringTest { //创建类
static int i =1; //定义静态变量int类型(也称为全局变量-所有该类的对象对其操作都是有效的)
public static void main(String[] args){ //main程序执行主函数
System.out.println("Love"+ new ToStringTest()); //相当于System.out.println("Love"+ new ToStringTest().toString());
ToStringTest a = new ToStringTest(); //创建对象a,此时i=1
a.i++; //将全局变量累加1,i=2
System.out.println("me "+a.i); //打印结果
}
public String toString(){ //ToStringTest类的成员函数toString
System.out.println("I "); //打印I并换行
return "java "; //函数调用的结果返回值
}
}