Литералы представляют неизменяемые значения (иногда их еще называют константами). Литералы можно передавать переменным в качестве значения.
Литералы бывают логическими, целочисленными, вещественными, символьными и строчными. И отдельный литерал представляет ключевое слово null.
Есть две логических константы - true (истина) и false (ложь). Например, напишем следующую программу на Java:
class Program{
public static void main(String[] args) {
System.out.println(true); // true
System.out.println(false); // false
}
}
Здесь два метода System.out.println() последовательно выводят на консоль значения логических литералов true и false. В итоге мы получим следующий консольный вывод:
true false
Целочисленные литералы представляют положительные и отрицательные целые числа, например, 1, 2, 3, 4, -7, -109. Целочисленные литералы могут быть выражены в десятичной, шестнадцатеричной и двоичной форме.
С целыми числами в десятичной форме все должно быть понятно, так как они используются нами в повседневной жизни:
class Program{
public static void main(String[] args) {
System.out.println(-11);
System.out.println(5);
System.out.println(505);
}
}
Числа в двоичной форме предваряются символами 0b, после которых идет набор из нулей и единиц:
System.out.println(0b11); // 3 System.out.println(0b1011); // 11 System.out.println(0b100001); // 33
Для записи числа в шестнадцатеричной форме применяются символы 0x, после которых идет набор символов от 0 до 9 и от A до F, которые собственно представляют число:
System.out.println(0x0A); // 10 System.out.println(0xFF); // 255 System.out.println(0xA1); // 161
Причем символ "X" и шестнадцатиричные цифры могут быть как в нижнем, так и в верхнем регистре:
System.out.println(0XFF); // 255 System.out.println(0Xff); // 255 System.out.println(0xFF); // 255 System.out.println(0xff); // 255
Кроме целых чисел в десятичном, двоичном и шестнадцатеричном формате также можно использовать целые числа в восьмеричной системе - такие числа предваряются нулем 0
class Program{
public static void main(String[] args) {
System.out.println(03); // 3
System.out.println(013); // 11
System.out.println(041); // 33
}
}
Также целые числа поддерживают разделение разрядов числа с помощью знака подчеркивания, что повышает наглядность:
System.out.println(123_456); // 123456 System.out.println(234_567__789); // 234567789
Вещественные литералы представляют дробные числа. Этот тип литералов имеет две формы. Первая форма - вещественные числа с фиксированной запятой, при которой дробную часть отделяется от целой части точкой. Например:
3.14 100.001 -0.38
Пример использования:
class Program{
public static void main(String[] args) {
System.out.println(3.14);
System.out.println(100.001);
System.out.println(-0.38);
}
}
Также вещественные литералы могут определяться в экспоненциальной форме MEp, где M — мантисса, E - экспонента, которая фактически означает "*10^" (умножить на десять в степени), а p — порядок. Например:
System.out.println(3.2e3); // по сути равно 3.2 * 103 = 3200 System.out.println(1.2E-1); // равно 1.2 * 10-1 = 0.12
Символьные литералы представляют одиночные символы. Символы заключаются в одинарные кавычки.
Символьные литералы бывают нескольких видов. Прежде всего это обычные символы:
'2' 'A' 'T'
Также мы можем передать их вывести на консоль с помощью System.out.println:
System.out.println('2');
System.out.println('A');
System.out.println('T');
Специальную группу представляют управляющие последовательности Управляющая последовательность представляет символ, перед которым ставится слеш. И данная последовательность интерпретируется определенным образом. Наиболее часто используемые последовательности:
'\n' - перевод строки
'\t' - табуляция
'\' - слеш
И если компилятор встретит в тексте последовательность \t, то он будет воспринимать эту последовательность не как слеш и букву t, а как табуляцию - то есть длинный отступ.
Также символы могут определяться в виде шестнадцатеричных кодов, также заключенный в одинарные кавычки.
Еще одной формой определения символьных литералов представляет применение кодов из таблицы символов Unicode. Для этого в одинарных кавычках указываются символы '\u', после которых идет шестнадцатеричный код Unicode. Например, код '\u0411' представляет кириллический символ 'Б', а код '\u0066' будет хранить символ 'f'.
System.out.println('\u0420'); // Р
System.out.println('\u0421'); // С
Строковые литералы представляют строки. Строки заключаются в двойные кавычки:
class Program{
public static void main(String[] args) {
System.out.println("hello METANIT.COM");
System.out.println("hello word");
System.out.println("test");
}
}
Если внутри строки необходимо вывести двойную кавычку, то такая внутренняя кавычка предваряется обратным слешем:
System.out.println("Hello \"METANIT.COM\"");
Также в строках можно использовать управляющие последовательности как \n, \t и другие. Например, последовательность '\n' осуществляет перевод на новую строку:
System.out.println("Hello\nMETANIT.COM");
В данном случае последовательность \n будет сигналом, что необходимо сделать перевод на следующую строку. И при выводе на консоль часть строки "METANIT.COM" будет перенесена на новую строку:
Hello METANIT.COM
Java также поддерживает тестовые блоки (text blocks) - многострочный текст, облеченный в тройные кавычки. Рассмотрим, в чем их практическая польза. Например, выведем большой многострочный текст:
class Program{
public static void main(String[] args) {
System.out.println("Вот мысль, которой весь я предан,\n"+
"Итог всего, что ум скопил.\n"+
"Лишь тот, кем бой за жизнь изведан,\n"+
"Жизнь и свободу заслужил.");
}
}
С помощью операции + мы можем присоединить к одному тексту другой, причем продолжение текста может располагаться на следующей строке. Чтобы при выводе текста происходил перенос на следующую строку, применяется последовательность \n.
Результат выполнения данного кода:
Вот мысль, которой весь я предан, Итог всего, что ум скопил. Лишь тот, кем бой за жизнь изведан, Жизнь и свободу заслужил.
Текстовые блоки позволяют упростить написание многострочного текста:
class Program{
public static void main(String[] args) {
System.out.println("""
Вот мысль, которой весь я предан,
Итог всего, что ум скопил.
Лишь тот, кем бой за жизнь изведан,
Жизнь и свободу заслужил.""");
}
}
Весь текстовый блок оборачивается в тройные кавычки, при этом не надо использовать соединение строк или последовательность \n для их переноса. Результат выполнения программы будет тем же, что и в примере выше.
null представляет ссылку, которая не указывает ни на какой объект. То есть по сути отсутствие значения.