菜鸟问题:关于JAVA中对象创建的疑问!

icvss 2009-07-30 12:47:09
有一个类Echo,在main函数中实例化一个对象~
Echo e1=new Echo();
Echo e2=e1;

Echo e1=new Echo();
Echo e2=new Echo();

有什么区别……!(望详细)
...全文
93 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CamilleTao 2009-07-30
  • 打赏
  • 举报
回复
Echo e1=new Echo();
Echo e2=e1;
e1和e2的内存地址相等.
Echo e1=new Echo();
Echo e2=new Echo();
e1和e2的内存地址不等;
icvss 2009-07-30
  • 打赏
  • 举报
回复
谢谢大家,明白了……
radeonxhl 2009-07-30
  • 打赏
  • 举报
回复
第一种情况:e1和e2其实是指向同一个对象,打个比方就是“沪”和“上海”都是指的同一个地方,不同叫法而已

第二种情况:e1和e2指向了不同的对象,相当于一个“上海”一个“杭州”,叫法不同,实际所指的地方也不同
believeyourself86 2009-07-30
  • 打赏
  • 举报
回复
调用

if(e1 == e2)
System.out.println("e1 和 e2 的引用相同");
else{
System.out.println("e1 和 e2 的引用不同");
}
看看结果,两种定义方法得到的结果是不同的。
第一种方法两个对象的引用是指向同一个对象的,也就是真正的对象有一个,指向他的引用由两个;
第二种方法两个对象的引用时指向两个对象的,也就是有两个的对象,对象的内容相同,存储的地址不同。两个引用分别指向两个对象。
icvss 2009-07-30
  • 打赏
  • 举报
回复
问题追加:
谈下在这段程序中不同方法的结果:(望详细¥¥¥)
public class Echo {
int count=0;
void hello(){
System.out.println("helloooooo");
}
public static void main(String[] args){
Echo e1=new Echo();
Echo e2=new Echo();//Echo e2=e1;

int x=0;
while(x<4){
e1.hello();
e1.count+=+1;
if(x==3){
e2.count+=1;
}if(x>0){
e2.count=e2.count+e1.count;
System.out.println("^"+e2.count);
}
x=x+1;
}
System.out.println(e2.count);
}

}

62,621

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