Fondamentaux de Java : Littéraux, Types de Données, Conversions et Opérateurs

Plateformes Java

Java SE (Standard Edition) sert au développement d'applications de bureau et sert de fondation aux autres éditions. Java ME (Micro Edition), autrefois destiné aux appareils embarqués, est désormais obsolète face à Android et iOS. Java EE (Enterprise Edition) est conçu pour le développement web, englobant les pages web et les serveurs backend.

JVM, JRE, JDK : Rôles et Relations

Le JDK (Java Development Kit) fournit les outils nécessaires pour coder et compiler des programmes Java, incluant le JRE (Java Runtime Environment). Le JRE offre l'environnement d'exécution avec la JVM (Java Virtual Machine) et les bibliothèques système. La JVM interprète les fichiers bytecode (fichiers .class) pour l'exécution. La hiérarchie est : JDK contient JRE, qui contient JVM.

Interopérabilité de Java

L'interopérabilité permet aux applications Java de fonctionner sur différents systèmes d'exploitation comme Windows, Linux ou macOS. Cela est rendu possible en installant une JVM adoptée à chaque plateforme.

Littéraux en Java

Les littéraux représentent des valeurs constantes écrites directement dans le code. Le mécanisme d'optimisation des constantes en Java intervient lors de la compilation pour simplifier les expressions.

Optimisation des Constantes pour byte, short et char

Ces types subissent une conversion implicite vers int lors des opérations. Ainsi, l'assignation directe d'une opération entre variables provoque une erreur, comme illustré ci-dessous :

byte x = 20;
byte y = 15;
byte z = x + y; // Erreur de compilation

Cependant, si seuls des littéraux sont impliqués, l'optimisation évite cette erreur :

byte w = 6 + 7; // Pas d'erreur, compilé en byte

Optimisation des Constantes pour String

Lorsque des chaînes de caractères constantes sont concaténées, la compilation les fusionne automatiquement :

String str1 = "xyz";
String str2 = "x" + "y" + "z"; // Devient "xyz" après compilation
System.out.println(str1 == str2); // Affiche true

Types de Données

Les types de données se divisent en types primitifs (comme int, double) et types de référence (tableaux, classes, interfaces).

Conversions de Type

La conversion implicite se produit automatiquement lorsque des types de données compatibles sont utilisés, par exemple lors d'opérations arithmétiques. La conversion explicite (ou forcée) est nécessaire lors de l'assignation d'un type à une portée plus large vers un type à portée plus restreinte, avec un risque de perte de précision. Les littéraux peuvent être exprimés en différentes bases : décimal (par défaut), binaire (préfixe 0b), octal (préfixe 0), hexadécimal (préfixe 0x). En interne, les données sont stockées en binaire et les calculs utilisent le complément à deux.

Opérateurs

Les opérateurs de comparaison == comparent les valeurs pour les types primitifs et les adresses pour les types de référence. Les opérateurs d'affectation étendus comme +=, -= incluent une conversion implicite de type. Les opérateurs logiques & et | évaluent toujours les deux côtés, tandis que && et || utilisent l'évaluation court-circuit. Les opérateurs de décalage à droite >> préservent le signe en complétant avec le bit de signe, tandis que >>> effectue un décalage logique en complétant avec des zéros. La priorité des opérateurs suit un ordre prédéfini pour déterminer l'évaluation des expressions.

Étiquettes: Java JVM jre JDK Data-Types

Publié le 14 juillet à 04h54