java方法

2024-01-08 20:23:37

一、方法概述

1.1 方法是什么

**方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用。**这句话什么意思呢?意思是,把一段功能代码围在一起,别人都可以来调用它。

在这里插入图片描述

1.2 定义方法的注意点

在这里插入图片描述

    1. 方法的修饰符:暂时都使用public static 修饰。(目前看做是固定写法,后面是可以改动的)
    1. 方法申明了具体的返回值类型,内部必须使用return返回对应类型的数据。
    1. 形参列表可以有多个,甚至可以没有; 如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值。

1.3 使用方法的好处

最好,我们总结一下,用方法有什么好处,可以归纳为下面2点:

    1. 提高了代码的复用性,提高了开发效率。
    1. 让程序的逻辑更清晰。

二、方法的其他形式

各位同学,刚才我们学习了定义完整格式的方法。但是实际开发中,需要按照方法解决的实际业务需求,设计出合理的方法形式来解决问题。

实际上设计一个合理的方法,需要重点关注下面两点:

在这里插入图片描述

设计一个合理的方法的原则如下:

    1. 如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明), 此时方法内部不可以使用return返回数据。
    1. 方法如果不需要接收外部传递进来的数据,则不需要定义形参,且调用方法时也不可以传数据给方法。
    1. 没有参数,且没有返回值类型(void)的方法,称为值无参数、无返回值方法。此时调用方法时不能传递数据给方法。

三、方法在计算机中的执行原理

方法在计算机的内存中到底是怎么干的呢?

我们知道**Java程序的运行,都是在内存中执行的,而内存区域又分为栈、堆和方法区。**那Java的方法是在哪个内存区域中执行呢?

答案是栈内存。 每次调用方法,方法都会进栈执行;执行完后,又会弹栈出去。

方法进栈和弹栈的过程,就类似于手枪子弹夹,上子弹和击发子弹的过程。最后上的一颗子弹是,第一个打出来的;第一颗上的子弹,是最后一个打出来的。

下面我们分析一下,求两个整数和的代码,在内存中的执行原理。

public class MethodDemo {
    public static void main(String[] args) {
        int rs = sum(10, 20);
        System.out.println(rs);
	}
    public static int sum(int a, int b ){
        int c = a + b; 
        return c;  
    }
}

如下图所示:以上代码在内存中的执行过程,按照①②③④⑤⑥⑦的步骤执行.

在这里插入图片描述


四、方法参数的传递机制

刚才演示的一些方法中传递的参数都是基本类型,实际上参数还可以是传递引用类型。接下来,学习一下当参数是基本类型时、和参数是引用类型时的区别。

先记住一个结论:Java的参数传递机制都是:值传递

所谓值传递:指的是在传递实参给方法的形参的时候,传递的是实参变量中存储的值的副本。 同学们肯定想知道,形参是什么?实参又是什么呢? 请看下面这个张图

在这里插入图片描述

4.1 参数传递的基本类型数据

接下来,看一下方法参数传递是基本类型数据时,内存中是怎么执行的。

在这里插入图片描述
我们把参数传递的结论再复习一下:Java的参数传递机制都是:值传递,传递的是实参存储的值的副本。

4.2 参数传递的是引用数据类型

接下来,看一下方法的参数是引用类型的数据时,内存中是怎么执行的。

在这里插入图片描述
我们发现调用change方法时参数是引用类型,实际上也是值传递,只不过参数传递存储的地址值。此时change方法和main方法中两个方法中各自有一个变量arrs,这两个变量记录的是同一个地址值[I@4c873330,change方法把数组中的元素改了,main方法在访问时,元素已经被修改了。

总结一下:

基本类型和引用类型的参数在传递的时候有什么不同?
	- 都是值传递
	- 基本类型的参数传递存储的数据值。
    - 引用类型的参数传递存储的地址值。

五、 方法重载

所谓方法重载指的是:一个类中,出现多个相同的方法名,但是它们的形参列表是不同的,那么这些方法就称为方法重载了。

public class MethodOverLoadDemo1 {
    public static void main(String[] args) {
        // 目标:认识方法重载,并掌握其应用场景。
        test();
        test(100);
    }

    public static void test(){
        System.out.println("===test1===");
    }

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

    void test(double a){

    }

    void test(double a, int b){
    }

    void test(int b, double a){
    }

    int test(int a, int b){
        return a + b;
    }
}

总结一下:

1.什么是方法重载?
	答:一个类中,多个方法的名称相同,但它们形参列表不同。
2.方法重载需要注意什么?
	- 一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,
	  其它的都不管(如:修饰符,返回值类型是否一样都无所谓)。
	
	- 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。
	
3、方法重载有啥应用场景?
	答:开发中我们经常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很	专业的。

六、return 单独使用

在方法中单独使用return语句,可以用来提前结束方法的执行。

return、break和continue的区别:

在这里插入图片描述


over!

文章来源:https://blog.csdn.net/weixin_52422372/article/details/135444007
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。