— Амиго, я тебе завидую. Познание нового — это так прекрасно! А сегодня тебя ждёт новая интересная тема — литералы.

— Видимо я должен сказать, что я — самый счастливый робоученик на планете, Риша. Что ж, готов поглощать новые знания!

— Начинай прямо сейчас. Литералы — это конкретные данные, вписанные прямо в код программы. Мы сейчас говорим не о любых данных, а только о значениях примитивных типов и типе String.

Например, у тебя есть код:

Код Литералы
int a = 5;
int b = a + 10;
String s = "Sum=" + (a + b);
5
10
"Sum="

— Литералы в этом коде — это число 5, число 10 и строка «Sum=».

Литералы целых чисел

— В языке Java тип есть у всего, в том числе и у литералов. Все целочисленные литералы (целые числа) в коде имеют тип int. Тип int является стандартным типом целых чисел в Java.

— Знаю такой тип, пользовался.

— А помнишь другие целочисленные типы, кроме int, которые занимают меньше места в памяти?

— Конечно! Это byte и short.

— Они. Так вот, если ты в своем коде решишь присвоить целочисленный литерал переменной типа byte или short, проблем не возникнет. Главное, чтобы значение литерала лежало внутри диапазона доступных значений типа переменной. Компилятор в Java достаточно умный, чтобы понять, что переменной типа byte можно присвоить целочисленный литерал 100.

Примеры:

Код Описание
int a = 300;
Скомпилируется отлично.
byte a = 100;
Скомпилируется отлично.
byte a = 300;
Будет ошибка компиляции: максимальное значение типа byte равно 127.

— А что насчёт типа long?

— Литералы этого типа тоже можно написать в коде. Для этого в конце целого числа припиши латинскую букву L или l.

Примеры:

Код Описание
long a = 3000000000L;
Скомпилируется отлично.
long a = 3000000000;
Ошибка компиляции: 3 миллиарда слишком большое число для литерала типа int.
int a = 3000000000L;
Ошибка компиляции: у литерала тип long, а у переменной тип int. К тому же, 3 миллиарда больше, чем максимальное число типа int.

— Обратил внимание, как сложно читать большие числа в 10 и более знаков?

— Ага, если не включать робозрение, то сразу и не поймешь, 3 миллиарда там или 30.

— Чтобы упростить читаемость кода (а это важно!), в Java разрешили вставлять в числовые литералы символы подчеркивания (на значение числа они не влияют).

— Пример выше можно переписать с использованием символов подчеркивания, и он станет немного понятнее:

Код Описание
long a = 3_000_000_000L;
Скомпилируется отлично.
long a = 3_000_000_000;
Ошибка компиляции: 3 миллиарда слишком большое число для литерала типа int.
int a = 3_000_000_000L;
Ошибка компиляции: у литерала тип long, а у переменной тип int. К тому же 3, миллиарда больше, чем максимальное число типа int.

— Так читать намного удобнее, хотя запятая вместо нижнего подчёркивания была бы привычнее!

— Запятую внутри числового литерала использовать было нельзя, потому что она уже используется. Например, для отделения друг от друга аргументов при вызове метода.

9
Задача
Java Syntax Pro Beta,  9 уровень1 лекция
Недоступна
Утильный класс: часть 1
Реализуй методы sin(double), cos(double), tan(double) которые возвращают синус, косинус и тангенс угла соответственно, полученного как параметр. Угол задан в градусах. В этом тебе помогут соответствующие методы класса Math, которые принимают параметром угол, заданный в радианах.

Литералы вещественных чисел

— Ты наверное уже догадался, что в коде можно задавать не только целочисленные, но и литералы с плавающей точкой (вещественные числа).

— и double, и float?

— Да. Собственно, правило очень простое: если в коде есть число и в его записи есть точка, это число — литерал с плавающей точкой. И не просто литерал, а литерал с типом double. Ну а для создания литерала типа float к числу в конце нужно приписать букву F (или f).

Примеры:

Код Описание
double a = 100.0;
Скомпилируется отлично.
double a = 100.;
Скомпилируется отлично.
double a = .0;
Скомпилируется отлично.
float a = 100.0f;
Скомпилируется отлично.
float a = 100.0;
Будет ошибка компиляции: переменная типа float, литерал типа double.

— Кстати, можно явно превратить целочисленный литерал в литерал типа float или double, просто приписав к нему суффикс F (для float) или D (для double). Примеры:

Код Описание
double a = 100D;
Скомпилируется отлично.
float a = 100F;
Скомпилируется отлично.
int a = 300D;
Будет ошибка компиляции: переменная типа int, литерал типа double.

— У литералов с плавающей точкой есть «научная форма записи»: кроме знаковой части числа можно еще указать и степень десятки этого числа. Пример:

Литерал Математическая запись Итоговое значение
1.23E2 1.23*102 123.0
1.23E3 1.23*103 1230.0
1.23E-6 1.23*10-6 0.00000123
1E6 1.0*106 1000000.0
1E-10 1.0*10-10 0.0000000001
9
Задача
Java Syntax Pro Beta,  9 уровень1 лекция
Недоступна
Утильный класс: часть 2
Исправь методы класса Solution, используя класс Math: 1. sqrt(double) - должен возвращать квадратный корень переданного аргумента. 2. cbrt(double) - должен возвращать кубический корень переданного аргумента. 3. pow(int, int) - должен возвращать значение первого аргумента, возведенного в степень втор

Литералы строк

— В коде также можно задавать и целые строки текста. Чтобы компилятор считал строку именно данными (строкой текста), а не частью кода, вся строка с двух сторон обрамляется двойными кавычками.

— Если в одной строке кода много двойных кавычек, они разбиваются на пары. Первая двойная кавычка обозначает начало литерала, следующая за ней — конец литерала. Следующая за ней — опять начало нового литерала, следующая за ней — конец второго литерала. И т.д.

— Каждый такой литерал имеет тип String.

Примеры

Код Пояснение
"+"+"+"+"+"+"+"+"+"
В строке 5 литералов, каждый из которых состоит из одного символа «+»
""
Литерал пустая строка. Строка, в которой нет символов.
"2+3"+"-5"
Тут два литерала. Результатом будет строка «2+3-5», но не число
"return"+";"
Тут тоже два литерала. Оператора return тут нет.

— Если строковый литерал слишком длинный, его можно разбить на несколько строк и склеить «оператором плюс»:

Код Пояснение
String s = "Буря мглою небо кроет"
         + "Вихри снежные крутя"
         + "То как зверь она завоет"
         + "То заплачет как дитя";
Если вывести эту строку на экран, весь текст выведется в одну строку!
9
Задача
Java Syntax Pro Beta,  9 уровень1 лекция
Недоступна
Минимальный элемент массива
В этой задаче тебе нужно: 1. Считать 10 чисел с консоли и заполнить ими массив с помощью метода getArrayOfTenElements(). 2. Найти минимальный элемент массива и вернуть этот элемент с помощью метода min(int[]). В методе min(int[]) обязательно используй метод Math.min(int, int).

Литералы символов

— А что, если мне нужен литерал не из строки, а из отдельного символа? Я должен создать односимвольную строку?

— Нет, тебе в таком случае нужен литерал типа char. Догадаешься, чем ограничивается с двух сторон такой литерал?

— Одинарными кавычками?

— Да, причём внутри одинарных кавычек обязательно должен быть символ и только один. Не может быть пустых одинарных кавычек.

Примеры:

Код Пояснение
'A'
Литерал типа char. Содержит латинскую букву A.
'@'
Литерал типа char. Содержит символ @
'本'
Литерал типа char. Содержит иероглиф японского алфавита. Да, так тоже можно.
'\u1f3a'
Литерал типа char. Содержит символ кодировки Unicode, заданный его номером.

— В последнем примере задается символ из кодировки Unicode с помощью специальной записи: сначала идет префикс \u, затем 4 шестнадцатеричных символа. Детальнее ты узнаешь об этом в ближайших лекциях.