Главная Войти О сайте
Учебник для начинающих
Обзор языка
Установка и настройка
Синтаксис
Классы и объекты
Типы данных и литералы
Типы переменных
Модификаторы
Операторы
Циклы и операторы цикла
Цикл while
Цикл for
Улучшенный цикл for
Цикл do..while
Оператор break
Оператор continue
Операторы принятия решений
Оператор if
Оператор if..else
Вложенный оператор if
Оператор switch..case
Условный оператор (? :)
Числа
Методы byteValue(), shortValue(), intValue(), longValue(), floatValue(), doubleValue()
Метод compareTo()
Метод equals()
Метод valueOf()
Метод toString()
Метод parseInt()
Метод Math.abs()
Метод Math.ceil()
Метод Math.floor()
Метод Math.rint()
Метод Math.round()
Метод Math.min()
Метод Math.max()
Метод Math.exp()
Метод Math.log()
Метод Math.pow()
Метод Math.sqrt()
Метод Math.sin()
Метод Math.cos()
Метод Math.tan()
Метод Math.asin()
Метод Math.acos()
Метод Math.atan()
Метод Math.atan2()
Метод Math.toDegrees()
Метод Math.toRadians()
Метод Math.random()
Символы
Метод Character.isLetter()
Метод Character.isDigit()
Метод Character.isWhitespace()
Метод Character.isUpperCase()
Метод Character.isLowerCase()
Метод Character.toUpperCase()
Метод Character.toLowerCase()
Метод Character.toString()
Строки
Метод charAt()
Метод compareTo()
Метод compareToIgnoreCase()
Метод concat()
Метод contentEquals()
Метод copyValueOf()
Метод endsWith()
Метод equals()
Метод equalsIgnoreCase()
Метод getBytes()
Метод getChars()
Метод hashCode()
Метод indexOf()
Метод intern()
Метод lastIndexOf()
Метод length()
Метод matches()
Метод regionMatches()
Метод replace()
Метод replaceAll()
Метод replaceFirst()
Метод split()
Метод startsWith()
Метод subSequence()
Метод substring()
Метод toCharArray()
Метод toLowerCase()
Метод toString()
Метод toUpperCase()
Метод trim()
Метод valueOf()
Классы StringBuilder и StringBuffer
Метод append()
Метод reverse()
Метод delete()
Метод insert()
Метод replace()
Массивы
Дата и время
Регулярные выражения
Методы
Потоки ввода/вывода, файлы и каталоги
Класс ByteArrayInputStream
Класс DataInputStream
Класс ByteArrayOutputStream
Класс DataOutputStream
Класс File
Класс FileReader
Класс FileWriter
Исключения
Встроенные исключения
Вложенные и внутренние классы
Наследование
Переопределение
Полиморфизм
Абстракция
Инкапсуляция
Интерфейсы
Пакеты
Структуры данных
Интерфейс Enumeration
Класс BitSet
Класс Vector
Класс Stack
Класс Dictionary
Класс Hashtable
Класс Properties
Интерфейс Map

BigInteger Java: работа с большими числами

Язык Java в основном используется для написания больших корпоративных веб-приложений. Однако он также применим и других предметных областях, где довольно часто возникает необходимость в работе с очень большими числами. Хотя в Java имеются примитивные типы, бывают ситуации, где и их недостаточно.

BigInteger Java: работа с большими числами

Известно, что у всех примитивов есть одна неприятная особенность – переполнение типа, при котором выход за пределы допустимых значений приводит к некорректным вычислениям. Для этого существует специальный класс BigInteger. Java не была бы Java, если бы в ней не было отдельного класса с функциональностью и для этого случая. Рассмотрим его подробнее.

Класс BigInteger Java: описание

Как вы уже поняли, класс BigInteger служит оболочкой для больших целочисленных значений. Чтобы инкапсулировать число в объект данного типа, можно использовать одну из перегрузок его конструкторов, либо статический метод valueOf. Конструктор в качестве аргумента может принимать строку либо массив байтов. Для преобразования простых типов, представляющих целые числа, в BigInteger Java используют статический метод valueOf.

Поскольку в Java возможность перегрузки операторов отсутствует, для выполнения математических операций над инкапсулированными в данном классе значениями, предусмотрены соответствующие метода. О них далее и пойдет речь.

Java BigInteger: методы и примеры их использования

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

BigInteger Java: работа с большими числами

BigInteger Java: работа с большими числами

Разберем методы, выполняющие арифметические операции:

- add(value) – выполняет сложение значений текущего объекта, с переданным в качестве аргумента;

- subtract(subtractor) – выполняет вычитание subtractor от текущего значения;

- multiply(value) – выполняет умножение;

- divide(divider) – выполняет деление текущего значения на divider;

- pow(int arg) – возводит значение вызвавшего объекта в степень, величиной в arg;

- abs() – возвращает абсолютное значение вызвавшего объекта;

- negate() – возвращает объект BigInteger, значение которого имеет противоположный знак.

Давайте разберем простой пример выполнения арифметической операции над двумя инкапсулированными в объект значениями:

- BigInteger val1, val2, adding, dividing, oppositeSign;

- val1 = new BigInteger(“5”);

- val2 = BigInteger.valueOf(10);

- adding = val1.add(val2);

- dividing = val2.divide(val1);

- oppositeSign = val1.negate();

Обратите внимание на способ создание объектов. Переменная val1 инициализировалась при помощи конструктора, принявшего строку, и хранит значение 5. val2 имеет значение 10 в результате работы статического метода valueOf. Значение переменной adding это результат сложение первых двух переменных и равно 15. Переменная dividing соответственно хранит результат вычитания. oppositeSign равен значению val1 с противоположным знаком, т. е. -5.

Заключение

Как видите, класс BigInteger Java предоставляет различные инструменты для операций над очень большими числами. При этом переполнение типов исключено, так как безопасность в Java имеет один из самых высоких приоритетов, естественно без ущерба функциональности.


4Java.ru