Java物件與基本型別賦值
阿新 • • 發佈:2019-02-03
取自Think in Java:
賦值使用操作符“=”,它的意思是“取右邊的值,把它複製給左邊的值”,右值可以是任何常數、變數和表示式,但左值必須是一個明確的已命名的變數。
對基本型別的賦值還是很簡單的。基本型別儲存了實際的數值,而非指向一個物件的引用(包裝類也是如此)。
在遍歷包裝型別的list時,將遍歷出來的值 賦值 給Integer包裝類物件,並對物件的值進行改變。結果原list中的Integer物件並未發生改變,list容器中儲存的是實際的數值。
在遍歷A物件的List,並對A物件中的值進行改變,List中A物件的值也發生了改變,說明在list容器中儲存的是A物件的引用。
public class TestRun { public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); List<A> Alist = new ArrayList<A>(); for(int i=0;i<10;i++){ list.add(i); Alist.add(new A(i)); } for(A a:Alist){ a.setA(0); } System.out.println("A:"+Alist);//A:[0, 0, 0, 0, 0, 0, 0, 0, 0, 0] for(Integer integer:list){ integer+=1; } System.out.println(list);//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for(int i=0;i<10;i++){ Integer integer = list.get(i); integer+=1; } System.out.println(list);//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] Integer[] array = {0,1,2,3,4,5,6,7,8,9}; for(int i=0;i<10;i++){ Integer integer = array[i]; integer+=1; } System.out.println(Arrays.toString(array));//[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] for(int i=0;i<10;i++){ array[i]+=1; } System.out.println(Arrays.toString(array));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] } } class A{ private Integer a; public int getA() { return a; } public void setA(int a) { this.a = a; } public A(int a) { this.a = a; } @Override public String toString() { // TODO Auto-generated method stub return a.toString(); } }