(一)源码示例
package com.mession;
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";
}
}
输出结果
(二)分析
一般我们遇到一个新的技能或者新的概念时,一般要从三个方面去问自己:
1.是什么?
2.为什么?
3.怎么做?
1.是什么
(1)toString
toString()属于java lang 包下Object类中的方法,文档说明如下
- 因为所有类都要继承Object类,所以所有对象中都有这个方法,它通常只是为了方便输出,比如System.out.println(xx),括号里面的“xx”如果不是String类型的话,就自动调用xx的toString()方法,这样就不用每次输出都自己去转成String类型了
- 总而言之,它只是sun公司开发java的时候为了方便所有类的字符串操作而特意加入的一个方法
2.为什么
- 首先是一个静态常量 i,static修饰的成员或代码块在类加载的时候会进行内存申请
- main()方法是程序的入口,第一行代码是输出语句而且后面new了一个该类的对象,所以使用该类的toString方法,先在toString()中打印"I",然后+“love”,再加toString()的返回值,下一步对成员i加1,最后打印出me
2。
注意:java中输出对象名,相当于默认调用toString()方法
3.怎么做
验证如下:
- 输出对象名时调用toString()方法
- System.out.println()括号中不是String类形时调用toString方法
package com.mession;
public class ToStringTest02 {
public static void main(String[] args) {
int test = 100;
System.out.println(new ToStringTest02());
//输出结果:我被调用了
System.out.println(test);
//输出结果:100
}
public String toString(){
return "我被调用了";
}
}