Looking for java Keywords? Try Ask4Keywords

Java LanguageTypes de données primitifs


Introduction

Les 8 types de données primitifs byte , short , int , long , char , boolean , float et double sont les types qui stockent la plupart des données numériques brutes dans les programmes Java.

Syntaxe

  • int aInt = 8; // La partie définissant (nombre) de cette déclaration int est appelée un littéral.

  • int hexInt = 0x1a; // = 26; Vous pouvez définir des littéraux avec des valeurs hexadécimales préfixées par 0x .

  • int binInt = 0b11010; // = 26; Vous pouvez également définir des littéraux binaires; préfixé avec 0b .

  • long goodLong = 10000000000L; // Par défaut, les littéraux entiers sont de type int. En ajoutant le L à la fin du littéral, vous indiquez au compilateur que le littéral est long. Sans cela, le compilateur émettrait une erreur "nombre entier trop grand".

  • double aDouble = 3,14; // Les littéraux à virgule flottante sont de type double par défaut.

  • float aFloat = 3.14F; // Par défaut, ce littéral aurait été un double (et provoqué une erreur "Types incompatibles"), mais en ajoutant un F, nous indiquons au compilateur qu'il s'agit d'un flottant.

Remarques

Java a 8 types de données primitifs , à savoir boolean , byte , caractères short , char , int , long , float et double . (Tous les autres types sont des types de référence . Cela inclut tous les types de tableau et les types / classes d'objets intégrés qui ont une signification particulière dans le langage Java; par exemple, String , Class et Throwable et ses sous-classes.)

Le résultat de l' ensemble des opérations (addition, soustraction, multiplication, etc) sur un type primitif est au moins un int , ajoutant ainsi un short à un short produit un int , tout comme l' ajout d' un byte d'un byte , ou une char à une char . Si vous souhaitez affecter le résultat à une valeur du même type, vous devez le lancer. par exemple

byte a = 1;
byte b = 2;
byte c = (byte) (a + b);

Ne pas lancer l'opération entraînera une erreur de compilation.

Cela est dû à la partie suivante de Java Language Spec, §2.11.1 :

Un compilateur encode des charges de valeurs littérales de types byte et short utilisant des instructions Java Virtual Machine qui étendent ces valeurs aux valeurs de type int à la compilation ou à l'exécution. Les charges de valeurs littérales des types boolean et char sont codées en utilisant des instructions qui étendent le littéral à zéro à une valeur de type int à la compilation ou à l'exécution. [..]. Ainsi, la plupart des opérations sur les valeurs des types réels boolean , byte , char et short sont effectuées correctement par des instructions fonctionnant sur des valeurs de type computational int .

La raison derrière cela est également spécifiée dans cette section:

Étant donné la taille de l'opcode un octet de la machine virtuelle Java, les types d'encodage en opcodes exercent une pression sur la conception de son jeu d'instructions. Si chaque instruction typée prenait en charge tous les types de données d'exécution de la machine virtuelle Java, il y aurait plus d'instructions que celles pouvant être représentées dans un byte . [...] Des instructions distinctes peuvent être utilisées pour convertir entre des types de données non pris en charge et pris en charge, selon les besoins.

Types de données primitifs Exemples Liés