黑馬程序員----------java基礎知識(4)之數組

                                    ----------------------android培訓java培訓、期待與您交流! ----------------------

       今天主要學習了java中的函數,也就是方法,還有數組,下面針對數組做一下自己的總結。

      

        :數組(重點)
    (1)數組的概念和特點
        A:數組時存放同一種數據類型的集合.數組是一個容器.
        B:特點
            **它會把元素自動從0開始編號,方便於操作元素.
    (2)數組定義的兩種格式    
        A:第一種
            int[] arr = new int[長度]; 經常使用

            /*
                左邊:
                    int 元素的數據類型
                    [] 表示這是一個數組
                    arr 是數組(變量)名

                右邊:
                    new 用於創建實體的.
                        實體:可以用於存放多個數據的東西.
                        就像class定義一個類似的.
                    int 元素的數據類型
                    [] 表示這是一個數組
                    長度 表示的是數組中的元素個數
            */

            int arr[] = new int[長度]; //瞭解
        B:第二種
            int[] arr = new int[]{元素列表...};
            int[] arr = {元素列表...};  經常使用

        C:那麼,我們定義數組的時候使用哪種格式呢?
            如果數組的元素能夠明確的列出來,用第二種.否則,用第一種.
    (3)什麼時候使用數組呢?
        當你要操作的數據是多個的時候,考慮使用數組.
    (4)java中的內存圖(看懂)
        棧:存儲的是具備變量(函數內定義的變量)
            特點:離開使用空間,立刻自動釋放.
        堆:存儲的是實體,就是 new出來的東西.
            特點:
                **堆內存中的實體都有首地址值
                **堆內存中的實體的變量都有默認值
                    byte,short,int,long 0
                    float,double 0.0
                    boolean false
                    char '\u0000' 空字符
                **堆內存中的實體不在被引用變量指向時,就變成了垃圾.
                  它會在jvm空閒的時候,有java的自動垃圾回收機制進行
                  清除.
        方法區:後面講

        本地方法區:與系統相關的資源
        寄存器:與CPU相關的資源
    (5)數組常見問題
        A:角標越界 訪問了不存在的角標.
            ArrayIndexOutOfBoundsException
        B:空指針異常 數組爲null,我們還在通過它訪問數組中的元素.
            NullPointException
    (6)數組常見操作 肯定離不開角標
        A:遍歷
            數組的屬性:length
            用法格式:數組名.length 獲取數組的長度

         

  public static void printArray(int[] arr)
            {
                for(int x=0; x<arr.length; x++)
                {
                    System.out.println(arr[x]);
                }
            }



            //爲了格式好看
        
   public static void printArray(int[] arr)
            {
                System.out.print("[");

                for(int x=0; x<arr.length; x++)
                {
                    if(x==arr.length-1)
                    {
                        System.out.print(arr[x]);
                    }
                    else
                    {
                        System.out.print(arr[x]+",");
                    }
                }

                System.out.println("]");
            }


        B:最值
            **最大值
              
 public static int getMax(int[] arr)
                {
                    int max = arr[0];
                    
                    //0角標的元素作爲了參照物
                    for(int x=1; x<arr.length; x++)
                    {
                        if(arr[x]>max)
                        {
                            max = arr[x];
                        }
                    }

                    return max;
                }


            **最小值
             
  public static int getMin(int[] arr)
                {
                    int min = arr[0];

                    //0角標的元素作爲了參照物
                    for(int x=1; x<arr.length; x++)
                    {
                        if(arr[x]<min)
                        {
                            min = arr[x];
                        }
                    }

                    return min;
                }


        C:排序
            **選擇排序 用0角標的元素和其後元素依次比較,最值出現在左邊.
                    
            
   public static void selectSort(int[] arr)
                {
                    for(int x=0; x<arr.length-1; x++)
                    {
                        //y總是比x大1
                        for(int y=x+1; y<arr.length; y++)
                        {
                            if(arr[y]<arr[x])
                            {
                                int temp = arr[x];
                                arr[x] = arr[y];
                                arr[y] = temp;
                            }
                        }
                    }
                }



            **冒泡排序   原理是 相鄰元素兩兩相比,最值出現在右邊.
                
           
    public static void bubbleSort(int[] arr)
                {
                    for(int x=0; x<arr.length-1; x++)
                    {
                        for(int y=0; y<arr.length-1-x; y++)
                        {
                            if(arr[y]>arr[y+1])
                            {
                                int temp = arr[y];
                                arr[y] = arr[y+1];
                                arr[y+1] = temp;
                            }
                        }
                    }
                }

      以前看過老師將的數組排序,其實數組的排序有很多種,其中冒泡排序和選擇排序是最基本的最麻煩的排序算法,不過我感覺還行,自己代碼沒有必要一個不漏的背下來,只要自己知道原理就好了,在面試的時候也可以自己當場去總結其中的規律,直接就可以將代碼寫出來。


                             ----------------------android培訓java培訓、期待與您交流! ----------------------

發佈了31 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章