class Person{
String name;
int age;
}
public class JavaDemo13{
public static void main(String args[]){
Person person1=new Person();
person1.name="123";
person1.age=22;
Person person2=person1;
System.out.println(person1.name+person1.age);
System.out.println(person2.name+person2.age);
}
}
程序运行后,有没有为person2开辟新的堆内存空间,求详解
实例化对象问题
答案:4 悬赏:70 手机版
解决时间 2021-03-24 06:46
- 提问者网友:龅牙恐龙妹
- 2021-03-23 12:16
最佳答案
- 五星知识达人网友:煞尾
- 2021-03-23 12:54
程序输出的结果是一样的,运行之后,并没有为person2开辟新的堆内存空间,
Person person2=person1;仅仅是person1的赋值给了person2,person2指向person1的引用,与person1共用同一个内存地址,所以没有为person2开辟新的空间。
Person person2=person1;仅仅是person1的赋值给了person2,person2指向person1的引用,与person1共用同一个内存地址,所以没有为person2开辟新的空间。
全部回答
- 1楼网友:逃夭
- 2021-03-23 14:44
person2=person1的时候就开辟了堆空间,这种写法等于
person2 = new person();
person2.name = person1.name;
person2.age = person1.age;
如果person3 = new Person()
person2 = person3
这个时候就不会开辟堆空间了。
- 2楼网友:长青诗
- 2021-03-23 14:35
不有为person2开辟新的堆空间;
new 出来的对象是在堆内存中,Person person2 = person1; 只是声明一个person2变量指向了person1所在的堆内存空间地址,这两个对象的内存地址是相同的;
- 3楼网友:从此江山别
- 2021-03-23 13:59
每个 java 应用程序都有一个 runtime 类实例,使应用程序能够与其运行的环境相连接。可以通过 getruntime 方法获取当前运行时。
应用程序不能创建自己的 runtime 类实例。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