النوع الأولي char في Java هو تمثيل بـ 16 بت لمحرف Unicode واحد.
يعتمد نوع char على مواصفة Unicode الأصلية، التي كانت تستخدم 16 بت لتمثيل المحارف.
وهذا كافٍ لتغطية معظم الحروف الشائعة، ويغطي المحارف في النطاق من 0x0000 إلى 0xFFFF.
وقد وسّعت المواصفة منذ ذلك الحين نطاق المحارف الممكنة حتى 0x01FFFF.
يمكن لعدة محارف char أن تكوّن سلسلة نصية، مثل "word"، كما يمكن معالجة محارف char كلٌّ على حدة.
وتُحاط القيمة الحرفية من النوع char بعلامات اقتباس مفردة (مثل 'A').
char lowerA = 'a';
char upperB = 'B';
char من String
تُرجع الطريقة String.toCharArray محارف String على هيئة مصفوفة.
وكما ورد في المصفوفات، يمكنك استخدام حلقة 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