Java:方法的使用

news2024/9/19 7:39:48

一.什么是方法:

在 Java SE 中,方法是类中包含的功能块,它定义了一组执行某些操作的指令。方法用于封装可重复的代码逻辑,并使代码更简洁、易读和易维护。(类似于 C 语言中的 "函数")

二.方法的语法格式

修饰符 返回类型 方法名(参数类型 参数名1, 参数类型 参数名2, ...) {
    // 方法体,执行的代码逻辑
    return 返回值; // 如果返回类型不是 void,则需要有 return 语句
}

示例1(斐波那契数列)

 public static void main(String[] args) {
        
    }
    public static int fib(int n){
        int f1=1;
        int f2=1;
        int f3=0;
        for (int i = 0; i <=n; i++) {
            f3=f1+f2;
            f1=f2;
            f2=f3;
        }
        return f3;
    }
    public static void main15(String[] args) {
        System.out.println(fib(4));
    }

示例2(两数相加之和)

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

    public static void main4(String[] args) {
        double a=1.0;
        double b=2.0;
        double c=add(a,b);
        System.out.println(c);
    }

示例3(依次按顺序打印每一位的数字)

  public static void print(int n){
        if(n>10){
            print(n/10);
        }
        System.out.println(n%10);
        return;
    }
    public static void main6(String[] args) {
        print(1234);
    }

 三.方法调用的执行过程

调用方法--->传递参数--->找到方法地址--->执行被调方法的方法体--->被调方法结束返回--->回到主调方法继续往下执行。

注意:1.定义方法的时候, 不会执行方法的代码. 只有调用的时候才会执行。

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

1.类型注意:

当同时要输入整形和字符串还有小数时,在输入整形后按回车,此时回车会被当作为字符串导致字符串无法输入,直接到小数的输入

方法:多加输入一个字符串,可以避免输完整形后输入回车被当成字符串进行输入。

    public static void main11(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("读一个整形");
        int age=scanner.nextInt();
        System.out.println(age);

        scanner.nextLine();//多加输入一个字符串,可以避免输完整形后输入回车被当成字符串进行输入

        System.out.println("读一个字符串");
        String str=scanner.nextLine();
        System.out.println(str);
        System.out.println("读一个小数");
        float f =scanner.nextFloat();
        System.out.println(f);

    }

 2.计算 1! + 2! + 3! + 4! + 5!

    public static int fac(int p){
         p=1;
        for (int i=1;i<6;i++){
         p*=i;
        }
        return p;
    }
    public static void main(String[] args) {
        int sum=0;
        for (int i = 0; i <6; i++) {
            sum+=fac(i);
        }
        System.out.println(sum);
    }

四.实参和形参的关系

在 Java SE 中,方法的实参(实际参数)和形参(形式参数)是方法调用和定义时密切相关的概念,它们之间的关系是方法参数传递的核心。

实参和形参的定义:

1.实参:

  • 是方法定义中声明的参数,用于接收调用者传递的值。
  • 形参是变量,在方法被调用时,它们会被赋值为实参的值。
  • 形参存在于方法的参数列表中,定义形参的类型和名称。
public void add(int a, int b) {
    // 这里的 a 和 b 就是形参
    int sum = a + b;
    System.out.println("Sum: " + sum);
}

2.实参:

  • 是在方法调用时传递给方法的实际值。
  • 实参可以是常量、变量、表达式等,它们会被传递给对应的形参。
  • 实参的类型和数量必须与形参的类型和数量相匹配。
public static void main(String[] args) {
    MyClass obj = new MyClass();
    obj.add(5, 10);  // 这里的 5 和 10 就是实参
}

3.两则和之间的关系:

  • 形参是在方法定义中声明的变量,用于接收实参的值。
  • 实参是在方法调用时实际传递的值。
  • 对于基本数据类型,Java 采用值传递,方法内对形参的修改不会影响实参。
  • 对于引用类型(如对象或数组),形参得到的是实参的引用副本,方法内对对象的修改会影响实参。

五.方法的重载

在 Java SE 中,方法重载(Method Overloading)是指在同一个类中可以定义多个方法名相同但参数列表不同的方法。这些方法在调用时,Java 会根据传递的参数类型和数量来决定调用哪个具体的方法。 

1.方法重载的条件:

  • 参数的类型不同。
  • 参数的数量不同。
  • 参数的顺序不同(对于不同类型的参数)。

注意:方法的返回类型不影响重载,即方法重载不能仅通过改变返回类型来实现。 

