403383221 发表于 2012-11-15 21:49
Strin不是String类 ....是一个已经写好的类,他的想法是生成一个Strin类的对象昂。。。。 ...
你是说对象是吧,在java中数据类型分两种,一种是基本数据类型,一种是引用数据类型,基本数据类型只是在栈内存运行的,而引用数据类型就不同了,它是在堆和栈中运行的,它的引用对象是在栈里面,而实例对象确实在堆中的,两者之间的关系是通过地址值来联系的。同样类也是一种引用型数据。
Strin a;这句话表明你在栈内存中建立了一个引用对象;
而 a=new Strin(),这句话表明,你在栈内存中建立了一个引用对象是a(这个a和上面的一个a是不同的),而new Strin()表面在堆内存中实例化了一个对象,然后通过地址值传给了a,这时因为在栈内存中有两个引用对象a,这时传地址值时会再栈内存中出现紊乱,因为两个同名,不知传给那一个,会造成错误。自然就会运行出错了 |