String.valueOf(Object obj)
此方法返回 Object 参数的字符串形式,如果参数为 “null”,返回“null”,否则返回objtoString()的值。
1、因为参数是Object类型,所以任何一种数据类型的对象都可以放进去,只要它是对象就行;
2、放进去之后,会调用这个对象的toString方法;
3、这里有多态存在:
比方说有个Date类,重写了toString方法,
Date d = new Date(2012,11,20);
Stirng str = String.valueOf(d);// 相当于d.toString();
此时,d 本身的类型消失了,我们只能看到d作为Object类型专有的那些方法。
调用toString方法时,本来是应该调用Object的toString方法的,但是由于它重写了toString方法,动态绑定,实际给什么对象就调用这个对象的什么方法。
这里是存在多态的:1)有继承:Date继承了Object 2)有重写:重写了toString方法 3)父类引用指向子类对象:obj是父类引用,实际当中传的是子类对象d