【Java编程进阶】方法初识

news2024/11/24 0:57:59

在这里插入图片描述

推荐学习专栏:Java 编程进阶之路【从入门到精通】


文章目录

  • 1. Java 方法初识
  • 2. 方法的创建与使用
  • 3. 方法的分类
    • 3.1 无参无返回值
    • 3.2 无参带返回值
    • 3.3 有参无返回值
    • 3.4 有参带返回值
  • 4. 递归方法
  • 5. 总结

1. Java 方法初识

方法是组合在一起来执行操作语句的集合,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。

例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。

2. 方法的创建与使用

创建语法:

访问修饰符 返回值类型 方法名(参数列表){ 
        方法体 ;
}

示例:封装一个方法判断奇偶性

public class Test {
    public static void main(String[] args) {
        judgment(10);//结果:偶数
        int a = 11;
        judgment(a);//结果:奇数
    }

    //1.定义奇偶判断方法
    public static void judgment(int number) {
    //2.方法中使用if语句判断是奇数还是偶数

        if (number % 2 == 0) {
            System.out.println("偶数");
        } else {
            System.out.println("奇数");
        }
    }
}

3. 方法的分类

按照 Java 中方法是否带有返回值,是否带有参数,可以将方法分为四大类:

  1. 无参无返回值型
  2. 无参带返回值型
  3. 有参无返回值型
  4. 有参带返回值型

方法在使用前要先创建,创建完成之后可以在程序中调用,而不是直接运行。下面我们根据方法的不同分类分别来学习方法的使用。

3.1 无参无返回值

无参数无返回值的方法很好理解,例如封装一个方法打印 HelloWorld :

public class Test {
    public static void main(String[] args) {
        print();
    }
    public static void print( ) {
        System.out.println("HelloWorld");
    }
}

3.2 无参带返回值

我们经常会根据一个方法产出的结果,来去组织另一段代码逻辑,为了拿到这个方法产生的结果,就需要定义带有返回值的方法。

示例:封装一个方法打印 HelloWorld ,并且返回 boolean 值 true 。

public class Test {
    public static void main(String[] args) {
        boolean i= print();
        System.out.println(i);
    }
    public static boolean print( ) {
        System.out.println("HelloWorld");
        return true;
    }
}

3.3 有参无返回值

使用有参数的方法可以用同一个方法处理不同的数据。在使用有参数的方法时,必须说明参数的数据类型,否则程序报错,并且多个参数之间使用逗号分隔。

在定义有参数的方法时,要在方法中提前定义好变量,此时我们就可以在方法中使用这些变量,而在调用方法时,就是要给这些变量赋值。在定义方法时的参数叫做形参,而调用方法时的参数叫做实参。

示例:封装一个方法,计算两数之和并打印。

public class Test {
    public static void main(String[] args) {
        add(2,3);
    }
    public static void add(int a,int b) {
        int c=a+b;
        System.out.println("a+b="+(a+b));
    }
}

3.4 有参带返回值

用同一个方法处理不同的数据,且返回值用来处理另一段代码的逻辑。此时可以用有参数带返回值的方法来处理。

示例:封装一个方法,计算两数之和并返回,在主方法中打印结果。

public class Test {
    public static void main(String[] args) {
        int c = add(1, 2);
        System.out.println(c);
    }

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

4. 递归方法

递归 是一个十分重要的算法思想,使用递归可以解决实际生活中的很多问题,简单来说,递归就是一个方法直接或者间接的调用自己,从而将问题转化为本质相同但规模较小的子问题来解决。

在学习递归时,我们通常结合斐波那契数列问题一起理解其思想。

斐波那契数列,又称黄金分割数列,这个数列从第 3 项开始,每一项都等于前两项之和。在数学上,斐波那契数列以如下递推的方法定义:

在这里插入图片描述
使用递归方法实现:

public class Test {
    public static void main(String[] args) {
        System.out.println(fibonacci(50));
    }

    public static int fibonacci(int n) {

        if (n == 1 || n == 2) {             //特殊情况,分开讨论
            return 1;
        }
        if (n > 2) {
            return fibonacci(n - 1) + fibonacci(n - 2);     //递归调用
        }
        return -1;              //如果输入错误的n,一律返回-1
    }
}

我们使用一般的方法和递归算法进行对比:

public class Test {
    public static void main(String[] args) {
        System.out.println(fibonacci2(50));
    }

