什么是方法

一、流程控制关键字

用在switch或者循环中的关键字: break , continue

1.1 break

break ,打断/破坏/中断

  • 在switch中使用,打断switch结果不再执行
  • 在循环中,中断当前这一层循环
 for (int i = 1; i < 11; i++) {
            System.out.println(i );
            if (i == 5) {
                break;
            }
        }
        System.out.println("---------" );

        for (int i = 1; i < 11; i++) {
            System.out.println("i = " + i);
            for (int j = 1; j < 11; j++) {
                System.out.println("j = " + j);
                if (j == 5){
                    break;
                }
            }
        }

        System.out.println("for之外" );

练习

题目10:编写一个程序,最多接收10个数,求这些数的和
注意:中途用户可以通过输入886终止程序,并显示输入数的和
提示: 需要使用break

 Scanner scanner = new Scanner(System.in);
        int sum = 0;
        for (int i = 1; i < 11; i++) {
            System.out.print("请输入第"+i+"个数:" );
            int num = scanner.nextInt( );
            if (num == 886) {
                System.out.println("提前结束啦!!!" );
                break;
            } else {
                sum += num;
            }
        }
        System.out.println("以上数字的和是:" + sum );

1.2 continue

continue 继续,只能在循环中使用,作用是中断一次循环,继续下次循环

 public static void main(String[] args) {

        for (int i = 1; i < 11; i++) {
            if (i == 5) {
                continue;
            }
            System.out.println(i );
        }

        // 逢7过
        for (int i = 1; i < 41; i++) {
            if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
                continue;
            }
            System.out.print(i +" ");
            if (i % 10 == 0) {
                System.out.println( );
            }
        }

        System.out.println("---------------" );
        for (int i = 1; i < 100; i++) {
            if (i % 7 == 0 || i % 10 == 7 || i / 10 == 7) {
                System.out.print(i+" ");
            }
        }
    }

二、方法设计[重点]

2.1 方法说明

什么是方法?
  • 方法(method),在其他语法中称为函数(function),即功能,那也就是,方法是完成一个功能的一段代码片段
为什么需要方法?
  • 方法可以让代码有隔离, 一功能一个方法
  • 方法可以使代码复用(封装的思想)
  • 方法可以让代码变的很灵活

2.2 无参无返回值


public class Demo3 {

    public static void test2() {
        int i = 2;
        System.out.println("test2()" + i);
    }

    // 主方法,是java程序唯一入口
    public static void main(String[] args) {
        // 方法设计完,需要在主方法内调用来使其执行
        // 通过 方法名() 调用
        test2();
        test2();
        test2();
        test1();
    }
    /**
     * void 就是无返回值
     * () 就是无参数
     * test1 是方法名
     */
    public static void test1(){
        int i = 1;
        System.out.println("无参无返回值代码....test1" + i);
    }
}

练习:

设计方法,完成输出1-100以内所有含7以及7的倍数的数字

public static void print7(){
    for(int i = 1;i < 101;i++) {
        if(i % 7 == 0 || i % 10 == 7 || i / 10 == 7){
            System.out.print(i+" ");
        }
    }
}

设计方法,打印一个5行的直角三角形

	// 设计方法,打印一个5行的直角三角形
    public static void printTriangle() {
        for (int i = 1; i < 6; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println( );
        }
    }

ps: 别忘了主方法调用使其执行

// 一张纸厚度0.1mm,问叠多少次能到的珠穆朗玛峰高度8848m
// 设计方法,输出多少次

2.3 有参数无返回值

参数就是方法执行需要的数据,需要在方法定义时在方法的参数列表中()内,定义变量即可

public static void test(int a){} 其中这个int a就是方法的参数

image-20240520145417879


public class Demo4 {

    public static void main(String[] args) {
        // 方法有参数,调用时必须传参数
        // 即方法的参数(变量)赋值
        // printN(6);
        // printTriangle(100);
        // printSum(10);
        printLunch("大米套餐",8.8);
    }
    // 设计方法,展示今天吃什么饭,花多少钱
    public static void printLunch(String food,double price) {
        System.out.println("今天520,中午吃的"+food+",花费"+price+"块" );
    }

