关于JAVA对象的实例变量内存问题

如果用类创建一个对象的时候 没有 实例变量 那么假设这个类为a 运行
a tom=new tom(); 是为tom这个对象分配内存空间么
还有一句话说 一个类通过使用运算符new可以创建多个不同的对象,这些对象将被分配不同的内存空间,准确的说法是:不同对象的实例变量将被分配不同的内存空间。
那么假如一个对象没有实例变量怎么办
例如 class b{
void f(){
System.out.println("ss");
}
}
public class a{
public static void main(String args[]){
b tom=new b();
b.f();
}
}
这个程序建立tom这个对象时用的默认的构造方法 没有实例变量 那么他有内存空间么
如果说new就为对象分配了内存空间 那么上述的准确说法对么?
最好是形象一些 谢谢
运行的构造函数没有实例变量呢 向我的class b没有实例变量额

只要 new 了就会在内存分配空间,
b tom ; //这样就只能算是声明了,但是未分配内存空间
b tom = null; //这样在内存分配了一块空间给它,里面放 tom 实例, 内容:null
b tom = new tom(); // 这样肯定会被分配一块空间,这样就会调用对应的构造函数,在没有给里面的变量赋值前,它会保持初值
类 只声明了,不实例,是不可以使用的,因为没有给它分配内存,所以计算机找不到它,也无法对其操作,null 对象也不能操作,也必须要 new 实例。
比如:int b = 10;
int 型我们可以把它比做人型, b 是他的名字,10是它的行李,如果不给它分配 "小房间" ,你想要找 b 这个人的时候怎么找呢?
如上所述:
int b = 10;
已经在内存里分配了一块内存区域,存放了 10 这个变量。
但是:
如果是 int b ; 就这样结束的话,内存还未分配空间,因为不把值初始化是不会给它分配空间的,
你可以把它理解为,他没有行李,我们找他也没什么用,等他有利用价值了才去找他。
你见过使用没有值的变量么?

至于构造函数这一块,如果编写者不在程序里写空构造函数的话,JAVA虚拟机是会在编译的时候帮补上的,类肯定要有空构造函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-01-10
你的class b 实例变量是tom 因为你有b tom=new b();
没有实例变量 这个类中看是否有静态变量 和方法 因为静态变量和静态方法也要占内存
如果没有 不占内存占硬盘
第2个回答  2011-01-10
不同对象的实例变量将被分配不同的内存空间。这里的实例变量,指的就是tom,而不是tom中的变量
第3个回答  2011-01-10
new了就是分配了内存空间
第4个回答  2011-01-11
建议LZ去看看JAVA内存分配
相似回答