Я использовал неявный вызов toString, когда вам нужна некоторая отладочная информация об объекте, потому что в случае, если объект имеет значение null, он не генерирует исключение.
Например:
System.out.println("obj: "+obj);
вместо:
System.out.println("obj: "+obj.toString());
Есть ли какая-либо разница, кроме нулевого случая?
Может ли последний случай работать, когда первый не делает?
Edit:
Что именно делается, в случае неявного вызова?