Les membres déclarés static, appelés membres de classe, par opposition aux membres d'instance, sont communs à toutes les instances d'une classe. Un champ statique, ou variable de classe est donc une variable unique, partagée par toutes les instances de la classe ; cette variable est toujours créée, même si aucune instance de la classe n'est construite.
Une méthode qui ne dépend pas d'une instance est appelée une méthode de classe , ou plus couramment, une fonction. Sa définition doit spécifier le mot-clé static, et elle ne doit pas alors être invoquée sur une instance, mais en utilisant le nom de la classe (si elle est invoquée dans la classe où elle est définie, elle peut être invoquée simplement par son nom, sans la préfixer du nom de sa classe). Voici la définition d'une fonction, elle même invoquant la fonction sqrt(), méthode statique de la classe Math :
private static double f(double x) { return Math.sqrt(1 - x*x); }
Une méthode statique ne peut accéder qu'aux membres statiques de la classe ; elle ne doit pas utiliser this . C'est le cas de la méthode main() qui ne peut invoquer directement d'autres méthodes ou accéder directement à d'autres champs de la classe principale que si ces méthodes et champs sont également statiques. Par contre, une méthode statique peut construire un objet et accéder à tous ses membres.