二維數組與方法(函數)
二維數組
什麽是二維?
? 比如(合金彈頭、超級瑪麗)
? 二維數組裏面放一維數組。
什麽是二維數組?
? 二維數組本質上是以數組作為數組元素的數組,即“數組的數組”,
? 二維數組又稱為矩陣,行列數相等的矩陣稱為方陣
怎麽創建一個二維數組?
數據類型[][] 對象名 = new 數據類型[x][y]; x代表行 y代表列
例如:
int [ ][ ] a = new int [2] [2];
數組 : 使用索引來操作元素, 下面給二維數組賦值
a[0] [0] = 1; //第一行第一列
a[0] [1] = 2;//第一行第二列
a[1] [0] = 3;//第二行第一列
a[1] [1] = 4;//第二行第二列
如何遍歷一個二維數組:
for(int i =0;i<a.length;a++){ // 外層循環代表行 a.length 求行數
for(int j =0;j<a[i].lenght;j++){//內層循環代表列 a[i].length 求每一行的列數
System.out.print(a[i][j])//打印第i行第j列的值
}
System.out.println();
}
練習:二維數組求和
二維數組直接賦值:
第二種情況:
int[][] c = new int[][]{
{1,2},
{3,4}
};
學到這裏二維數組完了嗎?沒呢,還有一種情況。
// 先聲明行,後聲明列:
String[][] y = new String[2][];
y[0] = new int[2]; // 定義第一行有二列
y[1] = new int[3];//定義第二行有三列
// 例如:多個市屬於一個省
// 廣東省
y[0][0] = "廣州市";
y[0][1] = "深圳市";
//陜西省
y[1][0] = "寶雞市";
y[1][1] = "西安市";
拔高練習:打印楊輝三角
int[ ][ ] a = new int[10] [ ];
for(int i =0;i<a.length;i++){
a[i] = new int [i+1];
for(int j=0;j<a[i].length;j++){
if(j ==0 || i==j){
a[i][j] =1;
}else{
a[i][j] =a[i-1][j]+a[i-1][j-1];
}
}
}
for(int[] is : a){
for(int i : is){
System.out.print(i+"\t")
}
System.out.println();
}
方法
什麽是方法?
? 我們經常說做事要有方式方法。實現某個目的的具體過程.
? 例如我們學過 main函數在裏面寫的排序,求水仙花數等
為什麽要用方法?
? 例如:有三個人 小明,小華,小紅三個人,
? 老師要求小明把班級語文分數成績排名
? 要求小華把班級數學分數成績排名
? 要求小華把班級英語分數成績排名
? 這個時候都要用到排序,我們此時可以把制作一個排序的方法供他們使用
? 這樣代碼就只用寫一次,多次使用,這樣就提高了代碼的復用性
方法分為兩類四種:
訪問修飾符 是否靜態 有無返回值 方法名(有無參數){
}
//相似與
public static void main(String[] args){
}
一. 無返回值
// 1.無參數無返回值
public static void demo1(){
System.out.println("我是無參數無返回值");
}
// 1.有參數無返回值
// 何為參數? f(x)這個函數裏面的 x 就叫做參數
public static void demo2(int i){// int i 就是參數
System.out.println(i);
}
練習: 傳遞一個一維數組,求出最大值。
1.定義方法的步驟是什麽?
? 定義方法有兩個明確:
? a.是否有返回值
? b.是否有未知參,參與運算
2.方法的執行流程是什麽?
? 自己定義的方法不被調用的時候是不會被執行的。
? 在主函數裏直接寫上方法的名字即可(要考慮是否需要參數)
調用者: 主函數,main
執行者: 某一個方法本身
實際參數: 實際參與運算的數據
形式參數: 方法小括號裏的變量
二.有返回值
// 1. 無參數有返回值
// 什麽是返回值? 把void這個關鍵字改為 數據類型時就說明這個方法是有返回值的
// 怎麽返回? 用 return 關鍵字, 返回的值的類型與方法上面的數據類型一致
public static int demo3(){
return 5;// 返回值,顧名思義返回的是一個值
}
public static int demo4(){
int a =5;
return a;
}
//2.有參數有返回值
public static int demo5(int i){
return i;
}
註意:
? 其實每一個方法最後一行都有一個return,沒有返回值可以省略不寫,但系統會幫我們添加一個,其作用就是為了結束方法
? 如果手動的寫出 return 就不允許帶回任意的數據。
public static void test(){
return;
}
定義及使用方法的註意事項有哪些?
? 1.方法不能定義在另外一個方法的裏面
? 2.寫錯方法名字
? 3.寫錯了參數列表
? 4.方法返回值是void,方法中可以省略return 不寫
? (return 後面與下面不能有代碼)
? 5.方法返回值類型和return 後面數據類型必須匹配
? 6.調用方法的時候,返回值void不能寫在輸出語句中
練習:
addition、subtract、 multiply、division
傳遞數組排序
方法的重載
什麽是方法的重載?
? 在同一個類中:
? 方法名相同
? 參數列表不同(參數的順序、個數、類型)
? 和返回值無關
public static void test1(){
}
public static void test2(int i){
}
public static void test3(String name){
}
public static void test4(char sex){
}
public static void test5(double weight){
}
public static void test6(int i,int j){
}
public static void test7(int i,String name){
}
..........
方法參數分兩種:
? 一.基本數據類型
? 基本數據類型的變量當做參數傳遞的時候
? 方法的局部變量會隨著方法的執行完畢而被釋放
? 局部變量:
? 定義在方法的聲明上和 方法體內
? 二.引用數據類型
? 引用數據類型當做參數傳遞,其實傳遞的是地址值
? 即使方法執行完畢,但是實體(對象、數組)還在對內存中
二維數組與方法(函數)