Java实验方法参数传递与递归_4.3类的结构之二:方法(return,重载,可变个数形参,值传递,递归)...

类的设计中,两个重要结构之二:方法

* 方法:描述类应该具有的功能。

* 比如:Math类:sqrt()\random()\ ..

* Scanner类:nextXxx() ..

* Arrays类:sort()\binarySearch()\toString()\equals()\..

*

* 1.举例:

* public void eat(){}

* public void sleep(int hour){}

* public String getName(){}

* public String getNation(String nation){}

*

*

* 2.方法的声明:权限修饰符 返回值类型 方法名(形参列表){

* 方法体

* }

*

* 3.说明:

* 3.1关于权限修饰符:默认方法的权限修饰符为public

* Java规定的4种权限修饰符 public,private,缺省,protected

*

* 3.2返回值类型:有返回值 vs 没有返回值

* 3.2.1如果方法有返回值,则必须在方法声明时,指定返回值的类型、同时、方法中,

* 需要使用return关键字来返回指定类型的变量或常量。"return 数据"

* 如果方法没有返回值,则方法声明时,使用void来表示。通常,没有返回值的方法中,

* 就使用return。但是,如果使用的话,只能"return;"表示结束此方法的意思

*

* 3.2.2我们定义方法该不该有返回值?

* ①题目要求

* ②凭经验,具体问题具体分析

*

* 3.3方法名:属于标识符,遵循标识符的规则和规范:“见名知意”

*

* 3.4形参列表:方法可以声明0个,1个,或多个形参。

* 3.4.1格式:数据类型1 形参1, 数据类型2 形参2,......

* 3.4.2我们定义方法时,该不该定义形参?

* ①题目要求

* ②凭经验,具体问题具体分析

*

* 3.5方法体:方法功能的体现。

* 4.方法的使用中,可以调用当前类的属性或方法

* 特殊的:方法A中又调用了方法A :递归方法

* 方法中,不可以定义方法a739ef1ba60c42f0cacc586144e75f71.png

return关键字:

1.使用范围:使用在方法体中

2.作用:

①结束方法

②针对于有返回值类型的方法,使用“return 数据”方法返回所要的数据

3.注意点:return关键字后面不可以声明执行语句。a739ef1ba60c42f0cacc586144e75f71.png

1.方法的重载的概念

在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可

总结:

"两同一不同”:同一个类、相同方法名

参数列表不同:参数个数不同,参数类型不同

2.

构成重载的举例:

举例一:Arrays类中重载的sort()/binarySearch();printStream中的println()

举例二:

//如下的4个方法构成了重载

public void getSum(int i, int j) {

System.out.println("1");

}

public void getSum(double d1, double d2) {

System.out.println("2");

}

public void getSum(String s, int i) {

System.out.println("3");

}

public void getSum(int i, String s) {

System.out.println("4");

}

/*public int getSum(int i,int j){

return 0;

}*/

不构成重载的举例:

//如下三个方法不构成重载

/*public int getSum(int i,int j){

return 0;

}

public void getSum(int m,int n){

}

private void getSum(int i,int j){

}

*/

3.如何判断是否构成方法的重载?

严格按照定义判断:两同一不同。

跟方法的权限修饰符、返回值类型、形参变量名、方法体都没有关系!

4.如何确定类中某一个方法的调用:

方法名 -----> 参数列表

面试题:方法的重载与重写的区别?

没有关系

throws\throw

String\StringBuffer\StringBuilder

Collection\Collectons

final\finally\finalize

...

抽象类、接口

sleep() /wait()a739ef1ba60c42f0cacc586144e75f71.png

1.使用说明:

* 1.jdk 5.0新增的内容

* 2.具体使用:

*  2.1 可变个数形参的格式:数据类型 ... 变量名

*  2.2 当调用可变个数形参的方法时,传入的参数个数可以是:0个,1个,2个,....

*  2.3 可变个数形参的方法与本类中方法名相同,形参不同的方法之间构成重载

*  2.4 可变个数形参的方法与本类中方法名相同,形参类型也相同的数组之间不构成重载。(二者不能共存)

*  2.5 可变个数形参在方法的形参中,必须声明在末尾

*  2.6 可变个数形参在方法的形参中,最多只能声明一个可变形参。

2.举例说明:

public void show(int i){

}

public void show(String s){

System.out.println("show(String)");

}

public void show(String ... strs){

System.out.println("show(String ... strs)");

for(int i=0;i

System.out.println(strs[i]);

}

}

//不能与上一个方法同时存在。

/*public void show(String[] strs){

System.out.println("show(String ... strs)");

}*/

调用时:

test.show(12);

test.show("hello");

/*test.show("hello","world");

test.show();*/

test.show("AA","BB","CC");

test.show(new String[]{"AA","BB","CC"});a739ef1ba60c42f0cacc586144e75f71.png

