方法

文章目录

  • 方法
    • 方法介绍
    • 设计方法的原则
    • 方法的定义
    • 方法代码实战
      • 代码1:
      • 代码2:
      • 代码3:
      • 代码4:
    • 方法的参数传递
      • 代码:
    • 方法的重载
      • 参数个数不同
        • 代码:
      • 类型不同
        • 代码:
      • 顺序的不同
        • 代码:
      • 方法的重载与返回类型是无关的
        • 代码:
      • 方法重载的报错原因:
    • 方法的递归
    • 最后:
      • 每博一文案

方法介绍

  • Java中的方法等同于C语言中的函数
  • 是能够模块化的组织代码(当代码规模比较复杂的时候),做到代码被重复利用,一份代码可以在斗个位置是使用,让代码更好的理解,更为简单
  • 可以直接调用现有的方法开发,不必重复造轮子、

设计方法的原则

  • 方法的本意是功能块,就是某个功能的语句块的集合,我们设计方法的时候,最好保持方法的原子性:就是一个方法只完成一个功能,这样利于我们后期的扩展
  • 方法名采用小驼峰的命名方式

方法的定义


方法代码实战

  • 判断两个数值的最大值的需求:
  • 使用不同的形式表示:

代码1:


public class Study1 {/*求返回一个最大值*/public static void main (String[] args) {int num = max(99,100);System.out.println("最大值为:"+num);}public static int max (int x,int y) {return x > y ? x : y;}
}

代码2:


public class Study1 {/*求返回一个最大值的进一步探究*/public static void main (String[] args) {Study1 max = new Study1();int num = max.max1(0,99);System.out.println("最大值为:"+num);}public static int max2 (int x,int y) {return x > y ? x : y;}
}

代码3:


public class Study1 {/*求三个数值的最大值的探究*/public static void main (String[] args) {Study1 max3 = new Study1();int num = max3(1,10,100);System.out.println("最大值为:"+num);}public static int max3 (int x,int y ,int c) {int max = x > y ? x : y ;max = max > c ? max : c;return max;}
}

代码4:


public class Study1 {/* 求三个数值的最大值的进一步探究*/public static void main (String[] args) {int max = max4(max4(1,10),100);System.out.println("最大值为:"+max);}public static int max4(int x,int y) {if( x > y) {return x;} else {return y;}}
}

上述代码: 第 5 行代码的解析:int max = max4 ( max4(1,10),100 );

  • 首先从内向外,对(max4)中的 max4( 1, 10 )的方法调用,得到返回值,再对外部的 max4 (得到的返回值,100 );进行方法的i调用
  • 化繁为简,大道至简;

方法的参数传递

  • 方法的中在调用的时候才会栈帧 (开辟空间):开辟空间不是目的,保存数据才是目的,而数据是需要空间保存的,所以才通过开辟空间保存数据
  • 有两种传递参数方式:
    1. 传值
    2. 传地址
  • Java 当中是没有传地址的说法,只有传值的说法
  • 方法的形参,实参

  • 所以形参的改变,不会对实参有任何的影响
  • 经典例题

代码:


public class Study2 {// 实参,形参的关系:交换两个数值public static void main (String[] args) {int a = 10;int b = 100;System.out.println("输出交换之前的数:"+"a ="+a+","+"b ="+b);exchangeNum(a,b);System.out.println("输出交换之后的数:"+"a ="+a+","+"b ="+b);}public static void exchangeNum(int num1 ,int num2) {int tmp = 0;tmp = num2;num2 = num1;num1 = tmp;}
}

结果:

  • 我们可以发现其两个数并没有被交换成功
  • 其原因,请看下图:解析


方法的重载

  • 方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的形参列表。

  • 方法名称**必须**相同

  • 参数列表必须不同**(个数不同,或类型不同,或排列顺序不同)** 一定要满足其中的三个人中任意一个

  • 方法重载与修饰符和返回类型无关

  • 实现理论:

    • 方法名称相同时,编译器会根据调用方法的参数的个数,参数类型等去逐个匹配,已选择对应的方法,如果匹配失败,则编译器报错。
  • 下面验证:


