美文网首页
《第二行代码》 对象的赋值,会改变引用对象

《第二行代码》 对象的赋值,会改变引用对象

作者: 你的益达233 | 来源:发表于2021-10-09 10:12 被阅读0次

看下下面代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Tank t1 = new Tank();
        changeTank(t1);
        Log.i("t1",t1.level+"");  //输出的是100  赋值操作的是一个对象的引用。所以修改tank的同时也改变了t1

        String str1 = "233";
        changeStr(str1);
        Log.i("str1",str1);  //输出的是233 ,基本数据类型,是复制值赋值
    }

    private void changeTank(Tank tank){
        tank.level = 100;
    }

    private void changeStr(String str){
        str = "hl";
    }

}

注意这个对象赋值陷阱,也叫别名问题

相关文章

  • 《第二行代码》 对象的赋值,会改变引用对象

    看下下面代码: 注意这个对象赋值陷阱,也叫别名问题

  • 面向对象

    对象与对象引用 一行代码: 其中的dasima是对象还是对象引用?答案是对象引用 两行代码: 如果dasima是一...

  • python赋值,浅拷贝,深拷贝

    1,赋值:不创建对象(对象的赋值都是进行对象引用(内存地址)传递),随原始数据改变而改变 2,浅拷贝:创建对象(不...

  • JavaScript浅析 -- 可变对象和不可变对象

    一、可变对象 把对象a赋值给对象b,更改对象b的属性值,被引用的对象a也随之改变,这就是可变对象。 为啥会这样呢?...

  • 5.React知识点集合

    可变对象 把对象a赋值给对象b,更改对象b的属性值,被引用的对象a也随之改变,这就是可变对象。 为啥会这样呢?其他...

  • Immutable学习

    Immutable 为什么要使用Immutable JS使用引用赋值,新的对象简单引用了原始对象,改变新对象将会影...

  • 关于JS赋值与引用

    js中 new会给对象赋值,但不会改变已引用该对象的值例如 证明 t 虽然改变了,但是之前引用key的对象的值却没...

  • 引用赋值、浅拷贝、深拷贝

    引用类型赋值 只是改变了指针的指向,值会跟着一起变化 引用类型浅拷贝 复制一层对象的属性,并不包括对象里面的为引用...

  • java浅拷贝和深拷贝

    代码 1.直接赋值:地址的赋值,即两个变量引用同一个对象,同步改变。2.浅拷贝:克隆后基本类型可以独立修改,但引用...

  • 对象的复制赋值

    目录 潜复制&深复制 值传递&引用传递 可变对象&不可变对象 赋值 对象的赋值实际上是对象的引用。当创建一个对象,...

网友评论

      本文标题:《第二行代码》 对象的赋值,会改变引用对象

      本文链接:https://www.haomeiwen.com/subject/arqqoltx.html