La final
Le mot-clé indique que la valeur de la variable ne changera pas une fois qu'elle sera initialisée. Cela a le plus de sens pour les primitives, où final int = 5;
signifie qu'il ne peut pas être réaffecté 6
.
Pour les variables de référence, cela signifie qu'il ne peut pas être réaffecté à une autre référence, car la valeur est la référence à un objet. Mais cela ne vous empêche pas de modifier le Contenu du tableau. Cela vous empêche de faire une autre affectation à la variable de référence. C'est pourquoi le deuxième morceau de code ne fonctionne pas - vous lui attribuez un autre objet une fois qu'il a déjà été attribué pour la première fois.