1. 程式人生 > >JavaSE基礎 數組 面向對象編程理解部分關鍵字的解釋及用法

JavaSE基礎 數組 面向對象編程理解部分關鍵字的解釋及用法

java 開發

一維數組

數組:可以存儲多個元素並且多個元素是同一種類型的容器

數組的定義:

   數據類型[] 數組名;

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

   數據類型 數組名[];

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

註意:雖然兩種定義方式讀法和寫法不同,但是表達的效果一樣,都是在定義一個數組,推薦使用第一種方式;

數組的初始化:

             1)動態初始化:  給數組指定長度,數組中的元素值由系統默認給定

                          數據類型[] 數組名 = new 數據類型[數組長度] ;

             2)靜態初始化:  給定數組中元素的值,數組的長度由系統給定;

                                 數據類型[] 數組名稱= {元素1,元素2,元素3..} ;

初始化的錯誤:動靜結合定義數組要麽動態初始化,指定長度,要麽靜態初始化指定數組元素!

如何獲取數組中的元素

     獲取數組中的元素:通過數組名稱獲取

格式:數組名稱[索引值],數組的索引值從0開始,最大的索引=數組長度-1

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

             1>ArrayIndexOutOfBoundsException:數組角標越界異常

                               出現的原因:訪問了數組中不存在的索引值;

                               解決方案:觀察數組中到底有索引值到多少;  數組長度-1

            2>NullPointerException:空指針異常 (在實際開發中該異常是最多的)

                               出現的原因:對象為null,而開發者還要去使用對象,就會出現問題

                               解決方案:給某個對象進行非空判斷,防止程序程序空指針異常

數組的應用:

     1>數組的遍歷:

               publicstatic void printArray2(int[] arr) {

               //左中括號

               System.out.print("[");

               for(intx = 0 ; x < arr.length ; x ++) {

                        //判斷當前x是否是最後一個索引

                        if(x==arr.length-1){//如果是最後一個索引的對應的元素

                                 System.out.println(arr[x]+"]");

                        }else{

                                 System.out.print(arr[x]+",");

                        }

               }

     }

     2>數組的最值問題:

               publicstatic int max(int[] arr) {

               //定義參照物

               intmax = arr[0] ;

               //遍歷其他元素

               for(intx = 1 ; x < arr.length ; x ++) {

               //獲取到每一個元素,分別和參照物進行比較,如果大了,就作為最大值進行繼續比較

                        if(arr[x]> max) {

                                 max= arr[x] ;

                        }

               }

               returnmax ;

     }       

3>數組逆序:

     /*

*定義一個數組,靜態初始化

  • 將數組中0索引對應的元素和arr.length-1索引對應的元素進行互換

  • 將1索引對應的元素和arr.length-1-1索引對應的元素進行互換

  • ....

  • 只要保證數組的長度arr.length

*/

     publicstatic void revers2(int[] arr) {

               for(intstart = 0,end = arr.length-1 ; start<=end ;start++,end --) {

                        //temp中間變量

                        inttemp = arr[start] ;

                        arr[start]= arr[end] ;

                        arr[end]= temp ;

               }

     }

4>元素的查找:

數組中的元素查找法(數組中的基本查找法)

  • 定義一個數組,靜態初始化,查找某個元素在該數組中第一次出現的索引

  • 分析:

  • 1)給出了數組

  • 2)寫一個查找數組中的元素的索引的方法

     publicstatic int getIndex(int[] arr,int value) {
    
               //如果沒有找到這個元素,假設找不到
    
               intindex = -1 ;
    
               //遍歷數組
    
               for(intx = 0 ;  x < arr.length ; x ++) {
    
                        //獲取到每一個元素,如果找打,修改索引值
    
                        if(arr[x]== value) {
    
                                 //修改
    
                                 index= x ;
    
                                 break;
    
                        }
    
               }
    
               returnindex ;
    
     }

Java為了提高程序執行效率,將內存分配為5個部分:

                                                    Java基礎之類與對象

在介紹面向對象前,先知道面向過程的思想

面向過程:

     假設有一個需求:求數組中的最大值;

     定義一個數組,靜態初始化---->定義一個參照物---->遍歷....

     給一個需求,對需求分析,然後一步一步進行操作,最終得到某一個結果,整個過程都是自己在完成....

