본문 바로가기
Baeldung번역&공부/Java-string

줄바꿈에 대하여(Adding a Newline Character to a String in Java)

by ms727 2025. 2. 1.

원본 글: https://www.baeldung.com/java-string-newline

 

1. Adding Newline Characters in a String

운영체제마다 줄바꿈에 대한 특수문자가 다릅니다.

예를 들어, 리눅스는 '\n'가 줄바꿈을 의미하고, 윈도우는 '\r\n'가 줄바꿈을 의미합니다. 윈도우에서는 이런 문자를 Carriage Return 또는 CRLF라고 부릅니다.

 

Java에서는 줄바꿈을 할 때 '\n','\r',"\r\n"을 문자열 끝에 추가하면 됩니다.

 

1.1 Using CRLF Line-Breaks

만약 Linux/Unix/Mac의 운영체계라면 "\n"를 사용해서 줄바꿈을 할 수 있습니다.

 

@Test
public void new_line_mac() {
    String line1 = "Humpty Dumpty sat on a wall.";
    String line2 = "Humpty Dumpty had a great fall.";
    String rhyme = line1 + "\n" + line2;
    System.out.println(rhyme);
}

 

그리고 현재 글을 쓰는 저는 window운영체제여서 \r\n으로 줄바꿈을 할 수 있지만 "\r"을 이용해서는 불가능합니다.

"\r"은 mac에서만 가능합니다.

 

@Test
public void new_line_window() {
    String line1 = "Humpty Dumpty sat on a wall.";
    String line2 = "Humpty Dumpty had a great fall.";
    String rhyme = line1 + "\r" + line2;
    System.out.println(rhyme);
}

 

1.2 Using Platform Independent Line Separators

 

시스템 상수를 활용해서 줄바꿈을 할 수 있습니다. 위의 값과 다르게 운영체제와는 상관없이 줄바꿈을 제공합니다.

 

@Test
public void new_line_by_system_option() {
    String line1 = "Humpty Dumpty sat on a wall.";
    String line2 = "Humpty Dumpty had a great fall.";
    String rhyme = line1 + System.lineSeparator() + line2;
    String rhyme2 = line1 + System.getProperty("line.separator") + line2;
    System.out.println(rhyme);
    System.out.println(rhyme2);
}

 

application.properties를 사용하지 않아도 기본적으로 설정되어있는 값들을 사용합니다.

1.3 Using Platofrm Independent Newline Characters

위에서는 시스템 상수를 이용해서 운영체제와 독립적인 줄바꿈을 제공했지만, 문자열을 잇는 추가 작업이 필요합니다.

한 문자열안에 운영체제와 독립적인 줄바꿈을 제공할 수 있는 방법이 있습니다.

보통 많이 사용하는 System.out.printf() 또는 String.format()에서의 '%n'을 이용해서 줄바꿈을 적용할 수 있습니다.

@Test
public void new_line_by_character() {
    String rhyme = String.format("Humpty Dumpty sat on a wall.%nHumpty Dumpty had a great fall.");
    System.out.println(rhyme);
}

2. Adding Newline Characters in an HTML Page

HTML 페이지에서는 <br>태그를 통해서 줄바꿈을 할 수 있습니다.

또한 Unicode 문자인 "&#13;"(Carriage Return)과 "&#10;"(Line Feed)를 사용할 수 있습니다. 대신 이 값들은 운영체제마다 다르게 동작할 수 있어서 <br>태그로 줄바꿈을 하는게 좋습니다.

추가적으로 "\n"도 일부 HTML요소에 사용하여 줄바꿈을 할 수 있습니다.

 

- <br>태그 사용

rhyme = line1 + "<br>" + line2;

 

- "\n" 사용

rhyme = line1 + "\n" + line2;

이 경우 <pre>나 <textarea> 태그안에 사용해야합니다.

 

- Unicode사용

 

rhyme = line1 + "&#13;" + line2;
rhyme = line1 + "*#10;" + line2;

이 경우 <textarea>태그 안에 사용해야합니다.

3. The Difference Between \n and \r

\r의 ASCII 값은 13(CR), \n의 ASCII값은 10(LF)입니다. 

둘 다 줄바꿈을 하지만 운영체제마다 다르게 동작합니다.

윈도우에서는 두 문자를 이용해서 줄바꿈을 합니다(CR +LF). Unix계열은 하나의 문자만 사용해서 줄바꿈을 합니다.(LF)

자바에서는 운영체제에 따라 줄바꿈을 다르게 인식하므로 이러한 리스크를 피하려면 시스템 상수를 이용하여 줄바꿈을 진행하면 됩니다.

4. 결론

Java에서 줄바꿈에 대한 글을 작성하였습니다.

운영체제마다 줄바꿈에 대한 문자가 다르기에 시스템 상수를 이용한 줄바꿈 예제도 보았습니다.

마찬가지로 String.format()에서의 "%n"을 이용한 줄바꿈에 대해서도 확인하였습니다.