6.1Java方法

1、方法定义: 

  • 方法是一种语法结构,它可以把一段代码封装成一个功能,以便重复调用

方法的完整格式:

修饰符  返回类型  方法名(形参列表){

        方法体代码(需要执行的功能代码)

        return  返回值;

}

package com.define;

public class MethodDemo1 {
    public static void main(String[] args) {
        //掌握定义方法的完整格式,搞清楚使用方法的好处
        //需求:加入很多程序员都要进行两个整数求和的操作
        //1、李工
        int rs=sum(10,20);
        System.out.println("和是:" + rs);
        //2、张工
        int rs2=sum(13,24);
        System.out.println("和是:" + rs2);
    }
    public static int sum(int a,int b){
        int c=a+b;
        return c;
    }//public static是方法的修饰符
}

结果:

具体运行情况与C语言的自定义函数相同5.8 5.9_C语言_函数1-CSDN博客

方法的调用流程  --Debug

 说明:

  • 方法的修饰符:目前暂时都使用public static 修饰
  • 方法声明了具体的返回值类型,内部必须使用return返回对应类型的数据。
  • 形参列表可以有多个,甚至可以没有,但如果有多个形参,多个形参必须用“,”隔开,且不能给初始化值 

使用方法的好处:

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

2、方法的其他形式: 

方法的其他形式

  • 方法定义时:需要按照方法解决的实际业务需求,来设计合理的方法形式解决问题。

1、方法是否需要接收数据处理

需要数据处理,就要定义一些形参列表,来接收数据;如果这个方法不需要接收数据来处理,这个方法就不需要设计形参列表

2、方法是否需要返回数据

注意事项:

  • 如果方法不需要返回数据,返回值类型必须申明成void(无返回值申明),此时方法内部不可以使用return返回数据

3、方法使用时的常见问题:

 4、方法的案例:

1、计算1-n的和

分析:

1、需要接收数据n的值,因此形参声明为int n

2、需要返回1-n的求和结果,因此返回值类型声明为int

3、方法内部业务:完成求1-n的和并返回

package com.define;

public class MethodTest1 {
    public static void main(String[] args) {
        int rs=add(5);
        System.out.println("1-5的和是:" + rs);
    }
    public static int add(int n){
        int sum=0;
        for(int i=1;i<=n;i++)
        {
            sum+=i;
        }
        return sum;
    }

}

2、判断一个整数是奇数还是偶数

需求:

  • 判断一个整数是奇数还是偶数,并把判断的结果输出来 

分析:

  • 1、需要接收一个整数来判断,形参声明为int number
  • 2、不需要返回数据,方法内部判断完后直接输出结果即可,无需返回,返回值类型声明为:void
  • 3、通过if判断number是奇数还是偶数,并输出结果。 
package com.define;

public class MethodTest2 {
    public static void main(String[] args) {
        judg(11);
    }
    public static void judg(int number)
    {
        if(number%2==0)
        {
            System.out.println(number + "是偶数");
        }
        else
        {
            System.out.println(number + "是奇数");
        }
    }
}

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

  • 方法被调用的时候,是进入到栈内存中运行的  栈:先进后出,用完的回清理掉

5、Java的参数传递机制

Java的参数传递机制都是:值传递

值传递:指的是在传输实参给方法的形参的时候,传输的是实参变量中存储的值的副本

实参:在方法内部定义的变量

形参:定义方法是“(...)”中所声明的参数

1、基本类型的参数传递

2、引用类型的参数传递

package com.parameter;

public class MethodDemo2 {
    //引用类型的参数传递
    public static void main(String[] args) {
        int[] arrs=new int[]{10,20,30};
        change(arrs);//这个数组变量arrs就是一个引用类型的参数,
        // 这个数组变量里面存储的就是数组的地址
        System.out.println("main:" + arrs[1]);
    }
    public static void change(int[] arrs)//arrs作为形参来接这个数组的地址
    {
        System.out.println("方法内1:" + arrs[1]);
        arrs[1]=234;
        System.out.println("方法内2:" + arrs[1]);
    }
}

 

基本类型和引用类型的参数在传递时:

  • 都是值传递
  • 基本类型的参数传输存储的数据值
  • 引用类型的参数传输存储的地址值 

6、引用类型参数传递的相关案例 

案例1

打印int类型的数组内容

需求:

  • 输出一个int类型的数组内容,要求输出格式为:[11,22,33,44,55]。

分析:

1、方法需要接收一个int类型的数组,形参声明为int[] arr

