Les concepteurs de Java ont doté ce langage d'une série d'éléments particuliers appelés primitives. Ces éléments ressemble à des objets, mais ne sont pas des objets ! Ils sont créés de façon différente, et sont également manipulés en mémoire de façon différente. Cependant il peuvent être enveloppés dans des objets spécialement conçu à cet effet, et appelés enveloppeurs (wrappers).
Les classes BigInteger et BigDecimal sont utilisés pour représenter respectivement des valeurs entières et décimales de précision quelconque. Il n'existe pas de primitives équivalente. Le type char sert à représenter les caractères, conformément au standard UNICODE. Il est le seul type numérique non signé ! Remarquons que le type boolean n'est pas un type numérique.
- Portabilité
A l'inverse de ce qui se passe avec les autres langages, la taille des primitives est toujours la même en Java, et ce quelque soit l'environnement ou le type de la machine. On garantit ainsi la portabilité des programmes Java.
- Initialisation des primitives
Les primitives doivent être déclarées et initialisées avant d'être utilisées. Une primitive non initialisée produira une erreur à la compilation : « Variable may not have been initialized ».
Remarquons que les primitives, lorsqu'elles sont employée comme membre de classe, possède des valeurs par défaut. Il n'est donc pas nécessaire de les initialiser !
[...] On donne ci-dessous sa définition initiale, qui compare les handles : public equals(Object obj) { return (this obj) ; } Dans cette définition, on constate que equals se comporte exactement comme En revanche, dans la plus part des classes (comme Integer, voir l'exemple précédent) la méthode est redéfinie pour qu'elle compare le contenu des objets plutôt que leur handles. Cette méthode est souvent problématique et il convient de consulter la documentation. Opérateurs logiques L'évaluation des expressions logiques est stoppée dès lors que le résultat est déterminé. L'évaluation partielle optimise le code mais peut avoir des effets indésirables. Une manière de forcer l'évaluation consiste à utiliser les opérateurs d'arithmétique binaire. Opérateurs d'arithmétique binaire Les opérateurs d'arithmétiques binaires agissent au niveau des bits de données, sans tenir comte de ce qu'ils représentent. [...]
[...] Le concept de l'héritage Hiérarchie des classes De plus chaque classe dérive d'une classe de niveau supérieur, appelée sur- classe. Cela est vrai pour toutes les classes sauf une. Il s'agit de la classe Object, qui est l'ancêtre de toutes les classes. Toute instance d'une classe est un objet du type correspondant, mais aussi du type de toutes ses classes ancêtres. SousClasse hérite de toutes les caractéristiques de Classe, et donc, par transitivité, de SurClasse. Une classe est toujours construite à partir d'une autre classe dont elle est dérivée. Une classe dérivée est une sous-classe d'une sur-classe. [...]
[...] o Message minuté (timeout) Bloque l'expéditeur pendant un temps donné (qui peut être spécifié dans une contrainte), en attendant la prise en compte du message par le récepteur. L'expéditeur est libéré si la prise en compte n'a pas eu lieu pendant le délai spécifié. o Message synchrone Bloque l'expéditeur jusqu'à prise en compte du message par le destinataire. Le flot de contrôle passe de l'émetteur au récepteur (l'émetteur devient passif et le récepteur actif) à la prise en compte du message. o Message asynchrone N'interrompt pas l'exécution de l'expéditeur. Le message envoyé peut être pris en compte par le récepteur à tout moment ou ignoré (jamais traité). [...]
[...] (La référence this ne peut pas être employé dans la méthode static.) Les méthodes static ne peuvent pas non plus être redéfinies dans les classes dérivées. Les méthodes native Une méthode peut également être déclarée native, ce qui a des conséquences importantes sur la façon de l'utiliser. En effet, une méthode native n'est pas écrite en Java, mais dans un autre langage. Les méthodes native ne sont donc pas portable d'un environnement à un autre. Les méthodes native n'ont pas de définition. Leur déclaration doit être suivie d'un point-virgule. [...]
[...] Cela entraîne une factorisation du code. abstract class Animal { méthodes abstract String qui() ; void printQui() { System.out.println("cet animal est un " + ; } } class Chien extends Animal { méthodes String qui() { return "chien" ; } } class Chat extends Animal { méthodes String qui() { return "chat" ; } } L'implémentation de la méthode qui est relié à l'appel, uniquement au moment de l'exécution, en fonction du type de l'objet appelant et non celui du handle ! [...]
Source aux normes APA
Pour votre bibliographieLecture en ligne
avec notre liseuse dédiée !Contenu vérifié
par notre comité de lecture