Sto prendendo strutture dati e analisi. Abbiamo esaminato in che modo l'assegnazione e il confronto dei tipi di oggetto è molto più lento dell'assegnazione e dei confronti per i tipi di base, come int.Sono numeri interi di puntatori Java?
Ricordo l'apprendimento C (tutti quelli quasi trent'anni fa) e il modo in cui i puntatori in C sono (o erano) chiamate in numeri interi. È Java simile oggi, è un riferimento a un oggetto istanziato internamente un indirizzo intero della memoria, e come tali sono paragoni, come
if (MyObject != null) {...}
un'operazione intero nel quadro?
Spero che la mia domanda sia chiara. Ho fatto ricerche in giro e non riesco a trovare una risposta chiara su come Java gestisce la sua memoria dinamica.
Trovo questo post pericolosamente confuso. Sembri insinuare che "il confronto degli oggetti è lento" e che confrontare i puntatori è veloce e quindi migliore. Ma quelle sono cose completamente diverse. Uno riguarda l'uguaglianza dei valori e l'altro riguarda l'identità dell'oggetto. Per dare un'analogia in Python, uno è su '99 == 99', e l'altro è su' 301 è 301' –
Non sto insinuando, sto chiedendo. Grazie per il tuo contributo. – failure
Tutti i valori in Java sono "interi" internamente, compresi i numeri in virgola mobile. È una questione di come vengono interpretati. Ma stai confondendo comparando * i puntatori * con gli * oggetti * a confronto * con due cose completamente diverse. Un confronto tra due "puntatori" di Java (riferimenti) con '==' è veloce quanto un confronto tra due valori * lunghi *. –