Programming Language/Java

[Java] printf에서 %n과 \n의 차이점

LeeJaeJun 2023. 12. 31. 01:43
728x90
반응형
System.out.printf("%d%n", 123);
System.out.printf("%d\n", 123);

%n과 \n 모두 줄 바꿈을 표현하는데 사용됩니다. VSC에서 실행하는 경우 결과값에 이 차이점이 없어 보입니다.

하지만 이 둘은 플랫폼에 따라 차이점이 있을 수 있습니다.

 

%n은 플랫폼에 따라서 줄바꿈을 처리하는 방식에 따라 다른 줄바꿈 문자를 출력합니다. 예를 들어, Windows 운영체제에서는 %n이 "\r\n"으로 처리되어 출력됩니다. 따라서, %n을 사용하면 어떤 운영체제에서든 일관성 있는 줄바꿈을 표현할 수 있습니다.

*\r은 캐리지 리턴(Carriage Return)을 나타내는 이스케이프 시퀸스. 이전에 출력한 문자열의 맨 앞으로 커서를 이동시킨다.

예를 들어,

System.out.print("Hello, World!\r");
System.out.print("Goodbye!");

위 코드의 결과 값은 GoodBye! World!인데 \r으로 인해 Hello, World!가 출력된 후에 커서가 맨 앞으로 가서 덮어쓰게 되었기에 발생한 결과다.

 

 

반면에, \n은 항상 줄바꿈 문자를 나타냅니다. 즉, 어떤 플랫폼에서든 항상 "\n"이 출력됩니다. 그러나 이것은 운영체제에 따라 줄바꿈 문자가 다를 수 있는 경우에는 일관성 있는 출력을 보장하지 않습니다.

 

따라서, 일반적으로는 %n을 사용하여 줄바꿈을 표현하는 것이 더 좋습니다. 그러나, 특정한 경우에는 \n을 사용하는 것이 적절할 수도 있습니다. 예를 들어, 웹사이트와 같이 특정한 플랫폼에서 실행되는 것이 아니라, 여러 플랫폼에서 접근이 가능한 경우에는 \n을 사용하는 것이 좋을 수 있습니다.

728x90
반응형