Object是一个抽象类,他有很有方法,其中的toString方法是我们常见的一个方法,我们可以看这段代码

package com.com.day1;

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.print("I ");
return "java";
}
}

其执行结果为:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 JAVA的toString方法的一个小例子 随笔 第1张

那么为什么会出现上面的运行结果?

首先我们可以在JAVA API文档中查找Object类里面的toString方法;

JAVA的toString方法的一个小例子 随笔 第2张

 

 看不懂了?没关系,我们来实现一下:

package com.com.day1; public class ToStringTest { static int i=1; public static void main(String args[]){ System.out.println(new ToStringTest()); } }

JAVA的toString方法的一个小例子 随笔 第3张

总结:当我们直接调用对象的时候会输出 类名@对象的哈希码

再来一个测试

package com.com.day1; public class ToStringTest { static int i=1; public static void main(String args[]){ System.out.println(new ToStringTest()); } public String toString(){ return "java"; } }

JAVA的toString方法的一个小例子 随笔 第4张

总结:当我们重写toString方法时会return返回对应的字符串

再来一个测试

package com.com.day1; public class ToStringTest { static int i=1; public static void main(String args[]){ System.out.println("love "+new ToStringTest()); } public String toString(){ return "java"; } }

JAVA的toString方法的一个小例子 随笔 第5张

总结:toString方法可以通过+和其他类型连接起来而且是转为字符串类型连接

这样我们就有头绪了,再看这个测试

package com.com.day1; public class ToStringTest { static int i=1; public static void main(String args[]){ System.out.println("love "+new ToStringTest()); } public String toString(){ System.out.print("I "); return "java"; } }

JAVA的toString方法的一个小例子 随笔 第6张

总结:在输出之前会调用toString方法,解析这个方法时会先输出 I 之后再输出 love java

package com.com.day1; public class ToStringTest { static int i=1; public static void main(String args[]){ ToStringTest a=new ToStringTest(); a.i++; System.out.println("me "+a.i); } public String toString(){ System.out.print("I "); return "java"; } }

JAVA的toString方法的一个小例子 随笔 第7张

有个疑问?为何这个地方ToStringTest a=new ToStringTest()没有调用这个方法?

总结:在用System.out.println();z输出该类的时候(有点想c++cout的重载),会调用toString函数。将该类与String类拼接时也会调用该类。

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