参数个数不同

代码:


public class Study2 {//    方法的重载探究public static void main (String[] args) {int threeSum = add(10,10,10);System.out.println("三个数值的和 "+threeSum);int twoSum = add(10,10);System.out.println("两个数值的和 "+twoSum);}// 求两个数的和public static int add (int x,int y) {return x+y;}// 求三个数的和:public static int add (int x,int y,int z) {return x+y+z;}
}

结果:


类型不同

代码:


public class Study2 {//    方法的重载探究/*参数类型的不同*/public static void main (String[] args) {System.out.println("两个浮点数的和:"+add(10.0,10.0));System.out.println("两个整数的和:"+add(10,10));}/*求两个浮点数的和*/public static double add (double x,double y) {return x+y;}/*求两个整数的和*/public static int add (int x,int y) {return x+y;}
}

结果


顺序的不同

  • 其实你会发现顺序的不同和类型的不同是 一样的,只是参数的顺序不同,而已;

代码:


public class Study2 {//    方法的重载探究/*求顺序的不同*/public static void main (String[] args) {System.out.println("返回类型为double方法的调用的值:"+add(10,10.0));System.out.println("返回类型int方法的调用的值:"+add(10.0,10));}public static double add (int x,double y) {return x+y;}public static int add (double x,int y) {return (int)(x+y);}
}

结果:


方法的重载与返回类型是无关的

  • 我们改变方法的返回类型是不行的,编译器会发生报错的
  • 改变方法中参数的命名(自定义的标识符)也是不行的,编译器同样会报错呢

代码:



方法重载的报错原因:

  • 方法同变量一样不可以重复定义,定义会开辟空间,不可以对同一个变量多次开辟空间,方法也是一样的不可以对同一个方法多次开辟空间,所以同一个变量,方法只能定义一次,
  • 但是声明可以多次,声明不会开辟空间,只是告诉你有这么个东西。
  • 关于定义,和声明更加详细介绍,可以移步到 <(93条消息) 一点都不安静的 ——static_月光下的编程魔术师的博客-CSDN博客>

方法的递归

  • 因为方法的递归是一个重点,以及有一点不简单,所需要的篇幅可能会比较多,
  • 这里就不多介绍了,想要了解的朋友可以移步止 :一递 + 一归 = 递归

最后:

每博一文案

人世间所有的相遇,其实都是前世注定每个人的所见所遇,皆是因为一场缘分。

虽然相遇每分每秒都在发生,但离别也每时每刻都在上演乍见之花,

永远抵不过九处,不厌璀璨烟火,永远比不上细水流年余生还请你珍惜这三种人:

  1. 珍惜那个主动联系你的人
  2. 珍惜业余花时间陪你人
  3. 珍惜那个整天惦记你的人

​ —————— 一禅心灵庙语

限于自身水平,其中存在的存在的错误希望大家给予指教,韩信点兵——多多益善!谢谢大家,后会有期,江湖再见!

