Java笔记四(方法与递归)

news2025/1/17 21:49:50

方法

Java的方法类似于C语言的函数,是一段用来完成特定功能的代码片段,一般情况下,定义一个方法包含以下语法:

方法包含一个方法头和一个方法体,下面是一个方法的所有部分:

◆修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。

◆返回值类型:方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValue' Type是关键字void.

◆方法名:是方法的实际名称。方法名和参数表共同构成方法签名。

◆参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。

◆形式参数:在方法被调用时用于接收外界输入的数据。

◆实参:调用方法时实际传给方法的数据。

◆方法体: 方法体包含具体的语句,定义该方法的功能。

例一:加法

public class Demo01 {
    public static void main(String[] args) {
        //实际参数:实际调用传递给他的参数
        int sum=add(1,2);
        System.out.println(sum);

    }
    //形式参数,用来定义作用的
    public static int add(int a,int b){
        return a+b;
    }
}

 ◆设计方法的原则:方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成1个功能,这样利于我们后期的扩展。

 例二:比大小

 

public class Demo02 {
    public static void main(String[] args) {
        int max=max(10,20);
        System.out.println(max);

    }
    public static int max(int num1,int num2){
        int result=0;
        if (num1==num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if (num1>num2){
            result=num1;
        }else{
            result=num2;
        }
        return result;
    }
}

 

方法调用

◆调用方法:对象名.方法名(实参列表)

◆Java支持两种调用方法的方式,根据方法是否返回值来选择。

◆当方法返回一个值的时候,方法调用通常被当做一个值。 例如:

int larger = max(30, 40);

◆如果方法返回值是void,方法调用一定是一条语句。

System. out. println( "Hello, kuangshen!");

方法的重载

◆重载就是在一一个类中,有相同的函数名称,但形参不同的函数。

方法的重载的规则://笔试题重点

◆方法名称必须相同。

◆参数列表必须不同(个数不同、或类型不同、参数排列顺序不同等)。

◆方法的返回类型可以相同也可以不相同。

◆仅仅返回类型不同不足以成为方法的重载。

实现理论:

 ◆方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。

示例:

 

public class Demo02 {
    public static void main(String[] args) {
        int max=max(10,20);
        System.out.println(max);

    }
    public static double max(double num1,double num2){
        double result=0;
        if (num1==num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if (num1>num2){
            result=num1;
        }else{
            result=num2;
        }
        return result;
    }
    public static int max(int num1,int num2){
        int result=0;
        if (num1==num2){
            System.out.println("num1==num2");
            return 0;//终止方法
        }
        if (num1>num2){
            result=num1;
        }else{
            result=num2;
        }
        return result;
    }
}

 可变参数

 

JDK 1.5开始,Java支持传递同类型的可变参数给一个方法。

在方法声明中,在指定参数类型后加个省略号(...)。

一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。

示例:
public class Demo05 {
    public static void main(String[] args) {
        printMax(34,3,3,2,56.5);
        printMax(new double[]{1,2,3});
    }

