1. 程式人生 > >Java物件與基本型別賦值

Java物件與基本型別賦值

取自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();
	}
}