2、方法内部直接输出数组内容即可,无需返回,返回类型为void

3、方法内部:遍历数组,并输出相应的内容

package com.parameter;

public class MethodTest3 {
    public static void main(String[] args) {
        int[] arr = new int[]{11,22,33,44,55};
        printArray(arr);

        int[] arr2 =null;
        printArray(arr2);

        int[] arr3={};
        printArray(arr3);
        
    }
    public static void printArray(int[] arr){
        //要考虑接收到的参数不是空地址
        if(arr==null){//说明这个arr指向的是空地址
            System.out.println(arr);//null
            return;//跳出当前方法
        }
        System.out.print("[");
        for (int i = 0; i < arr.length; i++) {
            /*if(i==arr.length-1)
            {
                System.out.print(arr[i]);
            }
            else
            {
                System.out.print(arr[i] + ",");
            }*/
            System.out.print(i==arr.length-1 ? arr[i] : arr[i] + "," );
        }

        System.out.println("]");
    }
}

 结果:

案例2

比较两个int类型的数组是否一样,返回true或false

需求:

  • 如果两个int类型的数组,元素个数,对应位置的元素内容都是一样的则认为这两个数组是一摸一样的

分析:

1、方法需要接收两个int类型的数组,形参声明为int[] arr1,int[] arr2

2、方法判断完后需要返回true或false,返回值类型声明为boolean类型

3、方法内部:判断两个数组内容是否一样

package com.parameter;

public class MethodTest4 {
    public static void main(String[] args) {
        /*int[] arr1=null;
        int[] arr2=null;
        System.out.println(equals(arr1, arr2));//true*/

        /*int[] arr1=null;
        int[] arr2= {10,20,30};
        System.out.println(equals(arr1, arr2));//false*/

        /*int[] arr1= {10,20,30,40};
        int[] arr2= {10,20,30};
        System.out.println(equals(arr1, arr2));//false*/

        /*int[] arr1= {10,21,30};
        int[] arr2= {10,20,30};
        System.out.println(equals(arr1, arr2));//false*/

        int[] arr1= {10,20,30};
        int[] arr2= {10,20,30};
        System.out.println(equals(arr1, arr2));//true

    }
    public static boolean equals(int[] arr1,int[] arr2){
        //1、判断arr1和arr2是否都是null
        if(arr1==null&&arr2==null){
            return true;
        }
        //2、arr1或者arr2是null
        if(arr1==null || arr2==null)
        {
            return false;
        }
        //3、arr1和arr2都不为null,判断两个数组的长度是否一样,如果长度不一样,直接返回false
        if(arr1.length!=arr2.length)
        {
            return false;//不相等
        }
        //4、两个数组长度一样,接着比较他们的内容是否一样
        //arr1  =[10,20,30]
        //arr2  =[10,20,30]
        for (int i = 0; i < arr1.length; i++) {
            //判断当前位置两个位置的元素是否不一样,不一样直接返回false
            if(arr1[i] != arr2[i])
            {
                return false;//不相等
            }

        }
        return true;//两个数组是一样的
    }
}

 7、方法重载

方法重载:

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

 

为什么不会出现错误,因为在调用他们的时候是不会出现冲突的。

方法重载的注意事项

  • 一个类中,只要一些方法的名称相同、形参列表不同,那么它们就是方法重载了,其他的都不管(如:修饰符、返回值类型是否一样都无所谓)
  • 形参列表不同指的是:形参的个数、类型、顺序不同,不关心形参的名称。 

 

 

方法重载的应用场景:

  • 开发中常需要为处理一类业务,提供多种解决方案,此时用方法重载来设计是很专业的。

案例导学

开发武器系统,功能需求如下:

  • 1、可以默认发一枚武器
  • 2、可以指定地区发射一枚武器
  • 3、可以指定地区发射多枚武器
package com.overload;

public class MethodTest2 {
    public static void main(String[] args) {
        fire();
        fire("B国");
        fire("C国",999);
    }
    public static void fire()
    {
        System.out.println("默认给A国发射了一枚武器");
    }
    public static void fire(String country){
        System.out.println("发射了一枚武器给" + country);
    }
    public static void fire(String country,int number){
        System.out.println("发射了" + number + "枚武器给" + country);
    }
}

 结果:

优化:

package com.overload;

public class MethodTest2 {
    public static void main(String[] args) {
        fire();
        fire("B国");
        fire("C国",999);
    }
    public static void fire()
    {
        fire("A国");
    }
    public static void fire(String country){
        fire(country,1);
    }
    public static void fire(String country,int number){
        System.out.println("发射了" + number + "枚武器给" + country);
    }
}

