Une expression peut être n'importe quel ensemble valide de littéraux, de variables, d'opérateurs, d'instructions Java et d'autres expressions, qui correspond à une valeur simple.

int i = 0;

i += 5;

String texte = "L'agneau sortit de l'étable alors 
                            que le loup embusqué l'attendait.";

double valeur3 = Math.max(valeur2, Math.pow(valeur1, 10));

String resultat = texte.toLowerCase();

Cette valeur peut être un nombre (42), une chaîne de caractères (olivier), ou encore une valeur logique (true ou false).

Conceptuellement, il y a deux types d'expressions : celles qui assignent une valeur à une variable, et celles qui ont simplement une valeur.

Par exemple, l'expression i = 0 est une expression qui affecte à i la valeur zéro. Cette expression elle-même correspond à zéro.

La plupart des expressions font appel à divers opérateurs pour effectuer des affectations, des calculs arithmétiques ou encore des concaténations.

Ainsi, à partir d'expressions basiques, il est possible de construire des expressions extrêmenent complexes retournant toujours une valeur.

if(x == 1 && y == 0)
    // instructions...

if(x > y || x < 100)
    //instructions...

String ch = x < y ? "x < y" : "x > y";

Une expression est toujours typée, c'est-à-dire, que la valeur résultante possède un certain type primitif, à l'image des valeurs numériques ou un type composite pour notamment les chaînes de caractères.

Les expressions sont la plupart du temps évaluées de la gauche vers la droite et parfois certains membres ne sont pas évalués du tout, dans le cas des opérations logiques avec un OU (||), un ET (&&) ou l'opérateur ternaire (?:).

En outre, une expression suivie du séparateur point-virgule (;) devient une instruction.