я узнал, что ява объекта заголовок содержит информацию, такую как хэша-кода, гй год, необъективный замок и так далее. Затем придет ко мне головоломка и явным образом выражу свой вопрос. Приведу пример.
Вот код:Когда значение хэша-кода JVM правопреемника в заголовке объекта
public class Demo{
@Override
public int hashCode(){
System.out.println("the hashCode method was called");
return super.hashCode();
}
public static void main(String[] args){
Demo demo = new Demo();
System.out.println("after generate an object");
//
Set<Demo> set = new HashSet<Demo>();
set.add(demo);
}
}
И выход:
after generate an object
the hashCode method was called
Я думаю, когда мы новый объект осуществляется JVM установит хэша в заголовке объекта. Но если это для генерации hashCode, он должен вызывать метод hashCode этого объекта. Однако в соответствии с выходом, который казался ему havent invoke hashCode method когда новый объект. И добавить значение в hashSet вызывается метод hashCode, как и следовало ожидать.
Итак, мой вопрос в том, что: когда jvm присваивает значение hashcode в заголовке объекта? Это произошло в фазе, когда новый объект?
- Если да. Почему он havent вызывает метод hashcode, и без этого, как рассчитать hashcode этого объекта.
- Если номер Уххх ... Это не имеет смысла, что обновление хэш в объекта заголовка каждый вызвать вызвать метод Hashcode.