你的必备技能 —— 方法相关推荐

  1. 【学习笔记】产品经理必备技能之数据分析(二)常见数据分析方法(上)

    内容来自小破站<黑马程序员-产品经理必备技能之数据分析>复习自用 [学习笔记]产品经理必备技能之数据分析(二)常见数据分析方法(上) 3 常见数据分析方法 3.1 基础数据分析(日常工作) ...

  2. 宏基因组数据提交GSA实操手册—发表文章前必备技能

    文章目录 GSA简介 开始前准备:注册/登陆 新建BioProject 数据上传 批量提交样本信息 01 提交者信息 02 基本信息 03 样本类型 04 样本属性 05 元数据信息 实验样品信息 测 ...

  3. DevOps \u0026 SRE 必备技能清单

    导读 \\ 这个列表并非详尽无遗,只是列举了技术基础.必须知道的技能和一些随机的想法.可以用它们作为一个清单来评估你自己或其他人,或者为下一次面试DevOps/SRE(Site Reliability ...

  4. 求职必备技能:教你如何扒了公司的底裤!

    来源: 内容整理搜集来自知乎网友: 普通人OP的回答 有不少同学在投简历的时候,一般会面临如下情况. 市面上除了一些大家耳熟能详的大公司以外,还有很多本地的小公司. 投递简历的时候遇到一些没听过或者不 ...

  5. 成功网页设计师的七大必备技能

    成功网页设计师的七大必备技能 那么一个设计师的基础应该从哪里开始构建呢?当然,既然称之为基础,那么它必然不可能一蹴而就.经验是没有替代品的,所以系统的设计课程(无论是否  正式教育)还是很有帮助的.另 ...

  6. css初始化样式文件_前端必备技能 webpack 4. webpack处理CSS资源

    每篇文章纯属个人经验观点,如有错误疏漏欢迎指正   因为 webpack 本身只具有识别 JS 的能力,所以涉及到其他资源,需要我们通过 loader 来进行特殊处理,针对不同的样式资源,需要以下几个 ...

  7. Java程序员涨薪必备技能

    2019独角兽企业重金招聘Python工程师标准>>> Java程序员涨薪必备技能 Java程序员涨薪必备技能 工作1-3年,当我们向老板提出加薪的时候,或者跳槽去"捡&q ...

  8. 3306端口是什么协议_防黑必备技能之端口篇

    - 如何查看端口占用情况 我们分windows和linux两种不同的平台分别介绍. 一.windows平台 在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令. 打开运 ...

  9. PMCAFF微分享 | 阿檬:如何设计好工具型软件?产品经理必备技能

    本期嘉宾|阿檬 阿檬:一位比较年轻的老PM.三年来一直做纯工具类产品,没做过电商.社交.游戏.O2O,只做过360安全浏览器和360手机卫士,目前在做360清理大师. 分享地点|PMCAFF工具产品经 ...

  10. 一个合格的程序员,需要哪些必备技能?

    对于一个Java开发来说,编程技能毋庸置疑是很重要的. 但是,除了基本的编程开发能力,其他方面的能力也是体现一个程序员的能力的很重要因素. 比如,问题排查能力.线上运维能力.项目管理能力.协调沟通能力 ...

最新文章

  1. 怎么让BarTender对象等间距分布
  2. python网上授课_python完整课程
  3. Python模块 - os
  4. 【公开课预告】:多媒体开源PI
  5. idea cloud bootstrap是啥_application.yml与bootstrap.yml的区别
  6. STM32H743+CubeMX-梳理MPU的设置
  7. linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码
  8. Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
  9. 2021筠连中学高考成绩查询,四川筠连中学2021年排名
  10. linux最新的发布版本号,求问Linux最新内核版本以及发布日期。
  11. 鳄鱼mt4复盘助手_免费MT4复盘助手2015年8月新版
  12. C语言中逻辑非和取反的不同
  13. C#服务端的微信小游戏——多人在线角色扮演(十二)
  14. 中国人口总数、老龄人口占比及2040人口年龄结构变化预测
  15. web前端大作业 (仿英雄联盟网站制作html css javascript) 学生dreamweaver网页设计作业
  16. 果粉沸腾,iPhone6领衔苹果最顶级明星阵容
  17. OPPO手机测试指令代码大全
  18. ubuntu 常用命令大全(转)
  19. [DIV/CSS] 用CSS和JS打造一个简单的图片编辑器
  20. Oracle Datapump实验

热门文章

  1. android编译环境-软硬件要求
  2. wifi认证_扫二维码认证登录方式详解
  3. php函数大小写转化,php大小写转换函数(strtolower、strtoupper)用法介绍
  4. python编写年金现值计算函数_Python基础(三) 汇率计算demo
  5. The JSP specification requires that an attribute name is preceded by whitespace 解决
  6. 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
  7. ME3616-OPENCPU完整调试笔记
  8. JPEG文件格式分析及举例验证
  9. 【Unity游戏开发】动画系统(四)Unity3d动画基础
  10. CSS中的filter与backdrop-filter属性的异同点