1. 程式人生 > >數組的基礎理解

數組的基礎理解

ofb ima 觀察 沒有 bound 下拉 java 必須 結合

數組:

1.概念,什麽數數組?
數組是存儲多個變量(元素)的東西(容器);
這多個變量的數據類型要一致;

2.java的內存分配圖

java為了提供程序的執行效率,將內存分為五個部分

A.棧內存:可以存儲局部變量
在方法定義中(定義的局部變量)或者在方法聲明上(形參)都是局部變量
當方法或者代碼執行完後,局部變量就會及時從內存中釋放掉;`
B.堆內存:
new出來的東西在堆內存,堆內存中創建的數組對象會在使用後,由垃圾回收期釋放,但不是用完立即釋放,而是等垃圾回收器空閑才進行釋放
C.方法區
面向對象部分講
D本地方法區(和系統有關系)
E寄存器(和CPU有關)

3.數組的定義:
數據類型[] 數組名;
數據類型 數組名[];

例如:
int [] a; 定義了一個int類型的數組變量a;
int a [];定義了一個int類型 變量a的數組;
這兩個方式定義:雖然寫法不同,讀法不同但是表達的效果是一樣的,都是在定義一個數組;
面試過程中如果沒有說明二維數組,都用如上的一維數組去做;
4.數組的初始化
1)動態初始化:給數組指定長度,數組中的元素值由系統默認給定;
2)靜態初始化:給定數組中元素的值,數組的長度有系統給定;

   動態初始化:
       數據類型[]數組名  =  new  數據類型[數組長度]
        例如:
                     int [] arr = new  int[3];
       沒有被初始化的數組是沒辦法被使用的,不能直接輸出一個arr,必須有new那些東西;
                此時打印輸出arr就是一個地址值,
       獲取數組中的元素:通過數組名稱獲取
               格式:
                           數組名稱[索引值],數組的索引值從零開始,最大的索引是數組長度-1;
                           輸出arr[0]     arr[1]   結果都是自動給定的0;

        靜態初始化:
              原始格式:   數據類型[] 數組名稱 = new 數據類型[]{元素1.2.3....}
              簡寫方式:   數據類型[]數組名稱  =   {元素1.2.3.........}       

                舉例:  int []  arr  =  new  int[]{1,2,3}
                          int []  arr   =  {1,2,3}
                如果定義是這樣定義:
                          int[] arr  =  new int[3]{1,2,3}
               這樣便是錯誤的,因為這樣是動靜結合,不可使用;
  1. Throwable類是java語言中所有錯誤或者異常的超類;
    而Throwable的已知子類便是;
    Error:錯誤(嚴重錯誤);
    Exception:異常 分為編譯時期,運行時期;
    數組中出現的兩個異常:java.lang.ArrayIndexOutOfBoundsException: 數組角標越界
    出現的原因是訪問了數組中不存在的索引值;
    解決方案:觀察數組中索引值到多少;

                               如果int [] arr =null; 輸出arr[0];
                               此時輸出異常:NullPointerException:空指針異常;(實際開發異常最多的)
    出現原因是對象為空,而開發者還要去使用對象,那麽就會出現問題;
    解決方案:判斷一下if(arr!=null){再輸出對象},這樣即可解決;
    
    OOM異常:OutOfMemory:內存溢出;
                                使用app時,比如這個app攜帶大量的圖片,一直再往下刷新,有時app退出,
                                你下拉的速度遠不及加載的速度,加載要求釋放掉,你下拉太慢,
                                已經釋放掉了,嬌內存溢出;
                               解決方案: 使用第三方的軟件,比如ImageLoader等;

6.數組中的length;
數組中的length屬性,arr.length;可以在靜態初始化後直接算出裏面的元素量;
同理 arr.length-1;可以算出索引的大小;
區分:
還有一個length()方法,是字符串中運用的,用來計算字符串的長度;

數組的基礎理解