零、 复习昨日
一、作业
二、数组
方法/函数是什么?
- 方法是一段代码,用来执行
方法的作用是什么?
- 完成一些功能
- 减少代码重复
什么时候需要方法
- 重复代码,可以抽取成方法,反复调用
- 带某个代码内内容太多,也可以抽取成方法,去调用
方法的参数列表是什么意思?怎么定义的?
- 参数,就是方法执行所需要的东西
- 参数,就是像变量一样,需要声明,数据类型 变量名
add(int a,int b)- 参数,好处是可以方法变灵活
方法如何调用?
- 位置: 在方法(不一定主方法)内调用其他方法
- 如何调用?: 通过方法名()来调用,
方法如果有参数,必须传入值,add(1,2)
方法如果有返回值,可以接收返回值也可以不接受方法的返回值什么意思?
- 返回值就是方法执行后返回数据
为什么要返回数据?
- 返回数据不是为了输出语句输出的
- 而是为了后续接着使用
- 要不要给方法设计返回值? 就是看方法运行的结果后续有没有人用
方法的返回值返回给谁?
- 谁调用返回给谁
java的数据类型
- 基本类型
- 引用类型
- 数组
- 类
- 接口
什么是数组? 存储多个数据
为什么需要数组? 存储全班,全公司,全部员工等等场景需要存储多个数据,但是变量一次存储一个数据,此时需要使用数组存储多个数据
ps: 数组中存储的数据叫做数组的元素(element)
数组的特点:
- 数组存储多个数据,但是容量/大小/长度是固定
- 数组只能存储同一种数据类型的数据
怎么使用数组?
- 声明/定义
数据类型[] 数组名;
- 创建出数组
new 数据类型[长度];
new 数据类型[]{元素1,元素2,...}
- 使用数组
- 存储数据
- 取出数据
数组声明
// 数据类型[] 数组名;
int[] arr;
double[] arr2;
String[] arr3;
创建数组
// 数组名 = new 数据类型[长度];
arr = new int[3];
使用数组
- 取值
- 存储
取值
赋值/存值
public static void main(String[] args) {
// int a = 1;
// 声明
int[] arr;
double[] arr2;
String[] arr3;
// 创建数组
arr = new int[3];
arr2 = new double[4];
arr3 = new String[5];
// 一般情况下,会连写
int[] arr4 = new int[3];
/**
* 使用数组
* - 取值
* 数据类型 变量 = 数组名[下标];
* 下标是索引,是数组中存储元素的编号,从0开始
* - 赋值
* 数组名[下标] = 值;
*/
// 取值
int a1 = arr4[0];
int a2 = arr4[1];
int a3 = arr4[2];
// 创建数组默认值是空,整型int默认值是0
// double数组默认值0.0
// String数组默认值null
System.out.println(a1 );
System.out.println(a2 );
System.out.println(a3 );
// 赋值(向数组存放元素)
arr4[0] = 1; // 向数组arr4的第一个位置存放元素1
arr4[1] = 2;
arr4[2] = 3;
// 再取出查看值
int a11 = arr4[0];
System.out.println(a11 );
System.out.println(arr4[1] );
System.out.println(arr4[2] );
}
练习: 创建一个长度为3的字符串数组,存储3人名字,然后再取出
public static void main(String[] args) {
// 练习: 存储5个同学的年龄,并输出
// 创建容量/长度为5的数组
int[] ageArr = new int[5];
// 存储5个年龄
ageArr[0] = 18;
ageArr[1] = 19;
ageArr[2] = 20;
ageArr[3] = 21;
ageArr[4] = 21;
// 取出5人的年龄
System.out.println(ageArr[0] );
System.out.println(ageArr[1] );
System.out.println(ageArr[2] );
System.out.println(ageArr[3] );
System.out.println(ageArr[4] );
// 创建数组存储3人成绩(小数)并输出
double[] scoreArr = new double[3];
scoreArr[0] = 98.2;
scoreArr[1] = 68.2;
scoreArr[2] = 58.2;
System.out.println(scoreArr[0] );
System.out.println(scoreArr[1] );
System.out.println(scoreArr[2] );
// 创建数组存储3人姓名并输出
String[] nameArr = new String[3];
nameArr[0] = "老王";
nameArr[1] = "老李";
nameArr[2] = "老黑";
System.out.println(nameArr[0] );
System.out.println(nameArr[1] );
System.out.println(nameArr[2] );
}
数据类型[] 数组名 = new 数据类型
[长度]
;int[] arr = new int[3]; 只指定长度/容量,这样创建出的数组元素是默认值,还需要代码中手动再一个个向数组存值 -->
随着程序运行才动态的给数组赋值
动态创建是:指定长度,不指定元素
public static void main(String[] args) {
// 动态创建
// 动态是指程序运行过程中才会给数组赋值
// 即刚开始只有长度,后续再赋值
int[] arr = new int[3];
}
在创建出数组时,数组内已经存储好了数据.
数据类型[] 数组名 = new 数据类型
[]{元素1,元素2,元素3,....}
;
静态创建: 不指定长度,直接指定元素
// 在创建数组时直接给定元素值,不给定长度
// 数组有属性可以获得数组长度
// 即创建出的数组内部直接有指定值
String[] arr2 = new String[]{"一","二","三","四"};
System.out.println(arr2[0] );// 一
标准格式: 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
简化写法: 数据类型[] 数组名 = {元素1,元素2,…};
// 静态的简化格式(常用)
String[] arr3 = {"一","二","三","四"};
System.out.println(arr3[2] );// 三
arr3[2] = "叁";
System.out.println(arr3[2] );
/**
* 总结:
* - 当存储的元素未知,使用动态创建,指定长度不指定元素
* - 当存储时元素已知,使用静态简化创建,给定元素不给长度
*/
每个数组都有一个属性length,可以调用该属性获得长度
数组名.length
int[] arr4 = new int[3];
int l4 =arr4.length;
System.out.println(l4 );// 3
int[] arr5 = {11,22,33,44};
System.out.println(arr5.length );// 4
// ps: 数组最大下标是 = 长度-1
遍历: 将数组中的元素一个一个的找到
练习: 遍历输出数组元素
public static void main(String[] args) {
// 遍历输出元素
// i是下标,从0开始,下标最大到长度-1
int[] arr = {11,22,33,44,55,66,77,88};
for (int i = 0;i < arr.length;i++) {
System.out.println(arr[i] );
}
}
1、从键盘录入五个名字到数组中,遍历数组输出这五个名字
// 第一题:
// 从键盘录入五个名字到数组中,遍历数组输出这五个名字
public static void inputOutputName() {
Scanner scanner = new Scanner(System.in);
String[] nameArr = new String[5];
// 一个一个的存储
for (int i = 0;i < nameArr.length;i++) {
System.out.print("请输入第"+(i+1)+"个人名:" );
String name = scanner.nextLine();
nameArr[i] = name;
}
System.out.println("----- 开始遍历 -----" );
// 一个一个遍历输出
for (int i = 0; i < nameArr.length; i++) {
System.out.println(nameArr[i] );
}
}
2、给定一个数组,求数组的最大值
public static void printMax() {
int[] arr = {1,3,9,7,5,8,6};
// 比武招亲
int max = arr[0];
for (int i = 0; i < arr.length; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
System.out.println("数组最大值是: " + max );
}
3、给定一个数组,求数组的最小值
4、给定一个数组,求数组的平均值
public static void avg() {
int[] arr = {1,2,3,4,5,6};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
double avg = sum * 1.0 / arr.length;
System.out.println(avg );
}
改造: 设计方法,可以对任何整数数组返回平均值
ps: 方法参数列表设计成可以传入数组
就需要求和,个数(数组.length)
public static void avg() {
int[] arr = {1,2,3,4,5,6};
int sum = 0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
double avg = sum * 1.0 / arr.length;
System.out.println(avg );
}
改造: 设计方法,可以对任何整数数组返回平均值
ps: 方法参数列表设计成可以传入数组