Java中为什么没有sizeof?

问题描述 投票:0回答:7

Java 中没有

sizeof
运算符是出于什么设计原因?知道它在 C++ 和 C# 中非常有用,那么如果需要的话如何获取某种类型的大小呢?

java sizeof operator-keyword
7个回答
22
投票

因为基本类型的大小是由Java语言明确规定的。 JVM 实现之间没有差异。

此外,由于分配是由

new
运算符根据其参数完成的,因此无需指定所需的内存量。

有时知道一个对象将占用多少内存肯定会很方便,这样您就可以估计诸如最大堆大小要求之类的事情,但我认为 Java 语言/平台设计者并不认为这是一个关键方面。


7
投票

在 c 中有用只是因为你必须手动分配和释放内存。然而,由于java中有自动垃圾收集,所以这是没有必要的。


1
投票

在java中,你不直接使用内存,所以通常不需要

sizeof
,如果你仍然想确定对象的大小,请查看这个问题


1
投票

c/c++ 和 c/c++ 中存在的运算符的大小是与机器相关的语言,因此不同的数据类型在不同的机器上可能有不同的大小,因此程序在执行对大小敏感的操作时需要知道这些数据类型有多大。 例如:一台机器可能有 32 位整数,而另一台机器可能有 16 位整数。

但是 Java 是独立于机器的语言,所有数据类型在所有机器上的大小都相同,因此无需查找 Java 中预先定义的数据类型的大小。


0
投票

内存管理是由Java中的VM完成的,也许这可能对你有帮助:http://www.javamex.com/java_equivalents/memory_management.shtml


0
投票

C 需要 sizeof,因为 int 和 long 的大小根据操作系统和编译器的不同而变化。 或者至少过去是这样。 :-) 在 Java 中,所有大小、位配置(例如 IEEE 754)都得到了更好的定义。

编辑 - 我看到 @Maerics 在他的答案中提供了 Java 规范的链接。


0
投票

要增强Java应用程序的安全性,一种方法是不允许程序员摆弄内存。因此,不提供基元的大小就是这样的决定之一。同样,内存管理也不是由程序员完成的,而是由 JVM 完成的。

© www.soinside.com 2019 - 2024. All rights reserved.