Day07
一、方法的多级调用
package com.qf.func;
public class Demo01 {
public static void main(String[] args) {
System.out.println("准备调用show01");
show01();
System.out.println("main方法结束啦");
}
public static void show01() {
System.out.println("show01被调用啦");
System.out.println("在show01中调用show02");
show02();
System.out.println("show01调用show02结束");
System.out.println("show01调用结束啦");
}
public static void show02() {
System.out.println("show02被调用啦");
System.out.println("在show02中调用show03");
show03();
System.out.println("show02调用show03结束");
System.out.println("show02调用结束啦");
}
public static void show03() {
System.out.println("show03被调用啦");
System.out.println("show03啥也没干....");
System.out.println("show03调用结束啦");
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RkFC0kyS-1596597251406)(方法多级调用运行过程.png)]
二、递归
- 在方法中调用方法本身
- 可能会造成无穷递归,需要设置合适的出口
package com.qf.func;
public class Demo03 {
public static void main(String[] args) {
int mul = getMul(5);
System.out.println(mul);
}
/**
* 获取阶乘的方法
* @param num
* @return
*/
public static int getMul(int num) {
/**
* 5!
* 5*4*3*2*1 ===
* 5*4!
* 5*4*3!
* 5*4*3*2!
* 5*4*3*2*1!
*
*/
System.out.println(num);
if (num == 1) {
return 1;
}
return num * getMul(num-1);
}
}
三、方法重载
3.1 定义
- 在同一个类中,出现了名字相同的方法
- 他们的参数列表不同
- 和返回值类型无关
package com.qf.func;
public class Demo04 {
public static void main(String[] args) {
int sum01 = getSum(3,5);
int sum02 = getSum(2,3,5);
// getSum(int,int)
/**
* 在同一个类中
* 出现了名字相同的方法
* 他们的参数列表不同
* 和返回值类型无关
*/
}
public static int getSum(int i, int j) {
return i + j;
}
public static int getSum(int a, int b,int c) {
return a + b + c;
}
/*
* public static void getSum(int a, int b,int c) { System.out.println(a + b +
* c);; }
*/
}
3.2 参数列表不同的情况
- 参数列表中形参的数量不同
- 参数列表中形参的数据类型不同
- 参数列表中参数的数据类型顺序不同
package com.qf.func;
public class Demo05 {
public static void main(String[] args) {
}
/**
* getSum(int,int)
* @param a
* @param b
* @return
*/
public static int getSum(int a,int b) {
return a+b;
}
/**
* getSum(int,int,int)
* @param a
* @param b
* @return
*/
public static int getSum(int a,int b,int c) {
return a+b+c;
}
/**
* getSum(int,double)
* @param a
* @param b
* @return
*/
public static double getSum(int a,double b) {
return a+b;
}
/**
* getSum(double,int)
* @param a
* @param b
* @return
*/
public static double getSum(double a,int b) {
return a+b;
}
}
练习
package com.qf.func;
import java.util.Scanner;
public class Demo06 {
public static void main(String[] args) {
// 键盘录入一个byte范围的数字,返回这个数字对应的字符
/**
* 1、创建Scanner对象
* 2、提示输入byte范围内的数字
* 3、获取这个数字
* 4、判断数字是否合法
* 5、合法的情况下调用方法,获取结果
*
*/
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字(0--127):");
byte num = sc.nextByte();
// 判断
if (num>=0 && num<=127) {
char c = getChar(num);
System.out.println(num + ":" + c);
} else {
System.out.println("数字不在合法范围内");
}
}
/**
* byte转换成char
* @param num
* @return
*/
public static char getChar(byte num) {
// 获取num对应的字符
char c = (char)num;
return c;
}
}
四、数组
4.1 定义
- 存储一组相同类型数据的容器
- 创建的时候必须确定数字的数据类型和长度
- 数组中的对象在内存中是连续存在的
- 数组中的元素都有一个索引(下标),从0开始到长度减一
- 数组的地址是数组中国第一个元素的地址
4.2 数组创建
package com.qf.arr;
public class Demo01 {
public static void main(String[] args) {
// 创建数组
int[] arr = new int[5];
System.out.println(arr.length);
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
System.out.println(arr[3]);
System.out.println(arr[4]);
// System.out.println(arr[5]);
int[] arr02 = {11,22,33,44,55,66};
System.out.println(arr02[0]);
System.out.println(arr02[1]);
System.out.println(arr02[2]);
System.out.println(arr02[3]);
System.out.println(arr02[4]);
int[] arr03;
arr03 = new int[5];
System.out.println(arr03.length);
int[] arr04;
//arr04 = {111,222,333};
arr04 = new int[] {1111,2222,3333,4444,5555};
System.out.println(arr04.length);
System.out.println(arr04[0]);
int arr05[] = new int[50];
System.out.println(arr05.length);
int[] arr06 = new int[] {10,20,30,40,50};
System.out.println(arr06.length);
System.out.println(arr06[0]);
}
}
4.3 各种类型数组元素的默认值
- 数据在数组中的默认值
- 整型 0
- 浮点型 0.0
- 字符型 \u0000
- 布尔型 false
- 引用类型 null
- 整型 0
package com.qf.arr;
import java.util.Scanner;
public class Demo02 {
public static void main(String[] args) {
// 查看各种类型数据数组的默认值
/**
* 数据在数组中的默认值
* 整型 0
* 浮点型 0.0
* 字符型 \u0000
* 布尔型 false
* 引用类型 null
*/
byte[] arrByte = new byte[10];
System.out.println(arrByte.length);
System.out.println(arrByte[1]);
short[] arrShort = new short[10];
System.out.println(arrShort[5]);
int[] arrInt = new int[15];
System.out.println(arrInt.length);
System.out.println(arrInt[6]);
long[] arrLong = new long[10];
System.out.println(arrLong[7]);
System.out.println("=====================");
float[] arrFloat = new float[10];
System.out.println(arrFloat[3]);
double[] arrDouble = new double[10];
System.out.println(arrDouble[4]);
System.out.println("=====================");
boolean[] arrBoolean = new boolean[10];
System.out.println(arrBoolean[9]);
System.out.println("=====================");
// \u0000
char[] arrChar = new char[10];
System.out.println(arrChar[2]);
System.out.println('\u4e0a');
System.out.println("====================");
String[] arrString = new String[10];
System.out.println(arrString[1]);
Scanner[] arrScanner = new Scanner[10];
System.out.println(arrScanner[6]);
}
}
五、数组遍历
- 输出数组中的每一个元素
package com.qf.arr;
public class Demo04 {
public static void main(String[] args) {
String[] names = {"宋江","吴用","卢俊义","公孙胜","秦明"};
System.out.println(names[0]);
System.out.println(names[1]);
System.out.println(names[2]);
System.out.println(names[3]);
System.out.println(names[4]);
System.out.println("=========for遍历========");
for (int i = 0; i < names.length; i++) {
System.out.println(names[i]);
}
System.out.println("=======while遍历==========");
int index = 0;
while (index < names.length) {
System.out.println(names[index]);
index++;
}
}
}
六、数组案例
- 计算数组元素的总和和平均值
package com.qf.arr;
public class Demo06 {
public static void main(String[] args) {
int[] arr = new int[] {14234,32,34,344,326235,8454321,9,5565432,42};
// 求和,,,求平均值
/**
* 拿到每一个元素---遍历
* 累加获取结果
*/
int sum = 0;
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
sum += arr[i];
}
System.out.println("数组中元素累加的结果是:" + sum);
// sum = arr[0] + arr[1] + arr[2] + arr[0] + arr[1] + arr[2] + arr[0] + arr[1] + arr[2];
double aver = 1.0 * sum / arr.length;
System.out.println("平均值是:" + aver);
}
}
- 获取数组中的最大的值