一.引用的介紹
引用:爲對象起立另一個名字,引用類型引用另一種類型。
引用並非對象,相反的,它只是爲一個已存在的對象所起的另外一個名字。
eg. ArrayList intList = new ArrayList();
- 這個 intList 不是對象本身,是對象的引用
- 右邊的“new ArrayList”,是以ArrayList類爲模板,在堆空間裏創建一個ArrayList對象。
二.什麼是引用
引用好比遙控器,對象好比電視機
三.引用的賦值
Student student1 = new Student("Jack");
Student student2 = new Student("Rose");
● new出來兩個對象
● student1和student2是這兩個對象的引用
提問: student1 = student2; //what heppened here?
舉例:
class IntegerWrapper {
public int integer;
public IntegerWrapper(int value) {
this.integer = value;
}
}
public class Main {
public static void increment(int a) {
a++;
}
public static void increment(IntergerWrappper intw) {
intw.integer++;
}
public static void main(String []args){
int a = 10;
IntegerWrappper intw = new IntegerWrapper(10);
increment(a);
increment(intw);
System.out.println(a); //輸出10
System.out.println(intw); //輸出11 通過引用把這個引用指的對象的值給改變
}
}
總結:
● 傳遞引用 (其實是傳遞對象的地址)
● 修改引用所指向對象的數據則有變化,修改引用沒有任何效果
四.引用的好處
● 引用存的是指向這個對象的地址
● 使得數據存儲更加的整齊
● 需要專遞引用去修改數據
五.特殊引用null
null :空的引用,沒有引用任何對象。
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list = null; // list變成了空引用
list.add(1); // NullPointerException 空指針異常