"correto" depende do que exatamente você está tentando fazer.
\ n sempre fornecerá um final de linha "estilo unix". \ r \ n sempre fornecerá um final de linha "estilo dos". % n fornecerá o final da linha para a plataforma em que você está executando
C lida com isso de forma diferente. Você pode escolher abrir um arquivo no modo "texto" ou "binário". Se você abrir o arquivo no modo binário, \ n terá um final de linha "estilo unix" e "\ r \ n" fornecerá um final de linha "estilo dos". Se você abrir o arquivo no modo "texto" em um sistema DOS / Windows, quando você escrever \ n, o código de manipulação do arquivo o converterá em \ r \ n. Portanto, abrindo um arquivo em modo de texto e usando \ n, você obtém o final de linha específico da plataforma.
Posso ver por que os designers de java não queriam replicar as idéias hacky de C em relação aos modos de arquivo "texto" e "binário".