Подтвердить что ты не робот

Почему нет значения sizeof в java

По какой причине в java нет оператора sizeof? зная, что это очень полезно в С++ и С# и как вы можете получить размер определенного типа, если это необходимо?

4b9b3361

Ответ 1

Поскольку размер примитивных типов явно задан языком Java. Различия между реализациями JVM не существует.

Кроме того, поскольку распределение выполняется оператором new в зависимости от его аргумента, нет необходимости указывать необходимый объем памяти.

Конечно, было бы удобно иногда знать, сколько памяти будет занимать объект, чтобы вы могли оценивать такие вещи, как требования к максимальному размеру кучи, но я полагаю, что разработчики Java Language/Platform не думали, что это критический аспект.

Ответ 2

В c полезно только потому, что вам приходится вручную выделять и освобождать память. Однако, поскольку в java есть автоматическая сборка мусора, это необязательно.

Ответ 3

В java вы не работаете напрямую с памятью, поэтому sizeof обычно не требуется, если вы все еще хотите определить размер объекта, посмотрите этот вопрос.

Ответ 5

C требуется sizeof, потому что размер ints и longs варьируется в зависимости от ОС и компилятора. Или, по крайней мере, раньше.:-) В Java все размеры, бит конфигурации (например, IEEE 754) лучше определены.

EDIT - я вижу, что @Maerics предоставил ссылку на спецификации Java в своем ответе.