오늘은 자바의 확장열(Escape sequence - 이스케이프 시퀀스)와 문자열과 관련해서 헷갈리는 부분을 정리해본다.
문자열(String)을 콘솔에 출력하려고 하면 줄바꿈(개행), 띄어쓰기, 문장부호 사용이 마음대로 되지 않을 때가 있다. 이럴 때 발생하는 오류와 해결법, 문자열을 변수에 담아 사용 할 때 알아두어야 할 팁들을 정리 해 보았다.
✅ 자주 쓰이는 이스케이프 시퀀스 한눈에 보기
이스케이프 시퀀스 | 설명 |
\n | 줄의 맨 끝에서 사용. 줄바꿈(개행) 기능 |
\t | 스페이스바 4칸 만큼 띄어쓰기 |
\" | 이미 쌍따옴표로 감싸진 문자열 안에서 "를 문자 그대로 출력 |
\' | '를 문자 그대로 출력 |
\\ | 역슬래시(\)를 문자 그대로 출력 |
\ | 줄 합쳐서 한 줄로 출력 |
\s | 한 줄 글자 뒤쪽 공백을 그대로 남겨 놓음(공백 유지) |
✅ 1. 줄바꿈을 해주는 \n, 따옴표 안의 따옴표를 출력해주는 \", 문자열을 합쳐주는 +


긴 문장은 한 줄에 다 쓰기 어렵기 때문에 여러 줄로 끊어서 써 줄 수 있다. 여러 쌍따옴표(" ")안에 있는 문장들도 + 연산자로 연결하여 다음 줄에 계속 쓸 수 있다. 컴파일러는 + 연산자 로 연결된 문자열을 하나로 합치기 때문에 콘솔창에 한 줄로 출력하게 된다. \n 이 있는 위치에서 줄 바꿈이 일어난다.
그렇다면 이스케이프 시퀀스(\)를 쓰지 않으면 어떻게 될까?
두 번째 줄의 경우 내가 화면에 출력하고 싶은 문장은 하느님이 보우하사 "우리" 나라 만세이다.
하지만 이미 문자열 한줄이 ""으로 감싸져 있기 때문에, 안에 또 쌍따옴표를 써 주면 에러가 발생한다.
이 때 " 앞에 역슬래시(\)를 써 주면 콘솔창에 쌍따옴표를 그대로 출력할 수 있다.

✅ 2. 긴 문자열을 한번에 정의하는 텍스트 블록(Text Block)
위에서 본 것처럼 자바에서 문자열을 입력해 줄때는 큰 따옴표(" ")로 감싸 준다. 하지만 문자열이 길어지면 행마다 일일이 " "로 감싸고 끝에 +를 붙여주어야 하는 번거로움이 있다. 그리고 문자 안에 "나 \와 같은 특수문자가 있으면 이스케이프 시퀀스로 표현해야 하는 불편함도 있다.
그래서 자바 15에서 도입된 것이 긴 문자열을 한번에 정의하는 텍스트 블록이다. 텍스트 블록의 사용법은 간단하고 직관적이다. 따옴표 세개를 연달아 써서 """로 블록을 열어준 뒤, 문자열을 다 쓰고 """로 블록을 닫아 준다.


위 콘솔처럼 텍스트 블록을 사용하면 각 행을 ""로 감싸줄 필요도 없고 쌍따옴표를 출력할 때도 앞에 \를 붙이지 않아도 된다. 하지만 텍스트 블록 안에 쓰여진 문장은 쓰여진 그대로 화면에 출력되기 때문에, 입력할 때 개행한 부분은 자동으로 개행이 된다. 만약 텍스트 블록을 써서 개행하지 않고 아래 화면처럼 출력하고 싶으면 어떻게 해 주어야 할까?
동해물과 백두산이 마르고 닳도록 하느님이 보우하사 "우리" 나라 만세
무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세.
이 때 개행 방지를 위해 사용하는 것이 \(역슬래시) 이다.
문장 끝에 \를 붙여주면 해당 행과 그 아래 행이 붙어서 한 줄로 출력이 된다.


