Types de données primitifs - oracle doc indique que l'étendue de long
Java est -9,223,372,036,854,775,808
de 9,223,372,036,854,775,807
. Mais quand je fais quelque chose comme ça dans mon éclipse
long i = 12345678910;
il me montre une The literal 12345678910 of type int is out of range
erreur " ".
Il y a 2 questions.
1) Comment initialiser le long
avec la valeur 12345678910
?
2) Tous les littéraux numériques sont-ils par défaut de type int
?
java
long-integer
aamadmi
la source
la source
Long
- en raison de la boxe automatique, vous pouvez utiliserLong i = 12345678910L
ou utiliserLong i = Long.valueOf(12345678910L)
dans les cas où vous ne pouvez pas utiliser la boxe automatique.Réponses:
L
:long i = 12345678910L;
.BTW: il n'est pas nécessaire que ce soit un L majuscule, mais il est
1
souvent confondu avec des minuscules :).la source
0x200000000L
0x20000000L
?0x20000000L
fonctionnerait mais peut toujours être représenté parint
(un entier 32 bits), donc0x20000000
fonctionnerait tout aussi bien.0x200000000L
brise cette frontière, rendant la fuiteL
nécessaire.Vous devez ajouter le
L
caractère à la fin du nombre pour que Java le reconnaisse comme long.Oui.
Voir Primitive Data Types qui dit "Un littéral entier est de type long s'il se termine par la lettre L ou l; sinon il est de type int."
la source
Vous devez ajouter des majuscules
L
à la fin comme çaIl en va de même pour le flotteur avec
3.0f
Qui devrait répondre à vos deux questions
la source
Pour initialiser longtemps, vous devez ajouter "L" à la fin.
Il peut être en majuscules ou en minuscules.
Toutes les valeurs numériques sont par défaut
int
. Même lorsque vous effectuez une opérationbyte
avec un entier,byte
est d'abord promuint
et ensuite toutes les opérations sont effectuées.Essaye ça
Vous obtenez une erreur car
2
est par défautint
.Par conséquent, vous essayez de vous multiplier
byte
avecint
. Par conséquent, le résultat est converti en typeint
auquel ne peut pas être attribué à nouveaubyte
.la source