账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    new了两个对象地址是相同的,求大佬给解答
    27
    0

    问题描述

    无聊中写了个测试

    问题出现的环境背景及自己尝试过哪些方法

    相关代码

    // 请把代码文本粘贴到下方(请勿用图片代替代码)

    Employee employee = new Employee();
        Employee employee1 = new Employee();
        Employee employee2 = new Employee();
        Employee employee3 = new Employee();
        employee.setEmId("111");
        employee1.setEmId("111");
        employee2.setEmId("112");
        employee3.setEmId("111");
        employee3.setLineTime(222);
    
        System.out.println("包含:"+employee);
        System.out.println("包含:"+employee1);
    
        ArrayList<Object> objects = new ArrayList<>();
        objects.add(employee1);
        objects.add(employee2);
        objects.add(employee3);
    
        if(objects.contains(employee)){
            System.out.println("原始:"+objects);
            System.out.println("包含:"+employee);
            objects.remove(employee);
            System.out.println("移除:"+objects);
            objects.add(0,employee);
            System.out.println("添加:"+objects);
        }
    }
    
    输出结果:
    包含:com.yangxu.market.entity.Employee@983c7d0
    包含:com.yangxu.market.entity.Employee@983c7d0
    原始:[com.yangxu.market.entity.Employee@983c7d0, com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
    包含:com.yangxu.market.entity.Employee@983c7d0
    移除:[com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
    添加:[com.yangxu.market.entity.Employee@983c7d0, com.yangxu.market.entity.Employee@46a38bef, com.yangxu.market.entity.Employee@983c8ae]
    

    你期待的结果是什么?实际看到的错误信息又是什么?

    为什么new的两个新对象,会使用同一个地址??

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 共 0 条
    • て瑾色如弦〞 普通会员 1楼

      在JavaScript中,当你尝试对同一个对象进行两次赋值时,如果两次赋值的值相同,那么第一次赋值的属性值将会覆盖第二次赋值的属性值。

      例如,假设我们有两个对象,obj1和obj2,它们都指向window对象。然后我们对这两个对象进行两次赋值:

      javascript obj1 = window; obj2 = window;

      在这个例子中,obj1和obj2实际上是指向同一个window对象,所以我们对它们进行两次赋值不会改变window对象。

      如果你想确保两次赋值的值不同,你可以使用JSON.stringify()方法将对象转换为JSON字符串,然后再将JSON字符串转换回对象:

      javascript let obj1 = JSON.stringify(window); let obj2 = JSON.stringify(window);

      在这个例子中,obj1和obj2实际上是两个不同的对象,因为它们的属性值都是window对象。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部