Inizializza un lungo in Java

Tipi di dati primitivi – oracle doc dice che l’intervallo di long in Java è -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 . Ma quando faccio qualcosa di simile nella mia eclipse

 long i = 12345678910; 

mi mostra ” The literal 12345678910 of type int is out of range errore The literal 12345678910 of type int is out of range “.

Ci sono 2 domande.

1) Come inizializzare il long con il valore 12345678910 ?

2) Tutti i valori letterali numerici sono di default di tipo int ?

  1. Dovresti aggiungere L : long i = 12345678910L; .
  2. Sì.

BTW: non deve essere una L maiuscola, ma la minuscola è confusa con 1 molte volte :).

  1. È necessario aggiungere il carattere L alla fine del numero per far sì che Java lo riconosca come un lungo.

     long i = 12345678910L; 
  2. Sì.

Vedi Tipi di dati primitivi che dice “Un intero letterale è di tipo lungo se termina con la lettera L o l, altrimenti è di tipo int”.

È necessario aggiungere la L maiuscola alla fine in questo modo

 long i = 12345678910L; 

Lo stesso vale per float con 3.0f

Quale dovrebbe rispondere a entrambe le vostre domande

Per inizializzare a lungo è necessario aggiungere “L” alla fine.
Può essere maiuscolo o minuscolo.

Tutti i valori numerici sono di default int . Anche quando si esegue un’operazione di byte con qualsiasi numero intero, il byte viene prima promosso a int e quindi vengono eseguite tutte le operazioni.

Prova questo

 byte a = 1; // declare a byte a = a*2; // you will get error here 

Ottieni l’errore perché 2 è di default int .
Quindi stai provando a moltiplicare i byte con int . Quindi il risultato viene convertito in typecasting che non può essere assegnato a byte .