Przyjmuję struktury danych i analizy. Przeanalizowaliśmy sposób, w jaki przypisywanie i porównywanie typów obiektów jest znacznie wolniejsze niż przypisywanie i porównywanie podstawowych typów, takich jak int.Czy wskaźniki Java są "liczbami całkowitymi"?
Przypominam uczenie się C (wszystkie te prawie trzydzieści lat temu) i jak wskaźniki w C są (lub były) integerami. Java jest podobna dzisiaj, jest nawiązaniem do instancyjnej obiektu wewnętrznie adresem całkowitej pamięci, i jako takie są porównania takie jak
if (MyObject != null) {...}
operacja całkowitą ramach?
Mam nadzieję, że moje pytanie jest jasne. Badałem i nie mogę znaleźć jasnej odpowiedzi na pytanie, w jaki sposób Java zarządza swoją pamięcią dynamiczną.
Uważam, że ten wpis jest niebezpiecznie zagmatwany. Wydaje się, że insynuujesz, że "porównanie obiektów jest powolne" i że porównywanie wskaźników jest szybkie, a zatem lepsze. Ale to są zupełnie różne rzeczy. Jedna dotyczy równości wartości, a druga dotyczy tożsamości obiektu. Aby dać analogię w Pythonie, jeden jest o "99 == 99", a drugi o "301 jest 301" –
Nie insynuuję, pytam. Dzięki za wkład. – failure
Wszystkie wartości w Javie to "liczby całkowite" wewnętrznie, w tym liczby zmiennoprzecinkowe. Chodzi o to, jak są interpretowane. Ale mylicie się porównując * wskaźniki * z porównywaniem * obiektów * wskazanych - dwie zupełnie różne rzeczy. Porównanie dwóch "wskaźników" Javy (referencje) z "==" jest około tak szybkie, jak porównanie dwóch * długich * wartości. –