Ich nehme Datenstrukturen und Analysen. Wir haben darüber nachgedacht, wie Zuordnung und Vergleiche von Objekttypen viel langsamer ist als die Zuweisung und Vergleiche für grundlegende Typen wie int.Sind Java "Zeiger" ganze Zahlen?
Ich erinnere mich an das Lernen von C (alle diese vor fast dreißig Jahren) und wie Zeiger in C ganzzahlige Aufrufe sind (oder waren). Ist Java ähnlich heute, ein Verweis auf ein instanzierte Objekt ist intern eine ganze Zahl Adresse des Speichers, und als solche sind Vergleiche wie
if (MyObject != null) {...}
eine Integer-Operation im Rahmen?
Ich hoffe meine Frage ist klar. Ich habe recherchiert und kann keine klare Antwort darauf finden, wie Java sein dynamisches Gedächtnis verwaltet.
Ich finde diesen Beitrag gefährlich verwirrt. Sie scheinen zu unterstellen, dass "Objektvergleich ist langsam", und das Vergleichen von Zeigern ist schnell und daher besser. Aber das sind ganz andere Dinge. Der eine ist Wertgleichheit und der andere ist die Objektidentität. Um eine Analogie in Python zu geben, geht es um '99 == 99', und die andere ist über' 301 ist 301' –
Ich unterwerfe nicht, frage ich. Danke für deinen Beitrag. – failure
Alle Werte in Java sind intern "Integer", einschließlich Fließkommazahlen. Es ist eine Frage, wie sie interpretiert werden. Aber du verwirrst das Vergleichen von * Zeigern * mit Vergleichen von * Objekten *, die auf - zwei völlig verschiedene Dinge zeigen. Ein Vergleich zwischen zwei Java "Zeigern" (Referenzen) mit '==' ist ungefähr so schnell wie ein Vergleich zweier * long * Werte. –