✅ 3. 뒤쪽 공백을 남기는 \s
위에서 배운 텍스트 블록으로 아래 문자열을 콘솔에 출력하고자 한다.
안녕 얘들아,
내 이름은 다인이야.
만나서 반가워.

위 코드처럼 작성을 해 주면 문제가 하나 생긴다.
'내 이름은' 뒤쪽에 띄어쓰기를 한 칸 해 주었으나, 콘솔에서는 이를 인식하지 못한다. 그리고 다음 문자열과 공백 없이 붙여서 출력해준다. 왜 그런 걸까? 보통 한 줄 끝에 있는 공백은 의도했다기 보다는 개발자가 입력 중에 실수로 삽입했거나 편집하다가 붙은 찌꺼기인 경우가 대부분이다. 그리고 출력해도 콘솔창에 보이지 않기 때문에 컴파일러가 자동으로 삭제해 버린다. 이 때 공백을 그대로 남겨 놓기 위해 사용하는 것이 이스케이프 시퀀스 \s이다.

\s 를 사용할 때 앞에 공백을 붙여주지 않아도 된다. 그냥 문자열 바로 뒤에 \s를 입력해주면 공백 한 칸이 있는 것으로 간주하고 한 칸 띄어쓰기가 된 상태로 출력된다.
'Java' 카테고리의 다른 글
[Java] this 키워드의 의미와 사용 방법 3가지(예시 코드 포함) (0) | 2024.04.19 |
---|---|
코딩에서의 스코프(Scope)란? (feat. 자바) (1) | 2024.04.19 |
[자바] 예시로 쉽게 이해하는 swtich-case문과 병합처리 (2) | 2024.03.29 |
[java] 자바 배열 생성하는 4가지 방법과 배열 출력하기 (2) | 2024.03.21 |
[Java] 자바 난수 생성, 랜덤한 수 - java.util.Random 클래스 , Math.random() 메서드 (0) | 2024.03.21 |
오늘은 자바의 확장열(Escape sequence - 이스케이프 시퀀스)와 문자열과 관련해서 헷갈리는 부분을 정리해본다.
문자열(String)을 콘솔에 출력하려고 하면 줄바꿈(개행), 띄어쓰기, 문장부호 사용이 마음대로 되지 않을 때가 있다. 이럴 때 발생하는 오류와 해결법, 문자열을 변수에 담아 사용 할 때 알아두어야 할 팁들을 정리 해 보았다.
✅ 자주 쓰이는 이스케이프 시퀀스 한눈에 보기
이스케이프 시퀀스 | 설명 |
\n | 줄의 맨 끝에서 사용. 줄바꿈(개행) 기능 |
\t | 스페이스바 4칸 만큼 띄어쓰기 |
\" | 이미 쌍따옴표로 감싸진 문자열 안에서 "를 문자 그대로 출력 |
\' | '를 문자 그대로 출력 |
\\ | 역슬래시(\)를 문자 그대로 출력 |
\ | 줄 합쳐서 한 줄로 출력 |
\s | 한 줄 글자 뒤쪽 공백을 그대로 남겨 놓음(공백 유지) |
✅ 1. 줄바꿈을 해주는 \n, 따옴표 안의 따옴표를 출력해주는 \", 문자열을 합쳐주는 +


긴 문장은 한 줄에 다 쓰기 어렵기 때문에 여러 줄로 끊어서 써 줄 수 있다. 여러 쌍따옴표(" ")안에 있는 문장들도 + 연산자로 연결하여 다음 줄에 계속 쓸 수 있다. 컴파일러는 + 연산자 로 연결된 문자열을 하나로 합치기 때문에 콘솔창에 한 줄로 출력하게 된다. \n 이 있는 위치에서 줄 바꿈이 일어난다.
그렇다면 이스케이프 시퀀스(\)를 쓰지 않으면 어떻게 될까?
두 번째 줄의 경우 내가 화면에 출력하고 싶은 문장은 하느님이 보우하사 "우리" 나라 만세이다.
하지만 이미 문자열 한줄이 ""으로 감싸져 있기 때문에, 안에 또 쌍따옴표를 써 주면 에러가 발생한다.
이 때 " 앞에 역슬래시(\)를 써 주면 콘솔창에 쌍따옴표를 그대로 출력할 수 있다.

