昨日内容回顾
数组
存储多个同种数据类型的容器;
数组的数据类型
前面学过的数据类型[] 变量名 = 数组对象;
数组的初始化方式
动态初始化
创建数组的时候,只指定数组的长度,不指定数组的内容,由java分配默认值;
格式:
数据类型[] 数组名 = new 数据类型[长度];
静态初始化
创建数组的时候,只指定数组的内容,不指定数组的长度,由java自动计算长度;
完整格式:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
索引
也可以叫做角标或下标,其实就是一个编号,范围:从0到数组最大长度减1为止的正整数;
存值
数组名[索引] = 数据值;
取值
数组名[索引]
经典练习题
正向遍历
逆向遍历
求和
求最值
查找
今日内容
方法
概述
具有独立功能的代码块就是一个方法;
好处
提升代码的复用性;
特点
- 方法必须先定义后调用;
- 方法定义后,不调用就不会自己执行;
- 方法不能嵌套定义,每个方法都是平级的,而且不分先后顺序;
简单的定义格式
public static void 方法名(){
方法体;
}
调用格式
方法名();
方法调用流程
方法的参数(参数)
在定义方法的时候,方法的小括号里面写的变量就是参数,专门用于接收调用者传递过来的数据;
好处
可以提升代码的灵活性;
设计参数和键盘输入的对比
格式
定义格式:
public static void 方法名(数据类型 参数名1,数据类型 参数名2,...){
}
方法名(实际数据);
形参
全称是形式参数,在定义方法的时候,小括号中写的变量名就是形参;形参带数据类型;
实参
实际参数,在调用方法的时候,小括号里面写的实际数据或变量名就是实参;实参不能在小括号中写数据类型,如果想使用变量,需要提前定义好变量;
返回值(重点)
为什么要有带返回值的方法
方法有了返回值之后,对于调用者来说,可以根据方法返回的结果,继续组织其他逻辑;
定义格式
public static 返回值类型 方法名(形式参数){
方法体;
return 数据值;
}
调用格式
-
赋值调用,将方法返回的结果保存到一个变量中;
返回值类型 变量名 = 方法名(实参);
-
输出调用,将方法返回的结果,直接在输出语句中输出;
System.out.println(方法名(实参));
注意: 必须有返回值的方法,才能使用输出调用;
-
直接调用,当方法返回值是 void的时候,只能直接调用;
方法名(实参);
方法通用格式总结
代码编写的套路
两个明确
明确参数;
明确返回值;
三个问题(重点)
-
我写这个方法要干啥?
方法的核心功能,越单一越好;
-
我干这个事情的时候,需不需要别人给我准备点啥?
设计方法的参数,一般只要涉及到运算的地方,都会有参数,除非做的事情是固定的,才不需要参数;
-
我干完了这个事情之后,要不要给别人一个结果?
只要涉及到运算,一般都会有返回值,除非方法中明确的告诉我们,让我们"打印"或"输出"内容的时候,才不设计返回值
return关键字
有两个作用,
- 结束当前方法;
- 可以将数据值返回给调用者;(如果直接写return;那么就只有第一个作用)
方法重载(听明白即可)
好处
可以让调用者无需记忆过多的方法名;
什么时候用重载
如果不同的数据类型,在方法中做的事情是一样的,那么完全可以将参数设计成最高类型即可;
如果不同的数据类型,在方法中做的事情是不一样的,那么应该利用方法的重载技术,对不同类型的参数,进行分别处理;
参数传递
基本数据类型参数传递
结论: 传递的是具体的数据值,在自定义的方法中,对传递进来的数据进行修改,对调用者没有影响;
引用数据类型参数传递
结论: 传递的是具体的地址值,在自定义的方法中,根据传递进来的地址值找到堆内存的数据进行修改,对调用者有影响;