Les types primitifs en Java

Les types primitifs en Java

  1. Objectifs

    • Connaitre les types primitifs en Java
  2. Introduction

    • Java est un langage orienté objet, c’est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c’est-à-dire des instances de classes.
    • Toutefois ces objets contiennent des données possédant un type (et une représentation). Ces données sont un ensemble d’éléments stockés en mémoire et baptisés pour l’occasion primitives.
    • En Java les types de données sont divisés en deux groupes:
      • Types de données primitifs – comprend octet, court, int, long, float, double, boolean et char
      • Types de données non primitifs – tels que String, Arrays et Classes (vous en apprendrez plus à ce sujet dans un chapitre ultérieur)
  3. Les données de type primitif

    • Un primitif est une donnée élémentaire de base telles que les nombres entiers, les nombres réels, les caractères et les booléens.
    • Java définit 8 types de primitifs:
      1. 4 types de nombres entiers
      2. 2 types de nombres réels
      3. 1 type pour les booléens
      4. 1 type pour les caractères

    • Les quatre types entiers en Java
      • Il existe quatre types entiers en Java, à l’instar des langages C et C++ dont Java s’inspire. C’est quatre types entiers sont : byte, short, int et long. La différence entre ces quatre types de données réside dans le nombre d’octets utilisé par la variable comme le montre le tableau ci-dessous.
      •   byte short int long
        Taille (bits) 8 16 32 64
        Etendue des valeurs -128 .. 127 -32768 .. 32767 -231 .. 231-1 -263 .. 263-1
    • Les deux types de nombres réels en Java
      • Un nombre à virgule flottante est un nombre à virgule, il peut toutefois être représenté de différentes façons :
        • un entier décimal: 895
        • un nombre comportant un point (et non une virgule): 845.32
        • une fraction: 27/11
        • un nombre exponentiel, c’est-à-dire un nombre (éventuellement à virgule) suivi de la lettre e (ou E), puis d’un entier correspondant à la puissance de 10 (signé ou non, c’est-à-dire précédé d’un + ou d’un -)
          • 2.75e-2
          • 35.8E+10
          • .25e-2
      • Les nombres de type float sont codés sur 32 bits dont :
        • 23 bits pour la mantisse
          8 bits pour l’exposant
          1 bit pour le signe
      • Les nombres de type double sont codés sur 64 bits dont :
        • 52 bits pour la mantisse
          11 bits pour l’exposant
          1 bit pour le signe
    • Le type caractère (char) en Java
      • Les variables de type char sont codées sur 2 octets non signés car la représentation interne des caractères est l’UTF-16.
      • Par défaut, un attribut de type char vaut 0 (c’est-à-dire le caractère de terminaison).
      • Pour représenter un littéral, on utilise l’apostrophe (simple quote) :char c = ‘a’;
    • Le type booléen en Java
      • Le type de données booléen représente un bit d’information
      • Il n’y a que deux valeurs possibles: true et false
      • La valeur par défaut est false
      • Ce type de données est utilisé pour les indicateurs simples qui suivent les conditions vraies/fausses.
      • On ne peut utiliser que des opérateurs booléens comme ==, != et ! sur des variables de type booléen (pas d’opération arithmétique autorisée).
  4. Types de données non primitifs

    • Les types de données non primitifs sont appelés types de référence car ils font référence à des objets.
    • Les autres types de données sont des types par référence vers des objets ou des tableaux. En fait, ce sont de variables destinées à contenir des adresses d’objets ou de tableaux, ce que l’on exprime par : les données non primitives sont manipulées “par référence” alors que les données primitives sont manipulées par valeur.
    • La principale différence entre les types de données primitifs et non primitifs est la suivante:
      • Les types primitifs sont prédéfinis (déjà définis) en Java. Les types non primitifs sont créés par le programmeur et non définis par Java (sauf pour String).
      • Les types non primitifs peuvent être utilisés pour appeler des méthodes afin d’effectuer certaines opérations, contrairement aux types primitifs.
      • Un type primitif a toujours une valeur, tandis que les types non primitifs peuvent être null.
      • Un type primitif commence par une lettre minuscule, tandis que les types non primitifs commencent par une lettre majuscule.
      • La taille d’un type primitif dépend du type de données, tandis que les types non primitifs ont tous la même taille.