二维数组与方法(函数)

Posted zcq-test

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二维数组与方法(函数)相关的知识,希望对你有一定的参考价值。

二维数组

什么是二维?

? 比如(合金弹头、超级玛丽)

? 二维数组里面放一维数组。

什么是二维数组?

? 二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,

? 二维数组又称为矩阵,行列数相等的矩阵称为方阵

怎么创建一个二维数组?

数据类型[][]  对象名 = 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+" ")

      }

      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){
    
}
..........

方法参数分两种:

? 一.基本数据类型

? 基本数据类型的变量当做参数传递的时候

? 方法的局部变量会随着方法的执行完毕而被释放

? 局部变量:

? 定义在方法的声明上和 方法体内

? 二.引用数据类型

? 引用数据类型当做参数传递,其实传递的是地址值

? 即使方法执行完毕,但是实体(对象、数组)还在对内存中

 

以上是关于二维数组与方法(函数)的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

php获取一维,二维数组长度的方法(有实例)

c语言中如何通过二级指针来操作二维数组

在函数 C++ 中分配内存二维数组

了解如何从内部函数更新原始二维数组

一个关于C语言的指针与二维数组的问题