《第二行代碼》 對象的賦值,會改變引用對象

看下下面代碼:

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

}

注意這個對象賦值陷阱,也叫別名問題

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