Son dos filosofías parecidas a la vez que distintas. Siempre diré que con C se aprende más a programar que con JAVA, lo que es programar.
JAVA lo que tiene son muchas clases predefinidas con sus métodos. Es decir, en lugar de programarte una determinada clase o método, lo que tienes que hacer es indagar o "estudiar" por así decirlo estas clases, sus métodos y la forma en la que interactúan unos con otros. Y con esto no digo que no se programe en JAVA, que se hace, pero sí digo que la gran parte de las cosas ya están hechas, sólo resta conocerlas y saber usarlas.
En C hay que currárselo más (de ahí que haya que empezar por abajo), y lo que es programar literalmente, se aprende más, precisamente porque según avanzas luchas más programando, no es tanto "estudiar" lo que ya hay hecho.
Personalmente cuando me inicié en JAVA no me pareció tanto un lenguaje de programación conociendo ya GW-Basic, Pascal y C++, sino una forma de aprender a programar interactuaciones de clases predefinidas. No digo qué es mejor ni peor, cada lenguaje tiene sus pros y sus contras.
Saludos.