    public static long fibonacci2(int n) {
        if (n < 1) {
            return -1;
        }
        if (n == 1 || n == 2) {
            return 1;
        }

        long a = 1l, b = 1l, c = 0l;        //定义三个long类型整数
        for (int i = 0; i < n - 2; i++) {
            c = a + b;            //第3个数的值等于前两个数的和
            a = b;            //第2个数的值赋值给第1个数
            b = c;            //第3个数的值赋值给第2个数
        }
        return c;
    }
}

方法二我们用了 for 循环解决了斐波那契数列问题,此时,使用方法二的效率更高一点,运行时发现,当 n 的数值偏大时,使用递归算法程序明显花费更长的时间。

相信这里我们已经对递归算法有了理解,在后序的算法学习中,通过解决实际的问题,我们会对递归算法有更加深入的理解。现在学习递归的思想也可以加深对 Java 方法的理解。

5. 总结

本文浅谈了Java 方法,通过 Java 方法的分类学习了不同类型的方法的创建和使用。在学习 Javase 程序基础时,我们只需要了解方法的思想,后面在学习 Java 面向对象编程时,会进行深入的学习。


在这里插入图片描述

欢迎订阅学习Java编程进阶之路专栏,专栏文章持续更新!

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

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

相关文章

k8s收集日志

k8s收集日志 一.收集控制台日志 采用fluentdeskibana来做 所需要的文件可以在这里找 https://github.com/kubernetes/kubernetes/tree/v1.23.0/cluster/addons/fluentd-elasticsearch1.创建目录并下载所需文件 cd /root/k8s/yaml/efk [rootworker1 efk]# ll total 44 -rw-…

绝缘子红外图像检测项目(TF2)

目录 1. 项目背景 2. 图像数据集介绍 labelimg的安装流程&#xff1a; 1. 打开Anaconda Prompt&#xff08;Anaconda3&#xff09; 2. 创建一个新环境来安装labelimg 3. 激活新创建的环境labelimg 4.输入 5.输入labelimg 即可运行 3. 模型介绍 4. 模型性能测试 1. 项目…

Linux学习笔记——Linux实用操作(二)

04、Linux实用操作 4.6、IP地址、主机名 4.6.1、IP地址、主机名 学习目标&#xff1a; 掌握什么是IP地址掌握什么是主机名掌握什么是域名解析 4.6.1.1、IP地址 1、每一台联网的电脑都会有一个地址&#xff0c;用于和其它计算机进行通讯。 IP地址主要有2个版本&#xff0…

2023上半年软考高级-信息系统项目管理师【名师授课班】

信息系统项目管理师是全国计算机技术与软件专业技术资格&#xff08;水平&#xff09;考试&#xff08;简称软考&#xff09;项目之一&#xff0c;是由国家人力资源和社会保障部、工业和信息化部共同组织的国家级考试&#xff0c;既属于国家职业资格考试&#xff0c;又是职称资…

2022年圣诞节 | matlab实现炫酷的圣诞树

*2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 这里的部分代码已经在网上出现过&#xff0c;做了部分优化。是matlab版本。 一、内容介绍 这段代码是一个生成3D圣诞树的Matlab函数。运行该函数时&#xff0c;它使用圆柱函数创建圣诞树的 3D 表面&#xff0c;对…

【一】微服务技术栈导学

微服务技术栈导学什么是微服务&#xff1f;微服务技术栈注册中心配置中心服务网关分布式缓存分布式搜索消息队列分布式日志服务&系统监控和链路追踪自动化部署微服务技术栈包含知识点学习路线知识内容来自于黑马程序员视频教学和百度百科。博主仅作笔记整理便于回顾学习。如…

Android设计模式详解之适配器模式

前言 适配器模式在Android开发中使用率很高&#xff0c;如ListView、RecyclerView&#xff1b; 定义&#xff1a;适配器模式把一个类的接口变换成客户端所期待的另一个接口&#xff0c;从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作&#xff1b; 使用场景&…

2023年加密行业会更难吗?欧科云链研究院“七大趋势预测”

回望2022&#xff0c;加密行业遭遇了种种不可控因素而导致的艰难险阻&#xff0c;也在变革与发展中孕育着生机与活力。 这一年&#xff0c;我们亲眼目睹了Luna暴雷&#xff0c;三箭资本、FTX这些曾经被认为“大而不倒”的机构接连倒下&#xff0c;市场信心严重受挫&#xff1b;…

登陆港股市场,阳光保险的 “价值锚点”

不确定性环境里&#xff0c;信心比黄金还重要。 最近&#xff0c;利好信号频频出现在保险行业&#xff0c;资本信心不断加固。上个月月底&#xff0c;个人养老金制度启动实施&#xff0c;市场迅速传来喝彩声。这不仅将加快推动养老保险作为第三支柱的壮大&#xff0c;而且还为…

ARM体系架构中的存储系统

在计算机系统当中&#xff0c;数据的存储是以字节为单位的&#xff0c;每个地址单元当中都可以存放一个字节的数据&#xff0c;每个字节为8bit。在C语言中编译器为char型的数据分配了一个字节的存储空间&#xff0c;为long型的数据分配了4个字节的存储空间&#xff0c;为int型的…

【NI Multisim 14.0编辑环境——工具栏】

目录 序言 一、工具栏 &#x1f34a;1.“标准”工具栏 &#x1f34a; 2.视图工具栏 &#x1f34a;3.“主”工具栏 &#x1f34a;4.“元器件”工具栏 &#x1f34a;5.“Simulation”&#xff08;仿真&#xff09;工具栏 &#x1f34a;6.“Place probe”&#xff08;放置探针…

ARM64内存虚拟化分析(2)常用结构体

内存虚拟化相关的几个重要结构体如下图所示&#xff1a; 这里介绍几个结构体以及相互之间有关系。 &#xff08;1&#xff09;AddressSpace结构体 它用于表示一个虚拟机或虚拟CPU能够访问的所有物理地址。其中&#xff1a; root&#xff1a;指向根MR Current_map&#xff1…

营销在中国

&#xff08;1&#xff09;4P、4C、4R、4I作为一个企业&#xff0c;不外乎就是两个是&#xff1a;产-销。你生产-客户购买&#xff0c;这个交易能做成&#xff0c;不外乎在于交换的价值&#xff0c;以及交易的价格-成本。一、4P4P&#xff0c;是美国密歇根大学教授杰罗姆麦卡锡…

向量的点乘与X乘以及意义

一、向量的点乘 向量的点乘&#xff08;dot&#xff09;是一个标量积&#xff0c;也叫向量的内积、数量积。 点乘公式&#xff1a; 有向量a b a(a1,a2,a3,...,an) b(b1,b2,b3,...,bn); 那么向量a(dot)ba1b1a2b2a3b3....anbn 从上面我们能可以看出&#xff0c;点乘得到的结…

2022年个人融资方法和工具研究报告

第一章 理论和概况 1.1 融资概念 融资&#xff0c;英文为Financing&#xff0c;指为支付超过现金或转账的购货款而采取的货币交易手段&#xff0c;或者为取得特定资产而筹集资金所采取的货币手段。融资通常指货币资金的持有者和需求者之间&#xff0c;直接或间接地进行资金融…

Appium基础 — 模拟手势点击坐标

1、模拟手势点击坐标 在定位元素的时候&#xff0c;你使出了十八班武艺还是定位不到&#xff0c;怎么办呢&#xff1f;&#xff08;面试经常会问&#xff09; 那就拿出绝招&#xff1a;点击元素所在位置的坐标。&#xff08;坐标定位&#xff09; 详细说明&#xff1a; 如下…

OpenWrt无法打开国内网站的解决方法

最近小半个月以来根据lean和lieno源码编译的OpenWrt固件在使用了smartdns之后会出现无法打开国内网页的情况。 诡异的是&#xff0c; 重启防火墙之后&#xff0c; 能正常访问百度等国内网站&#xff0c; 但是&#xff0c; 过上一段时间&#xff0c; 就又不行了。 在经过近一个…

示波器应用(三)

示波器可做什么&#xff1f; 基础材质检查环境搭建校验 相似材质之间的细微差异分析 场景调光依据/竞品分析 定位曝光、色相问题 风格化调色监视 LUTs检查 材质检查 单看上图的分量示波器&#xff0c;仔细想一想这张图是什么色相&#xff1f; 公布答案 分量示波器rgb模…

电子采购方案:构建高效智能数字化采购

过去几十年&#xff0c;公用事业行业发生了重大变化。能源需求的转变导致企业利润率的波动&#xff0c;但不是运营成本的波动。 许多公用事业公司通过后勤部门流程自动化来削减成本&#xff0c;比如招采流程自动化。 在招采活动中&#xff0c;人工招采会产生盲点。由于公共事业…

Vue(一)

1.Vue简介 将html/css/js封装到vue里&#xff0c;形成一个组件&#xff0c;改动某个组件里内容不会影响另一个 要实现将左边数据变成li的形式放进容器里面&#xff0c;传统实现方式&#xff1a; vue形式编码简易实现:指令实现 Diff会跟原来的比较&#xff0c;跟原来一样的会直接…