HashCode у класса String в Java

424
04 февраля 2017, 08:11

Разбирался я тут со строками и на одном ресурсе прочитал следующий тезис:

Поскольку строка неизменная, её hashcode кэшируется в момент создания и нет необходимости рассчитывать его снова.

Полез я в java.lang.String и увидел что хоть метод hashCode() там и есть, но в самом коде этот метод нигде не вызывается. Я правильно понимаю, что, по факту, при создании строк хэш не используется и тезис в начале неверен?

Answer 1

Тезис верен.
Значение хэшкода вычисляется в момент первого вызовы hashCode и сохраняется в поле объекта. При том, метод может несколько раз вычислить значение, из разных потоков, т.к. никакой синхронизации для данного поля не предусмотрено.

READ ALSO
Java Regex не находит группы

Java Regex не находит группы

Имею такой паттерн:

362
Как адекватно работать с Hibernate

Как адекватно работать с Hibernate

Приветствую, собственно в чем моя проблемаНикак не могу адекватно заставить работать Hibernate

441
Генерация страниц html

Генерация страниц html

Переписываем проекты c SilverLight на ASPNET MVC

415
Exception Value: [Errno 32] Broken pipe - какие причины ошибки

Exception Value: [Errno 32] Broken pipe - какие причины ошибки

Имеется рабочий сайт, но с недавнего времени выводится на определенную страницу эта ошибка Exception Value: [Errno 32] Broken pipe

463