2026년 02월 23일

📘 Java 문자열 타입 (String)

Java Spring Boot
Cover Image

📘 Java 문자열 타입 (String)

"자바에서 문자 하나와 문자열은 완전히 다른 타입이다."


🔤 char vs String — 뭐가 다를까?

구분타입예시
문자 1개char (기본 타입)'A', '가'
문자열String (참조 타입)"Hello", "홍길동"

⚠️ 핵심 규칙: char는 작은따옴표(' '), String은 큰따옴표(" ")

// ❌ 잘못된 코드 — char에 큰따옴표 사용 시 컴파일 에러
char var1 = "A";       // 컴파일 에러
char var2 = "홍길동";  // 컴파일 에러

// ✅ 올바른 코드
char c      = 'A';
String var1 = "A";
String var2 = "홍길동";

💡 String은 자바의 기본 타입(primitive)이 아닌 참조 타입(reference type) 이다. 내부적으로 문자들의 배열을 참조하는 객체다.


🪄 이스케이프 문자 (Escape Character)

문자열 안에서 역슬래시(\)를 앞에 붙여 특수 문자나 특별한 출력 효과를 만들 수 있다.

이스케이프 문자의미
\"" 문자 포함
\'' 문자 포함
\\\ 문자 포함
\t탭(Tab) 간격
\n줄바꿈 (Line Feed)
\r캐리지 리턴 (Carriage Return)
\uXXXX16진수 유니코드 문자

📌 예제

public class StringExample {
    public static void main(String[] args) {
        String name = "강민성";
        String job  = "백엔드 개발자";
        System.out.println(name);
        System.out.println(job);

        // \" 로 큰따옴표 포함
        String str = "나는 \"자바\"를 배웁니다.";
        System.out.println(str);

        // \t 로 탭 정렬
        str = "번호\t이름\t직업";
        System.out.println(str);

        // \n 으로 줄바꿈
        System.out.println("나는\n자바를\n배웁니다.");
    }
}
실행 결과

강민성
백엔드 개발자
나는 "자바"를 배웁니다.
번호    이름    직업
나는
자바를
배웁니다.

🧱 텍스트 블록 (Text Block) — Java 13+

이스케이프 문자를 남발하지 않아도 되는 멀티라인 문자열 문법. 큰따옴표 3개(""")로 감싸면 작성한 그대로 문자열로 저장된다.

✅ 기존 방식 vs 텍스트 블록 비교

// ❌ 기존 방식 — 이스케이프로 지저분함
String str1 = "" +
        "{\n" +
        "\t\"id\":\"winter\",\n" +
        "\t\"name\":\"눈송이\"\n" +
        "}";

// ✅ 텍스트 블록 — 깔끔하고 직관적 (Java 13+)
String str2 = """
        {
            "id":"winter",
            "name":"눈송이"
        }
        """;

두 변수의 출력 결과는 완전히 동일하다.

{
    "id":"winter",
    "name":"눈송이"
}

📌 줄바꿈 없이 이어 쓰기 — Java 14+

텍스트 블록에서 줄 끝에 \를 붙이면 해당 줄에서 줄바꿈 없이 다음 줄로 이어진다.

String str = """
        나는 자바를 \
        학습합니다.
        나는 자바 고수가 될 겁니다.
        """;
System.out.println(str);
실행 결과

나는 자바를 학습합니다.
나는 자바 고수가 될 겁니다.

🔢 문자열 주요 메서드

String 은 참조 타입인 만큼 다양한 내장 메서드를 제공한다.

메서드설명예시
length()문자열 길이 반환"hello".length()5
charAt(int)특정 인덱스 문자 반환"hello".charAt(1)'e'
equals(String)문자열 값 비교"a".equals("a")true
contains(String)포함 여부 확인"hello".contains("ell")true
replace(old, new)문자열 치환"hello".replace("l","r")"herro"
trim()앞뒤 공백 제거" hi ".trim()"hi"
toUpperCase()대문자 변환"hello".toUpperCase()"HELLO"
split(regex)문자열 분리"a,b,c".split(",")["a","b","c"]

⚠️ 문자열 비교 시 == 대신 equals() 를 사용해야 한다. == 는 참조(주소) 비교, equals() 는 값 비교다.

String a = new String("hello");
String b = new String("hello");

System.out.println(a == b);       // false (서로 다른 객체)
System.out.println(a.equals(b));  // true  (값이 같음)

📝 핵심 요약

항목내용
char문자 1개, 기본 타입, 작은따옴표
String문자열, 참조 타입, 큰따옴표
이스케이프 문자\", \n, \t, \\ 등 특수 표현
텍스트 블록"""...""", Java 13+, 멀티라인 문자열
줄바꿈 없이 이어쓰기줄 끝에 \ 사용, Java 14+
문자열 비교== 대신 반드시 equals() 사용
← 목록으로 돌아가기