- Символы
- Пример 1
- Пример 2
- Управляющие последовательности
- Пример управляющих последовательностей
- Пример вставки символа двойных кавычек в строку
- Методы класса символов в Java
- Типы данных char и String: примеры применения — введение в Java 004 #
- String #
- Явные и неявные преобразования #
- Дополнительные материалы #
- Домашнее задание #
- Вывод символа unicode в Java в консоли
- 3 ответа 3
- Похожие
- Подписаться на ленту
Символы
Когда мы работаем в Java с символами, мы используем примитивный тип данных char.
Пример 1
char ch = 'a'; // Юникод греческого символа Омега в верхнем регистре char uniChar = '\u039A'; // Массив символов char[] charArray =< 'a', 'b', 'c', 'd', 'e' >;
Тем не менее, в разработке, мы встречаем ситуаций, где нам нужно использовать объекты вместо примитивных типов данных. Чтобы добиться этого, Java предоставляет класс-оболочку символов для примитивных данных типа char.
В Java класс символов предлагает ряд полезных (например, static) методов для манипулирования символами. Объект символа создается с помощью символьного конструктора (Character):
Character ch = new Character('a');
Java-компилятор также создаст объект символа для Вас в некоторых обстоятельствах. Например, если примитивный тип данных char передается в метод, ожидающий объект, компилятор автоматически преобразует для Вас char в объект Character. Эта функция называется автоматическая упаковка или распаковка, если преобразование идет другим путем.
Пример 2
// Ниже следующий примитивный char 'a' // упаковывается в объект Character ch Character ch = 'a'; // Ниже примитивный 'x' упаковывается для метода test, // возвращает к распакованному char 'c' char c = test('x');
Управляющие последовательности
В программирование на Java символ, которому предшествует знак обратной косой черты (\), называется управляющей последовательностью и имеет особое значение для компилятора.
Символ перехода на новую строку (\n) часто используется в наших примерах в System.out.println(), оператор переносит на следующую строку после напечатанной строки.
В приведенной ниже таблице показаны управляющие последовательности, используемые в Java:
Управляющая последовательность | Описание |
\t | Символ табуляции. |
\b | Символ возврата в тексте на один шаг назад или удаление одного символа в строке (backspace). |
\n | Символ перехода на новую строку. |
\r | Символ возврата каретки. |
\f | Прогон страницы. |
\’ | Символ одинарной кавычки. |
\» | Символ двойной кавычки. |
\\ | Символ обратной косой черты (\). |
Когда управляющая последовательность встречает оператор print, java-компилятор интерпретирует это соответственно.
Пример управляющих последовательностей
public class Test < public static void main(String args[]) < System.out.println("prog\tlang.su -->\\t - табуляция"); System.out.println("prog\blang.su --> \\b - возврат на один шаг назад"); System.out.println("prog\nlang.su --> \\n - новая строка"); System.out.println("prog\rlang.su --> \\r - возврат каретки"); System.out.println("prog\flang.su --> \\f - прогон страницы"); System.out.println("prog\'lang.su --> \\' - одинарная кавычка"); System.out.println("prog\"lang.su --> \\\" - двойная кавычка"); System.out.println("prog\\lang.su --> \\\\ - обратная косая черта"); > >
Получим следующий результат:
prog lang.su --> \t - табуляция prolang.su --> \b - возврат на один шаг назад prog lang.su --> \n - новая строка lang.su --> \r - возврат каретки prog lang.su --> \f - прогон страницы prog'lang.su --> \' - одинарная кавычка prog"lang.su --> \" - двойная кавычка prog\lang.su --> \\ - обратная косая черта
Пример вставки символа двойных кавычек в строку
Чтобы вставить символ двойных кавычек в строку используйте управляющую последовательность \». Если Вы хотите взять в кавычки слово или словосочетание — вставьте \» 2 раза, одну в начале, другую в конце:
Получим следующий результат:
Методы класса символов в Java
Список методов, реализующий подклассы класса символов:
№ | Методы с описанием |
1 | isLetter() Определяет, является ли значение указанного типа char буквой. |
2 | isDigit() Определяет, является ли величина указанного типа char цифрой. |
3 | isWhitespace() Определяет, является ли значение указанного типа char пустым пространством. |
4 | isUpperCase() Определяет, является ли значение указанного типа char в верхнем регистре. |
5 | isLowerCase() Определяет, является ли величина указанного типа char в нижнем регистре. |
6 | toUpperCase() Возвращает значение в верхнем регистре в виде указанного типа char. |
7 | toLowerCase() Возвращает значение в нижнем регистре в виде указанного типа char. |
8 | toString() Возвращает строковый объект, представляющий указанное символьное значение, string — один символ. |
Полный список методов Вы найдете обратившись к спецификации API java.lang.Character.
Типы данных char и String: примеры применения — введение в Java 004 #
Если в программе нужны символы, то для этого мы пользуемся типом данных char. Например:
public class HelloChar public static void main(String[] args) char zahl = 100; // Сотый по счёту символ в таблице char octal = '\u039A'; // Вызов определённого символа кодом char zeichen = 'A'; // Буква A char tabulator = '\t'; // В русском языке клавиша называется "Таб" // Табулятор char phi = '\u03A6'; // Греческая буквая Фита - PHI System.out.println(zahl); System.out.println(octal); System.out.println(zeichen); System.out.print(tabulator); System.out.println(phi); > >
Объект базового (примитивного) типа char является 16-битным символом Unicode.
Мы можем вывести любое сообщение или любой символ. однако достаточно сложно вывести на экран кавычки, ведь в них мы и держим значения наших переменных. Для таких случаев мы используем экранирование. С помощью обратной косой черты(обратный слеш) мы экранируем символ или используем её для дополнительных параметров.
\b Backspace (Курсор двигается на одно место влево) \n Newline (Новая строчка) \f Newpage (Новая страница) \r Carriage return (Курсор становится на первое место в строчке, возврат каретки) \t Горизонтальный табулятор \" Двойная кавычка \' Одинарная кавычка \\ Backslash(вызов обратного слэша) \___ Символы с октальным значением от 000 до 377, например \304 соответствует символу Ä \u___ Вызов символа уникода (Unicode-16). Где например \u00C4 соответствует Ä
Таблица символов Windows (charmap) вызывает и показывает именно те символы, которые можно вызвать в Java.
String #
Мы можем хранить в программе и набор символов: пароль, фамилию, звание, название улицы или просто набор символов. Для хранения таких данных можно использовать String. Пример использования:
public class HelloString public static void main(String[] args) String firstname = "Andrej"; String secondname = "Podlubnyj"; char copyright = '\u00A9'; int old = 18; System.out.println(firstname + " " + secondname + " " + old); String student = firstname + " " + secondname + " " + copyright; System.out.println(student); > >
Один символ можно записать как “маленьким” стрингом, так и через символ при помощи типа данных char. Цепочку символов, больше одного, мы храним в типе данных String. Каждый элемент этой цепочки символов можно отобразить при помощи char. Это очень важно понять и запомнить.
Строковый набор символов класса String может немного больше, чем просто хранить строчку в переменной. Например, мы можем вычислить количество символов или длину String, используя один из методов, которые есть в Java. Это примерно такие же методы, как те, что мы использовали в предыдущих уроках, чтобы возводить числа в степень или выводить результаты на экран:
int dlina; dlina = student.length(); System.out.println(dlina);
Для переменных типа String ява заготовила много дополнительных методов, которые делают нашу жизнь проще. Например, метод substring, который вырезает из одной цепочки символов другую.
public class WhatCanYouDoString public static void main(String[] args) String name = "AndrejPodlubnyj"; int dlina = name.length(); System.out.println(name); System.out.println(dlina); // вырезать символы с 6-го по 15-ый String firstName = name.substring(6,15); dlina = firstName.length(); System.out.println(firstName); System.out.println(dlina); > >
Если мы пишем приложение для веб-сайта с “user generated content”, то мы можем столкнуться с тем, что часть контента пишется заглавными буквами. В Java есть методы, которые приводят цепочку символов алфавита к прописным (заглавным) или к строчным (маленьким) буквам. Давайте рассмотрим пример:
public class UppercaseAndLowercase public static void main(String[] args) String articleTitle = "london is the capital"; articleTitle = articleTitle.substring(0,1).toUpperCase() + articleTitle.substring(1); System.out.println(articleTitle); articleTitle = articleTitle.toUpperCase(); System.out.println(articleTitle); System.out.println(articleTitle.toLowerCase()); > >
С помощью метода toUpperCase() мы делаем буквы прописными, с помощью метода toLowerCase() мы приводим значение строки к строчным буквам.
Мы обязательно вернёмся к этому и другим возможностям класса. Пока надо только запомнить, что, если мы хотим создать записную книжку, то фамилию и имя абонента мы скорее всего будем хранить с помощью типа данных String.
Явные и неявные преобразования #
Значения, передаваемые переменным, можно привести в тот тип данных, которые переменная может принять. Вручную или автоматически, или явно и неявно.
Расширение типа (widening Casting), которое можно проследить на схеме с помощью стрелок, происходит автоматически. Это преобразование меньшего типа данных в типа большего размера: byte -> short -> char -> int -> long -> float -> double.
Сужение типа (narrowing Casting) — преобразование типа данных большего размера в тип данных меньшего размера — делается вручную: double -> float -> long -> int -> char -> short -> byte
public class MyClass public static void main(String[] args) int myInt = 9; double myDouble = myInt; // Automatic casting: int to double System.out.println(myInt); // Outputs 9 System.out.println(myDouble); // Outputs 9.0 > >
public class MyClass public static void main(String[] args) double myDouble = 9.78; int myInt = (int) myDouble; // Manual casting: double to int System.out.println(myDouble); // Outputs 9.78 System.out.println(myInt); // Outputs 9 > >
Повышение типа на примере
public class Main public static void main(String[] args) byte b = 42; char c = 'a'; short s = 1024; int i = 50_000; float f = 5.67f; double d = .1234; double result = (f * b) + (i / c) - (d * s); System.out.println((f * b) + " + " + (i / c) + " - " + (d * s)); System.out.println("result = " + result); > >
Допустим, у нас имеется старая база данных, где все данные записаны в строковом виде. Например просто текстовый файл столбиком. Java даёт нам возможность “спарсить” целочисленные данные из строк.
String number = "10"; int result = Integer.parseInt(number); System.out.println(result);
Дополнительные материалы #
Домашнее задание #
- Найти в интернете таблицы для типа данных char. Проверить, что они действительно соответствуют тому, что выводит Java на экран. Найти “смешные” символы, символ стандартного смайлика, найти символ телефона, параграфа, копирайта(C), торговой марки(тм), рубля, евро, доллара, знаков зодиака, шахмат, червы.
- Вбить в поисковую строку Windows “charmap”.
- Найдите самостоятельно статьи на тему:
- Что такое юникод?
- Что такое ASCII?
- Что такое UTF?
- Что будет, если “сложить” переменную String с самой собой? Можно ли умножить её на саму себя? Почему?
- Вывести на экран сообщение в кавычках. Например собственное имя + “профессия”.
- Вывести на экран построчно анкетные данные: Имя, Фамилия, Адрес, Улица и тд и тп. Пример вывода одной строчки:
Вывод символа unicode в Java в консоли
только начала изучать Java. у меня задание вывести в консоли «Hello World! (и здесь юникод->)пингвин и сердце» если с выводом текста хэллоу ворлд все ясно, то вывести в консоль юникод никак не получается.
преобразуйте каждый символ в char в виде массива. Теперь пройдитесь по нему, используя «char».codePointAt(0)
3 ответа 3
Вы можете использовать \u для вывода Юникод-символов, например
System.out.println(«\u0068\u0065\u006c\u006c\u006f»); выведет hello ;
System.out.println(«Hello World! \u27a1 пингвин и сердце»); выведет Hello World! ➡ пингвин и сердце ;
Сердечко так можно вывести
Строки и отдельные символы ( char ) в Java всегда закодированы в юникоде (в UTF-16). Исходный код Java, по умолчанию, так же должен быть записан в UTF-16 (что позволяет использовать нелатинские буквы в именах переменных, классов и прочего). По этому всё что вам необходимо — настроить поддержку юникода в вашей консоле.
Иногда кодировка исходного кода может отличаться от UTF-16 (например если она не определена в pom.xml, Maven будет использовать системную 8-и битную кодировку). Для таких случаев или для перестраховки можно использовать запись символов в формате \uxxxx где xxxx — это шестнадцатеричное представление UTF-16 символа.
Похожие
Подписаться на ленту
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.7.17.43537
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.