关于内存效率,我有以下问题:
必须将正确的数据类型用于相应的变量。将1
的数值表示为byte
需要内存的八分之一(但如果我错了,请纠正我)。我的问题是,如果在定义变量类型或初始化时发生内存分配/推导?这可能看起来很奇怪,但我要求关于不需要初始化的全局变量,因为它们具有与局部变量相关的默认值。我还想知道对象数据类型是否有默认大小?我认为这是基于JVM(32位对64位)?
答案 0 :(得分:0)
必须将正确的数据类型用于相应的变量。
当然。 Java是一种强类型语言。你的观点?
将数字值1表示为一个字节需要内存的八分之一(但如果我错了,请纠正我)。
你错了。根据相邻声明的其他变量和类型,它可能需要4个甚至8个字节,具体取决于JVM使用的填充。
我的问题是,如果在定义变量类型或初始化时发生内存分配/扣除?
都不是。它发生在分配时,即new
时,而不是在构造函数中。例如。
这可能看起来很奇怪,但我要求关于不需要初始化的全局变量,因为它们有默认值
需要初始化所有变量。在静态或实例变量的情况下,您不必编写初始化程序代码。参考Java的“全球”一词没有任何意义。
而不是局部变量。
它没有任何区别。该变量仍然必须为其分配空间以及存储在其中的值,无论是静态,实例还是方法本地。
我还想知道对象数据类型是否有默认大小?我认为这是基于JVM(32位对64位)?
这个问题毫无意义。类Object
的实例总是具有相同的大小,在任何地方都没有记录或指定,因此可以随JVM自由变化。其他类的实例同上。在任何有用的意义上,我都看不到任何“默认”。