如果我有一个具有toString方法的对象数组并且我使用for循环打印数组(例如:简单地array[i]
来到达对象并执行System.out.println(array[i])
)将使用toString方法被自动调用?它似乎是,但我只想检查这是发生了什么。
答案 0 :(得分:5)
是的,它会。
事实上,通过隐式调用.toString()
来实现这一点的好处是可以在不抛出异常的情况下处理空值。如果array[i]
为null
,则then System.out.println(array[i])
将打印null
,其中System.out.println(array[i].toString())
会引发NullPointerException
。
这是因为System.out.println(object)
方法调用System.out.print(object)
调用String.valueOf(object)
,后者又调用object.toString()
。
答案 1 :(得分:1)