一个关于java实例化对象的问题!~~~想不通,望高手解答啊~~~感激不尽

来源:百度知道 编辑:UC知道 时间:2024/05/26 04:45:39
在同一个类中实例化自己所属于的那个类的对象,那样的话内存的变化到底是怎么变化的??比如这样的程序:
class PassRef
{
int x ;
public static void main(String [] args)
{
PassRef obj = new PassRef();
obj.x = 5;
change(obj);
System.out.println(obj.x);
}
public static void change(PassRef obj)
{
obj.x=3;
}
}
比如PassRef obj = new PassRef();这句它实例化了一个自己所属的类的对象,但是如果在堆内存中实例化这样一个对象的话那在那个对象中不是又要用这一句去实例化另一个对象,这样的话不是没完没了了吗???怎么好像变成死循环了!~???????望高手解答呀!~~~~

楼主理解错了,实际上要实现你说的死循环的情况是在一个类中的构造函数中定义这个类的对象,例如:
class A
{
public A()
{
A a=new A();
}
public static void main(String [] args)
{
}
}
这样就会进入一个死循环,因为类的实例化是调用构造函数。希望你能搞清楚类的实例化过程

实例化一个类只是 让该对象具有该类的属性`` 又不是执行!

这里你要了解一个事情,main方法是程序的入口,你运行这个程序的话,Java虚拟机会首先自动执行这个类的main方法,这个类中的main方法中虽然又实例化了这个类的实例,但不会再自动调用该实例的main方法,因此当然不会死循环啊

你实例化这个对象,它又不会执行你的main方法。再说main方法本身是静态方法

仲蠢过你老豆

main 方法是程序的入口