Новини високих технологій
» » BigInteger Java: робота з великими числами

BigInteger Java: робота з великими числами

2-12-2016, 09:59
1 369
Мова Java в основному використовується для написання великих корпоративних веб-додатків. Однак він також застосуємо і інших предметних областях, де досить часто виникає необхідність у роботі з дуже великими числами. Хоча в Java є примітивні типи, бувають ситуації, де їх недостатньо.
Відомо, що у всіх примітивів є одна неприємна особливість – переповнення типу, при якому вихід за межі допустимих значень призводить до некоректних обчислень. Для цього існує спеціальний клас BigInteger. Java не була б Java, якби в ній не було окремого класу з функціональністю і для цього випадку. Розглянемо його докладніше.


Клас BigInteger Java: опис

Як ви вже зрозуміли, клас BigInteger служить оболонкою для великих цілочисельних значень. Щоб инкапсулировать число об'єкт даного типу, можна використовувати одну з перевантажень його конструкторів, або статичний метод valueOf. Конструктор як аргумент може приймати рядок або масив байтів. Для перетворення простих типів, що представляють цілі числа, в BigInteger Java використовують статичний метод valueOf. Оскільки в Java можливість перевантаження операторів відсутній, для виконання математичних операцій над інкапсульованими в даному класі значеннями, передбачені відповідні методи. Про них далі і піде мова.

Java BigInteger: методи і приклади їх використання

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



Розглянемо методи, які виконують арифметичні операції: - 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 має один з найвищих пріоритетів, природно, без шкоди для функціональності.
Цікаво по темі
Java Array. Масиви в Java. Java для початківців
Java Array. Масиви в Java. Java для початківців
Для роботи з великою кількістю значень в Java, як у більшості сучасних високорівневих мов програмування, є такий потужний інструмент, як масиви.
Хеш-теги: що це і як їх використовувати
Хеш-теги: що це і як їх використовувати
У перекладі з англійської "хеш-тег" позначає «решітка» + «мітка». Даний вид позначки використовується тільки в мікроблогах і соціальних мережах. Теги
Нескінченний for (Java) цикл
Нескінченний for (Java) цикл
Одними з ключових елементів ядра мови Java є цикли, що дозволяють виконувати повторювані операції певну кількість разів. Даний інструмент значно
Java Узагальнення: опис і методи
Java Узагальнення: опис і методи
Узагальнені типи або узагальнення в Java представляють собою потужний інструмент уніфікації коду та забезпечення безпеки типів даних. У даній статті
Java: InputStream. Потоки введення
Java: InputStream. Потоки введення
У даній статті ми розглянемо базовий клас для потоків вводу даних в Java - InputStream. Розберемо основну його функціональність і реалізації, які
Перетворення типів. Функції Round і Trunc в "Паскаль"
Перетворення типів. Функції Round і Trunc в "Паскаль"
Перетворення типів в Pascal дозволяє реалізувати більш широкий клас задач та виконувати операції над величинами різних типів.