    // 设计方法,完成输出1-100以内
    // 所有含有指定数字以及指定数字倍数的数字
    public static void printN(int n) {
        for (int i = 1; i < 101; i++) {
            if (i % n == 0 || i % 10 == n || i / 10 == n) {
                System.out.print(i + " ");
            }
        }
        System.out.println( );
    }

    // 设计方法,打印一个指定行的直角三角形
    public static void printTriangle(int n) {
        for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println( );
        }
    }

    // 设计方法,算出1-n之间的所有整数和,并输出
    public static void printSum(int n) {
        int sum = 0;
        for (int i = 1; i <= n; i++) {
            sum += i;
        }
        System.out.println("sum = " + sum);
    }
}

2.4 有参数有返回值

返回值,就是方法执行后返回的数据
  • 方法定义的返回值类型不能是void,而是写返回的数据的数据类型
  • 在方法的方法体{}内写return + 数据
  • 在调用方法后,可以接收返回值

image-20240520153920676

ps: 返回值的目的不是为了输出,返回的目的是为了后续给别人(其他程序)继续使用这个数据


public class Demo5 {

    public static void main(String[] args) {
        int c = add(2,3);
        System.out.println(c );

        String s = book("java从入门到精通");
        System.out.println(s);

        double avg = getAvg( );
        System.out.println("avg = " + avg);
    }

    // 设计方法,传入2个整数参数,计算和,然后两数之和
    public static int add(int a,int b){
        // int c = a + b;
        // return c;
        return a + b;
    }

    // 设计方法,给书加书名号后返回
    // 庆余年, 《庆余年》
    public static String book(String name){
        return "《"+ name + "》";
    }

    // 键盘输入三个数,返回他们的平均值
    public static double getAvg() {
        Scanner scanner = new Scanner(System.in);
        int sum = 0;
        for (int i = 1; i <= 3; i++) {
            System.out.println("请输入第"+i+"个数:" );
            sum += scanner.nextInt();
        }
        return sum / 3.0;
    }
}

ps: return是方法结束的标志,后续不能有代码!!!

image-20240520155840509

ps2: return还可以单独使用,即后面不跟数据,即只结束方法不返回数据

image-20240520160314190

2.5 方法设计总结

  1. 方法不能嵌套,上下顺序随意
  2. 方法设计完 最终需要由主方法调用执行
  3. 方法有参数,调用时必须传入参数,按照方法设计的参数顺序,类型,个数传递
  4. 需要返回值时,在方法内写return+值,void改成对应数据类型

2.6 方法调用

方法和方法之间是可以相互调用的

方法调用只是为了启动程序

image-20240520161411792

方法的返回值,返回给调用者

image-20240520161845658

三、递归[熟悉]

java运行是占用内存空间的,java的内存模型称为java虚拟机(jvm)

jvm中有几大区域,其中一个是

  • 栈: 方法执行进栈,执行完弹栈消失
    • 栈是一种先进后出的队列
  • 堆: 凡是new出来的对象进堆

递归就是方法循环重复调用,一直压栈(方法进入栈中),如果没有合理的控制,就会造成内存溢出

所以递归调用方法有风险,需要谨慎处理


更严谨的说,递归是自己调用自己

练习: 使用递归完成求阶乘.

   /**
     * 求阶乘
     * 5! = 5*4*3*2*1
     * 4! = 4*3*2*1
     */
    public static int jc(int n) {
        if (n == 1) {
            return 1;
        }
        return n * jc(n-1);
    }

image-20240520171017242

四. 总结

今天重点: 方法设计

  • 参数怎么设计
  • 返回值怎么设计
  • 有参数,有返回值的方法怎么调用
  • 方法之间如何调用(代码的执行顺序,参考jvm方法执行进栈)
  • 返回值返回给谁

更严谨的说,递归是自己调用自己

练习: 使用递归完成求阶乘.

   /**
     * 求阶乘
     * 5! = 5*4*3*2*1
     * 4! = 4*3*2*1
     */
    public static int jc(int n) {
        if (n == 1) {
            return 1;
        }
        return n * jc(n-1);
    }
  • 18
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值