java函數和數組
1、函數
1)函數的定義:就是定義在類中的具有特定功能的一段獨立小程式。函數也被稱為方法。
格式:
修飾符 傳回值類型 函數名 (參數類型 形式參數1 , 參數類型 形式參數2 , .... ){
執行語句;
return 傳回值;
}
傳回值類型:函數運作後的結果的資料類型。
參數類型:是形式參數的資料類型。
形式參數:是一個變量,用于存儲調用函數時傳遞給函數的實際參數。
實際參數:傳遞給形式參數的具體數值。
return:用于結束函數。
傳回值:該函數運算後的結果,該結果會傳回給調用者。
注意:傳回值是void時,return可以省略。
範例:
//對兩個數值進行相加,并且傳回 和 的值
public static int plus(int a , int b){
return a+b;
}
2)函數的特點:
定義函數可以将功能代碼封裝。
便于對該功能的複用。
函數隻有被調用才被執行。
函數的出現提高了代碼的複用性。
注意:函數中隻能調用函數,不可以在函數内部定義函數。
定義函數時,函數的結果應該傳回調用者,交由調用者進行處理。
3)函數的應用:
棧:先進後出
4)函數的重載:overload
概念:
在同一個類中,允許存在一個以上的同名函數,隻要他們的參數個數或者參數類型不同即可。
特點:
與傳回值類型無關,隻看參數清單。
好處:
友善于閱讀,優化了程式設計。
示例:
//傳回兩個整數的和
public static int add(int x,int y){return x+y;}
//傳回三個整數的和——參數個數不同
public static int add(int x,int y,int z){return x+y+z;}
//傳回兩個小數的和——參數類型不同
public static double add(double x,double y){return x+y;}
範例:列印自定義乘法口訣表
public static void printCFB(int num){
for(int x = 1; x <= num; x++){
for(int y = 1; y <= x; y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
public static void printCFB(){
for(int x = 1; x <= 9; x++){
for(int y = 1; y <= x; y++){
System.out.print(y+"*"+x+"="+y*x+"\t");
}
System.out.println();
}
}
解析:
傳幾過來就列印到幾的乘法口訣表,不傳值列印 9*9 乘法口訣表
2、數組
1)定義:
概念:同一資料類型資料的集合。其實數組就是一個容器。
好處:可以自動給數組中的元素從0開始編号,友善操作這些元素。
格式1:
元素類型[] 數組名 = new 元素類型[元素的個數或者說數組長度];
示例:int[] arr = new int[5];
格式2:
元素類型[] 數組名 = new 元素類型[]{元素,元素,元素,.......};
示例:int[] arr = new int[]{1,2,3,4};
int[] arr = {1,2,3,4};
2)記憶體配置設定及特點:
記憶體劃分:
寄存器
本地方法區
方法區
棧記憶體:特點是處理速度快
存儲都是局部變量(方法内的變量,隻在目前方法内有用,如:形式參數,方法内變量,for循環内的參數)。
一旦變量離開自己的作用域,其記憶體就會被自動釋放。
所有變量都在棧裡面。除了靜态變量。
局部代碼塊:
{
int a = 3;//限定局部變量的生命周期,運作完立馬釋放
}
堆記憶體:
存儲的是對象。凡是 new 建立的都存在堆中。
特點是:
每一個實體都有一個首位址值。
堆記憶體中的每一個變量都有預設的初始化值,根據類型的不同而不同。整數是0、小數0.0或者0.0f、oolean false、char '\u0000'。
垃圾回收機制:引用資料類型(相當于c++中的指針)存儲在此。當 arr = null; 引用消失。堆中的對象變成’垃圾‘,’垃圾回收機制‘會進行回收。c++是手動清理,使用析構函數進行回收。
3)操作常見問題:
數組越界:
ArrayIndexOutOfBoundsException
當通路到數組中不存在的角标時,就會發生該異常。
空指針異常:
NullPointerException
當引用型變量沒有任何實體指向時,還在用其操作實體,就會發生該異常。
4)常見操作:
核心思想:就是對角标的操作
周遊:循環周遊
長度:arr.length
存: arr[0] = 1;
取: arr[i];
最值操作:
最大值或最小值
int[] arr = {1,2,3,6,5,4};
int max = 0;//存儲最大值
for(int i = 0; i <= arr.length-1; i++){
if(arr[i]>max){
max = arr[i];
}
}
System.out.println("該數組最大值為:"+max);
排序和查找:單獨寫一篇詳細解析!
選擇排序:
冒泡排序:
5)數組的應用:
如果資料出現了對應關系,而且對應關系的一方是有序的數字編号,并作為角标使用,這時候要想到使用數組。
6)數組中的數組:
二維數組:
格式1:int[][] arr = new int[3][2];
定義了名稱為arr的二維數組。
二維數組中有3個一維數組。
每一個一維數組中有2個元素。
給第一個一維數組的元素角标寫法為:arr[0][1] = 78;
格式2:int[][] arr = new int[3][];
二維數組中三個一維數組。
每一個一維數組的初始化值為null。
可以對這三個一維數組分别進行初始化。
arr[0] = new int[3];
arr[1] = new int[1];
arr[2] = new int[2];
格式3:int[][] arr = {{1,2},{2,3,7},{6,7}};
周遊:
for(int i = 0; i < arr.length; i++){
for(int j = 0; j < arr[i].length; j++){
System.out.print("arr" + arr[i][]j);
}
}
謝謝觀看,轉載請表明出處~
!
!
歡迎關注本人公衆号,不定期會有純技術分享哦~
掃碼關注: