C'est un vieux vestige de l'époque où il y avait plus de sucre syntaxique pour différencier les expressions des états.
Fondamentalement, la virgule est utilisée comme élément de la liste séparateur, de sorte que le point-virgule a été utilisé comme la "liste des déclarations" séparateur. L'inconvénient réside dans la gestion de la valeur null éléments dans des listes, et nulle déclarations dans les blocs.
Dans une liste d'éléments, Java utilise le mot clé explicit null
, mais un "null déclaration" est juste une ligne vide. En permettant l'existence d'une ligne vide est un vestige de la tradition héritée de C.
Pourquoi le faire? Surtout avec un if
déclaration quand on sait qu'aucune des instructions sont en cours d'exécution: Parce que si certains états ont des effets secondaires:
int c;
if ((c = in.read()) != -1);
Oui, il n'est pas le meilleur exemple, mais fondamentalement, il dit lire un octet à partir du flux et de ne rien faire. Peut être utile dans certains cas particuliers, mais même si cet exemple n'est pas le meilleur, mais il témoigne de l'intention. Nous voulons nous sentir les effets secondaires de l'expression sans accidentellement de l'exécution de toutes les déclarations.