Tipos de dados primitivos - o oracle doc diz que o intervalo long
em Java é -9,223,372,036,854,775,808
para 9,223,372,036,854,775,807
. Mas quando eu faço algo assim no meu eclipse
long i = 12345678910;
mostra-me " The literal 12345678910 of type int is out of range
" erro.
Existem 2 perguntas.
1) Como inicializo o long
com o valor 12345678910
?
2) Todos os literais numéricos são por padrão do tipo int
?
java
long-integer
aamadmi
fonte
fonte
Long
- devido ao boxe automático, você pode usarLong i = 12345678910L
ouLong i = Long.valueOf(12345678910L)
para os casos em que não pode usar o boxe automático.Respostas:
L
:long i = 12345678910L;
.BTW: não precisa ser um L maiúsculo, mas o minúsculo é confundido com
1
muitas vezes :).fonte
0x200000000L
0x20000000L
?0x20000000L
funcionaria, mas ainda pode ser representado porint
(um número inteiro de 32 bits), assim0x20000000
também funcionaria.0x200000000L
rompe esse limite, tornando a trilhaL
necessária.Você precisa adicionar o
L
caractere no final do número para que o Java o reconheça por muito tempo.Sim.
Consulte Tipos de dados primitivos, que diz "Um literal inteiro é do tipo long se termina com a letra L ou l; caso contrário, é do tipo int".
fonte
Você precisa adicionar letras maiúsculas
L
no final assimO mesmo se aplica ao float com
3.0f
O que deve responder às duas perguntas
fonte
Para inicializar por muito tempo, você precisa anexar "L" ao final.
Pode ser maiúscula ou minúscula.
Todos os valores numéricos são por padrão
int
. Mesmo quando você faz qualquer operaçãobyte
com qualquer número inteiro,byte
é promovido primeiro paraint
e, em seguida, qualquer operação é executada.Tente isto
Você recebe um erro porque
2
é por padrãoint
.Assim que você está tentando multiplicar
byte
comint
. Portanto, o resultado é tipificado para oint
qual não pode ser atribuído novamentebyte
.fonte