面向對象的思想概述:

               思想的特征:

                        1)面向對象更符合我們的生活中的行為思想習慣

                        2)面向對象將我們從執行者變成了指揮者,指揮對象做事情

                        3)面向對象簡單性體現在這裏:讓我們事情從復雜性--->簡單化

面向對象的三大特征:

                        封裝

                        繼承

                        多態

舉例:

     炒菜:

                                 面向過程:買菜--->摘菜--->洗菜--->切菜--->炒菜--->出鍋

                                 面向對象:找一個對象..--->出鍋...

面向對象在代碼中的實現:

     將事物----->看成類

將事物對應的屬性--->看成這個類的成員變量

     將事物對應的行為----->看成這個類的成員方法

一個標準類包括:

            成員變量:姓名,年齡,性別

            成員方法:set/getXXX()

                               學習,睡覺...           

            構造方法:

                     無參構造:

                     有參構造

*成員變量

面試題:

成員變量和局部變量的區別

            1)在類中位置不同

                     成員變量:類中,方法外

                     局部變量:方法聲明上,或者再方法定義中

            2)在內存中的位置不同:

                     成員變量:堆內存

                     局部變量:棧內存

            3)生命周期不同:

                     成員變量:成員變量是隨著類的加載而加載,隨著類的消失而消失

                     局部變量:隨著方法的調用而存在,隨著方法調用完畢而消失

            4)初始化值不同

                     成員變量:初始化由系統默認初始化,

                                 對於成員變量,可以不給初始化值,由系統給,然後顯示初始化;

                     局部變量:定義一個局部變量,必須進行初始化,如果不初始化,無法使用(在使用之前進行初始化)

*成員方法

成員方法的分類:

                               1)按照返回值劃分

                                        void的形式:沒有具體的返回值

                                        非void形式:有具體返回值

                               2)按照參數進行劃分

                                        空參

                                        有參

*構造方法

構造方法作用:

             就是給對象進行進行初始化

構造方法的特點:

               1)方法名和類名相同

            2)構造方法,連void都沒有

構造方法的註意事項:

            1)之前沒有寫無參構造,系統會默認提供無參構造

            2)如果我們無參構造或者有參構造,系統不會在提供無參構造;定義一個類的時候,永遠給出無參構造;

     構造方法是可以重載的

創建對象經歷的過程:

匿名對象:就是創建對象的時候,沒有名字的對象,但依然在堆內存開辟空間

     new對象

匿名對象在實際開發中,只用使用一次,不要使用多次 (可能會造成一個內存溢出的現象);

形式參數的問題:

                       如果是基本數據類型,形式參的改變對實際參數沒有影響

                     研究引用類型:形式參數的改變會直接影響實際參數

在Java中,創建對象:new對象

類名 對象名 = new 類名() ;

Java基礎之常用的幾個關鍵字

private的用法:

                     1)被private修飾的只能在本類訪問

                     2)可以通過公共的訪問public去間接訪問

當前成員變量和局部變量名稱一致的情況,遵循就近原則

private:體現的也是一種封裝思想

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

This關鍵字:

this:代表是當前類對象,或者是(當前類對象的引用),解決局部隱藏了成員變量

例如:

     publicvoid setBrand(String brand) {

// brand= brand ;

               this.brand= brand;

     }

關於static關鍵字:

            1)靜態隨著類的加載而加載

            2)static優先於對象存在

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

             3)static共享數據,可以被多個對象進行共享

                     舉例:        飲水機(staticd的:共享的)

                                        水杯(不能共享的...)

            4)如果數據被靜態修飾的,它可以被類名直接調用

                                        被靜態修飾的方法:        類名.方法名()

                                        被靜態修飾的變量:        類名.變量名;

static用法:

            一個類中可有靜態變量,也可以有非靜態

            可以有靜態成員方法,也可以非靜態的成員方法

            靜態的方法只能訪問靜態變量,或者是靜態的方法

            非靜態的方法,既可以訪問靜態變量也可以非靜態的變量...

               Java基礎之說明書的制作

針對數組操作的工具類

 如何制作一個文檔說明書

                    1)創建一個數組,靜態初始化

                    2)創建一個工具類,ArrayTool,提供一些靜態功能

                                       遍歷,最值,查找

                    3)ArrayTool,每類,方法加上文檔註釋

                    4)打開dos控制臺:

                             找到當前路徑:

                                                javadoc-d(目錄名) -author -version ArrayTool.java

JavaSE基礎 數組 面向對象編程理解部分關鍵字的解釋及用法