Hola,
Como indica CapacProg solamente es necesario formatear una fecha cuando se imprime en una salida, pero también es necesario algunas veces para leerla. Por ejemplo usando el código de CapacProg:
En ese caso estás leyendo una fecha con formato y volviendo a dar formato en el momento de imprimirlo en pantalla. Internamente la fecha se guarda como un número que indica el número de segundo en que estamos desde 1970.
Pero realmente el problema está en la forma que estas usando Java y el OS, por lo que no puedes usar la fecha dd-MM-yyyy directamente sin usar DateFormat es porque no tienes bien configurado el lugar y el idioma en tu sistema operativo o en tu programa. De otra forma Java no necesita darle formato porque usa el nacional, que en otros países es dd/MM/yyyy. Y normalmente este trae varias consecuencias adicionales internamente puesto que usas fechas y números con un formato y en otros lugares del programa otro.
Saludos,