8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

当一个对象被分配给另一个对象时会发生什么

P-Gn 1月前

12 0

公共类 DrumKitTestDrive {/** * @param args */public static void main(String[] args) { // TODO 自动生成的方法存根 Echo e1 = new Echo(); Echo e2 = new Echo();// **...

public class DrumKitTestDrive {
/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Echo e1 = new Echo();
    Echo e2 = new Echo();
//      **e2 = e1;**

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

class Echo {
    int  count = 0;

    void hello(){
        System.out.println("Hellooooo....");
    }
}

该代码的输出将是:

Hellooooo....
Hellooooo....
Hellooooo....
Hellooooo....
10

但是如果我在运行代码时删除注释, // e2= e1; 系统将打印 24 而不是 10 。我不明白为什么会这样?

实例 e1 的值复制 e2 实例中。如果系统这样做,结果将保持不变,因为两个对象属于同一类。

帖子版权声明 1、本帖标题:当一个对象被分配给另一个对象时会发生什么
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由P-Gn在本站《object》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 嘿@Avv。如果我理解你的问题:是的。在赋值 e2 = e1 之后,现在你只是对同一事物有了 2 个不同的名称。因此,在 e2 或 e1 上调用方法将产生相同的效果:两者都将操作相同的基础对象。

返回
作者最近主题: