Java dispose d'un grand nombre de catégories d'expression, qui sont toutes construites à partir de noms (de type, de variable, etc. ), de constantes littérales et d'opérateurs. Citons, parmi d'autres :
Chaque catégorie d'expression a ses propres règles d'évaluation. L'évaluation d'une expression de type 13#13, si 13#13 est différent de void, produit une valeur de type 13#13 ou d'un sous-type de 13#13. Cette propriété, dite de sûreté de typage est un facteur essentiel de sécurité (§ 1.8). Notons que l'évaluation d'une expression de type void ne produit pas de valeur.
La valeur d'une expression dépend des valeurs des sous-expressions et de l'opérateur qui les combine. Les sous-expressions d'une expression sont toujours évaluées de gauche à droite. Cette section va passer en revue les différentes catégories d'opérateurs.