break的作用:

跳出循环(结束循环)
注意:break后面 不要写代码 永远不会被执行

例题:

//  打印[0, 100]中是7的倍数中的值最大那个数(两种)
//  保存最大值的变量
int max = 0;
for (int i = 0; i <= 100; i++) {
    if (i % 7 == 0) {
        //  只要进到这个if 都是7的倍数
        max = i;
    }           
}
//  打印最大值
System.out.println(max);

//  使用break 可以倒着打印 进到循环中的第一个数 就是最大值
for (int i = 100; i >= 0; i--) {
    if (i % 7 == 0) {
        //  第一个进来就是最大值
        System.out.println(i);
        //  停止循环
        break;
    }
}

死循环时break可以当做出口

int num = 0;
while (true) {
    if(num == 5) {
        //  写个出口 来结束死循环
        break;
    }
    num++;
    System.out.println(num);
}

continue的作用:

结束本次循环 继续下一次循环

例题:

//  班级12个人 跟每个人打招呼 讨厌的人不打招呼
//  我分别讨厌 3号 5号 9号
//  先完成需求 再考虑优化代码
for (int i = 1; i <= 12; i++) {
    if (i == 3 || i == 5 || i == 9) {
        continue;
    }
    System.out.println(i + "号,你好");
}

continue 和 break在for循环嵌套中的作用:

嵌套中:
break结束了 本层的循环
continue跳出这一次的本层循环 继续下一次的本层循环 
没有影响到 外层循环

代码示例:

for (int i = 0; i < 10; i++) {
    for (int j = 0; j < 10; j++) {
        if (j == 6) {
            //break;
            continue;
        }
        System.out.print(j + " ");
    }
    System.out.println();
}

Math类(随机数方法):

定义:

返回的是 [0,1) double值 伪随机数(按照一定规则去随机)

公式:

*(最大值 - 最小值 + 1) + 最小值

例题:

//  打印[18,200]的随机整数
int num = (int)(Math.random() * (200 - 18 + 1) + 18);
System.out.println(num);

//  随机20个[10,300]之间的数 打印最大值
int max = 0;
for (int i = 0; i < 20; i++) {
    int num = (int)(Math.random() * (300 - 10 + 1) + 10);
    //  判断大小 如果大就赋值给max
    if (max < num) {
        max = num;
    }
    System.out.println(num);
}
System.out.println(max + "----最大值");

函数:

定义:

封装了 特定功能的代码块

优点:

方便使用 减少重复代码书写

写法:

关键字 返回值类型 函数名(参数类型 参数1,参数类型 参数2,......) {
        函数中的语句1;
        语句2......
        //  return后面返回的 返回值 要跟函数的返回值类型 对应
        return 返回值;
 }

位置:

在类中书写

分类:

1.无参数 无返回值 的 函数
2.有参数 有返回值 的 函数
3.有参数 无返回值 的 函数
4.无参数 有返回值 的 函数

编写步骤:

1.确定函数有没有返回值
(接下来 是否要使用这个返回值 根据实际情况考虑)
2.确定函数有没有参数 有的话 是几个 都是什么类型

函数调用:

使用 函数名(传入的参数);

例题:

//  打印 HelloWorld 的函数
//  如果函数没有返回 返回值类型 使用 void
public static void printHW() {
    System.out.println("HelloWorld");
}

函数重载:

定义:

实现相同的功能 但是函数的内部实现不同

特点:

函数名字 相同  跟参数有关(参数的类型 参数顺序 参数个数 有关)
跟参数的返回值 无关

作用:

以使用者的角度去考虑问题 方便使用

例题:

//  计算两个整数的和 的函数
public static int sum(int a, int b) {
    int rel = a + b;
    return rel;
}

//  计算三个整数的和 的函数
public static int sum (int a, int b, int c) {       
    return a + b + c;
}

//  计算两个数的最大值
public static int max(int a, int b) {   
    return a > b ? a : b;
}

//  计算三个数的最大值
public static int max(int a, int b, int c) {
    return num > c ? num : c;
}

//  计算四个数的最大值
public static int max(int a, int b, int c, int d) {
    int num = max(a, b, c);
    return num > d ? num : d;
}

//  计算五个数的最大值
public static int max(int a, int b, int c, int d, int e) {
    int num = max(a, b, c, d);
    return num > e ? num : e;
}

//  计算4的阶乘的函数 1 * 2 * 3 * 4
public static void fun() {
    //  保存计算结果
    int num = 1;
    //  为了拿到 1 2 3 4 这几个数
    for (int i = 1; i <= 4; i++) {      num = num * i;
    }
    System.out.println(num);
}

递归函数:

定义:

调用一个和自己函数名相同的函数

例题:

//  定义一个递归函数 计算 阶乘 4 * 3 * 2 * 1
public static int fun1(int n) {
    //  递归出口(停止递归)
    //  没有出口 相当于 死循环
    if (n == 1) {
        return 1;
    }
    return n * fun1(n - 1);     
}