1.针对于方法内变量的赋值举例:

System.out.println("***********基本数据类型:***************");

int m = 10;

int n = m;

System.out.println("m=" + m + ",n=" + n);

n = 20;

System.out.println("m=" + m + ",n=" + n);

System.out.println("*****************");

System.out.println("***********引用数据类型:***************");

Order o1 = new Order();

o1.orderId = 1001;

Order o2 = o1;//赋值以后,o1和o2的地址值相同,都指向了堆空间中的同一个对象实体。

System.out.println("o1.orderId=" + o1.orderId + ",o2.orderId=" + o2.orderId);

o2.orderId = 1002;

System.out.println("o1.orderId=" + o1.orderId + ",o2.orderId=" + o2.orderId);

规则:

* 如果变量是基本数据类型,此时赋值的是变量所保存的数据值。

* 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。

2.针对于方法的参数概念

形参:方法定义时,声明的小括号内的参数

实参:方法调用时,实际传递给形参的数据

3.java中参数传递机制:值传递

规则:

* 如果参数是基本数据类型,此时实参赋给形参的是实参真实存储的数据值。

* 如果参数是引用数据类型,此时实参赋给形参的是实参存储数据的地址值。

推广:

* 如果变量是基本数据类型,此时赋值的是变量所保存的数据值。

* 如果变量是引用数据类型,此时赋值的是变量所保存的数据的地址值。

4.典型例题与内存解析:

【例题1】3f4349e9a474e537a512298f701d2e7b.png

【例题2】c00dfc581b25eecf26557a75fb77b777.png

1.定义:

递归方法:一个方法体内调用它自身。

2.如何理解递归方法?

>方法递归包含了一种隐式的循环,它会重复执行某段代码,但这种重复执行无须循环控制。

>递归一定要向已知方向递归,否则这种递归就变成了无穷递归,类似于死循环。

3.举例

//例1:计算1-100之间所有自然数的和

public int getSum(int n) {

if (n == 1) {

return 1;

} else {

return n + getSum(n - 1);

}

}

//例2:计算1-100之间所有自然数的乘积

public int getSum1(int n) {

if (n == 1) {

return 1;

} else {

return n * getSum1(n - 1);

}

}

//例3:已知有一个数列:f(0)=1,f(1)=4,f(n+2)=2*f(n+1)+f(n),

//其中n是大于0的整数,求f(10)的值

public int f(int n) {

if (n == 0) {

return 1;

} else if (n == 1) {

return 4;

} else {

//            return f(n+2)-2*f(n+1);

return 2 * f(n - 1) + f(n - 2);

}

}

//例4.斐波那契数列1 1 2 3 5 8 13 21 34 55

//例5.汉诺塔问题

//例6.快排a739ef1ba60c42f0cacc586144e75f71.png

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

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

相关文章

钢琴块2电脑版_快陪练教师端电脑版下载_快陪练教师端pc版免费下载[在线教学]...

快陪练教师端电脑版是一款钢琴陪练教师的在线教学软件,快陪练教师端电脑版支持语音互动功能。快陪练教师端电脑版可以帮助老师在线教孩子学习钢琴,软件可以让用户清晰地看到学生弹钢琴时的指法,并及时为其纠正不正确的指法,它引入…

LeetCode 1105. 填充书架(DP)

文章目录1. 题目2. 解题1. 题目 附近的家居城促销,你买回了一直心仪的可调节书架,打算把自己的书都整理到新的书架上。 你把要摆放的书 books 都整理好,叠成一摞:从上往下,第 i 本书的厚度为 books[i][0]&#xff0c…

python字符串前面加上序号_简单了解python字符串前面加r,u的含义

这篇文章主要介绍了简单了解python字符串前面加r,u的含义,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下u/U:表示unicode字符串不是仅仅是针对中文, 可以针对任何的字符串,代表是对字符串进行unicod…

java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

一、通过配置文件控制静态资源的热部署在配置文件 application.properties 中添加:#表示从这个默认不触发重启的目录中除去static目录spring.devtools.restart.excludeclasspath:/static/**或者使用:#表示将static目录加入到修改资源会重启的目录中来spr…

判断深度学习模型的稳定性_全自动搭建定制化深度学习模型

EasyDL服务自动化生成与部署EasyDL定制化训练和服务平台基于百度业界领先算法,旨在为用户量身定制业务专属AI模型。通过灵活的配置,用户可以将模型发布为公有云API、设备端离线SDK、本地服务器部署包、软硬一体方案等多种输出方式的AI服务。目前&#xf…

Android应用程序消息处理机制(Looper、Handler)分析

文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6817933 Android应用程序是通过消息来驱动的,系统为每一个应用程序维护一个消息队例,应用程序的主线程不断地从这个消息 队例中…

