【Java基础篇】第七章 方法

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【Java基础篇】第七章 方法,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

⭐⭐⭐Java基础篇目录⭐⭐⭐


🍁 第一章 Java开发环境搭建
🍁 第二章 标识符与关键字
🍁 第三章 变量
🍁 第四章 数据类型
🍁 第五章 运算符
🍁 第六章 控制语句
🍁 第七章 方法
🍁 第八章 认识面向对象
🍁 第九章 对象的创建和使用
🍁 第十章 封装
🍁 第十一章 this和static
🍁 第十二章 继承
🍁 第十三章 方法的覆盖和多态
🍁 第十四章 super

在这里插入图片描述

1、方法

Java中的方法即C中的函数,定义一个方法,下次使用该功能时直接调用该方法,提高了代码的复用性。

在这里插入图片描述

public class Function {
    public static void main(String[] args) {
        sum(100,200);
        sum(200,300);

    }
    public static void sum(int x,int y){
        int s=x+y;
        System.out.println(x+"+"+y+"="+s);
    }


}
小总结
-----------------
- 程序开始执行的时候先执行main方法,main方法是程序的入口
- main方法是JVM去调用的,不用我们去手动调
- 方法定义在类体中,方法定义的先后顺序无所谓

2、方法的定义

Java方法定义的格式:

[修饰符列表] 返回值类型 方法名(形式参数列表){
	方法体;
}

在这里插入图片描述
在这里插入图片描述

小总结

  • 返回值类型不是void,则方法体执行结束时必有return x;语句,且遇到return x;语句,当前方法的执行也必然结束。
  • 返回值类型是void,则方法体语句中没有return x;但可以有return;来终结方法的执行。
  • 形参列表中的变量都是局部变量,方法执行结束之后,其对应的内存释放。
  • 方法体中就是实现逻辑业务和需求的代码。

3、方法的调用

调用(此处暂不涉及对象的概念

类名.方法名(实参列表);

调用的方法若有返回值,则要用变量去接收,变量的类型看方法返回值的类型,也可不接收,也可直接println(sum(100,200));调用的方法若是void类型,这时接收就出错。

在这里插入图片描述
在这里插入图片描述

public class Function {

    public static void main(String[] args) {
        System.out.println("main begin");
        m1();
        System.out.println("main over");

    }

    public static void m1() {
        System.out.println("m1 begin");
        m2();
        System.out.println("m1 over");
    }

    public static void m2(){
        System.out.println("m2 begin");
        m3();
        System.out.println("m2 over");
    }
    public static void m3(){
        System.out.println("m3 begin");
        System.out.println("----->");
        System.out.println("m3 over");
    }
}

运行结果:
在这里插入图片描述

Tips:
main方法最先执行,也是最后一个结束。main方法的结束,也代表着整个程序就结束了。

4、return和break的对比

break是终止循环,return是终结当前方法。所以在return语句后面再写语句是无意义的,编译也会报错:“无法访问的语句”。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5、JVM的内存结构&方法执行时内存的变化

小总结

  • JVM内存主要有三大块:栈区、堆区、方法区(还有其他边角料空间)
  • 方法在被调用的时候需要的内存空间在栈区分配
  • 类加载的时候,字节码文件存方法区,方法区最先有数据

在这里插入图片描述
在这里插入图片描述

栈区存的是方法被调用时或执行时所需要的内存、方法的局部变量

方法调用—–>压栈——>分配空间
方法结束—–>弹栈——>释放空间

在这里插入图片描述
在这里插入图片描述

将方法的返回值直接扔给print

System.out.println(sum(100,200));
//等价于
int result = sum(100,200);
System.out.println(result);

分析思考解决一个问题的方法和逻辑,从而拆解问题,根据拆解的问题去提取方法、定义方法,最后填充代码。
eg:
求大于一个数的最小质数。得先实现一个数是不是质数的判定,再把输入的数每次加一,加一后调用之前的方法,判定是质数则输出,不是则继续加。

import java.util.Scanner;
public class Number {
    public static void main(String[] args) {
        minPrimeNumber();
    }

    /**
     * 判断一个数是不是质数
     * @param num
     * @return
     */
    public static int primeNumber(int num){
        for(int i=2;i<num;i++){
            if (num%i==0){
                return 1;//不是质数
            }
        }
        return 0;//是质数
    }

    /**
     * 求大于一个数的最小质数
     */
    public static void minPrimeNumber(){
        Scanner s = new Scanner(System.in);
        System.out.println("请输入你的数:");
        int number = s.nextInt();
        while (true){
            number++;
            if (primeNumber(number)==0){
                System.out.println("大于它的最小质数是:"+number);
                break;
            }
        }
    }
}


运行结果:
在这里插入图片描述

6、方法的重载

发生重载的条件(同时满足):

  • 在同一个类中
  • 方法名相同
  • 参数列表不同(如参数个数不同、参数类型不同、除法运算中的参数顺序不同)

注意:方法重载的重点是看方法名和形参列表,和是否有返回值、返回值类型、修饰符是否相同无关!!!

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

println就是一个经典的重载,输出不同的数据类型,均是println,若没有重载,则每种数据类型对应的方法名不同,使用不方便。

7、代码的封装

在这里插入图片描述
在这里插入图片描述

8、方法的递归

在这里插入图片描述

StackOverflow Error的排查思路:

  • 查看递归结束的条件是否正确
  • 若结束条件没问题,则手动调大JVM的栈内存的初始大小

在这里插入图片描述

//递归求和
public static int sum(int num){
        if(num==1||num==0){
            return num;
        }
        return num+sum(num-1);
 }

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146129.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!