從新認識變量和數組

從新認識基本類型的變量數組

  • 變量的基本邏輯——有定纔有變。在人看來,固定的是名字,變化的是名字對應的值。對計算機來講,固定的是地址,變化的是它的值。
  • 理解計算機如何使用內存來完成變量的功能的:
    • 內存就像一堆白紙,只能經過頁碼編號進行訪問,也就是所謂的內存地址
    • 變量就是使用一個固定地址加上這個地址對應的內存。計算機經過地址讀寫地址對應的內存的值,完成變量的賦值和訪問值的功能。就好像根據頁碼編號,在指定的白紙上寫字或者擦掉重寫。
    • 變量的名就是地址,變量的實就是地址的內存上保留的值。

 

理解數組的名與實spa

  • 數組的「實」是一塊地址連續的內存,就像是編號連續的一沓白紙。
  • 數組的名,就是這塊連續內存的地址。
  • 數組的變量和基本變量同樣,自己就是一個地址。可是與基本變量不同的是,這個地址的值,是數組的「名」,也就是數組的第一個地址。

 

數組 = 數組變量 + 數組實體code

  • 數組變量[索引] 就是在數組原有地址的基礎上,加上索引,得到想要的元素。
  • 所以索引值從0開始,這是由於數組變量的地址就是數組第一個元素的地址
  • 另外,實際上0表明對原來位置的0個偏移量,所以也就不難理解爲何數組下標從0開始了。

 

數組的長度blog

  • 數組變量.length 能夠獲取到數組的長度
  • 數組建立後,長度不能夠改變
public class WhatIsArray {
    public static void main(String[] args) {
        int[] book = new int[10];

        System.out.println(book[0]); // 訪問數組的第一位
        System.out.println(book[1]); // 訪問數組的第二位

        System.out.println("數組的長度是:" + book.length); // 查詢數組的長度
    }
}

 

 

數組索引越界和初始值索引

  • 訪問數組越界會出錯,這種錯誤叫作 IndexOutOfBoundException
  • 若是沒有把握數組是否會越界,能夠把索引和數組長度作比較。注意索引是從0開始的。
  • 數組內每一個元素都有初始值,初始值與數組的類型有關係。對於數字類型,初始值爲0,對於boolean類型初始值爲false。
public class IndexOutOfBoundExample {
    public static void main(String[] args) {
        int[] array = new int[5];
        System.out.println(array[array.length-1]);
        System.out.println(array[array.length]); // array[5] 這樣就會越界
    }
}

 

 

讓變量指向新的數組內存

  • 數組變量能夠指向新的數組實體。這時候,數值變量的值就是新的數組實體的地址了。這種數組變量的賦值操做, 叫作讓變量指向新的數組。
  • 若是沒有別的數組變量指向原來的數組實體,那麼原來的數組實體就不再可訪問了,好像「消失」了同樣。
public class AssignArray {
    public static void main(String[] args) {
        int[] book = new int[3];
        book[0] = 9;
        System.out.println("book長度爲" + book.length + "。book[0] = " + book[0]);

        book = new int[32];
        System.out.println("book長度爲" + book.length + "。book[0] = " + book[0]);
    }
}

相關文章
相關標籤/搜索