자바 문자열 핵심 정리

2025. 3. 22. 18:53·알고리즘

* 오늘 코테를 보면서 문자열을 다루는 방법을 더 공부해야겠다고 생각이 들었다.

 

문자열은 가장 많이 사용되는 데이터 타입 중 하나로, 핵심 개념 + 자주 사용되는 메서드를 정리해보고자 합니다 !

 


1. 문자열 선언과 생성

자바에서 문자열을 선언하는 방법은 2가지가 있다.

 

(1) 리터럴 방식

String str1 = "Hello";
String str2 = "Hello"; // str1과 str2는 같은 객체를 참조

 

- 문자열 리터럴을 사용하면 String Pool에서 관리된다.

- 같은 문자열 리터럴을 다시 생성할 경우, 기존 문자열을 재사용한다.

 

(2) new 키워드 사용

String str3 = new String("Hello");

 

- new 키워드를 사용하면 Heap 메모리에 새로운 객체가 생성된다.

- 즉, "Hello"라는 값이 String Pool에 있더라도 새로운 인스턴스를 만든다.

 

비교

System.out.println(str1 == str2); // true (같은 참조)
System.out.println(str1 == str3); // false (다른 객체)
System.out.println(str1.equals(str3)); // true (값이 같음)

 

- == : 객체의 참조 주소 비교

- equals() : 문자열의 내용 비교


2. String 불변(Immutable) 특성

자바의 String 객체는 불변(immutable) 속성을 가진다.

즉, 문자열이 변경될 경우 새로운 객체가 생성된다.

String str = "Hello";
str = str + " World"; // 새로운 "Hello World" 객체 생성

 

-> 해결 방법 : 문자열을 자주 변경해야 할 경우, StringBuilder 또는 StringBuffer 사용을 고려해야한다.

 


3. 주요 문자열 메서드

// length() 문자열 길이 반환 
"Hello".length(); // 5

// charAt(index) 특정 위치 문자 반환 
"Java".charAt(1); // 'a'

// substring(start, end) 부분 문자열 추출 
"Hello".substring(1, 4); // "ell"

// indexOf(str) 특정 문자열 위치 찾기 
"Hello".indexOf("l"); // 2

// contains(str) 특정 문자열 포함 여부 
"Java".contains("av"); // true

// toUpperCase() 대문자로 변환 
"java".toUpperCase(); // "JAVA"

// toLowerCase() 소문자로 변환 
"JAVA".toLowerCase(); // "java"

// trim() 앞뒤 공백 제거 
"  Hello  ".trim(); // "Hello"

// replace(old, new) 문자열 대체 
"apple".replace("a", "A"); // "Apple"

// split(regex) 특정 기준으로 문자열 나누기 
"a,b,c".split(","); // ["a", "b", "c"]


문자열 조작 예시

String str = "Welcome my tistory";
System.out.println(str.toUpperCase()); // "WELCOME MY TISTORY"
System.out.println(str.substring(0, 7)); // "Welcome"
System.out.println(str.replace("tistory", "blog")); // "Welcome my blog"

 


4. 문자열과 숫자 변환


(1) 숫자를 문자열로 변환

int num = 123;
String str = String.valueOf(num); // "123"
String str2 = Integer.toString(num); // "123"


(2) 문자열을 숫자로 변환

String str = "123";
int num = Integer.parseInt(str); // 123
double dnum = Double.parseDouble("3.14"); // 3.14

 

- parseInt() 사용 시 "123a" 같은 숫자가 아닌 문자열을 변환하면 NumberFormatException 발생 !


5. StringBuilder vs StringBuffer

String 객체는 불변이므로 문자열을 자주 변경해야 할 경우, StringBuilder 또는 StringBuffer를 사용하면 성능이 향상된다.

 

(1) StringBuilder (비동기)

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb.toString()); // "Hello World"

 

- 특징 : 빠르고, 동기화 지원하지 않음. 단일 스레드 환경에서 유리하다.


(2) StringBuffer (동기)

StringBuffer sbf = new StringBuffer("Hello");
sbf.append(" World");
System.out.println(sbf.toString()); // "Hello World"

 

- 특징 : 멀티스레드 환경에서 안전하지만, 속도는 StringBuilder보다 느리다.


6. 문자열 포맷팅


(1) String.format() 사용

String name = "Alice";
int age = 25;
String formatted = String.format("이름: %s, 나이: %d", name, age);
System.out.println(formatted); // "이름: Alice, 나이: 25"


(2) printf() 사용

System.out.printf("이름: %s, 나이: %d\n", name, age);

 

- %s 문자열 / %d 정수 / %f 실수 / %c 문자

 


7. 문자열을 배열로 변환

 

(1) toCharArray() 사용

String str = "Hello";
char[] charArray = str.toCharArray();
System.out.println(Arrays.toString(charArray)); // ['H', 'e', 'l', 'l', 'o']


(2) split() 사용

String str = "apple,banana,grape";
String[] fruits = str.split(",");
System.out.println(Arrays.toString(fruits)); // ["apple", "banana", "grape"]

 



이번 글에서는 자바의 문자열(String)에 대해 찾아 정리해봤습니다.

문자열은 자주 사용하는 데이터 타입이므로, 자주 쓰이는 메서드와 개념을 익혀두면 실무와 코딩 테스트에서 유용하게 활용할 수 있습니다.

'알고리즘' 카테고리의 다른 글

[TIL] 알고리즘 BFS & DFS 정리  (0) 2025.09.23
[TIL] 코딩테스트에서 Scanner 대신 BufferedReader를 써야 하는 이유  (1) 2025.09.06
알고리즘 공부 정리  (3) 2025.08.29
조합과 순열 : 개념부터 구현 방식까지 정리  (0) 2025.05.05
알고리즘 문제 풀이 - BFS  (1) 2024.12.04
'알고리즘' 카테고리의 다른 글
  • [TIL] 코딩테스트에서 Scanner 대신 BufferedReader를 써야 하는 이유
  • 알고리즘 공부 정리
  • 조합과 순열 : 개념부터 구현 방식까지 정리
  • 알고리즘 문제 풀이 - BFS
uoaheu
uoaheu
uoaheu 님의 블로그 입니다.
  • uoaheu
    uoaheu 님의 블로그
    uoaheu
  • 전체
    오늘
    어제
    • 분류 전체보기 (50)
      • 알고리즘 (7)
      • CS (9)
      • FRONTEND (9)
        • React (12)
        • Kotlin (1)
        • JS (5)
        • HTML (2)
      • SQL (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    유레카3기
    알고리즘
    BFS
    mysql
    부트캠프후기
    멀티캠퍼스it부트캠프
    토스 앱 분석
    mysql 피벗테이블
    토스분석
    toss 분석
    toss uiux
    mysql로 피벗테이블만들기
    이더넷프레임
    토스 uiux
    useactionstate
    엘지유플러스유레카프론트엔드
    백준1926번
    리액트usestate
    혼자서 공부하는 네트워크
    boj25418
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
uoaheu
자바 문자열 핵심 정리
상단으로

티스토리툴바