Главная » Статьи » Java » Java Ranger Basic

День 15/21
Character, Charater Set


Character – символ. Арабские числа от 0 до 9 – по одному символу, число 12 – уже два символа.
Character Set – кодировка – это такой фиксированный алфавит, фиксированный набор. Один и тот же Character может входить в разные кодировки. Не всякий символ имеет визуальное изображение.
Но если символ таки сильно похож на букву и имеет графическое представление, то оно называется Glyph – глиф. Глиф – это одно визуальное представление символов. Например, кириллической букве «А» соответствует несколько глифов – а, а и А, то есть это разные глифы, разные визуальные представления символов. Ведь для системы автоматического распознавания текста – это три разных знака, ей только нужно конкретно указать, что это одно и то же.
Font – шрифт – это набор однотипных глифов. Когда художник разрабатывает шрифт, он берет какой-то законченный character set и для него делает font. Шрифт – дорогой продукт, некоторые стоят тысячи долларов, на многие из них – большие патенты. Стив Джобс ходил на курсы каллиграфии, поэтому очень ценил дизайнеров и дизайн в своей продукции. Билл Гейтс – в основном использовал Arial и Times New Roman. Но шрифт не обязан соответствовать какому-то законченному набору символов.
Character – это штука сугубо логическая, нам необходимо в компьютере превратить ее в цифры, в номера. Появляется понятие Coded Craracter Set – это пронумерованная кодировка. Самая такая типичная кодировка – это ASCII (American Standard Code for Information Interchange) для латинских букв, без кириллических, ей нужно 7 бит, в ней 128 знаков. Примеры для кириллических алфавитов – KOI8-U и KOI8-R, но они уже фактически умерли. Статья о кибернетике в СССР и ее запрете.

Как соотносятся между собой символы и байты? char – это такой странный джавовский тип, у него не бывает отрицательных значений – ведь в Джаве среди примитивных типов 5 чисел, и 4 из них похожи (они знаковые, у них симметричный интервал).
Все обычно считают, что строка – это массив символов. Если зайти в строку, то там полем есть массив символов, к строке можно применить toCharArray() и она выдаст массив символов. Но с другой стороны, в классе String также есть метод getBytes() – выдать массив байт.
Вопрос – как соотносятся между собой символы и байты? Если совсем кратко – то байты «признают» все снаружи, в конце концов в файловой системе хранятся байты, по сети идут байты. А chars – это способ интерпретации битов в Джаве, в других языках программирования может не быть типа данных char. Или сама комбинация char есть, но по-другому выглядит и занимает другое количество пространства.

Операционная система полностью экранирует железо от программистов. Поэтому чтобы выйти из JVM и записать данные на винчестер или послать по интернету, нужно номера (codepoints) соответствующих Character преобразовать в массив байтов (codeunits). Это и есть задача Charset, он работает в обе стороны.
Строка внутри – это не массив байт. Потому что Characters не влезут в байты. Байтов всего 28 – в 256 (диапазон -128…127), то есть Characters существует больше, чем 256. Поэтому в Java взяли другой тип данных и сказали, что строка внутри – это массив char. String – это объектно-ориентированная обертка над сырыми данными.



В следующей теме мы рассмотрим: Encodings

Источник: http://becomejavasenior.com/courses/?utm_source=Java+Email+Courses&utm_campaign=aa710df388-JavaRangerBasicIntro&utm_medi
Категория: Java Ranger Basic | (06.10.2015) W
Просмотров: 395 | Теги: Basic, ranger, java | Рейтинг: 0.0/0
Всего комментариев: 0
avatar