黑馬程式設計師——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;錯誤的