Ключевой момент: Java имеет шесть типов для целых числе и числе с плавающей запятой с операторами +, -, *, / и %.
1. Числовые типы
Каждый тип данных имеет диапазон значений. Компилятор выделяет пространство памяти для каждой переменной или константы в соответствии с её типом данных. Java предоставляет восемь примитивных типов данных для числовых значений, символов и логических значений. В этом разделе представлены числовые типы данных и операторы.
В таблице перечислены шесть числовых типов данных, их диапазоны и размеры их хранения.
Имя (тип) | Диапазон | Размер хранения |
---|---|---|
byte | от -27 до 27 — 1 (от -128 до 127) | 8-бит со знаком |
short | от -215 до 215 — 1 (от -32768 до 32767) | 16-бит со знаком |
int | от -231 до 231 — 1 (от -2147483648 до 2147483647) | 32-бита со знаком |
long | от -263 до 263 — 1 (т.е., от -9223372036854775808 до 9223372036854775807) | 64-бита со знаком |
float |
Отрицательный диапазон: от -3.4028235E + 38 до -1.4E — 45 Положительный диапазон: от 1.4E — 45 до 3.4028235E + 38 |
32-бита IEEE 754 |
double |
Отрицательный диапазон: от -1.7976931348623157E + 308 до -4.9E — 324 Положительный диапазон: от 4.9E — 324 до 1.7976931348623157E + 308 |
64-бита IEEE 754 |
Примечание: IEEE 754 является стандартом, утвержденным Институтом инженеров по электротехнике и электронике для представления на компьютерах чисел с плавающей запятой. Стандарт широко принят. Java использует 32-разрядный IEEE 754 для типа float и 64-разрядный IEEE 754 для типа double. Стандарт IEEE 754 также определяет специальные значения с плавающей запятой, которые перечислены в Приложении E.
Целочисленные типы
Java использует четыре типа целых чисел: byte, short, int и long. Выбирайте тип, который больше всего подходит для вашей переменной. Например, если вы знаете, что целое число, хранимое в переменной, находится в диапазоне байта, объявите переменную как byte. Для простоты и последовательности, большую часть времени на этом сайте мы будем использовать для целых чисел тип int.
Типы с плавающей запятой
Java использует два типа чисел с плавающей запятой: float и double. Тип double в два раза больше чем float. Поэтому double известен как число с двойной точностью, а float – как число с одинарной точностью. Обычно вам следует использовать тип double, поскольку он более точен чем тип float.
2. Считывание чисел с клавиатуры
Вы знаете как использовать метод nextDouble() из класса Scanner для считывания значения double с клавиатуры. Вы также можете использовать методы, представленные в следующей таблице, для чтения чисел типов byte, short, int, long и float:
Метод | Описание |
---|---|
nextByte() | прочитать число типа byte |
nextShort() | прочитать число типа short |
nextInt() | прочитать число типа int |
nextLong() | прочитать число типа long |
nextFloat() | прочитать число типа float |
nextDouble() | прочитать число типа double |
Далее примеры для чтения данных различного типа с клавиатуры:
Scanner input = new Scanner(System.in); System.out.print("Введите значение byte: "); byte byteValue = input.nextByte(); System.out.print("Введите значение short: "); short shortValue = input.nextShort(); System.out.print("Введите значение int: "); int intValue = input.nextInt(); System.out.print("Введите значение long: "); long longValue = input.nextLong(); System.out.print("Введите значение float: "); float floatValue = input.nextFloat();
Если вы введёте значение из некорректного диапазона или формата, случиться ошибка выполнения. Например, в строке 3 вы введёте 128, произойдёт ошибка, поскольку 128 находится вне диапазона чисел типа byte.
3. Числовые операторы
Операторы +, -, *, /, % и операнды
Операторы для числовых типов данных включают стандартные арифметические операторы: сложение (+), вычитание (–), умножение (*), деление (/) и остаток от деления (%).
Имя | Значение | Пример | Результат |
---|---|---|---|
+ | Сложение | 34 + 1 | 35 |
— | Вычитание | 34.0 — 0.1 | 33.9 |
* | Умножение | 300 * 30 | 9000 |
/ | Деление | 1.0 / 2.0 | 0.5 |
% | Остаток от деления | 20 % 3 | 2 |
Целочисленное деление
Когда оба операнда деления (делимое и делитель) являются целыми числами, результатом деление будет частное без дробной части. Например, 5 / 2 даёт 2, а не 2.5, а -5 / 2 даёт -2, а не -2.5. Для выполнения деления с плавающей точкой один из операндов должен быть числом с плавающей запятой. Например, 5.0 / 2 даёт 2.5.
Оператор %, известный как остаток от деления, или оператор модуля, даёт остаток после деления. Операндом слева – это делимое, а операнд справа – делитель. Поэтому 7 % 3 даёт 1, 3 % 7 даёт 3, 12 % 4 даёт 0, 26 % 8 даёт 2 и 20 % 13 даёт 7.
Оператор % часто используется для положительных целых чисел, но также может использоваться для отрицательных и значений с плавающей запятой. Остаток от деления является отрицательным только если отрицательным является делимое. Например, -7 % 3 даёт -1, -12 % 4 даёт 0, -26 % -8 даёт -2 и 20 % -13 даёт 7.
Остаток от деления очень полезен в программировании. Например, чётные числа % 2 всегда 0, а нечётные числа % 2 всегда 1. Так вы можете использовать это свойство для определения, является ли число чётным или нечётным. Если сегодня суббота, то суббота снова будет через 7 дней. Предположим, вы и ваши друзья собираетесь встретиться через 10 дней. Какой день будет через 10 дней? Вы можете узнать, что будет вторник используя следующее выражение:
Следующая программа считает сколько минут и секунд содержится в количестве введённых секунд. Например, 500 секунд содержат 8 минут и 20 секунд.
import java.util.Scanner; public class DisplayTime { public static void main(String[] args) { Scanner input = new Scanner(System.in); // Запрос пользователю на ввод System.out.print("Введите число секунд: "); int seconds = input.nextInt(); int minutes = seconds / 60; // Найти минуты в секундах int remainingSeconds = seconds % 60; // Оставшиеся секунды System.out.println(seconds + " секунд это " + minutes + " минут и " + remainingSeconds + " секунд"); } }
Метод nextInt() (строка 8) считывает число для seconds. Строка 10 получает минуты используя seconds / 60. Строка 11 (seconds % 60) получает оставшиеся секунды без минут.
Унарные и бинарные операторы
Операторы + и — могут быть как унарными, так и бинарными. Унарный оператор имеет только один операнд; а бинарные – два. Например, оператор — в -5 – это унарный оператор, показывающей, что число 5 является отрицательным, в то время как оператор — в 4 — 5 является бинарным оператор для вычитания 5 из 4.
4. Операции возведения в степень
Метод Math.pow(a, b) может использоваться для вычисления ab. Метод pow определён в классе Math в Java API. Этот метод вызывается с использованием синтаксиса Math.pow(a, b) (например, Math.pow(2, 3)), который возвращает результата ab (23). Здесь a и b являются параметрами для метода pow, а числа 2 и 3 настоящими значениями, используемыми для вызова метода. Например:
System.out.println(Math.pow(2, 3)); // Выведет 8.0 System.out.println(Math.pow(4, 0.5)); // Выведет 2.0 System.out.println(Math.pow(2.5, 2)); // Выведет 6.25 System.out.println(Math.pow(2.5, -2)); // Выведет 0.16
В одной из последующих главах будут даны дополнительные подробности о методах. На данный момент всё, что вам нужно знать, это как вызывать метод pow для выполнения операций возведения в степень.
Проверь себя:
- Найдите наибольшие и наименьшие byte, short, int, long, float и double. Какой тип данных требует самое маленькое количество памяти?
- Покажите результат следующих остатков от делений.
56 % 6 78 % -4 -34 % 5 -34 % -5 5 % 1 1 % 5
- Если сегодня вторник, какой будет день через 100 дней?
- Каким будет результат 25 / 4? Как нужно переписать это выражение, если в качестве результата мы хотим получить число с плавающей запятой?
- Покажите результат следующего кода:
System.out.println(2 * (5 / 2 + 5 / 2)); System.out.println(2 * 5 / 2 + 2 * 5 / 2); System.out.println(2 * (5 / 2)); System.out.println(2 * 5 / 2);
- Являются ли следующие инструкции корректными? Если так, покажите вывод.
System.out.println("25 / 4 это " + 25 / 4); System.out.println("25 / 4.0 это " + 25 / 4.0); System.out.println("3 * 2 / 4 это " + 3 * 2 / 4); System.out.println("3.0 * 2 / 4 это " + 3.0 * 2 / 4);
- Напишите инструкцию для вывода результата 23.5.
- Предположим m и r целые числа. Напишите инструкцию Java для mr2 чтобы получить результат с плавающей точкой.