Cómo capitalizar el primer carácter de cada palabra en una cadena

¿Existe una función integrada en Java que capitaliza el primer carácter de cada palabra en una cadena y no afecta a las otras?

Ejemplos:

jon skeet ->Jon Skeetmiles o'Brien ->Miles O'Brien (B sigue siendo capital, esto descarta el caso del título)old mcdonald ->Old Mcdonald*

* (Old McDonald se encontraría también, pero no espero que sea TAN inteligente.)

Un rápido vistazo a laDocumentación de la cadena de Java solo revelatoUpperCase() ytoLowerCase(), que por supuesto no proporcionan el comportamiento deseado. Naturalmente, los resultados de Google están dominados por esas dos funciones. Parece una rueda que ya debe haber sido inventada, por lo que no podría hacer daño preguntar, así que puedo usarla en el futuro.

Respuestas a la pregunta(30)

Su respuesta a la pregunta