Diferença entre tipos de dados longos e internos em Java
-
os tipos de dados
int
elong
em Java -
as classes Wrapper
Integer
eLong
em Java -
Diferenças entre
int
eInteger
Elong
eLong
em Java
Este artigo discutirá as diferenças entre os tipos de dados int
e long
em Java e explicará as classes de wrapper Integer
e Long
. Entenderemos as diferenças entre esses tipos de dados e as classes wrapper e poderemos decidir qual usar de acordo com o cenário.
os tipos de dados int
e long
em Java
O tipo de dados int
é um tipo de dados primitivo em Java que armazena um número inteiro. Isso significa que int
especifica o tamanho e o tipo do valor da variável. Mas, ele não pode chamar nenhum método. O tamanho de int
é de 4 bytes. Ele pode armazenar os valores de -2,147,483,648
a 2,147,483,647
.
O tipo de dados long
também é outro tipo de dados primitivo em Java com 8 bytes. Possui um intervalo mais amplo do que int
para armazenar um número inteiro. O tipo de dados long
é usado para conter o número inteiro maior que int
não pode conter. Ele pode armazenar os valores de -9,223,372,036,854,775,808
a 9,223,372,036,854,775,807
.
Por exemplo, crie uma variável num1
com o tipo de dados int
e num3
com o tipo de dados long
. Atribua um valor de 100
a num1
e 15000000000L
a num3
. Imprima as variáveis no console. Novamente, crie outra variável, num2
com o mesmo tipo de dados e atribua um valor de 2147483648
. Em seguida, imprima a variável num2
. Observe que essas linhas de código devem ser escritas dentro do método main dentro de uma classe.
O primeiro exemplo de código é executado com êxito, mas o segundo exemplo apresenta um erro. É porque o valor 2147483648
excede o intervalo para o tipo de dados int
. Escrevemos L
após o valor do tipo de dados long
para denotar um valor long
.
Código de exemplo:
int num1 = 100;
long num3 = 15000000000L;
System.out.println(num1);
System.out.println(num3);
Produção:
100 15000000000
Código de exemplo:
int num2 = 2147483648;
System.out.println(num2);
Produção:
Main.java:3: error: integer number too large
int num2 = 2147483648;
^
1 error
as classes Wrapper Integer
e Long
em Java
Uma classe wrapper é um tipo específico de classe cujos objetos podem armazenar os tipos de dados primitivos. Discutiremos as classes de wrapper Integer
e Long
. Podemos criar o objeto wrapper a partir da classe wrapper e isso nos permite usar diferentes métodos associados ao objeto.
Por exemplo, crie um objeto da classe wrapper Integer
myInt
e atribua um valor de 50
. Crie outro objeto myLong
da classe wrapper Long
e atribua um valor 326162165161616161
. Imprima as variáveis myInt
e myLong
. Em seguida, crie dois objetos da classe de wrapper String
como myString1
e myString2
. Use o método toString()
com cada um dos objetos myInt
e myLong
. Finalmente, imprima o comprimento dos objetos myString1
e myString2
chamando o método length()
.
No exemplo abaixo, criamos objetos das classes wrapper Integer
, Long
e String
. Chamamos métodos como toString()
e length()
com os objetos. O método toString()
converte os valores em uma string e podemos usar o método length()
para calcular seu comprimento. Se tentarmos acessar esses métodos a partir do tipo de dados primitivo, não conseguiremos. Portanto, as classes de invólucro nos permitem criar os objetos de invólucro para usar os métodos para várias operações.
Código de exemplo:
Integer myInt = 50;
Long myLong = 326162165161616161L;
System.out.println(myInt);
System.out.println(myLong);
String myString1 = myInt.toString();
System.out.println(myString1.length());
String myString2 = myLong.toString();
System.out.println(myString2.length());
Produção:
50
326162165161616161
2
18
Diferenças entre int
e Integer
E long
e Long
em Java
A principal diferença entre int
ou long
e Integer
e Long
é que os tipos de dados são tipos primitivos, enquanto as classes wrapper são tipos não primitivos. Um tipo de dado primitivo contém um valor específico, enquanto os objetos da classe wrapper são apenas os indicadores para a localização dos dados armazenados.
Integer myInt = new Integer(5);
int num = 5
O objeto myInt
acima é apenas um ponteiro para a localização dos dados 5
. A memória onde o objeto myInt
está armazenado contém o endereço de memória da localização do valor 5
. É apenas uma referência à localização do valor. Enquanto isso, a memória onde a variável num
está armazenada contém o valor 5
.
Este conceito pode ser visualizado com o valor null
. Podemos definir o objeto myInt
com um valor nulo, mas não podemos fazer o mesmo com a variável num
. Um objeto pode se referir a um endereço nulo porque os objetos são tipos de referência. O tipo de dados int
não pode conter um valor nulo porque int
é primitivo e não pode fazer referência. Portanto, quando atribuímos null
a um objeto, ele é gerado como nulo, mas quando o atribuímos a um tipo int
, um erro é gerado.
Código de exemplo:
Integer myInt = null;
System.out.println(myInt);
Produção:
null
Código de exemplo:
int num = null;
System.out.println(myInt);
Produção:
Main.java:6: error: incompatible types: <null> cannot be converted to int
int num = null;
^
1 error