Ces expressions sont formées à partir des opérateurs arithmétiques :
les opérateurs additifs +
,
-
, les opérateurs multiplicatifs *
, /
et %
(modulo) et les opérateurs unaires +
et -. Java ne dispose pas d'opération d'exponentiation. mais
d'une fonction Math.exp, membre du paquet java.lang.
Conformément à l'usage courant, on préfère écrire l'expression 2*x/3 - 5*y plutôt que ((2*x)/3) - (5*y) ; l'expression non parenthésée pourrait tout aussi bien être analysée comme (2*x)/((3-5)*y), qui n'a sûrement pas la même signification, donc ne produirait pas la même valeur. L'analyse syntaxique d'une expression qui n'est pas complètement parenthésée doit donc être précisée par des règles de précédence. Ignorer ces règles oblige un parenthésage complet, ce qui est une contrainte souvent excessive. Ces règles stipulent que les opérateurs unaires (+, -) sont les plus forts, puis viennent les multiplicatifs (*, /, %) et les additifs (+, -). Par exemple, -1+3 est analysée comme (-1) + 3, et 2*x+3*y comme (2*x) + (3*y).
En outre, les opérateurs binaires sont parenthésés par la gauche
(en anglais, left associative) ; par exemple, x/2*3 est
analysée comme (x/2)*3, et x-y-z comme
(x-y)-z (s'ils étaient parenthésés par la droite, ces
expressions seraient analysées respectivement comme x/(2*3) et
comme x-(y-z)). Les opérateurs unaires sont parenthésés
par la droite : par exemple, --x
est analysée comme
-(-x) et non comme (--)x
, qui n'a pas de signification
mathématique.