✅ 2. 긴 문자열을 한번에 정의하는 텍스트 블록(Text Block)
위에서 본 것처럼 자바에서 문자열을 입력해 줄때는 큰 따옴표(" ")로 감싸 준다. 하지만 문자열이 길어지면 행마다 일일이 " "로 감싸고 끝에 +를 붙여주어야 하는 번거로움이 있다. 그리고 문자 안에 "나 \와 같은 특수문자가 있으면 이스케이프 시퀀스로 표현해야 하는 불편함도 있다.
그래서 자바 15에서 도입된 것이 긴 문자열을 한번에 정의하는 텍스트 블록이다. 텍스트 블록의 사용법은 간단하고 직관적이다. 따옴표 세개를 연달아 써서 """로 블록을 열어준 뒤, 문자열을 다 쓰고 """로 블록을 닫아 준다.


위 콘솔처럼 텍스트 블록을 사용하면 각 행을 ""로 감싸줄 필요도 없고 쌍따옴표를 출력할 때도 앞에 \를 붙이지 않아도 된다. 하지만 텍스트 블록 안에 쓰여진 문장은 쓰여진 그대로 화면에 출력되기 때문에, 입력할 때 개행한 부분은 자동으로 개행이 된다. 만약 텍스트 블록을 써서 개행하지 않고 아래 화면처럼 출력하고 싶으면 어떻게 해 주어야 할까?
동해물과 백두산이 마르고 닳도록 하느님이 보우하사 "우리" 나라 만세
무궁화 삼천리 화려강산 대한사람 대한으로 길이 보전하세.
이 때 개행 방지를 위해 사용하는 것이 \(역슬래시) 이다.
문장 끝에 \를 붙여주면 해당 행과 그 아래 행이 붙어서 한 줄로 출력이 된다.


✅ 3. 뒤쪽 공백을 남기는 \s
위에서 배운 텍스트 블록으로 아래 문자열을 콘솔에 출력하고자 한다.
안녕 얘들아,
내 이름은 다인이야.
만나서 반가워.

위 코드처럼 작성을 해 주면 문제가 하나 생긴다.
'내 이름은' 뒤쪽에 띄어쓰기를 한 칸 해 주었으나, 콘솔에서는 이를 인식하지 못한다. 그리고 다음 문자열과 공백 없이 붙여서 출력해준다. 왜 그런 걸까? 보통 한 줄 끝에 있는 공백은 의도했다기 보다는 개발자가 입력 중에 실수로 삽입했거나 편집하다가 붙은 찌꺼기인 경우가 대부분이다. 그리고 출력해도 콘솔창에 보이지 않기 때문에 컴파일러가 자동으로 삭제해 버린다. 이 때 공백을 그대로 남겨 놓기 위해 사용하는 것이 이스케이프 시퀀스 \s이다.

\s 를 사용할 때 앞에 공백을 붙여주지 않아도 된다. 그냥 문자열 바로 뒤에 \s를 입력해주면 공백 한 칸이 있는 것으로 간주하고 한 칸 띄어쓰기가 된 상태로 출력된다.
'Java' 카테고리의 다른 글
[Java] this 키워드의 의미와 사용 방법 3가지(예시 코드 포함) (0) | 2024.04.19 |
---|---|
코딩에서의 스코프(Scope)란? (feat. 자바) (1) | 2024.04.19 |
[자바] 예시로 쉽게 이해하는 swtich-case문과 병합처리 (2) | 2024.03.29 |
[java] 자바 배열 생성하는 4가지 방법과 배열 출력하기 (2) | 2024.03.21 |
[Java] 자바 난수 생성, 랜덤한 수 - java.util.Random 클래스 , Math.random() 메서드 (0) | 2024.03.21 |