Tamanho de uma variável long

Continuando a discussão do Tamanho máximo int e outros:

Pessoal, boa noite.

Rodei o seguinte programa:

class MeuPrograma{
public static void main (String args[]){

	long l = 9223372036854775807;
	
	System.out.println(l);

}

}

Porém ao compilar, me gera o erro: integer number too large;

Como isso é possível? Esse valor cabe dentro de um variável do tipo long normalmente!

Fiquei na dúvida.

Obrigado

O problema é por conta de como o Java trata literais do tipo inteiro: https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html

(É uma das questões que podem cair na prova de certificação :wink:)

Toda literal é tratada como int, quando não houver sufixo. Pra resolver o problema, basta colocar um ‘L’(maiúsculo ou minúsculo) no final da literal:

long l = 9223372036854775807L;

Uma boa prática é sempre usar L ao invés de l, pra não confundir o ‘l’ minúsculo com o número 1!

Abcs!

3 curtidas

Muito obrigado :wink: