二维数组与方法

二维数组

什么是二维?

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

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

什么是二维数组?

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

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

怎么创建一个二维数组?

数据类型[][]  对象名 = 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] = "西安市";

拔高练习: 打印杨辉三角

1528877358834

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

方法参数分两种:

​ 一.基本数据类型

​ 基本数据类型的变量当做参数传递的时候,是不改变原值

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

​ 局部变量:

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

​ 二.引用数据类型

​ 引用数据类型当做参数传递,其实传递的是地址值,是改变原值

​ 即使方法执行完毕,但是实体(对象、数组)还在对内存中,所以在主函数里面继续访问的时候,已经是被更改后的值

Last Updated: 5/29/2019, 8:43:11 PM