A linguagem Java é usada principalmente para escrevergrandes aplicativos da web corporativos. No entanto, também é aplicável a outras áreas disciplinares onde muitas vezes é necessário trabalhar com números muito grandes. Embora Java tenha tipos primitivos, há situações em que eles não são suficientes.
É sabido que todos os primitivos têm umUm recurso desagradável é o estouro de tipo, no qual um valor fora do intervalo leva a cálculos incorretos. Há uma classe BigInteger especial para isso. Java não seria Java se não tivesse uma classe separada com funcionalidade para este caso também. Vamos considerá-lo com mais detalhes.
Como você já entendeu, a classe BigInteger serveum wrapper para grandes valores inteiros. Para encapsular um número em um objeto de um determinado tipo, você pode usar uma de suas sobrecargas de construtor ou o método valueOf estático. O construtor pode usar uma string ou uma matriz de bytes como argumento. Para converter tipos simples que representam inteiros, Java BigInteger usa o método valueOf estático.
Já que em Java, a capacidade de sobrecarregarNão existem operadores, existem métodos correspondentes para realizar operações matemáticas em valores encapsulados nesta classe. Falaremos mais sobre eles.
Esta classe tem em seu arsenal muitosmétodos que permitem manipular valores numéricos e realizar várias operações matemáticas neles. Abaixo está uma lista desses métodos.
Vejamos os métodos que realizam operações aritméticas:
- add (value) - realiza a adição dos valores do objeto atual, passado como argumento;
- subtrair (subtrator) - subtrai o subtrator do valor atual;
- multiplica (valor) - executa a multiplicação;
- divide (divider) - divide o valor atual por divisor;
- pow (int arg) - aumenta o valor do objeto de chamada para uma potência de arg;
- abs () - retorna o valor absoluto do objeto de chamada;
- negate () - retorna um objeto BigInteger com o sinal oposto.
Vamos dar uma olhada em um exemplo simples de execução de uma operação aritmética em dois valores encapsulados em um objeto:
- BigInteger val1, val2, somando, dividindo, opostoSign;
- val1 = novo BigInteger (“5”);
- val2 = BigInteger.valueOf (10);
- adicionar = val1.add (val2);
- divisão = val2.divide (val1);
- opostoSign = val1.negate ();
Preste atenção na forma como os objetos são criados.A variável val1 foi inicializada usando um construtor que pegou uma string e armazena o valor 5. val2 é definido como 10 como resultado do método valueOf estático. O valor da variável de adição é o resultado da adição das duas primeiras variáveis e é igual a 15. A variável de divisão armazena adequadamente o resultado da subtração. opostoSign é igual a val1 com o sinal oposto, ou seja, -5.
Como você pode ver, a classe BigInteger Java fornecevárias ferramentas para operações em números muito grandes. Ao mesmo tempo, o tipo overflow é excluído, já que a segurança em Java tem uma das maiores prioridades, naturalmente sem sacrificar a funcionalidade.