Introduction aux primitives Java

Introduction aux primitives Java

1. Vue d'ensemble

Le langage de programmation Java comporte huit types de données primitifs.

Dans cet article, nous allons rappeler ce que sont les primitives et les passer en revue.

2. Types de données primitifs

Les huit primitives définies en Java sontint,byte,short,long,float,double,boolean et char – ceux-ci ne sont pas considérés comme des objets et représentent des valeurs brutes.

They’re stored directly on the stack (consultezthis article pour plus d'informations sur la gestion de la mémoire en Java).

Examinons la taille de stockage, les valeurs par défaut et des exemples d'utilisation de chaque type.

Commençons par une référence rapide:

Type Taille (bits) Le minimum Maximum Exemple

byte

8

-27

27– 1

octet b = 100;

court

16

-215

215– 1

court s = 30_000;

int

32

-231

231– 1

int i = 100_000_000;

long

64

-263

263– 1

long l = 100_000_000_000_000;

flotte

32

-2-149

(2-2-23) · 2127

flotteur f = 1,456f;

double

64

-2-1074

(2-2-52) · 21023

double f = 1,456789012345678;

char

16

0

216– 1

char c = «c»;

booléen

1

booléen b = vrai;

2.1. int

Le premier type de données primitif que nous allons couvrir estint. Également appelé entier, le typeint contient une large gamme de valeurs numériques non fractionnaires.

Plus précisément,Java stores it using 32 bits of memory. En d'autres termes, il peut représenter des valeurs comprises entre -2 147 483 648 (-231) et 2 147 483 647 (231-1).

Dans Java 8, il est possible de stocker une valeur entière non signée jusqu'à 4 294 967 295 (232-1) à l'aide de nouvelles fonctions d'assistance spéciales.

Nous pouvons simplement déclarer unint simplement:

int x = 424_242;

int y;

La valeur par défaut d'unint déclaré sans affectation est 0.

Si la variable est définie dans une méthode, nous devons attribuer une valeur avant de pouvoir l'utiliser.

Nous pouvons effectuer toutes les opérations arithmétiques standard surints. Sachez simplement quedecimal values will be chopped off lorsque vous effectuez ces opérations sur des entiers.

2.2. byte

byte est un type de données primitif similaire àint, saufit only takes up 8 bits of memory. Ainsi, pourquoi nous appelons cela un octet. La taille de la mémoire étant si petite,byte ne peut contenir que les valeurs comprises entre -128 (-27) et 127 (27 - 1).

Nous pouvons créerbyte:

byte b = 100;

byte empty;

La valeur par défaut debyte est également 0.

2.3. short

Le prochain arrêt sur notre liste de types de données primitifs en Java estshort.

Si nous voulons économiser de la mémoire et quebyte est trop petit, nous pouvons utiliser le type à mi-chemin entre les deux:short.

À 16 bits de mémoire, c'est la moitié de la taille deint et deux fois la taille debyte. Sa plage de valeurs possibles va de -32 768 (-215) à 32 767 (215 - 1).

short est déclaré comme ceci:

short s = 202_020;

short s;

Également similaire aux autres types, la valeur par défaut est 0. Nous pouvons également utiliser toute l'arithmétique standard.

2.4. long

Notre dernier type de données primitif lié aux entiers estlong.

long est le grand frère deint. It’s stored in 64 bits of memory afin qu'il puisse contenir un ensemble beaucoup plus grand de valeurs possibles.

Les valeurs possibles d'un long sont comprises entre -9,223,372,036,854,775,808 (-263) et 9,223,372,036,854,775,807 (263 - 1).

Nous pouvons simplement en déclarer un:

long l = 1_234_567_890;

long l;

Comme pour les autres types d'entiers, la valeur par défaut est également 0. Nous pouvons utiliser toute l'arithmétique surlong qui fonctionne surint.

2.5. float

Nous représentons les nombres fractionnaires de base en Java en utilisant le typefloat. C'est un nombre décimal à simple précision. Ce qui signifie que si nous dépassons six décimales, ce nombre devient moins précis et plus approximatif.

Dans la plupart des cas, nous ne nous soucions pas de la perte de précision. Mais si notre calcul nécessite une précision absolue (opérations financières, atterrissage sur la lune, etc.), nous devons utiliser des types spécifiques conçus pour ce travail. Pour plus d'informations, consultez la classe JavaBig Decimal.

This type is stored in 32 bits of memory just like int. Cependant, en raison de la virgule décimale flottante, sa plage est très différente. Il peut représenter des nombres positifs et négatifs. La plus petite décimale est 1,40239846 x 10-45 et la plus grande valeur est 3,40282347 x 1038.

Nous déclaronsfloats comme tout autre type:

float f = 3.145f;

float f;

And the default value is 0.0 instead of 0. Notez également que nous ajoutons la désignationf à la fin du nombre littéral pour définir un flottant. Sinon, Java générera une erreur car le type par défaut d'une valeur décimale estdouble.

Nous pouvons également effectuer toutes les opérations arithmétiques standard surfloats. Cependant, il est important de noter que nous effectuons l’arithmétique à virgule flottante très différemment de l’arithmétique des entiers.

2.6. double

Ensuite, nous regardonsdouble - son nom vient du fait qu'il s'agit d'un nombre décimal à double précision.

It’s stored in 64 bits of memory. Ce qui signifie qu'il représente une gamme beaucoup plus large de nombres possibles quefloat.

Cependant, il souffre de la même limitation de précision quefloat. La plage est de 4,9406564584124654 x 10-324 à 1,7976931348623157 x 10308. Cet intervalle peut aussi être positif ou négatif.

La déclaration dedouble est la même que pour les autres types numériques:

double d = 3.13457599923384753929348D;

double d;

The default value is also 0.0 as it is withfloat. Comme pourfloat,, nous attachons la lettreD pour désigner le littéral comme un double.

2.7. boolean

Le type de données primitif le plus simple estboolean. Il ne peut contenir que deux valeurs:true oufalse. It stores its value in a single bit.

Cependant, pour plus de commodité, Java remplit la valeur et la stocke dans un seul octet.

Déclarezboolean comme ceci:

boolean b = true;

boolean b;

Le déclarer sans valeur par défaut estfalse. boolean est la pierre angulaire du contrôle du flux de nos programmes. Nous pouvons utiliser des opérateurs booléens sur eux (c'est-à-direand, or, etc.).

2.8. char

Le type de données primitif final à examiner estchar.

Également appelé caractère,char est un entier 16 bits représentant un caractère codé Unicode. Sa plage va de 0 à 65 535. Qui en Unicode représente‘' à‘￿'.

Pour une liste de toutes les valeurs Unicode possibles, consultez des sites commeUnicode Table.

Déclarons maintenant unchar:

char c = 'a';

char c = 65;

char c;

Lors de la définition de nos variables, nous pouvons utiliser n’importe quel caractère littéral et elles seront automatiquement transformées en leur codage Unicode. La valeur par défaut d'un caractère est‘/u0000'.

2.9. Débordement

Les types de données primitifs ont des limites de taille. Mais que se passe-t-il si nous essayons de stocker une valeur supérieure à la valeur maximale?

Nous nous heurtons à une situation appeléeoverflow.

Lorsqu'un entier déborde, il retourne à la valeur minimale et commence à compter à partir de là.

Un nombre à virgule flottante déborde en renvoyant Infinity. Quand ils sous-alimentent, ils retournent 0.0.

Voici un exemple:

int i = Integer.MAX_VALUE;
int j = i + 1;
// j will roll over to -2_147_483_648

double d = Double.MAX_VALUE;
double o = d + 1;
// o will be Infinity

Underflow est le même problème sauf si nous stockons une valeur inférieure à la valeur minimale.

2.10. Autoboxing

Chaque type de données primitif a également une implémentation de classe Java complète qui peut l'envelopper. Par exemple, la classeInteger peut encapsuler unint. Il est parfois nécessaire de convertir le type primitif en son objet wrapper (par exemple, en les utilisant avecgenerics).

Heureusement, Java peut effectuer cette conversion automatiquement pour nous. Nous appelons ce processusAutoboxing. Voici un exemple:

Character c = 'c';

Integer i = 1;

3. Conclusion

Dans ce didacticiel, nous avons couvert les huit types de données primitifs pris en charge en Java.

Ce sont les blocs de construction utilisés par la plupart des programmes Java, mais pas par tous. Il vaut donc la peine de comprendre comment ils fonctionnent.