Java의 char 원시 타입은 하나의 유니코드 문자를 16비트로 표현하는 타입이에요.
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
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
String에 char 더하기+ 연산자로 String에 char를 더할 수 있어요.
'a' + " banana" // => "a banana"
"banana " + 'a' // => "banana a"
두 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