Question

Il semble que lorsque vous tapez un numéro Java, le compilateur lit automatiquement comme un entier, ce qui explique pourquoi lorsque vous tapez (long) 6000000000 (pas dans la gamme entier), il se plaindra que 6000000000 est pas un entier . Pour corriger cela, je devais préciser 6000000000L. Je viens d'apprendre de cette spécification.

Y at-il d'autres spécifications du numéro comme à court, octet, float, double? Il semble que ce serait bon d'avoir parce que (je suppose) si vous pouvez spécifier le nombre que vous tapez dans un court alors java aurait pas à jeter - c'est une hypothèse, corrigez-moi si je me trompe . Je recherche normalement cette question moi-même, mais je ne sais pas ce que ce genre de spécification nombre est même appelé.

Était-ce utile?

La solution

Il y a suffixes spécifiques pour long (par exemple 39832L), float (par exemple 2.4f) et double (par exemple -7.832d).

S'il n'y a pas de suffixe, et il est un type entier (par exemple 5623), il est supposé être un int. Dans le cas contraire un type entier (par exemple 3.14159), il est supposé être un double.

Dans tous les autres cas (byte, short, char), vous avez besoin du casting car il n'y a pas de suffixe spécifique.

La spécification Java permet à la fois suffixes majuscules et minuscules, mais la version supérieure de cas pour longs est préférable, comme le L supérieur de cas est moins facile à confondre avec un 1 chiffre que le minuscule l.

Voir la section JLS 3.10 pour les détails gores (voir la définition de IntegerTypeSuffix).

Autres conseils

J'espère que vous ne me dérangerait pas une légère tangente, mais que tu pourrais être intéressé de savoir qu'en plus F (pour float), D (pour le double) et L (pour longtemps), une proposition a été faite pour ajouter des suffixes byte et short-Y et S respectivement. Cela permettrait d'éliminer la nécessité de jeter à octets lorsque vous utilisez la syntaxe littérale pour les tableaux d'octets (ou court). Citant l'exemple de la proposition:

  

AVANTAGES MAJOR: Pourquoi la plate-forme   mieux si la proposition est adoptée?

     

Code cruddy comme

 byte[] stuff = { 0x00, 0x7F, (byte)0x80,  (byte)0xFF};
     

peut être recodé comme

 byte[] ufum7 = { 0x00y, 0x7Fy, 0x80y, 0xFFy };

Joe Darcy supervise Coin projet pour Java 7, et son blog a été un moyen facile de le suivi de ces propositions.

  

Il semble que ce serait bon de   ont parce que (je suppose) si vous pouviez   spécifiez le numéro que vous taper est   un court alors java ne serait pas à   jeter

Depuis l'analyse syntaxique de littéraux arrive au moment de la compilation, ce qui est absolument hors de propos en ce qui concerne la performance. La seule raison pour avoir suffixes short et byte serait bien est qu'il conduit à un code plus compact.

Considérez:

long l = -1 >>> 1;

contre

int a = -1;
long l = a >>> 1;

Maintenant que vous attendez la peine des fragments de code pour donner la même valeur à l variable. Nous avons donc besoin d'expression sur littérales int à faire comme ints.

scroll top