结果: 

8、补充知识

在方法中单独使用return关键字

  • return:可以用在无返回值的方法中,作用是:立即跳出并结束当前方法的执行

 

return、break、continue

  • retrun:跳出并立即结束所在方法的执行
  • break:跳出并结束当前所在循环的执行
  • continue:结束当前所在循环的当次执行,进入下一次执行 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

每日一题——力扣20. 有效的括号(举一反三+思想解读+逐步优化)

一个认为一切根源都是“自己不够强”的INTJ 个人主页&#xff1a;用哲学编程-CSDN博客专栏&#xff1a;每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 专业点评 时间复杂度分析 空间复杂度分析 代码优化建议 我要更强 优化…

强烈推荐|分享6款小而美的图片美化工具

给大家分享6个我日常用到的图片美化软件&#xff0c;都是免费且好用的&#xff0c;如果大家觉得有用&#xff0c;求一个点赞收藏&#xff0c;如果点赞收藏超过60&#xff0c;后续我会继续分享&#xff0c;谢谢大家&#xff5e; 文字卡片美化&#xff1a; https://www.memocar…

C语言实现贪吃蛇小游戏(控制台)

本篇主要内容是使用C语言在Windows环境的控制台中模拟实现经典小游戏贪吃蛇。 一、准备工作 我们要实现的基本功能有&#xff1a; 地图绘制蛇吃食物的功能&#xff08;上、下、左、右方向键控制蛇的动作&#xff09;蛇撞墙死亡蛇撞自身死亡计算得分蛇身加速、减速暂停游戏 …

数据恢复大革新!EasyRecovery16版本带来UIUX及性能的重大提升

全球领先的数据恢复解决方案提供商Ontrack与其中国区总代理近日共同宣布&#xff0c;其广受欢迎的数据恢复软件EasyRecovery16迎来了重大更新&#xff0c;版本号提升至v16.0.0.5。这一更新为用户带来了一系列值得关注的新功能和改进&#xff0c;进一步巩固了EasyRecovery在数据…

Android 输入法框架流程

输入法框架流程梳理 输入法框架构成 输入法管理端&#xff08;IMMS/InputMethodManagerService&#xff09; 主要负责输入法服务端与客户端的绑定&#xff1b;输入法的切换/显示/隐藏/启用/关闭。输入法服务端&#xff08;IMS/InputMethodService&#xff09; 输入法服务&…

【C++面试50题】

以下是针对C程序员面试可能遇到的一些问题&#xff0c;涵盖了从基础语法、面向对象、STL、内存管理、模板、异常处理、并发编程等多个方面。 ### 基础概念与语法 1. C与C的主要区别是什么&#xff1f; 2. 什么是构造函数和析构函数&#xff1f;它们何时被调用&#xff1f; 3. 什…

JDK版本特性(JDK8\11\17\21版本)

JDK版本特性 Oracle官网https://www.oracle.com/java/technologies/java-se-support-roadmap.html Oracle官网中JDK版本的说明&#xff0c;Java SE 8、11、17和21是LTS版本。也就是长期支持版本。 我们针对这几个版本了解学习下对应版本的新特性。 JDK8版本 正式发布于2014…

XCP协议系列介绍02-基于ASAP2 Tool-Set生成A2l介绍

本文框架 1. 前言2. ASAP2 Tool-Set系统介绍2.1 ASAP2 Creator介绍2.2 ASAP2 Updater介绍2.3 ASAP2 Merger介绍2.4 ASAP2 Comparer及Checker介绍2.5 ASAP2 Modifier介绍2.6 ASAP2 Studio介绍 3. 项目实操说明3.1 项目实操建议3.2 工具下载地址及使用 1. 前言 在XCP观测及标定整…

【自撰写,国际象棋入门】第1课、棋盘和棋子

第1课 棋盘和棋子 一、国际象棋的棋盘 国际象棋的棋盘为一8乘8的黑、白格相间的棋盘&#xff0c;8条竖线的编号分别为A-H&#xff0c;8条横线的编号分别为1-8&#xff0c;在记谱时用竖线编号横线编号的方式表示棋盘上的格子&#xff0c;例如a1格、h8格等.棋盘上有几条重要的大…

抖音 UG 社招一面算法原题

