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

看下下面代码:

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

}

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章