二维数组
什么是二维?
比如(合金弹头、超级玛丽)
二维数组里面放一维数组。
什么是二维数组?
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,
二维数组又称为矩阵,行列数相等的矩阵称为方阵
怎么创建一个二维数组?
数据类型[][] 对象名 = 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){
}
..........
方法参数分两种:
一.基本数据类型
基本数据类型的变量当做参数传递的时候
方法的局部变量会随着方法的执行完毕而被释放
局部变量:
定义在方法的声明上和 方法体内
二.引用数据类型
引用数据类型当做参数传递,其实传递的是地址值
即使方法执行完毕,但是实体(对象、数组)还在对内存中