public int add(int a, int b) {
        return a + b;
    }
    
    // 三个整数相加
    public int add(int a, int b, int c) {
        return a + b + c;
    }
    
    // 两个小数相加
    public double add(double a, double b) {
        return a + b;
    }

    // 两个不同类型的数相加
    public double add(int a, double b) {
        return a + b;
    }
    
    public static void main(String[] args) {
        Calculator calc = new Calculator();
        
        // 调用不同的重载方法
        System.out.println(calc.add(5, 10));         // 调用第一个 add 方法
        System.out.println(calc.add(1, 2, 3));      // 调用第二个 add 方法
        System.out.println(calc.add(2.5, 3.5));     // 调用第三个 add 方法
        System.out.println(calc.add(5, 3.5));       // 调用第四个 add 方法
    }

输出结果:

六.递归

在 Java SE 中,递归是指方法在其内部调用自己。递归方法通过将问题分解为更小的子问题并逐步解决,最终达到终止条件。递归是一种强大的编程技术,尤其适用于处理可以按某种方式划分为更小规模的相似问题的场景。

1.递归的原理:

每次递归调用时,当前方法的执行都会暂停,等待递归调用的结果返回后再继续执行。递归调用沿着递归链向下逐步求解,最终达到终止条件,随后沿着递归链向上逐层返回结果。

2.求递归1-10的和 

    public static int add1(int n){
        if (n==0) {
            return 1;
        }
        return n+add1(n-1);
    }
    public static void main7(String[] args) {
        int c=add1(10);
        System.out.println(c);
    }

3.用递归方法求斐波那契数列(不推荐,所占用栈的空间太大)


    public static int fib2(int n){
        if(n==1 ||n==2){
            return 1;
        }
        return fib2(n-2)+fib2(n-1);
    }
    public static void main14(String[] args) {
        System.out.println(fib2(6));
    }

希望能对大家的学习有所帮助!!! 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113366.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaFX基本控件-Button

JavaFX基本控件-Button 常用属性textpaddingalignmenttextAlignmentwidthheighttooltipborderwrapTextellipsisStringunderlinegraphicgraphicTextGapdisable 实现方式Java实现fxml实现 常用属性 text 设置文本内容 button.setText("测试按钮");padding 内边距 butt…

css 个人喜欢的样式 速查笔记

起因&#xff0c; 目的: 记录自己喜欢的&#xff0c; 觉得比较好看的 css. 下次用的时候&#xff0c;直接复制&#xff0c;很方便。 1 设置英语字体: Noto html <link rel"preconnect" href"https://fonts.googleapis.com"> <link rel"p…

[情商-12]:人际交流中倾听的三大层次,十二个小层次, 低情商摆样子;研发人员关注:逻辑层;高情商人关注:情绪、情感、需求、动机

目录 前言&#xff1a; 一、基础层次 二、进阶层次 三、高级层次 总结 前言&#xff1a; 倾听是一个复杂而多维的过程&#xff0c;它不仅仅是耳朵在工作&#xff0c;更是心灵和思维的深度参与。根据不同的理论和观察角度&#xff0c;倾听可以划分为不同的层次。以下是对倾…

AI文献综述神器,有这一款就够了!

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 当前的AI辅助文献综述的工具有很多&#xff0c;如果说功能最强大的&#xff0c;娜姐无疑要推SciSpace了。 SciSpace利用强大的AI算法&#xff0c;理解并建立研究论文之间的联…

一篇带你速通差分算法(C/C++)

个人主页&#xff1a;摆烂小白敲代码 创作领域&#xff1a;算法、C/C 持续更新算法领域的文章&#xff0c;让博主在您的算法之路上祝您一臂之力 欢迎各位大佬莅临我的博客&#xff0c;您的关注、点赞、收藏、评论是我持续创作最大的动力 差分算法是一种在计算机科学中常用的算法…

C# 通过拖控件移动窗体

目录 引言一、通过控件事件移动窗体1、创建窗体界面2、添加控件事件3、添加代码 二、通过windowsAPI移动窗体1、 构建窗体和添加事件2、代码展示 引言 在C#Form窗体设计中&#xff0c;如果我们不需要使用默认边框设计自己个性化的窗体&#xff08;FromBorderStylenone时&#…

YOLOv8改进 | 模块缝合 | C2f 融合RFCAConv增强感受野空间特征 【二次融合 小白必备】

秋招面试专栏推荐 &#xff1a;深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 &#x1f4a1;&#x1f4a1;&#x1f4a1;本专栏所有程序均经过测试&#xff0c;可成功执行&#x1f4a1;&#x1f4a1;&#x1f4a1; 专栏目录 &#xff1a;《YOLOv8改进有效…

《师兄啊师兄年番2》震撼发布,玄机科技再铸国漫巅峰!

随着秋风送爽&#xff0c;9月6日的优酷动漫发布会无疑为所有动漫爱好者带来了一场视觉与心灵的双重盛宴。其中最引人瞩目的&#xff0c;莫过于《师兄啊师兄年番2》携其全新海报的惊艳亮相&#xff0c;不仅预示着这部备受期待的国漫巨制即将开启全新篇章&#xff0c;更以其独特的…