史上最严热点新机制 或许是受到前段时间「巴黎丢作业」的影响&#xff0c;抖音近日&#xff08;5月27日&#xff09;实施了新的热点内容核实机制。 具体来说&#xff0c;若用户在抖音以热点事件当事人身份发声&#xff0c;抖音将联系当事人进行身份认证。 逾期未认证的用户&…

基于springboot实现网络海鲜市场系统项目【项目源码+论文说明】计算机毕业设计

基于springboot实现网络海鲜市场系统演示 摘要 计算机网络发展到现在已经好几十年了&#xff0c;在理论上面已经有了很丰富的基础&#xff0c;并且在现实生活中也到处都在使用&#xff0c;可以说&#xff0c;经过几十年的发展&#xff0c;互联网技术已经把地域信息的隔阂给消除…

STM32作业实现(六)闪存保存数据

目录 STM32作业设计 STM32作业实现(一)串口通信 STM32作业实现(二)串口控制led STM32作业实现(三)串口控制有源蜂鸣器 STM32作业实现(四)光敏传感器 STM32作业实现(五)温湿度传感器dht11 STM32作业实现(六)闪存保存数据 STM32作业实现(七)OLED显示数据 STM32作业实现(八)触摸按…

大学生Python自救课程总结

因为一些事情的缘故&#xff0c;我已经几乎没有更新很久了&#xff0c;然后现在快到期末了&#xff0c;不知道各位学习python的同志们慌不慌【坏笑】。 本学期&#xff0c;我只是简单的讲了讲python的基础用法。当然&#xff0c;可能有些地方总结的并不全面&#xff0c;很多知…

MyBatis 的在使用上的注意事项及其辨析

1. MyBatis 的在使用上的注意事项及其辨析 文章目录 1. MyBatis 的在使用上的注意事项及其辨析2. 准备工作3. #{ } 与 ${ } 的区别和使用3.1 什么情况下必须使用 ${ }3.1.1 拼接表名3.1.2 批量删除3.1.3 模糊查询3.1.3.1 使用 ${ }的方式3.1.3.2 使用 #{ } 的方式 4. typeAlias…

童心与美食的邂逅,蒙自源邀你共绘梦想画卷

激情夏日所带来的热情如同孩子们的梦想一样炽热而澎湃。为了庆祝六一儿童节&#xff0c;从5月25日起&#xff0c;蒙自源旗下各大门店准备了一系列的活动&#xff0c;以迎接这个属于孩子们的特别日子。 特别活动期间&#xff0c;蒙自源特意为孩子们推出了一系列独具特色的美食。…

Cobalt_Strike(CS)渗透工具安装使用到免杀上线

Cobalt_Strike&#xff08;CS&#xff09;安装到免杀上线 原文链接&#xff1a; cs免杀上线 点我 https://mp.weixin.qq.com/s?__bizMzkxNDY5NzMxNw&amp;mid2247483862&amp;idx1&amp;snc6b4da3ce5772a075431098227397baa&amp;chksmc16b3cdcf61cb5ca06f61513…

Flutter开发效率提升1000%,Flutter Quick教程之在特定位置插入Widget

当我们要将Widget插入一个Column,Row或者Listview等有多个子元素的Widget的时候&#xff0c;有两种情况&#xff0c;一种是顺序插入&#xff0c;一种是非顺序插入。顺序插入就是Widget的排列顺序和插入顺序相同&#xff0c;非顺序插入则不是。 一&#xff0c;顺序插入。如图所…

树莓派通过PCA9685控制FT2331M舵机(Python)

很久之前整过PWM舵机&#xff0c;刚好最近师弟需要&#xff0c;并且网上现有教程不是很完整&#xff0c;就整理一下。方便交流以及后面回顾。 首先要明确&#xff0c;在这个控制方式中需要用到哪些方面&#xff1a; 1、树莓派与PCA9685之间使用I2C通信 2、PCA9685通讯协议 3…

牛客网刷题 | BC113 数字三角形

目前主要分为三个专栏&#xff0c;后续还会添加&#xff1a; 专栏如下&#xff1a; C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读&#xff01; 初来乍到&#xff0c;如有错误请指出&#xff0c;感谢&#xff01; 描述 KiKi学习了循环&am…

【Text2SQL 论文】DBCopilot:将 NL 查询扩展到大规模数据库

论文&#xff1a;DBCopilot: Scaling Natural Language Querying to Massive Databases ⭐⭐⭐⭐ Code: DBCopilot | GitHub 一、论文速读 论文认为目前的 Text2SQL 研究大多只关注具有少量 table 的单个数据库上的查询&#xff0c;但在面对大规模数据库和数据仓库的查询时时却…