Character, String 차이

이규훈·2024년 6월 21일

Java에서 Character와 String의 차이점

Java에서 Character와 String은 모두 텍스트 데이터를 다루는 데 사용되지만, 그 특성과 용도에 있어 중요한 차이점이 있습니다. 이 글에서는 두 타입의 주요 차이점을 자세히 살펴보고, 각각의 사용 사례와 예시를 통해 이해를 돕고자 합니다.

1. 정의와 기본 특성

Character

  • Character는 Java의 기본 데이터 타입인 char의 래퍼 클래스입니다.
  • 단일 유니코드 문자를 나타냅니다.
  • 16비트 유니코드 값을 저장합니다.

예시:

char c = 'A';
Character ch = new Character('B');
Character ch2 = 'C'; // 자동 박싱

String

  • String은 문자의 시퀀스(연속)를 나타내는 클래스입니다.
  • 불변(immutable) 객체입니다.
  • 내부적으로 char 배열을 사용하여 문자들을 저장합니다.

예시:

String str1 = "Hello";
String str2 = new String("World");

2. 메모리 사용

Character

  • 단일 문자만을 저장하므로 메모리 사용량이 적습니다.
  • 기본 타입 char는 2바이트를 사용하며, Character 객체는 추가적인 오버헤드가 있습니다.

String

  • 여러 문자를 저장할 수 있어 메모리 사용량이 더 많습니다.
  • 문자열의 길이에 따라 메모리 사용량이 달라집니다.

3. 연산과 메소드

Character

  • 주로 단일 문자에 대한 연산을 제공합니다.
  • 문자 분류(isLetter, isDigit 등), 대소문자 변환 등의 메소드를 제공합니다.

예시:

Character ch = 'A';
System.out.println(Character.isLetter(ch)); // true
System.out.println(Character.isDigit(ch)); // false
System.out.println(Character.toLowerCase(ch)); // 'a'

String

  • 문자열 조작을 위한 다양한 메소드를 제공합니다.
  • 문자열 연결, 부분 문자열 추출, 문자열 검색 등의 기능을 제공합니다.

예시:

String str = "Hello, World!";
System.out.println(str.length()); // 13
System.out.println(str.substring(0, 5)); // "Hello"
System.out.println(str.toLowerCase()); // "hello, world!"

4. 변경 가능성

Character

  • Character 객체 자체는 불변이지만, 새로운 값을 할당할 수 있습니다.

예시:

Character ch = 'A';
ch = 'B'; // 새로운 Character 객체가 생성됨

String

  • 완전히 불변입니다. 문자열을 수정하는 모든 연산은 새로운 String 객체를 생성합니다.

예시:

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

5. 성능 고려사항

Character

  • 기본 타입 char를 사용할 때 박싱/언박싱 오버헤드가 없어 더 효율적입니다.
  • 단일 문자 처리에 최적화되어 있습니다.

String

  • 문자열 연결 연산이 빈번할 경우 StringBuilderStringBuffer를 사용하는 것이 더 효율적입니다.
  • 문자열 풀(String Pool)을 통해 메모리 사용을 최적화합니다.

예시:

// 비효율적인 방법
String result = "";
for (int i = 0; i < 1000; i++) {
    result += "a";
}

// 효율적인 방법
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 1000; i++) {
    sb.append("a");
}
String result = sb.toString();

결론

Character와 String은 각각 고유한 특성과 용도를 가지고 있습니다. Character는 단일 문자를 다룰 때 효율적이며, String은 텍스트 데이터를 처리하는 데 더 적합합니다. 프로그래밍 시 데이터의 특성과 처리 방식을 고려하여 적절한 타입을 선택하는 것이 중요합니다. 두 타입의 특성을 잘 이해하고 활용함으로써 더 효율적이고 가독성 높은 코드를 작성할 수 있습니다.

profile
개발취준생

0개의 댓글