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

2021-10-09  本文已影响0人  你的益达233

看下下面代码:

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";
    }

}

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

上一篇 下一篇

猜你喜欢

热点阅读