salut tout le monde.
Je viens de regarder le code source de la classe String et y a un truc que je capte pas dans l'implémentation de la méthode HashCode.
voici son code (jdk 1.3) :
Code :
- public int hashCode() {
- int h = hash;
- if (h == 0) {
- int off = offset;
- char val[] = value;
- int len = count;
- for (int i = 0; i < len; i++)
- h = 31*h + val[off++];
- hash = h;
- }
- return h;
- }
|
la question que je me pose c'est : à quoi ca sert de déclarer les variables val et len ??? pourquoi ne pas avoir tout simplement utilisé les variables value et count ??? Les objets String sont immuables, donc de toute façon les valeurs de ces variables ne changerons pas.
Doit bien y avoir une raison ...
pkoi ne pas avoir écrit tout simplement ca :
Code :
- public int hashCode() {
- int h = hash;
- if (h == 0) {
- int off = offset;
- for (int i = 0; i < count; i++)
- h = 31*h + value[off++];
- hash = h;
- }
- return h;
- }
|
alors, y a un truc bête qui m'échappe ?