【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

这篇具有很好参考价值的文章主要介绍了【Java基础篇】方法的使用(方法的使用以及形参实参的关系)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等
作者主页: 七七的个人主页
文章收录专栏:Java.SE,本专栏主要讲解运算符,程序逻辑控制,方法的使用,数组的使用,类和对象,继承和多态,抽象类和接口等内容
欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖

【Java基础篇】方法的使用(方法的使用以及形参实参的关系)


1. 方法概念及使用

1.1 什么是方法(method)

方法就是一个代码片段. 类似于 C 语言中的 “函数”。方法存在的意义(不要背, 重在体会):

  1. 是能够模块化的组织代码(当代码规模比较复杂的时候).
  2. 做到代码被重复使用, 一份代码可以在多个位置使用.
  3. 让代码更好理解更简单.
  4. 直接调用现有方法开发, 不必重复造轮子.
    【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

1.2 方法定义

方法语法格式

// 方法定义

修饰符 返回值类型 方法名称([参数类型 形参 ...]){
 方法体代码;
 [return 返回值];
}

示例一:实现一个函数,检测一个年份是否为闰年
public static boolean isLeapYear(int year为定义的方法

public class TestDemo {
    public static boolean isLeapYear(int year) {
        if ((0 == year % 4 && 0 != year % 100) || 0 == year % 400) {
            //System.out.println(year+"年是闰年");
            return true;
        }
        return false;
    }
}

示例二: 实现一个两个整数相加的方法

public class TestDemo {
     // 方法的定义

        public static int add(int x, int y) {
            return x + y;
        }
}

【注意事项】

  1. 修饰符:现阶段直接使用public static 固定搭配

  2. 返回值类型:如果方法有返回值,返回值类型必须要与返回的实体类型一致,如果没有返回值,必须写成void

  3. 方法名字:采用小驼峰命名

  4. 参数列表:如果方法没有参数,()中什么都不写,如果有参数,需指定参数类型,多个参数之间使用逗号隔开

  5. 方法体:方法内部要执行的语句

  6. 在java当中,方法必须写在类当中

  7. 在java当中,方法不能嵌套定义

  8. 在java当中,没有方法声明一说

2. 方法调用的执行过程

【方法调用过程】
调用方法 —> 传递参数 —> 找到方法地址 —> 执行被调方法的方法体 —> 被调方法结束返回 —> 回到主调方法继续往下执行

【注意事项】

  • 定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行.

  • 一个方法可以被多次调用.

代码示例1 :计算两个整数相加

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println("第一次调用方法之前");
        int ret = add(a, b);
        System.out.println("第一次调用方法之后");
        System.out.println("ret = " + ret);

        System.out.println("第二次调用方法之前");
        ret = add(30, 50);
        System.out.println("第二次调用方法之后");
        System.out.println("ret = " + ret);

    }
    public static int add(int x, int y) {
        System.out.println("调用方法中 x = " + x + " y = " + y);
        return x + y;
    }

}

运行结果:
【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
代码示例2: 计算 1! + 2! + 3! + 4! + 5!

public class TestDemo {
        public static int facSum(int n) {
            int sum = 0;
            for (int i = 1; i <= 5; i++) {
                sum += fac(i);
            }
            return sum;
        }

        public static int fac(int n) {
            int ret = 1;
            for (int i = 1; i <= n; i++) {
                ret *= i;
            }
            return ret;
        }
    public static void main(String[] args) {
        int n = 5;
        System.out.println(facSum(n));
    }
}

打印结果:
【Java基础篇】方法的使用(方法的使用以及形参实参的关系)

3. 实参和形参的关系(重要)

方法的形参相当于数学函数中的自变量,比如:1 + 2 + 3 + … + n的公式为【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
Java中方法的形参就相当于sum函数中的自变量n,用来接收sum函数在调用时传递的值的。 形参的名字可以随意取,对方法都没有任何影响,形参只是方法在定义时需要借助的一个变量,用来保存方法在调用时传递过来的值。

public static int getSum(int N){    // N是形参

    return (1+N)*N / 2;
}
 

getSum(10);      // 10是实参,在方法调用时,形参N用来保存10

getSum(100);     // 100是实参,在方法调用时,形参N用来保存100

再比如:

public static int add(int a, int b){
    return a + b;
}
 

add(2, 3);   // 2和3是实参,在调用时传给形参a和b

【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
注意: 在Java中,实参的值永远都是拷贝到形参中,形参和实参本质是两个实体
代码示例: 交换两个整型变量

public class TestDemo {
    public static void swap(int x,int y) {
        int tmp = x;
        x = y;
        y = tmp;
    }
    public static void main10(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+" "+ b);
        swap(a,b);
        System.out.println(a+" "+ b);
    }
}

代码的运行结果:
【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
我们会发现交换前和交换后的结果一样,所以这个代码是有问题的
【原因分析】
实参a和b是main方法中的两个变量,其空间在main方法的栈(一块特殊的内存空间)中,而形参x和y是swap方法中的两个变量,x和y的空间在swap方法运行时的栈中,因此:实参a和b与形参x和y是两个没有任何关联性的变量,在swap方法调用时,只是将实参a和b中的值拷贝了一份传递给了形参x和y,因此对形参x和y操作不会对实参a和b产生任何影响。
注意: 对于基础类型来说,形参相当于实参的拷贝,即传值调用
从上边代码中可以看到,对 x 和 y 的修改,不影响 a 和 b
【解决办法】:传引用类型参数(例如数组来解决这个问题)

这个代码的运行过程,后面学习数组的时候再详细解释。

