二维数组与方法
二维数组
什么是二维?
比如(合金弹头、超级玛丽)
二维数组里面放一维数组。
什么是二维数组?
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,
二维数组又称为矩阵,行列数相等的矩阵称为方阵
怎么创建一个二维数组?
数据类型[][] 对象名 = 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].length;j++){//内层循环代表列 a[i].length 求每一行的列数 System.out.print(a[i][j]);//打印第i行第j列的值 } System.out.println(); }
练习:二维数组求和
二维数组直接赋值:
//第一种情况 int[][] b = { {1,2}, {3,4} }; // 这个数组与上述例子一样 System
第二种情况: 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){ } ..........
方法参数分两种:
一.基本数据类型
基本数据类型的变量当做参数传递的时候,是不改变原值
方法的局部变量会随着方法的执行完毕而被释放
局部变量:
定义在方法的声明上和 方法体内
二.引用数据类型
引用数据类型当做参数传递,其实传递的是地址值,是改变原值
即使方法执行完毕,但是实体(对象、数组)还在对内存中,所以在主函数里面继续访问的时候,已经是被更改后的值