冒泡排序和选择排序区别_你以为只是简单的排序?(一)

一直在犹豫要不要写排序的文章,因为真的烂大街了。可是一旦细看,还真是很多值的思考的地方,所以还是选择记录一下以下完整代码,均可从这里获取https://github.com/Rain-Life/data-struct-by-go/tree/master/sort排序算法效率分析了…

java hash 分库分表_分库分表方案

摘自:Java技术栈一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以…

verilog设计简易正弦波信号发生器_信号发生器工作原理是什么

信号发生器是指产生所需参数的电气测试信号的仪器。根据信号波形可分为四类:正弦信号、函数(波形)信号、脉冲信号和随机信号发生器。那么信号发生器工作原理是什么?听听广州荣鑫电子怎么说。信号发生器又称信号源或振荡器&#xf…

LeetCode 1780. 判断一个数字是否可以表示成三的幂的和(位运算)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n ,如果你可以将 n 表示成若干个不同的三的幂之和,请你返回 true ,否则请返回 false 。 对于一个整数 y ,如果存在整数 x 满足 y3xy 3^xy3x,我们称这个整数 y 是三的幂…

Android “再按一次退出“

1 Override2 public boolean onKeyDown(int keyCode, KeyEvent event) {3 if (keyCode KeyEvent.KEYCODE_BACK) 4 {5 if ((System.currentTimeMillis() - mExitTime) > 2000) { //第一种:判断2次按后退键间隔是否在2秒内6 …

python群控安卓_Github优秀项目推荐,安卓设备免Root实现低延迟投屏和远控

暑假找了个暑假工,没办法人总是要吃饭嘛,Weiney也不例外。亲戚家的小公司想做移动app引流,当然我是完全不懂什么引流,我也就做个打杂的工作。别看我技术一般,在这个不大的公司我还是唯一专业对口的技术人才呢&#xff…

.net pdf转图片_pdf2image类库实现批量pdf转图片

通过pdf2image来实现对PDF文件的处理工作,我们本次主要做的是将PDF文件批量转成图片。之前写过批量提取封面的文章,但是在后期的深入编写过程中遇到一些问题,近期再次深入编写程序,一起来看看代码吧!python一、说明本次…

java 悬浮提示框_表格(悬浮框提示)

JTable的ToolTip提示和其它的组件提示是一样的,因为它们都是继承于Jcomponent,当我们需要为我们的单元格实现ToolTip的时候,只需要复写它的getToolTipText方法就可以了,看看Sun官方的例子://Implement table cell tool tips.OverridepublicString getToolTipText(Mo…

linux远程工具_【linux实操3.1】linux远程连接工具Secure的使用

把自己的闲置笔记本用来做centos7服务器了,同时也出一期教程,记录自己同时也帮助需要的人;安排如下1、【linux实操1】华硕笔记本安装centos7实战2、【linux实操2】使用yum在命令行安装常用工具3、【linux实操3】安装漂亮的桌面xfce桌面**记录…

IOS--UIAlertView的使用方法详细

IOS--UIAlertView的使用方法详细 // UIAlertView的常用方法 // 标准样式 UIAlertView *oneAlertView [[UIAlertView alloc] initWithTitle:"标题"message:"提示内容" delegate:self cancelButtonTitle:"关闭"otherButtonTitles:"OK"…

afreecatv 回放下载_行车记录仪怎么看回放?行车记录仪停车后能自动录像吗

点击上面蓝色字↑↑↑即可免费订阅!请喜欢的朋友请转发和分享,让更多朋友看到汽车知识天天学 (微信号:qiche92 )  行车记录仪最关键的一个部件,它就是储存零件——TF卡(内存卡)。在购买行车记录仪时,TF卡并不是标配&…

linux导出mysql下ssl证书_Linux系统下生成证书 https证书

平时都是用oneinstack加密https现在因为本地调试 需要https就找到这篇文章Linux系统下生成证书生成秘钥key,运行:$ openssl genrsa -des3 -out server.key 20481会有两次要求输入密码,输入同一个即可输入密码然后你就获得了一个server.key文件.以后使用此文件(通过openssl提供的…

lstm原始论文_有序的神经元——ON-LSTM模型浅析

尽管最近出现的Transformer系列的模型在nlp领域内很流行,但RNN仍然有着重要的地位。本文介绍的模型来自于ICLR 2019的最佳论文之一,它针对自然语言具有语法分层的特点,对原有的LSTM模型的结构做出了改进,使得新模型不仅具有更好的…

malloc函数详解

一、原型&#xff1a;extern void *malloc(unsigned int num_bytes); 头文件&#xff1a;#include <malloc.h> 或 #include <alloc.h> (注意&#xff1a;alloc.h 与 malloc.h 的内容是完全一致的。) 功能&#xff1a;分配长度为num_bytes字节的内存块 说明&#xf…