1. 程式人生 > >黑馬程式設計師——Java基礎之函式與陣列

黑馬程式設計師——Java基礎之函式與陣列

------- <a href="http://www.itheima.com" target="blank">android培訓</a>、<a href="http://www.itheima.com" target="blank">java培訓</a>、期待與您交流! ---------

函式的定義

什麼是函式?

函式就是定義在類中的具有特定功能的一段獨立小程式;函式也稱為方法;

函式的格式

修飾符  返回值型別  函式名(引數型別 形式引數1,引數型別 形式引數2,...)

{

執行語句;

return 返回值;

}

返回值型別:函式執行後結果結果的資料型別。

引數型別:是形式引數的資料型別

形式引數:是一個變數,用於儲存呼叫函式時傳遞給函式的實際引數

實際引數:傳遞給形式引數的具體數值

return:用於結束函式

返回值:該值會返回給呼叫者。

函式的特點

定義函式可以將功能程式碼進行封裝,便於對該功能進行復用。

函式只有被呼叫才會被執行

函式的出現提高了程式碼的複用性

對於函式沒有具體返回值的情況,返回值型別用關鍵字void表示,那麼該函式中的return語句如果在在最後一行可以省略不寫。

注意:

函式中只能呼叫函式,不可以在函式內部定義函式

定義函式時,函式的結果應該返回給呼叫者,交由呼叫者處理。

如何定義一個函式呢?

1.  既然函式是一個獨立的功能,那麼該功能的運算結果先明確

2.  在明確在定義該功能的過程中是否需要未知內容參與運算

例如:


函式的過載

過載的概念

在同一個類中,允許存在一個以上的同名函式,只要它們的引數個數和引數型別不同即可。

過載的特點

與返回值型別無關,只看引數列表

過載的好處

方便於閱讀,優化了程式設計

過載示例

//返回兩個整數的和

int add(int x, int y){return x+y}

//返回三個整數的和

int add(int x, int y, int z){return x+y+z}


//返回兩個小數的和

double add(double x, double y)(return x+y)


練習:下面函式中和原函式過載沒,並說出原因

原函式:void show(int a, char b, double c) {}

a.  void show(int x, char y, double z) {}//沒有,因為和原函式一樣

b.  int show(int a, double c ,char b) {}//過載啦!因為和返回值型別沒有關係

c.  void show(int a,double c ,char b) {}//過載啦,因為引數輸入順序不一樣

d.  bolean show(int a, char b) {}//過載啦,引數輸入不一樣

e.  double show(int a, char b, double c) {}//沒有,該函式不可能和原函式在一個程式裡面


陣列

陣列的定義

同一種類型資料的集合,其實陣列就是一個容器

陣列的好處

可以自動給陣列中的元素從0開始編號,方便操作這些元素

格式1:   元素型別[] 陣列名 = new 元素型別[元素個數或陣列長度];     

示例:int[] arr = new int[5];

格式2:   元素型別[] 陣列名 = new 元素型別[]{元素1,元素2,元素3,......};

示例:int[] arr = new int[]{1,2,3,4,5}    

int[] arr = {1,2,3,4,5};

記憶體結構的分配

java程式在執行時,需要在記憶體中分配空間,為了提高運算效率,有對空間進行了不同區域的劃分,因為每一片區域都有特定的處理資料方式和記憶體管理方式。

棧記憶體

用於儲存區域性變數,當資料使用完,所佔空間會自動釋放

堆記憶體

陣列和物件,通過new建立的例項都存放在堆記憶體中

每一個實體都有記憶體地址值

實體中的變數都有預設的初始化值

實體不再被使用,會在不確定的時間內被垃圾回收器回收

方法區,本地方法區,暫存器

運算元組時可能 會發生的問題

ArrayIndexOutOfBoundsException-----陣列操作時,訪問到了陣列中不存在的角標

NullPointerException------空指標異常;(int[] arr= null;)時,即引用沒有任何指向值為null的情況,該引用還在用於操作實體

陣列的練習

獲取指定陣列的最值


陣列的排序

對指定陣列進行選擇氣泡排序操作


對陣列元素進行選擇排序操作



陣列元素的查詢

普通查詢


陣列元素折半查詢(陣列元素必須是有序的)


二維陣列

二維陣列的格式1:int[][] arr = new int[3][2];

定義了一個名稱為arr的二維陣列

二維陣列中有3個一維陣列

一維陣列的名稱分別為arr[0], arr[1], arr[2]

給第一個一維陣列1角標位賦值78的寫法是:arr[0][1] = 78;

二維陣列的格式2:int[][] arr = new int[3][];

二維陣列中有3個一維陣列

每一個一維陣列的預設初始化值為null

可以對三個一維陣列進行分別初始化

arr[0] = new int [3] ;            arr[1] = new int [1] ;                    arr2] = new int [2];

練習:一定義好兩個陣列,判斷下下面程式的對錯

int [] x, y[];

a.  x[0] = y;  正確的                                                                   b.  y[0] = x;錯誤的

c.  y[0][0] = x; 正確的                                                                d.  x[0][0] = x;錯誤的

e.  y[0][0] = x[0];   正確的                                                          f.  x=y;錯誤的