Programmation - A. Cohen
Cours

Types de données

Introduction

Tout langage de programmation permet de manipuler des données (entier, réel, ...).

Le type indique le domaine des valeurs qu'une variable ou expression peut prendre et les opérations qu'on peut lui appliquer.

En Java comme dans la plupart des langages évolués, toute variable doit être déclarée avec un type donné.

Le type indique la catégorie des données pouvant être manipulées par la variable.

Java est en effet un langage typé. on doit définir le type d'une variable avant de pouvoir l'utiliser.

Toute expression valide a aussi un type, et le résultat d'une opération doit a priori être affecté à une variable du type correspondant.

  • Lors de sa déclaration, une variable est précédée par le nom du type de la donnée à laquelle elle pourra être associée.

  • Plusieurs variables d'un même type peuvent être déclarées ensemble. Elles sont, dans ce cas, séparées par une virgule.

  • La déclaration d'une variable peut apparaître n'importe où, là où il peut y avoir une instruction, mais toujours avant d'être utilisée.

Définition : Les catégories de types de données

Il existe deux catégories de types de données :

  • primitifs (ou de base ou simple) : entiers, réel, ...

    Java dispose de types primitifs pour coder entiers, flottants, booléens et caractères

  • composés (ou de référence) : vecteur, classe, ..

    cette catégorie permet de définir des structures de données plus complexes : un enregistrement (entité) par exemple.

Pour les types primitifs, les variables déclarées avec ces types correspondent à des "cases mémoire" en adressage direct. La taille en mémoire de ces cases est définie par le type.

Il n'y a pas de type par défaut : chaque variable doit être définie explicitement.

Exemple :

Exemple de types simples :

char : caractère Unicode codé sur 16 bits

int : entier codé sur 32 bits

Type de données primitifs

Huit types de données primitifs (ou de base) :

  • les booléens (qui spécifient un état actif ou inactif), exemple, une condition sera vraie ou fausse,

  • les caractères (simples ou Unicode),

  • les entiers (nombres entiers)

  • les nombres en virgule flottante (nombres décimaux).

Dans le code source, les types primitifs doivent toujours être indiqués en minuscules.

Type de données primitifs - entiers

Types entiers : il existe quatre types d'entier dont la différence réside en la valeur maximale possible pour chacun de ces types. Le nombre de bits étant différent pour chaque type /

  • byte (un octet, 8 bits),

  • short (16 bits),

  • int (32 bits),

  • long (64 bits).

Conversion d'un int en long en ajoutant L ou l

Type de données primitifs - réels

Types réels : Java en définit deux

  • float (32 bits)

  • double (64 bits).

Conversion d'un float en double en ajoutant D ou d

Type de données primitifs - autres

  • caractères : Java code les caractères non pas en ASCII mais en UNICODE, sur 16 bits

    • char (16 bits).

  • booléens : Le type boolean permet de déclarer une variable pouvant prendre la valeur true (vrai) ou false (faux).

Complément : Les caractères - extrait du site www.infini-software.com

"Le type caractère Ce type permet de gérer des caractères.

Jusqu'à présent, la plupart des langages de programmation utilisaient à cet effet le codage ASCII ou un dérivé sur 8 bits. Le codage ASCII permet de représenter seulement 128 caractères : en effet, à l'origine, seul les sept bits de poids faibles d'un octet servaient au codage du caractère, le huitième servait alors de bit de parité assurant le bon transport du caractère à travers le réseau.

Des couches de protocoles de transport de données plus sécurisées (notamment UDP et TCP) ont rendu ce huitième bit utilisable pour l'encodage de caractères.

Du coup, de nombreux standards dérivés d'ASCII ont fait leur apparition : ISO-8859-1 (aussi appelé ISO Latin 1).

Pour palier aux problèmes engendrés, une nouvelle norme de codage de caractères fut proposée: ce codage est nommé unicode (ISO/CEI 10646).

Ce nouveau standard peut utiliser plusieurs octets (UTF-8, UTF-16, UTF-32) pour spécifier un caractère. Le langage Java, dans un souci de portabilité des applications développées, utilise en interne un encodage UTF-16 : 16 bits sont donc utilisés par caractère pour permettre de coder jusqu'à 65536 caractères (dont les caractères accentués et d'autres caractères provenant d'autres alphabets).

Bien entendu, les fichiers de code source Java seront souvent des fichiers 8 bits (UTF-8 ou ISO-8859-1, très certainement).

Du coup, le langage Java propose une solution très simple pour injecter n'importe quel caractère UTF-16 dans les chaînes de caractère.

Par exemple la séquence \u0041 permettra de représenter le caractère A (code ascii = 65, la valeur est bien entendu, exprimée en hexadécimal).

Syntaxiquement parlant, une donnée de type caractère, se place entre deux simples quottes. Certains autres caractères spéciaux peuvent être accédés via des séquences d'échappement particulières. Ainsi, \n représentera un retour à la ligne et \t une tabulation. L'exemple suivant vous montre comment utiliser des caractères dans un code Java (notez bien que la méthode println force implicitement un passage à la ligne)."

Cas des chaînes de caractères

La chaîne de caractères (String) n'est pas un type primitif mais un type dérivé de la classe racine java.lang.Object.

Il s'agit d'un type dérivé particulier puisque sa représentation littérale doit être prise en compte par le langage.

Cette représentation est une suite de littéraux caractères (sans les deux caractères apostrophe du début et de la fin), suite qui débute et finit avec le caractère guillemet (").

Exemple :
  • "Une chaîne simple"

  • "Une chaîne sur \ndeux lignes"

  • "Une cha\u00EEne avec un caractère unicode"

Variables et constantes (page suivante)Identificateurs (page Précédente)
AccueilImprimerRéalisé avec SCENARI