1. 程式人生 > >數組和面向對象

數組和面向對象

學習總結

1)數組:可以存儲同一種類型元素的一個容器

2)數組定義兩種方式:
                    數據類型[]  數組名稱 ;
                    數據類型 數組名稱[] ;(很少用到)

                    例如:int[] a;      定義了一個int類型的數組變量a
                     int a[] ;       定義了一個int類型 變量a數組

3)數組的初始化:
            動態初始化:給定數組長度,它數組元素值由系統默認給定
            數據類型[]  數組名稱 = new 數據類型[長度];

            例如:int[] arr = new int[3] ;
                                左邊:
                                                int[]  :定義的是一個int類型的數組
                                                arr  : 數組名稱 
                                右邊:
                                             new :創建一個數組對象(它會在堆內存中存在)
                                             int[] :當前int類型的數組
                                            “   3 ” : 當前數組的長度是3

            靜態初始化:給定數組的元素值,長度由系統給定
            格式:
            數據類型[]  數組名稱 = new 數據類型[]{元素1,元素2…..}

            例如: int[] arr = new int[]{13,52,81,49} 或者 int [] arr = {13,52,81,49}(右邊常用)

            !!!         int[] arr2 = new int[3]{1,2,3} ;這種是錯誤的,動靜結合  定義數組要麽                                動態初始化,指定長度,要麽靜態初始化指定數組元素!

4)Java內存的分配:
        (1) 棧內存:先進後出      --LinkedList:底層鏈表結構
            存儲:局部變量,它是在方法聲明上或者是在方法定義中(使用完畢,從內存中釋放掉)
        (2)堆內存:new出來東西,   可以存儲類中的成員變量
        (3)方法區:class區域,static區域,String:字符串 (字符串常量區)

         ![](http://i2.51cto.com/images/blog/201804/12/af85a72adb1967375077eb1da280d330.jpg?x-oss-process=image/watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=)

5)數組的應用(基本應用)
      (1)數組中求最值問題(找一個參照物,遍歷其他元素依次進行比較)
        (2)數組的遍歷問題(定義一個遍歷的功能)
        (3)數組的逆序問題
        (4)數組元素的基本查找(查找數組中某個元素在數組中第一次出現的索引) 
                        (如果數組中元素非常多,元素個數難以數清楚時,針對這種情況,Java提供數                組屬性:length屬性       x<arr.length   arr為數組名稱)

6)數組中經常會出現的異常:

     (1).ArrayIndexOutOfBoundsException:數組角標越界異常
                出現的原因:訪問了數組中不存在的索引值;
                解決方案:觀察數組中到底有索引值到多少;  數組長度-1

       (2).NullPointerException:空指針異常 (在實際開發中該異常是最多的)
                出現的原因:對象為null,而開發者還要去使用對象,就會出現問題
              解決方案:給某個對象進行非空判斷,防止程序程序空指針異常

1)  面向對象的思想概述:
       面向對象基於面向過程的一種編程語言
2)  思想的特點:
   (1)符合我們的行為思想習慣
   (2)將復雜的事情簡單化
   (3)從執行者變成了指揮者

3) 面向對象開發:
創建對象(前提是有類),使用對象,指揮對象做事情(用對象.方法();)
鍵盤錄入:
Scanner類
創建對象:
類名 對象名 = new 類名() ;
Scanner sc = new Scanner(System.in) ;
4) 關於類和對象的概述:
將現實世界的事物----代碼中 :類
屬性: 成員變量
行為: 成員方法(public)
例如:
手機事物
屬性:品牌 價格 顏色 成員變量:

行為:打電話,發短信 成員方法:

5)
   形式參數的問題:
         如果是基本數據類型,形式參的改變對實際參數沒有影響;
         研究引用類型:形式參數的改變會直接影響實際參數;   

6) 匿名對象:
就是創建對象的時候,沒有名字的對象
匿名對象在實際開發中,只用使用一次,不要使用多次 (可能會造成一個內存溢出的現 象);
7) private的用法:(私有化,體現的也是一種封裝思想)
(1)被private修飾的只能在本類訪問
(2)可以通過公共的訪問public 去間接訪問

    8)封裝:
        標準類的寫法,將成員變量全部私有化,被private修飾的成員變量只能在本類中訪問,         可以通過公共的訪問方法去訪問成員變量

    9)  構造方法作用:
         就是給對象進行進行初始化

    構造方法也屬於一類的組成:
         A)  成員變量
         B)  構造方法
           C)  成員方法

    構造方法:
      (1)方法名和類名相同;
      (2)構造方法,連void都沒有;

    10)  類的組成中有一個成員:成員方法
         成員方法的分類:
              (1)按照返回值劃分
                        void的形式:沒有具體的返回值
                        非void形式:有具體返回值
              (2)按照參數進行劃分
                        空參
                        有參      

 11)        this:代表是當前類對象,或者是(當前類對象的引用),解決局部隱藏了成員變量
 12)        多個對象對同一個變量進行共享,這個時候Java提供了一個關鍵字---static:  靜                 態的(共享的)
                        關於static關鍵字:
                (1)靜態隨著類的加載而加載;
          (2)static優先於對象存在;

                   回想:main  public static void main(..){...}

           (3)static共享數據,可以被多個對象進行共享
                 舉例:    飲水機(staticd的:共享的);
                     水杯(不能共享的...);
           (4)如果數據被靜態修飾的,它可以被類名直接調用;
                       被靜態修飾的方法:    類名.方法名()
                             被靜態修飾的變量:  類名.變量名;
                 (5)static用法:(簡單記:靜態只能訪問靜態)

                 一個類中可有靜態變量,也可以有非靜態
                     可以有靜態成員方法,也可以非靜態的成員方法
                                靜態的方法只能訪問靜態變量,或者是靜態的方法
                        非靜態的方法,既可以訪問靜態變量也可以非靜態的變量...     

        13)面試題。
     成員變量和局部變量的區別
            (1)在類中位置不同
              成員變量:類中,方法外
                        局部變量:方法聲明上,或者再方法定義中
        (2)在內存中的位置不同:
                        成員變量:堆內存
                        局部變量:棧內存
      (3)生命周期不同:
                成員變量:成員變量是隨著類的加載而加載,隨著類的消失而消失
                        局部變量:隨著方法的調用而存在,隨著方法調用完畢而消失
      (4)初始化值不同
                        成員變量:初始化由系統默認初始化,對於成員變量,可以不給初始化值,由系統給,                               然後顯示初始化;
              局部變量:定義一個局部變量,必須進行初始化,如果不初始化,無法使用(在使用之                              前進行初始化);

數組和面向對象