expression
::=
numeric_expression
| testing_expression
| logical_expression
| string_expression
| bit_expression
| casting_expression
| creating_expression
| literal_expression
| "null"
| "super"
| "this"
| identifier
| ( "(" expression ")" )
| ( expression
( ( "(" [ arglist ] ")" )
| ( "[" expression "]" )
| ( "." expression )
| ( "," expression )
| ( "instanceof" ( class_name | interface_name ) )
) )
This rule is called by-> arglist -> bit_expression -> casting_expression -> creating_expression -> do_statement -> expression -> for_statement -> if_statement -> logical_expression -> numeric_expression -> statement -> string_expression -> switch_statement -> testing_expression -> variable_initializer -> while_statement
ExplicationsLes parenthèses servent également à donner les paramètres d'une méthode. Remarquons que si la méthode ne nécessite pas de paramètres, les parenthèses ne peuvent pas être omises.
Les crochets carrés servent à délimiter l'indice du tableau,
et à en choisir ainsi l'élément pertinent. Par exemple,
le troisième élément du tableau tab sera
tab[2] ou encode tab[1+2*1].
Pour des informations concernant l'utilisation de la virgule,
veuillez consulter la documentation sur la
boucle for
Les identificateurs spéciaux null, super
et this sont présents dans toutes les classes. Voici
leur signification :
nullnull. Cela signifie qu'à la déclaration d'un
objet, avant d'appeler le constructeur, l'objet vaut null.
null peut être utilisé en lieu et place de n'importe
quel objet. On peut par exemple faire appel à une méthode en fournissant
null comme paramètre, même si le type de celui-ci est
formeCarre.
supersuper permet de faire référence à l'objet dont est
dérivé l'objet courant. On l'utilise souvent pour faire appel
au constructeur de
la classe parente.
thisthis et la page expliquant
la visibilité des variables
donnera d'autres informations à ce sujet.
instanceofinstanceof permet de tester l'appartenance d'un
objet à une classe, ou s'il est conforme à une interface.
L'exemple ci-dessous montre qu'il est possible de traiter de
manières différentes toutes sortes d'objets à partir d'une
seule procédure générique.
Exemple
class formeCarre {
float largeur;
float longueur;
public formeCarre(float largeur,float longueur) {
this.largeur = largeur;
this.longueur = longueur;
}
}
class formeCercle {
float rayon;
public formeCercle(float rayon) {
this.rayon = rayon;
}
}
class exInstanceof {
public static float surface(Object forme) {
if (forme instanceof formeCarre)
return ((formeCarre)forme).largeur*((formeCarre)forme).longueur;
else if (forme instanceof formeCercle)
return (float)(Math.pow(((formeCercle)forme).rayon,2d)*Math.PI);
return 0;
}
public static void main(String args[]) {
formeCarre carre = new formeCarre(20f,20f);
formeCercle cercle = new formeCercle(20f);
System.out.println("la surface de l'objet "+carre+" vaut "+surface(carre));
System.out.println("la surface de l'objet "+cercle+" vaut "+surface(cercle));
}
}
Exécution
la surface de l'objet formeCarre@5e300848 vaut 400
la surface de l'objet formeCercle@5e300860 vaut 1256.64