public class TestDemo {
    public static void main(String[] args) {
        int[] arr = {10, 20};
        swap(arr);
        System.out.println("arr[0] = " + arr[0] + " arr[1] = " + arr[1]);
    }

    public static void swap(int[] arr) {
        int tmp = arr[0];
        arr[0] = arr[1];
        arr[1] = tmp;
    }
}

// 运行结果

arr[0] = 20 arr[1] = 10

4. 没有返回值的方法

方法的返回值是可选的. 有些时候可以没有的,没有时返回值类型必须写成void
代码示例

public class TestDemo {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        print(a, b);
    }
    public static void print(int x, int y) {
        System.out.println("x = " + x + " y = " + y);
    }
}

关于【Java基础篇】方法的使用(方法的使用以及形参实参的关系),七七就先分享到这里了,如果你认为这篇文章对你有帮助,请给七七点个赞吧,如果发现什么问题,欢迎评论区留言!!💕💕文章来源地址https://www.toymoban.com/news/detail-478786.html

到了这里,关于【Java基础篇】方法的使用(方法的使用以及形参实参的关系)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Java探索之旅】方法的概念 定义 执行流程 实参与形参的交互

    🎥 屿小夏 : 个人主页 🔥个人专栏 : Java编程秘籍 🌄 莫道桑榆晚,为霞尚满天! 方法是Java编程中非常重要的概念,它能够帮助我们组织代码、实现代码的重复使用,并使代码更加清晰易懂。本文将介绍方法的概念、定义以及调用执行过程,同时解释实参和形参之间的关

    2024年04月14日
    浏览(44)
  • C++基础与深度解析01——函数基本组成+函数传参的三种方法

    请安装Visual Studio 并学习基本的新建项目、新建CPP文件以及运行代码。 函数功能:打印“Hello World” 1.函数构成 输入参数列表+函数名+返回类型+函数主体 如下图所示,但是main函数稍有特殊,其为cpp 现举一个简单函数的例子,z= 2x-3y+3,其中xy均为浮点型小数,取函数名为CalBi

    2024年02月16日
    浏览(46)
  • c++中,引用作为形参的使用方法和作用

    当在 C++ 函数中传递参数时,可以使用引用作为形参。引用是 C++ 中的一种特殊数据类型,它允许将变量的别名传递给函数,从而允许函数访问和操作原始变量。在函数参数中使用引用有以下几种用法和用途: 当一个函数需要修改传递进来的变量的值时,可以将变量作为引用

    2024年02月09日
    浏览(39)
  • 第49讲:Python函数调用解析:传参方式、实参与形参关系、多返回值示例

    调用函数时,需要传递实际参数到函数里的形参中,可以根据每个形参在所有形参中的位置,从而传递实参到对应位置的形参中。 位置实参指的就是,将实参作为变量值赋值给对应位置的形参变量,例如第一个形参变量,调用函数时传入的第一个实参就会赋值给函数中的第一

    2024年02月09日
    浏览(48)
  • 全面理解C++函数最难理解的部分:数组形参,函数指针,以及函数指针作为形参

    我提到的这些部分,是我在自学C与C++中遇到的比较困难的点。因为初学者的编程,不太容易使用到这些点,所以很容易造成遗忘,并且自己写很容易出错。 最近在看标准C库的源码的时候遇到了这样的困惑,就是关于函数指针,或者说,把一个函数作为另一个函数的参数的这

    2024年02月07日
    浏览(36)
  • Java基础---常用类大全以及各数据结构的方法大全

    目录 前言 一、Math类 二.Scanner类 三、String类、StringBuilder和StringBuffer类 💖String类 💖StringBuilder和StringBuffer 四.Arrays类 五.Random类 六.时间类 七.ArrayList顺序表 八、LinkedList与链表 九.Stack栈和Queue队列 十.PriorityQueue优先级队列,堆 🎁博主介绍:博客名为tq02,已学C语言、JavaSE,目

    2024年02月16日
    浏览(41)
  • python中的形参和实参以及参数传递方式

    在编程语言中,函数定义时用的是形参,调用时用的是实参。 形参,全称为\\\"形式参数\\\",不是实际存在的变量,又称虚拟变量。形参是在定义函数名和函数体的时候使用的参数, 目的是用来接收调用该函数时传入的参数 。 实参,全称为\\\"实际参数\\\",是在调用时传递给函数的

    2024年02月02日
    浏览(42)
  • 【Java基础教程】(四十二)多线程篇 · 上:多进程与多线程、并发与并行的关系,多线程的实现方式、线程流转状态、常用操作方法解析~

    理解进程与线程的区别; 掌握Java 中多线程的两种实现方式及区别; 掌握线程的基本操作方法; 进程是程序的一次动态执行过程,它经历了从代码加载、执行到执行完毕的一个完整过程,这个过程也是进程本身从产生、发展到最终消亡的过程 。多进程操作系统能同时运行多

    2024年02月16日
    浏览(45)
  • Git的安装以及基础使用方法

    Git是一种分布式版本控制系统,被广泛用于管理代码、文档和任何其他类型的数据。它允许开发者在团队中协作,并且在处理大型项目时可以保持代码的完整性。 安装Git:在Linux上,你可以使用包管理器(如apt或yum)来安装Git。在macOS上,你可以使用Homebrew。在Windows上,你可

    2024年02月09日
    浏览(35)
  • JVM中方法区、永久代、元空间详解以及关系?

    首先我们需要先复习一下jvm的大致内存图,如下: 哦~ ,想起来了,原来方法区属于jvm的运行时数据区,且作用就是存储类信息、方法信息、常量池信息等静态数据。  (补充一下:运行时数据区中的红色是指方法区和堆是线程共享的,其他几个都是线程私有的) 好的,回想

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包