你的必备技能 —— 方法
方法
文章目录
- 方法
- 方法介绍
- 设计方法的原则
- 方法的定义
- 方法代码实战
- 代码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调用
- 化繁为简,大道至简;
方法的参数传递
- 方法的中在调用的时候才会栈帧 (开辟空间):开辟空间不是目的,保存数据才是目的,而数据是需要空间保存的,所以才通过开辟空间保存数据
- 有两种传递参数方式:
- 传值
- 传地址
- 而 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博客>
方法的递归
- 因为方法的递归是一个重点,以及有一点不简单,所需要的篇幅可能会比较多,
- 这里就不多介绍了,想要了解的朋友可以移步止 :一递 + 一归 = 递归
最后:
每博一文案
人世间所有的相遇,其实都是前世注定每个人的所见所遇,皆是因为一场缘分。
虽然相遇每分每秒都在发生,但离别也每时每刻都在上演乍见之花,
永远抵不过九处,不厌璀璨烟火,永远比不上细水流年余生还请你珍惜这三种人:
- 珍惜那个主动联系你的人
- 珍惜业余花时间陪你人
- 珍惜那个整天惦记你的人
—————— 一禅心灵庙语
限于自身水平,其中存在的存在的错误希望大家给予指教,韩信点兵——多多益善!谢谢大家,后会有期,江湖再见!
你的必备技能 —— 方法相关推荐
- 【学习笔记】产品经理必备技能之数据分析(二)常见数据分析方法(上)
内容来自小破站<黑马程序员-产品经理必备技能之数据分析>复习自用 [学习笔记]产品经理必备技能之数据分析(二)常见数据分析方法(上) 3 常见数据分析方法 3.1 基础数据分析(日常工作) ...
- 宏基因组数据提交GSA实操手册—发表文章前必备技能
文章目录 GSA简介 开始前准备:注册/登陆 新建BioProject 数据上传 批量提交样本信息 01 提交者信息 02 基本信息 03 样本类型 04 样本属性 05 元数据信息 实验样品信息 测 ...
- DevOps \u0026 SRE 必备技能清单
导读 \\ 这个列表并非详尽无遗,只是列举了技术基础.必须知道的技能和一些随机的想法.可以用它们作为一个清单来评估你自己或其他人,或者为下一次面试DevOps/SRE(Site Reliability ...
- 求职必备技能:教你如何扒了公司的底裤!
来源: 内容整理搜集来自知乎网友: 普通人OP的回答 有不少同学在投简历的时候,一般会面临如下情况. 市面上除了一些大家耳熟能详的大公司以外,还有很多本地的小公司. 投递简历的时候遇到一些没听过或者不 ...
- 成功网页设计师的七大必备技能
成功网页设计师的七大必备技能 那么一个设计师的基础应该从哪里开始构建呢?当然,既然称之为基础,那么它必然不可能一蹴而就.经验是没有替代品的,所以系统的设计课程(无论是否 正式教育)还是很有帮助的.另 ...
- css初始化样式文件_前端必备技能 webpack 4. webpack处理CSS资源
每篇文章纯属个人经验观点,如有错误疏漏欢迎指正 因为 webpack 本身只具有识别 JS 的能力,所以涉及到其他资源,需要我们通过 loader 来进行特殊处理,针对不同的样式资源,需要以下几个 ...
- Java程序员涨薪必备技能
2019独角兽企业重金招聘Python工程师标准>>> Java程序员涨薪必备技能 Java程序员涨薪必备技能 工作1-3年,当我们向老板提出加薪的时候,或者跳槽去"捡&q ...
- 3306端口是什么协议_防黑必备技能之端口篇
- 如何查看端口占用情况 我们分windows和linux两种不同的平台分别介绍. 一.windows平台 在windows平台下,查看端口占用情况,最常见的DOS命令就是NETSTAT命令. 打开运 ...
- PMCAFF微分享 | 阿檬:如何设计好工具型软件?产品经理必备技能
本期嘉宾|阿檬 阿檬:一位比较年轻的老PM.三年来一直做纯工具类产品,没做过电商.社交.游戏.O2O,只做过360安全浏览器和360手机卫士,目前在做360清理大师. 分享地点|PMCAFF工具产品经 ...
- 一个合格的程序员,需要哪些必备技能?
对于一个Java开发来说,编程技能毋庸置疑是很重要的. 但是,除了基本的编程开发能力,其他方面的能力也是体现一个程序员的能力的很重要因素. 比如,问题排查能力.线上运维能力.项目管理能力.协调沟通能力 ...
最新文章
- 怎么让BarTender对象等间距分布
- python网上授课_python完整课程
- Python模块 - os
- 【公开课预告】:多媒体开源PI
- idea cloud bootstrap是啥_application.yml与bootstrap.yml的区别
- STM32H743+CubeMX-梳理MPU的设置
- linux强制移除pdf密码,分享|如何在 Linux 中从一个 PDF 文件中移除密码
- Panoptic FPN-Panoptic Feature Pyramid Networks用于全景分割的特征金字塔网络
- 2021筠连中学高考成绩查询,四川筠连中学2021年排名
- linux最新的发布版本号,求问Linux最新内核版本以及发布日期。
- 鳄鱼mt4复盘助手_免费MT4复盘助手2015年8月新版
- C语言中逻辑非和取反的不同
- C#服务端的微信小游戏——多人在线角色扮演(十二)
- 中国人口总数、老龄人口占比及2040人口年龄结构变化预测
- web前端大作业 (仿英雄联盟网站制作html css javascript) 学生dreamweaver网页设计作业
- 果粉沸腾,iPhone6领衔苹果最顶级明星阵容
- OPPO手机测试指令代码大全
- ubuntu 常用命令大全(转)
- [DIV/CSS] 用CSS和JS打造一个简单的图片编辑器
- Oracle Datapump实验
热门文章
- android编译环境-软硬件要求
- wifi认证_扫二维码认证登录方式详解
- php函数大小写转化,php大小写转换函数(strtolower、strtoupper)用法介绍
- python编写年金现值计算函数_Python基础(三) 汇率计算demo
- The JSP specification requires that an attribute name is preceded by whitespace 解决
- 分享一个jQuery的自动客户端本地保存插件Sisyphus.js - 帮助你自动保存用户输入内容
- ME3616-OPENCPU完整调试笔记
- JPEG文件格式分析及举例验证
- 【Unity游戏开发】动画系统(四)Unity3d动画基础
- CSS中的filter与backdrop-filter属性的异同点