| Главная » Статьи » 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 | |
| Просмотров: 395 | | |
| Всего комментариев: 0 | |