문자

문자 에서 Java

16개의 연습 문제

문자 소개

Java의 char 원시 타입은 하나의 유니코드 문자를 16비트로 표현하는 타입이에요.

Note

char 타입은 문자를 표현하는 데 16비트를 사용한 최초의 유니코드 명세를 기반으로 해요. 16비트면 대부분의 흔한 글자를 담기에 충분하고, 0x0000부터 0xFFFF 범위의 문자를 아우를 수 있어요. 그 이후 명세는 표현할 수 있는 문자 범위를 0x01FFFF까지 넓혔어요.

여러 char가 모여 "word" 같은 문자열을 이룰 수도 있고, 각각의 char를 따로 처리할 수도 있어요. char 리터럴은 작은따옴표로 감싸요 (예: 'A').

char lowerA = 'a';
char upperB = 'B';

String에서 char 가져오기

String.toCharArray 메서드는 문자열의 char들을 배열로 반환해요. 배열에서 언급했듯이, for문으로 배열을 순회할 수 있어요.

String text = "Hello";
char[] asArray = text.toCharArray();

for (char ch: asArray) {
    System.out.println(ch);
}

// Outputs:
// H
// e
// l
// l
// o

Character 클래스

char를 검사하고 조작하는 내장 라이브러리 메서드가 많이 있어요. 이런 메서드들은 java.lang.Character 클래스의 정적 메서드로 찾을 수 있어요. 몇 가지 예를 들어 볼게요:

Character.isWhitespace(' ');    // true
Character.isWhitespace('#');    // false

Character.isLetter('a');        // true
Character.isLetter('3');        // false

Character.isDigit('6');         // true
Character.isDigit('?');         // false
Note

Character 클래스의 일부 메서드는 char나 int를 받을 수 있도록 오버로드되어 있어요. 예를 들어 isDigit에는 char를 받는 것과 int를 받는 것이 하나씩 있어요. 앞서 말했듯이 char 타입은 0x0000부터 0xFFFF 범위의 문자만 표현할 수 있어요. 반면 int는 모든 문자를 표현할 수 있어요. 그래서 int를 받는 오버로드가 있는 거예요.

String에 char 더하기

+ 연산자로 String에 char를 더할 수 있어요.

'a' + " banana"     // => "a banana"
"banana " + 'a'     // => "banana a"
Caution

두 char를 +로 이어 붙여 String을 만들면 안 돼요! 이렇게 두 char를 더한 결과는 String이 아니라 int예요! 예를 들어 볼게요:

'b' + 'c';
// => 197 (not the String "bc")

Java가 char를 int로 승격하기 때문이에요 (Java Language Specification의 4.2 Primitive Types and Values 참고).

하지만 이어 붙일 문자가 많다면 StringBuilder를 사용하는 편이 더 효율적일 수 있어요:

StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');

String builtString = builder.toString();
// => abc
GitHub에서 편집 링크가 새 창이나 탭에서 열려요

문자 배우기