web-dev-qa-db-fra.com

Initialiser un long dans Java

Types de données primitives - doc Oracle indique la plage de long dans Java est -9,223,372,036,854,775,808 à 9,223,372,036,854,775,807 . Mais quand je fais quelque chose comme ça dans mon Eclipse

long i = 12345678910;

il me montre l'erreur "The literal 12345678910 of type int is out of range".

Il y a 2 questions.

1) Comment initialiser la long avec la valeur 12345678910?

2) Tous les littéraux numériques par défaut sont-ils de type int?

194
aamadmi
  1. Vous devriez ajouter L: long i = 12345678910L;.
  2. Oui.

BTW: il n'est pas nécessaire que ce soit une majuscule L, mais les minuscules sont confondues avec 1 plusieurs fois :).

392
MByD
  1. Vous devez ajouter le caractère L à la fin du numéro pour que Java le reconnaisse comme étant long.

    long i = 12345678910L;
    
  2. Oui.

Voir Types de données primitives qui indique "Un littéral entier est de type long s'il se termine par la lettre L ou l; sinon, il est de type int."

55
Jack Edmonds

Vous devez ajouter _ majuscule L à la fin, comme ça

long i = 12345678910L;

Il en va de même pour float avec 3.0f

Ce qui devrait répondre à vos deux questions

38
Amir Raminfar

Pour initialiser longtemps, vous devez ajouter "L" à la fin.
Il peut être en majuscule ou en minuscule.

Toutes les valeurs numériques sont par défaut int. Même lorsque vous effectuez une opération de byte avec un entier quelconque, byte est d'abord promu en int, puis toutes les opérations sont effectuées.

Essaye ça

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

Vous obtenez une erreur parce que 2 est par défaut int.
Par conséquent, vous essayez de multiplier byte par int. Par conséquent, le résultat est transtypé en int et ne peut pas être attribué à byte.

15
Suraj Dubey