3. toString()方法
3.1 toString()的使用:
1. 当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
*
* 2. Object类中toString()的定义:
* public String toString() {
return getClass().getName() + "@" + Integer.toHexString(hashCode());
}
*
* 3. 像String、Date、File、包装类等都重写了Object类中的toString()方法。
* 使得在调用对象的toString()时,返回"实体内容"信息
*
* 4. 自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"
3.2 如何重写toString()
举例:
//自动实现
@Override
public String toString() {
return "Customer [name=" + name + ", age=" + age + "]";
}
当我们输出一个对象的引用时,实际上就是调用当前对象的toString()
例子:
//关于toString()
@Test
public void test3(){
String s = "abc";
s = null;
System.out.println(s);//null
System.out.println("*********");
System.out.println(s.toString());//出现NullPointerException
}
问题:为什么System.out.println(s)输出的是null,而System.out.println(s.toString())输出的却是NullPointerException(空指针异常)
回答:
进入查看string中的println的源码
进去查看print()的源码
可以看到这里有一个保护机制,如果形参s为空,则输出"null"字符串而不是报空指针异常
而
s.toString()
则会指向空指针