SpringBoot3.x+MyBatisPlus+druid多数据源配置

1 引言 本章主要介绍SpringBoot3.x多数据源配置&#xff0c;以及在此基础上配置分页拦截&#xff0c;自动填充功等功能&#xff0c;源码链接在文章最后。下面列出几个重要文件进行介绍。 2 项目结构 整体项目结构如下&#xff0c;主要介绍配置文件和配置类。 3 主要代码 …

IstoreOS内网域名解析 修改网页端口

设置了自定义DNS&#xff0c;解析到Istore的IP&#xff0c;安装了1Panel&#xff0c;想用1Panel做域名解析&#xff0c;但是需要80和443端口。 这俩端口被IstoreOS占用了&#xff0c;下面修改 修改网页端口 https://github.com/istoreos/istoreos/issues/47 opkg update opkg…

【每日刷题】Day112

【每日刷题】Day112 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. 1137. 第 N 个泰波那契数 - 力扣&#xff08;LeetCode&#xff09; 2. 面试题 08.01. 三步问题 - …

Web

关于Web Web是基于HTTP协议进行交互的应用网络Web就是通过使用浏览器/APP访问的各种资源 一个请求对应一个响应 eg. 淘宝网 输入一个url&#xff0c;就会返回一个页面 简单的网站开发 简单代码 package mainimport ("fmt""net/http" )/*http.ResponseWr…

麒麟系统安装GPU驱动

1.nvidia 1.1显卡驱动 本机显卡型号:nvidia rtx 3090 1.1.1下载驱动 打开 https://www.nvidia.cn/geforce/drivers/ 也可以直接使用下面这个地址下载 https://www.nvidia.com/download/driverResults.aspx/205464/en-us/ 1.1.3安装驱动 右击&#xff0c;为run文件添加可…

【Sceneform-EQR】通过sceneform-eqr实现一个视频播放器(使用安卓MediaPlayer实现视频播放)

在前一篇文档中介绍了如何在AR\三维场景创建几种背景 【Sceneform-EQR】scenefrom-eqr中的几种背景实现(不仅用于AR、三维场景&#xff0c;在图片、视频播放器中也适用) 本文将侧重介绍如何使用安卓MediaPlayer实现视频播放。 ↓↓↓↓↓↓↓↓↓↓↓↓ 以下正文 ↓↓↓↓↓↓…

OFDM信号PARP的CCDF图

文章目录 引言代码代码疑难解答参考文献 引言 本书主要参考了文献1&#xff0c;但实际上该书中符号和表述的错误非常多&#xff08;只能说棒子是这样的&#xff09;&#xff1b;同时因为发表时间的关系&#xff0c;很多MATLAB代码进行了更新&#xff0c;原书提供的代码已经无法…

溜狗牵绳行为检测-目标检测数据集(包括VOC格式、YOLO格式)

溜狗牵绳行为检测-目标检测数据集&#xff08;包括VOC格式、YOLO格式&#xff09; 数据集&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1CwLEAKcdlh9hbcBNh_Awdw?pwdiu6b 提取码&#xff1a;iu6b数据集信息介绍&#xff1a; 共有 1980 张图像和一一对应的标注文件…

超声波清洗机哪个品牌比较好一点的?清洁力强的超声波清洗机品牌

随着生活水平的不断提升和幸福感的增强&#xff0c;珠宝、饰品和眼镜等物品已成为许多家庭的常备之物。然而&#xff0c;这些贵重细小的物件易于积聚微尘与隐形细菌&#xff0c;长此以往可能悄悄影响家人的健康&#xff0c;毕竟细菌是肉眼难以察觉的隐患。超声波清洗机应运而生…

域取证的日志分析

目录 介绍步骤横向移动行为分析 介绍 1、evtx文件是微软从 Windows NT 6.0(Windows Vista 和 Server 2008) 开始采用的一种全新的日志文件格式。在此之前的格式是 evt 。evtx由Windows事件查看器创建&#xff0c;包含Windows记录的事件列表&#xff0c;以专有的二进制XML格式保…

Kubernetes 之 kubelet 与 CRI、CNI 的交互过程

序言 当一个新的 Pod 被提交创建之后&#xff0c;Kubelet、CRI、CNI 这三个组件之间进行了哪些交互&#xff1f; Kubelet -> CRI -> CNI 如上图所示&#xff1a; Kubelet 从 kube-api-server 处监听到有新的 pod 被调度到了自己的节点且需要创建。Kubelet 创建 sandbo…

以太网--TCP/IP协议(二)

上文中讲述了IP协议&#xff0c;本文主要来讲一下TCP协议。 TCP协议 &#xff08;1&#xff09;端到端通信 直接把源主机应用程序产生的数据传输到目的主机使用这 些数据的应用程序中&#xff0c;就是端到端通信。 &#xff08;2&#xff09;传输层端口 公认端口&#xff0…