Когда вы говорите, что «значение типа задания», я предполагаю, что вы имеете в виду значение, возвращаемое toString . Если вы посмотрите на документ Java, он утверждает, что:
Метод toString для класса Object возвращает строку, состоящую из имени класса, экземпляром которого является объект, символа знака «@» и шестнадцатеричного представления без знака хеш-кода объекта. Другими словами, этот метод возвращает строку, равную значению:
getClass().getName() + '@' + Integer.toHexString(hashCode())
И если вы посмотрите на документ Java для метода hashCode , то в нем говорится:
Всякий раз, когда он вызывается для одного и того же объекта более одного раза во время выполнения приложения Java, метод hashCode должен последовательно возвращать одно и то же целое число
, а также
Насколько это практически целесообразно, метод hashCode, определенный классом Object, возвращает разные целые числа для разных объектов. (Обычно это реализуется путем преобразования внутреннего адреса объекта в целое число, но этот метод реализации не требуется языком программирования JavaTM.)
Обновление: Ответ на комментарий Райана: System.identityHashCode вернет вам исходный хеш-код, даже если метод хеш-кода будет переопределен. Однако, как отмечают комментарии, это не совсем уникально.
Так что я думаю, что ответ на ваши вопросы - да, он неизменный и очень вероятно, что он будет уникальным, но вы должны прочитать документы или исходный код для вашей JVM.