    public static void printMax(double...numbers) {
        if (numbers.length==0){
            System.out.println("No argument passed");
            return;
        }
        double result=numbers[0];
        //一个简单的排序算法
        for (int i=1;i< numbers.length;i++){
            if (numbers[i]>result){
                result=numbers[i];
            }
        }
        System.out.println("The max value is"+result);
    }
}

递归(笔试重难点)

 

◆递归就是: A方法调用A方法!就是自己调用自己

递归结构包括两个部分:

◆递归头:什么时候不调用自身方法。如果没有头,将陷入死循环。

◆递归体:什么时候需要调用自身方法。

阶乘算法:

ublic class Demo06 {
    public static void main(String[] args) {
        System.out.println(f(5));

    }
    public static int f(int n){
        if (n==1){
            return 1;
        }else {
            return n*f(n-1);
        }
    }

}

 

 

边界条件:n==1

返回阶段:n*(n-1)

简易计算器示例:

 

import java.util.Scanner;
public class Demo06 {
    public static void main(String[] args) {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入一个数:");
        int num1=scanner.nextInt();
        Scanner scanner1=new Scanner(System.in);
        System.out.println("请输入你要进行的操作(+,-,*,/):");
        String ope=scanner1.nextLine();
        Scanner scanner2=new Scanner(System.in);
        System.out.println("请再输入一个数:");
        int num2=scanner2.nextInt();
        int i=0;
        System.out.println("输出的结果为:");
        switch(ope){
            case "+":i=add(num1,num2);
                System.out.println(num1+"+"+num2+"="+i);
                break;
            case "-":i=dec(num1,num2);
                System.out.println(num1+"-"+num2+"="+i);
                break;
            case "*":i=cheng(num1,num2);
                System.out.println(num1+"*"+num2+"="+i);
                break;
            case "/":i=chu(num1,num2);
                System.out.println(num1+"/"+num2+"="+i);
                break;
        }


    }
    public static int add(int a,int b){
        return a+b;}
    public static int dec(int a,int b){
        return a-b;
    }
    public static int cheng(int a,int b){
        return a*b;
    }
    public static int chu(int a,int b){
        return a/b;
    }
}

                

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

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

相关文章

FPGA设计时序约束二、输入延时与输出延时

目录 一、背景 二、set_input_delay 2.1 set_input_delay含义 2.2 set_input_delay参数说明 2.3 使用样例 三、set_output_delay 3.1 set_output_delay含义 3.2 set_output_delay参数说明 3.3 使用样例 四、样例工程 4.1 工程代码 4.2 时序报告 五、参考资料 一、…

风光储一体化能源中心 | 图扑数字孪生

自“双碳”目标提出以来&#xff0c;我国能源产业不断朝着清洁低碳化、绿色化的方向发展。其中&#xff0c;风能、太阳能等可再生能源在促进全球能源可持续发展、共建清洁美丽世界中被寄予厚望。风能、太阳能具有波动性、间歇性、随机性等特点&#xff0c;主要通过转化为电能再…

如何在几分钟内创建一个对话机器人?

随着互联网的发展&#xff0c;人们迫切希望以快速高效的方式获取信息和解决问题&#xff0c;传统的人工客服渐渐地已经无法满足人们的需求。然而&#xff0c;对话机器人&#xff08;chatbot&#xff09;的出现可以很好地解决这个痛点。 对话机器人是一种人工智能工具&#xff…

[代码随想录]基本数据结构篇

文章目录 1.数组篇1.1 704-二分查找1.2 27-移除数组1.3 977-有序数组的平方1.4* 209--长度最小的子数组(滑动窗口)1.5* 59-螺旋矩阵II 2. 链表篇2.1 203-移除链表元素2.2 707-设计链表2.3 206-反转链表2.4* 24-两两交换链表中的节点(跳针)2.5* 19-删除链表的倒数第N个节点(快慢…

[Realtek sdk-3.4.14b]RTL8197FH-VG 2.4G to WAN吞吐量低于60%的问题分析及解决方案

问题描述 RTL8197FH-VG 2.4G wifi to WAN吞吐量低于65%的标准,正常2T2R的wifi 300Mbps x 65% = 195Mbps,但是实际只能跑到160Mbps,这个时候CPU的idl已经为0,sirq占用率达到98%左右 网络拓扑 一台PC通过2.4G WiFi连接到RTL8197FH-VG,另外一台PC直接通过WAN口连接到RTL8197…

求各区域热门商品Top3 - HiveSQL

背景&#xff1a;这是尚硅谷SparkSQL练习题&#xff0c;本文用HiveSQL进行了实现。 数据集&#xff1a;用户点击表&#xff0c;商品表&#xff0c;城市表 题目: ① 求每个地区点击量前三的商品&#xff1b; ② 在①的基础上&#xff0c;求出每个地区点击量前三的商品后&a…

SkyWalking搭配springboot应用(三)

title: “SkyWalking搭配springboot应用(三)” createTime: 2021-07-13T16:27:5708:00 updateTime: 2021-07-13T16:27:5708:00 slug: “SkyWalking搭配springboot应用(三)” draft: false author: “ggball” tags: [“skywalking”] categories: [“java”] description: “sk…

重新认识mysql

title: “重新认识mysql” createTime: 2022-03-06T15:52:4108:00 updateTime: 2022-03-06T15:52:4108:00 draft: false author: “ggball” tags: [“mysql”] categories: [“db”] description: “” 文章目录 title: "重新认识mysql" createTime: 2022-03-06T15:…

路由器配置静态和默认路由实现VLAN之间的通信

目录 华为路由器静态路由和默认路由的写法 静态路由和默认路由的区别 案例 华为路由器静态路由和默认路由的写法 配置静态路由&#xff1a; [Huawei] ip route-static <目标网络> <子网掩码> <下一跳地址> 实例&#xff1a;将目标网络192.168.10.0/24的流…

UOS QTextEdit设置换行和滚动条(bug自动换行时右侧个别字符被遮盖)

一、环境 UOS_x86 / QT5 / C 二、qtextEdit 换行设置 下图在ui界面lineWrapMode这个参数可以设置换行相关&#xff1a;NoWrap是不换行、WidgetWidth是自动换行&#xff08;按textEdit的宽度换行&#xff09;、下面两个是可以自定义每行的宽度&#xff0c;如果选了这两个&…

Java8实战-总结37

Java8实战-总结37 默认方法不断演进的 API初始版本的 API第二版 API 默认方法 传统上&#xff0c;Java程序的接口是将相关方法按照约定组合到一起的方式。实现接口的类必须为接口中定义的每个方法提供一个实现&#xff0c;或者从父类中继承它的实现。但是&#xff0c;一旦类库…

【OSCAR开源产业大会分论坛】开源大模型走向何方?

再过俩月&#xff0c;ChatGPT 即将迎来推出一周年纪念日。作为开历史先河的 AI 大模型&#xff0c;ChatGPT 像一针猛戳进千行百业中枢神经的兴奋剂&#xff0c;在全球掀起空前绝后的 AI 军备竞赛热潮。 近一年来&#xff0c;我们看到 GPT-3.5 完成向多模态的 GPT-4 进化&#x…

为什么我的remix没有injected web3

原因 Remix近期做了升级&#xff0c;去除了Web3的选项&#xff0c;您在进行部署的时候&#xff0c;可以选择injected provider metamask&#xff0c;同样能连接到Web3钱包哦。具体如下图所示&#xff1a;

基于微信小程序的公交信息在线查询系统小程序设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

zemax西德莫尔目镜

高性能的军用光学仪器 在两个双胶合透镜之间&#xff0c;增加了一块平凸透镜 半视场角增大到35度 入瞳直径4mm波长0.51、0.56、0.61半视场35焦距27.9mm 镜头参数&#xff1a; 成像效果&#xff1a;

codesys【网桥】

作用&#xff1a;在串联的路由器上&#xff0c;实现PC2访问PC1 实现无线编程 和PLC【web】 1硬件连接&#xff1a; 2软件设置&#xff1a; 1网卡设置自动ip 2厂家软件连接到模块 串口服务器参数设置&#xff1a; (1)设置串口服务器软件版本为Z-Ver ATFVERz (2)使能以太网接口…

【AI视野·今日Robot 机器人论文速览 第四十期】Mon, 25 Sep 2023

AI视野今日CS.Robotics 机器人学论文速览 Mon, 25 Sep 2023 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Interesting: &#x1f4da;CloudGripper, 一套云化的机器抓取人数据采集系统&#xff0c;包含了32个机械臂的集群。(from KTH Royal Institute of Te…

【Vue简介+搭建Vue开发环境+Hello小案例】

Vue简介搭建Vue开发环境Hello小案例 1 Vue简介2 搭建Vue开发环境3 Hello小案例 1 Vue简介 Vue是一套用于构建用户界面的渐进式JavaScript框架。&#xff08;渐进式&#xff1a;Vue可以自底向上逐层的应用<简单应用&#xff1a;只需要一个轻量小巧的核心库><复杂应用&…

2023年海南省职业院校技能大赛(高职组)信息安全管理与评估赛项规程

2023年海南省职业院校技能大赛&#xff08;高职组&#xff09; 信息安全管理与评估赛项规程 一、赛项名称 赛项名称&#xff1a;信息安全管理与评估 英文名称&#xff1a;Information Security Management and Evaluation 赛项组别&#xff1a;高等职业教育 赛项归属产业&…

解决java.io.FileNotFoundException: HADOOP_HOME and hadoop.home.dir are unset.的错误

文章目录 1. 复现错误2. 分析错误3. 解决问题3.1 下载Hadoop3.2 配置Hadoop3.3 下载winutils3.4 配置winutils 1. 复现错误 今天在运行同事给我的项目&#xff0c;但在项目启动时&#xff0c;报出如下错误&#xff1a; java.io.FileNotFoundException: java.io.FileNotFoundEx…