public class Test {
public static void main(String []args) {
// code 1
/*
* a: l'identificateur d'une boîte de taille 32 bits, utilisant
* la représentation en complément à 2 et initialisée à la valeur 13
*/
int a = 13;
/*
* le a de gauche désigne la boîte
* le a de droite désigne la valeur actuellement contenue dans la boîte
* une fois évaluée l'expression de droite, on stocke la valeur
* produite dans la boîte a
*/
a = a + 1;
/*
* a désigne la valeur contenue dans la boîte
*/
System.out.println(a);
// code 2
/*
* pas de boîte, il s'agit d'une valeur «pure»
*/
System.out.println(13);
// code 3
/*
* b désigne une boîte (32 bits, complément à deux, etc) qui contient
* une valeur, inconnue et qu'il est interdit par les règles de Java
* de consulter. variable non initialisée.
*/
int b;
/*
* on stocke une valeur explicite dans la boîte qui désormais peut
* être utilisée comme on veut.
*/
b = 12;
System.out.println(b);
// code 4
/*
* a et b désignent les valeurs contenues dans leurs boîtes
* respectives
*/
if (a==b) { System.out.println("oui"); }
else { System.out.println("non"); }
// code 5
/*
* ta est une variable de nature particulière, la valeur stockée
* n'est pas manipulable autrement que par affectation, on ne
* peut consulter cette valeur. La variable est une boîte qui contient
* une valeur qui peut référencer une autre variable de type indiqué.
* ta n'est pas un tableau d'entiers. ta est une référence de tableau
* d'entiers qui ne désigne pour l'instant rien.
*/
int []ta;
/*
* new construit une boîte, ici une boîte (un objet)
* contenant (entre autres)
* 5 entiers, numérotés 0, 1, 2, 3, 4 et initialisés à 0 (un tableau
* de 5 entiers).
* ta désigne par affectation la boîte créée. La boîte ne possède
* pas d'identificateur, de nom; elle ne peut être utilisée que
* par l'intermédiaire de ta.
*/
ta = new int[5];
/*
* la notation ta. ou ta[] permet d'atteindre une partie du contenu
* de l'objet.
*/
System.out.println(ta.length);
System.out.println(ta[1]);
/*
* l'affichage de ta produit simplement l'affichage de la valeur de
* la référence, une donnée technique non véritablement utilisable.
*/
System.out.println(ta);
/*
* ta désigne maintenant un autre objet tableau de 10 entiers.
* L'objet précédemment désigné ne possède plus de référence, et
* est par conséquent récupéré par la machine Java et son mécanisme
* de garbage collection, ramasse-miettes.
*/
ta = new int[10];
System.out.println(ta.length);
System.out.println(ta[1]);
/*
* la valeur null, ne peut être employée qu'avec les références
* pour indiquer que celles-ci ne désignent rien, aucun objet.
*/
ta = null;
/*
* toute tentative d'accès à un object via une référence qui ne
* désigne rien provoque une erreur grave et prématurée et l'arrêt
* de l'exécution : java.lang.NullPointerException
*/
System.out.println(ta.length);
}
}