关于java内存分配问题
比如一个Persion类,声明一个Person对象,Persionp=newPerson();那么句柄p前面的Person是存放在哪来的?记得有一个指定的位置,感谢。...
比如一个Persion类,声明一个Person对象,Persion p = new Person(); 那么句柄p前面的Person是存放在哪来的?记得有一个指定的位置,感谢。
展开
4个回答
展开全部
对于Person p = new Person();
1.
Person p中的Person用来指定引用类型的变量p的类型,变量p一般存放在栈中,如果是作为其它类的属性也可存放在堆中,如:
class C
{
Person p = new Person();
}
2.
new Person()会在堆中创建一个Person类的对象并调用Person类的默认构造器初始化这个对象,然后返回这个对象的引用(可以理解为指针或句柄)。
3.
=将new Person()返回的引用赋值给变量p,p指向了这个堆中的对象。
1.
Person p中的Person用来指定引用类型的变量p的类型,变量p一般存放在栈中,如果是作为其它类的属性也可存放在堆中,如:
class C
{
Person p = new Person();
}
2.
new Person()会在堆中创建一个Person类的对象并调用Person类的默认构造器初始化这个对象,然后返回这个对象的引用(可以理解为指针或句柄)。
3.
=将new Person()返回的引用赋值给变量p,p指向了这个堆中的对象。
展开全部
p是放在栈上的,Person对象是放到堆上的,栈上的引用p指向堆对象Person
追问
new Person()应该是存放在堆上的,Person应该不是,我就是想不起来了
追答
person本身的信息放在方法区
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、int a=23;
String str=String.valueOf(a);
int和string两个对象
2、String str =new String("23"); 一个对象
String str=String.valueOf(a);
int和string两个对象
2、String str =new String("23"); 一个对象
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p前面的Persion是用于定义p的类型
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询