JavaScript

웹 개발의 필수 언어

동적인 웹 페이지 구현을 위한 핵심 프로그래밍 언어.

Java

객체지향 프로그래밍

안정적이고 확장성 있는 백엔드 개발의 대표 언어.

HTML

웹의 기초

웹 페이지의 구조를 정의하는 마크업 언어.

React

현대적 UI 라이브러리

효율적인 사용자 인터페이스 구축을 위한 JavaScript 라이브러리.

CSS

웹 디자인의 핵심

웹 페이지의 시각적 표현을 담당하는 스타일 언어.

Spring

자바 웹 프레임워크

기업급 애플리케이션 개발을 위한 강력한 프레임워크.

Java/자바 학습

문자 자료형과 메서드

lamarcK 2025. 5. 8. 16:51

문자열(String) 개념 설명

자바의 String은 문자들의 *시퀀스를 나타내는 참조 자료형이다.

String 객체는 불변(immutable)하며, 한번 생성된 문자열은 변경할 수 없다. 문자열 연산시 새로운 String 객체가 생성다.

 

※ 시퀀스(Sequence)란?

  • "연속된 데이터의 나열" 또는 "순서가 있는 데이터의 집합"을 의미한다.
  • String은 내부적으로 char의 배열로 구현되어 있었다가 byte 배열로 변경되었다.

 변화와 이유(char배열에서 byte 배열로 변경된 이유)

  • Java 8까지
    • char[] 배열 사용
    • 각 문자당 2바이트 사용
    • 유니코드 문자 저장
  • Java 9 이후
    • byte[] 배열로 변경
    • Latin-1(1바이트)과 UTF-16(2바이트) 인코딩 모두 지원
    • 메모리 효율성 개선 (대부분의 문자열이 ASCII만 사용하므로)
//실제 동작 예시
String str = "Hello";

// Java 8까지의 내부 저장 방식
char[] chars = {'H', 'e', 'l', 'l', 'o'};

// Java 9 이후의 내부 저장 방식 (ASCII 문자의 경우)
byte[] bytes = {72, 101, 108, 108, 111};
//메모리 사용량
// Java 8 이전
String str = "Hello";  // 10바이트 (2byte * 5chars)

// Java 9 이후
String str = "Hello";  // 5바이트 (1byte * 5chars)

 

간단한 설명:

String은 필름 카메라로 찍은 사진과 같다. 한번 현상된 필름 사진은 절대 수정할 수 없고, 다른 모습을 담고 싶다면 새로운 사진을 찍어야 하는 것처럼 String도 새로운 객체를 생성해야 한다.

주요 역할

  • 텍스트 데이터 저장 및 처리
  • 문자열 비교 및 검색
  • 문자열 변환 및 조작

사용 목적

  • 텍스트 기반 데이터 처리
  • 사용자 입력 처리
  • 파일 경로나 URL 등의 문자열 데이터 관리

자주하는 실수

  • == 연산자로 문자열 비교 (equals() 메서드 사용해야 함)
  • String 객체를 반복적으로 수정하여 성능 저하
  • 불필요한 String 객체 생성

관련 개념 비교

특성 String StringBuilder StringBuffer
변경가능성 불변 가변 가변
스레드 안전성 안전 비안전 안전
성능 낮음 높음 중간

주요 메서드와 실무 활용 예시

// 문자열 생성
String str = "Hello";

// 문자열 결합
str.concat(" World");  // Hello World

// 문자열 비교
str.equals("Hello");  // true

// 부분 문자열 추출
str.substring(0, 3);  // "Hel"

// 문자열 검색
str.indexOf("l");  // 2

// 문자열 대체
str.replace("l", "L");  // "HeLLo"

// 문자열 분할
String[] parts = "a,b,c".split(",");

// 공백 제거
" hello ".trim();  // "hello"

// 대소문자 변환
str.toUpperCase();  // "HELLO"
str.toLowerCase();  // "hello"

실무 활용 예시:

사용자 입력 검증

if (userInput.trim().isEmpty()) {
    throw new IllegalArgumentException("입력이 비어있습니다");
}

파일 경로 처리

String filePath = "/user/documents/file.txt";
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1);

URL 파라미터 파싱

String url = "name=John&age=25";
String[] params = url.split("&");

데이터 포맷팅

String formatted = String.format("Hello, %s!", userName);

JSON/XML 파싱 전처리

String jsonStr = jsonStr.trim().replace("\n", "");

'Java > 자바 학습' 카테고리의 다른 글

자바 문자열의 포매팅  (0) 2025.05.09
자바의 String은 클래스다.  (0) 2025.05.09
자바 제네릭  (1) 2025.05.07
자바 컬렉션 프레임워크  (0) 2025.05.07
자바의 예외 처리  (0) 2025.05.07