出于什么设计原因,java中没有sizeof运算符?知道它在c ++和c#中非常有用,如果需要你如何获得某种类型的大小?
答案 0 :(得分:22)
因为size of primitive types是Java语言明确强制要求的。 JVM实现之间没有差异。
此外,由于new
运算符根据其参数进行分配,因此无需指定所需的内存量。
有时候知道一个对象会占用多少内存肯定会很方便,所以你可以估算最大堆大小要求之类的东西,但我想Java语言/平台设计师并不认为它是一个关键方面。
答案 1 :(得分:7)
在c中有用只是因为你必须手动分配和释放内存。但是,因为在java中有自动垃圾收集,所以这不是必需的。
答案 2 :(得分:1)
在java中,您不直接使用内存,因此通常不需要sizeof
,如果您仍想确定对象的大小,请查看this question。
答案 3 :(得分:0)
内存管理由Java中的VM完成,这可能对您有所帮助:http://www.javamex.com/java_equivalents/memory_management.shtml
答案 4 :(得分:0)
C需要sizeof,因为int和long的大小因操作系统和编译器而异。或者至少它曾经。 :-)在Java中,所有大小,位配置(例如IEEE 754)都得到了更好的定义。
编辑 - 我看到@Maerics在他的回答中提供了Java规范的链接。