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

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

P-Gn 1月前

13 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)
  • 这是 Java 的基本原则之一。每个变量只是某个对象的句柄。执行

    e1=e2
    

    不会复制对象的值,它会将两个对象都指向 handles 创建的第二个对象。 Echo 您实例化的第一个对象现在根本没有被引用,并且会在下次 gc 运行时被垃圾回收。

返回
作者最近主题: