Java de L du nombre (long) spécification
Il semble que lorsque vous tapez dans un certain nombre de Java, le compilateur lit automatiquement comme un entier, c'est pourquoi lorsque vous tapez dans la (longue) 6000000000
(pas en entier, la gamme) il va se plaindre que 6000000000
n'est pas un entier. Pour corriger cela, j'ai eu de spécifier 6000000000L
. J'ai juste appris à propos de cette spécification.
Existe-il d'autres spécifications de numéro, comme pour faire court, byte, float, double? Il semble qu'il serait bon d'avoir raison (je suppose) si vous pouviez préciser le numéro de la saisie dans un court puis java n'aurais pas à le lancer - c'est une hypothèse, corrigez-moi si je me trompe. Je serais normalement de recherche, cette question moi-même, mais je ne sais pas ce que ce genre de numéro de spécification est même appelé.
Vous devez vous connecter pour publier un commentaire.
Il y a des suffixes spécifiques pour
long
(par exemple39832L
),float
(par exemple2.4f
) etdouble
(par exemple-7.832d
).Si il n'y a pas de suffixe, et il est une partie intégrante de type (par exemple,
5623
), il est supposé être unint
. Si ce n'est pas une partie intégrante de type (par exemple,3.14159
), il est supposé être undouble
.Dans tous les autres cas (
byte
,short
,char
), vous avez besoin de la fonte comme il n'y a pas de suffixe spécifique.La Java spec permet à la fois supérieure et inférieure de cas des suffixes, mais les majuscules version pour
long
s est préféré, comme les majusculesL
est moins facile à confondre avec un chiffre1
que les minusculesl
.Voir le JLS section 3.10 pour les détails croustillants (voir la définition de
IntegerTypeSuffix
).1
avecl
et0
avecO
(et ainsi de suite), votre prioritaire est de définir la police de droite (si vous pouvez), puis vous soucier de faire en sorte de ne pas manquer la touche Maj enfoncée.long _lo = 30;
et pas30L
est-ce à dire ma variable sera converti en float ? Ou en cas de_lo = _lo + 2.77
que_lo
sera intégré dans float bien qu'il a été déclaré que long30
est unint
qui est automatiquement converti via un élargissement de la conversion à unelong
. Dans le second cas, votre déclaration est illégal. Vous devez convertir explicitement le côté droit, à la longue, par exemple_lo = (long) (_lo + 2.77)
l
et1
(0
etO
resp.) sont assez semblables.J'espère que vous ne m'en voudrez pas une légère tangente, mais pensé que vous pourriez être intéressés de savoir qu'en plus de
F
(pour float),D
(double), etL
(pour longtemps), une proposition a été faite à des suffixes pourbyte
etshort
—Y
etS
respectivement. Cela permettrait d'éliminer la nécessité de fonte d'octets lors de l'utilisation de la syntaxe littérale de l'octet (ou à découvert) des tableaux. Citant l'exemple de la proposition:Joe Darcy est de superviser Projet de Pièce de monnaie pour Java 7, et son blog a été un moyen facile de suivre ces propositions.
0b
préfixe binaire littéraux bien. Wouah.Ces sont des littéraux et sont décrits dans section 3.10 du langage Java, spec.
Par défaut, toutes les intégrales de type de données primitif (byte, short, int, long) seront traités comme des int type par le compilateur java. Pour octet et court, tant que la valeur qui leur est attribuée est dans leur gamme, il n'y a pas de problème et pas de suffixe nécessaire. Si la valeur attribuée à octet et court dépasse leur gamme, explicite la conversion de type est nécessaire.
Ex:
pour surmonter cette effectuer la conversion de type.
Dans le cas de données de type long, il peut accepter la valeur entière sans aucun tracas. Supposons que nous assignons comme
dans ce cas pas de suffixe comme L/L est nécessaire. Par défaut la valeur 2147483647 est considéré par le compilateur java est de type int. Interne, la conversion de type est faite par le compilateur et l'int est auto promu type Long.
Ici, nous avons besoin de mettre le suffixe comme L pour traiter le littéral 2147483648 que le type long par le compilateur java.
donc finalement
Depuis l'analyse de littéraux qui se passe au moment de la compilation, ce n'est absolument pas pertinent en ce qui concerne les performances. La seule raison d'avoir
short
etbyte
suffixes serait bien c'est qu'il conduit à code plus compact.Considérer:
contre
Maintenant, vous attendez la peine fragments de code à donner la même valeur à la variable
l
. Nous avons donc besoin d'expression surint
littéraux à faire commeint
s.