По какой причине в java нет оператора sizeof? зная, что это очень полезно в С++ и С# и как вы можете получить размер определенного типа, если это необходимо?
Почему нет значения sizeof в java
Ответ 1
Поскольку размер примитивных типов явно задан языком Java. Различия между реализациями JVM не существует.
Кроме того, поскольку распределение выполняется оператором new
в зависимости от его аргумента, нет необходимости указывать необходимый объем памяти.
Конечно, было бы удобно иногда знать, сколько памяти будет занимать объект, чтобы вы могли оценивать такие вещи, как требования к максимальному размеру кучи, но я полагаю, что разработчики Java Language/Platform не думали, что это критический аспект.
Ответ 2
В c полезно только потому, что вам приходится вручную выделять и освобождать память. Однако, поскольку в java есть автоматическая сборка мусора, это необязательно.
Ответ 3
В java вы не работаете напрямую с памятью, поэтому sizeof
обычно не требуется, если вы все еще хотите определить размер объекта, посмотрите этот вопрос.
Ответ 4
Управление памятью осуществляется виртуальной машиной на Java, возможно, это может помочь вам: http://www.javamex.com/java_equivalents/memory_management.shtml
Ответ 5
C требуется sizeof, потому что размер ints и longs варьируется в зависимости от ОС и компилятора. Или, по крайней мере, раньше.:-) В Java все размеры, бит конфигурации (например, IEEE 754) лучше определены.
EDIT - я вижу, что @Maerics предоставил ссылку на спецификации Java в своем ответе.