Это можно сделать, не используя StringBuilder
, с суррогатной парой Unicode :
Суррогатные символы обычно называются суррогатными парами .
Они представляют собой комбинацию из двух символов, содержащих один код
точка. Чтобы упростить обнаружение суррогатных пар, Unicode
Стандарт зарезервировал диапазон от U + D800 до U + DFFF для использования
UTF-16. Никакие символы не назначены значениям кодовой точки в этом диапазоне.
Когда программы видят битовую последовательность, попадающую в этот диапазон, они
немедленно-молния! Зип! - Знай, что они столкнулись с суррогатом
пара.
Этот зарезервированный диапазон состоит из двух частей:
- Высокие суррогаты - от U + D800 до U + DBFF (всего 1024 кодовых пункта)
- Низкие суррогаты - от U + DC00 до U + DFFF (всего 1024 кодовых пункта)
Следующее напечатало бы инопланетный инопланетянин эмодзи (?):
int[] surrogates = {0xD83D, 0xDC7D};
String alienEmojiString = new String(surrogates, 0, surrogates.length);
System.out.println(alienEmojiString);
System.out.println("\uD83D\uDC7D"); // alternative way