Примітивний тип char у Java це 16-бітове представлення одного символу Unicode.
Тип char ґрунтується на початковій специфікації Unicode, яка використовувала 16 бітів для представлення символів.
Цього достатньо, щоб охопити більшість поширених літер і символи в діапазоні від 0x0000 до 0xFFFF.
Відтоді специфікація розширила діапазон можливих символів до 0x01FFFF.
З кількох char може скластися рядок тексту (англ. string), як-от "word", або ж кожен char можна обробити окремо.
Літерал char беруть в одинарні лапки (наприклад, 'A').
char lowerA = 'a';
char upperB = 'B';
char з String
Метод String.toCharArray повертає символи рядка тексту як масив.
Як згадувалося в масивах, для перебору масиву можна використати цикл 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
Деякі методи класу Character мають перевантаження, тож можуть приймати або char, або int.
Наприклад, у isDigit є перевантаження, яке приймає char, та інше, яке приймає int.
Як зазначалося раніше, тип char може представляти лише символи в діапазоні від 0x0000 до 0xFFFF.
Натомість int може представляти всі символи, звідси й перевантаження для int.
char до String
Оператор + можна використати, щоб додати char до String.
'a' + " banana" // => "a banana"
"banana " + 'a' // => "banana a"
Звернімо увагу: не використовуймо +, щоб зʼєднати два char в один String!
Додавання двох char у такий спосіб дає int, а не String!
Наприклад:
'b' + 'c';
// => 197 (not the String "bc")
Це тому, що Java розширює char до int (див. 4.2 Primitive Types and Values у Java Language Specification).
Однак, коли символів треба додати багато, ефективніше скористатися StringBuilder:
StringBuilder builder = new StringBuilder();
builder.append('a');
builder.append('b');
builder.append('c');
String builtString = builder.toString();
// => abc