在下面这个代码中有以下疑问,求教!
class Person{
String name = "张三";
}
public class Test{
public static void main(String args[]){
Person p = new Person();
}
}
1.当new一个Person对象的时候,引用变量p是存放在栈内存中,而产生的Person对象存放在堆内存中。但是在Person类中的name也是一个引用变量,是不是理解为这个name也是存放在栈内存中,而“张三”是存放在堆内存中?2.如果新产生的Person对象和“张三”都在堆内存中,那两者是什么关系呢?是包含还是独立还是其他的关系?
class Person{
String name = "张三";
}
public class Test{
public static void main(String args[]){
Person p = new Person();
}
}
1.当new一个Person对象的时候,引用变量p是存放在栈内存中,而产生的Person对象存放在堆内存中。但是在Person类中的name也是一个引用变量,是不是理解为这个name也是存放在栈内存中,而“张三”是存放在堆内存中?2.如果新产生的Person对象和“张三”都在堆内存中,那两者是什么关系呢?是包含还是独立还是其他的关系?
解决方案 »
- The method getMsg() from the type test1 is not visible
- 可以同时抛出两个异常吗??
- java线程a调用b.join后a线程处于什么状态
- JAVA做出来的软件只能在装有JAVA虚拟机的电脑上运行吗?
- 死活找不出哪里出了问题!
- 在java1.4中如何用schema验证xml的有效性?
- JAVA和SQL的数据类型匹配问题。
- 内部类中一个static变量问题?
- java中多线程的问题
- 請問 TreeMap 排序方法
- 怎么样才能入门java呀,请求大家的帮助。都说万事开头难,我都不知道该如何做起!充满了疑惑和迷茫,听的课程都听不懂。究竟该怎么做那,请大哥大姐们多多指教!
- javasocket通讯
楼主看看这篇文章之后就应该理解了
实例变量和对象驻留在堆上,局部变量驻留在栈上。
Person对象和“张三”都在堆内存中,他们没有直接的联系,Person中的变量name是“张三”的引用而已。