문자열과 StringBuilder: 텍스트 데이터를 안전하게 다루기
10강. 문자열과 StringBuilder: 텍스트 데이터를 안전하게 다루기
1. 이번 강의에서 해결할 문제
문자열을 ==로 비교하거나 반복문에서 계속 +로 이어 붙이면 의도와 성능 문제가 생길 수 있습니다. 내용 비교와 누적 생성을 구분해야 합니다.
2. 학습 목표
3. 핵심 개념
String 객체는 생성 뒤 내용이 바뀌지 않으며 메서드는 새 문자열을 반환합니다. ==는 참조 동일성, equals는 내용을 비교합니다. 반복해서 텍스트를 붙일 때 StringBuilder는 하나의 변경 가능한 버퍼를 사용합니다.
4. 단계별 실습
1. src/TextReport.java 작성
실행 환경: 코드 편집기
실행 위치: C:\dev\game-records
실행 전 확인: 같은 이름의 기존 파일이 있다면 덮어쓰기 전에 Git diff와 이번 강의 변경 범위를 확인합니다.
대상 파일: src/TextReport.java
public class TextReport {
public static void main(String[] args) {
String rawPlayer = " Alice ";
String player = rawPlayer.trim();
if (player.isBlank()) throw new IllegalArgumentException("이름이 비었습니다.");
int[] scores = {900, 1200, 1050};
StringBuilder report = new StringBuilder("플레이어: ")
.append(player).append(System.lineSeparator());
for (int i = 0; i < scores.length; i++) {
report.append(i + 1).append("회: ").append(scores[i])
.append(System.lineSeparator());
}
System.out.print(report);
System.out.println("이름 일치: " + player.equals("Alice"));
}
}
2. PowerShell에서 컴파일·실행
실행 환경: Windows PowerShell
실행 위치: C:\dev\game-records
실행 전 확인: java -version과 javac -version이 선택한 LTS JDK를 가리키고, 소스 파일명이 public 클래스명과 일치하는지 확인합니다.
대상: 이 강의의 .java 파일, out의 class 파일과 명시된 출력 파일
Set-Location C:\dev\game-records
javac -d out .\src\TextReport.java
java -cp out TextReport
예상 결과: 공백이 정리된 플레이어 이름과 세 줄의 점수, 내용 비교 결과 true가 출력됩니다.
5. 코드가 동작하는 이유
trim은 새 String을 반환하고 원본을 바꾸지 않습니다. StringBuilder append는 같은 버퍼를 갱신하며 System.lineSeparator는 현재 운영체제 줄바꿈을 사용합니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
문자열과 StringBuilder: 텍스트 데이터를 안전하게 다루기 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.