今天遇到了toString()的一些问题,查看资料并做了如下总结:
第一,System.out.println()所能接收的参数是一些基本类型的参数和String类型的参数,当参数不是这些类型的时候,执行System.out.println()方法时会调用类里面的toString()方法,输出的内容就是toString()方法的返回值。下面通过一个重写toString()方法来证明执行System.out.println()参数不是以上类型时的时候,调用了toString()方法来进行输出的:
Dog d=new Dog(5);
System.out.println(d);
@Override//重写toString()方法public String toString() {
return "dfdf";
}
这里的参数类型是Dog类型,所以会调用这个类的toStrint()值得注意的是这里返回的值,我并不是给它设定为return "Dog [Age=" + Age + "]";,因为这样更能证明,执行System.out.println()的时候是调用了toString()方法。
输出结果为dfdf;
第二,toString()方法是基础Object来的,这个返回的是这个对象的内存地址。也就是说如果你没有重写这个方法的话,那么在你执行System.out.println()这个语句是,它会调用
toString()方法,由于你没有重写这个方法,所以你在执行System.out.println()的时候输出的是对象的地址下面例子可以证明
Dog d=new Dog(5);
System.out.println(d);
输出text.Dog@2a139a55