« Programmation Java/Autres langages » : différence entre les versions

Contenu supprimé Contenu ajouté
:: en C++ pour namespace / membres statiques / <super_class>::... + const réservé en Java mais pas utilisé
Aucun résumé des modifications
Ligne 5 :
== [[C++]] ==
 
* En java on utilise ''<tt>final''</tt> et non ''<tt>const''</tt>. Le mot ''<tt>const''</tt> étant tout de même réservé pour un usage ultérieur.
* Java ne définit pas d'espace de nom (''namespace''), mais des paquetages (''<tt>package''</tt>).
* On ne libère pas la mémoire. Cela est géré automatiquement par le ramasse-miette. À la place, il est recommandé de libérer les références aux objets qui ne sont plus utilisés en assignant <tt>null</tt> à la référence, dès que possible ou juste avant une potentielle allocation d'une grande quantité d'objets ou de grands tableaux.
* Il n'y a pas de pointeurs mais des références :
** Les opérateurs <tt>-></tt> et <tt>*</tt> (déréférencement) n'existent pas. IL faut utiliser le point (<tt>.</tt>).
** Les références (constrairement au C++) peuvent être modifiées pour référencer un autre objet en utilisant l'opérateur d'affectation (<tt>=</tt>).
* un <tt>char</tt> fait un octet en C++ mais 2 octets en Java car l'encodage Unicode utilisé est l'UTF-16.
* <tt>unsigned</tt> n'existe pas en Java : tous les types entiers sont signés.
* L'héritage multiple possible en C++ est interdit en Java, il faut utiliser des {{page|Interfaces|interfaces}}.
* « :: » n'existe pas en Java :
** Pour utiliser un membre d'un package ou un membre statique d'une classe, utiliser le point (<tt>.</tt>).
** Pour appeler une méthode telle qu'elle est définie dans la classe parente, utiliser la référence ''<tt>super''</tt>.
* Les classes ou méthodes ne peuvent être déclarées ''virtual'' car elles le sont toutes : toutes les liaisons sont dynamiques.
* Les opérateurs ne sont pas redéfinissable en Java. Les opérateurs n'agissent pas sur les objets, excepté pour l'opérateur <tt>+</tt> permettant de concaténer deux chaînes de caractères.
 
{{...}}