Java方法的调用以及方法参数传递、方法的递归调用
一、方法的调用以及方法参数传递
1、方法的定义:
访问修饰符 返回值类型 方法名 ([参数列表]){
方法体
}
如果方法体中需要一些未知的数据作为执行条件,那么这些数据可以作为参数。
如果方法需要返回数据,在定义有返回值的方法时需要明确返回值类型
方法调用的两种方式:
1、对象名.方法名(参数)
2、直接写方法名调用,但必须是static修饰的
//获取这个字符串的第一个字符
public static char method1(String str){
return str.charAt(0);//获取字符串的第一个字符
}
//方式一:调用方法
对象名.method1();
//方式二:调用静态方法(static修饰的)
String s="abc";
char c=method1(s)//s将赋值给方法的形参str,那么方法执行时str有值
//c就是方法调用后的返回值
1、方法的参数是基本数据类型,它传递的是值
//计算一个数的平方
public static int pow(int a){
a=a+2;//6
return a*a;//6*6=36
}
public static void main(String[] args){
int num=4;
int sum=pow(num);//num是实参 num赋值给a
System,out,println(num);//4
System.out.println(sum);//36
}
2、方法的参数是引用数据类型,它传递的是地址(String类型除外)
//参数 是数组类型
public static int pow(int[] arr){
arr[0]=arr[0]+2;//根据地址 改变数组的第一个元素值arr[0]=4;
return arr[0]*arr[0];//4*4
}
调用
//调用另一个pow
int[] array={2,3};
int sum2=pow(array);//array中存放数组的地址,将地址赋值给arr 形参
System.out.println(array[0]);//4
System.out.println(sum2);//16
方法的重载:
在一个类中,存在相同方法名的两个及以上的方法,且他们的参数列表不同(参数类型不同,参数个数不同,参数顺序不同),不考虑参数名,不考虑返回值类型
一个类中不能存在完全相同的方法,他们是重复的方法JVM编译不通过
例如:
public int add(int a,int b){
return a+b;
}
public int add(long a,long b){
return (int)(a+b);
}
//与前两个 不重载
public void add(int c,int d){
}
//能与 方法1,2构成重载
public void add(int a){
}
//能与 方法1,2构成重载
public void add(int a,long b){
}
//能与 方法1,2构成重载
public void add(long a,int b){
}
把握;方法名是否相同,同时参数列表是否相同(参数个数不同 或者参数类型不同或者参数顺序不同)
在一个方法中可以调用其它的方法,它们的执行流程

/**
* 程序入口
* @param args
*/
public static void main(String[] args) {
System.out.println("这里是main方法的开始");
method1();
System.out.println("这是main方法的结束");
}
// 在一个方法中可以调用另一个方法, 它们的执行顺序是这样的
public static void method1(){
System.out.println("这是method1 的开始语句块 ");
// 调用method2
method2();
System.out.println("这是method1的 结束语句块");
}
public static void method2(){
System.out.println("这是method2 的开始语句块 ");
// 调用method3
method3();
System.out.println("这是method2 的结束语句块");
}
public static void method3(){
System.out.println("这是method3的执行语句块");
}
二、方法的递归调用
1、定义
在一个方法中,运用方法自身调用,这样的调用称为方法的递归调用,为了避免出现方法调用时出现死循环,递归调用中必须定义方法结束调用的条件。
方法递归调用执行流程

public static void m3(int i){
if(i==5){
return ;
}
System.out.println("这是m3方法开始i :"+ i);
i++;
m3(i);
System.out.println("m3方法的结束 i:"+ i );
}
public static void main(String[] args) {
m3(0); //
}
练习1 : 使用递归计算一个数的阶乘
n =5 = 5! = 5*4的阶乘
f(n) = n* f(n-1) = (n-1)*f(n-1-1)
public static int f(int n ){
if(n==1){
return 1;
}
int s = n*f(n-1);
System.out.println("结束 --"+s);
return s;
}
// n =5 n=4 n=3 n=2 n=1 return 1
// s = 5*f(4) s=4* f(3) s= 3* f(2) s=2*f(1)
// s=5*24 s=4* 6 s=3* 2= 6 s=2
// s = 120
Java方法的调用以及方法参数传递、方法的递归调用的更多相关文章
- python生成器,递归调用
生成器 什么是生成器:只要在函数体内出现yield关键字,那么再执行函数就不会执行函数代码,会得到一个结果,该结果就是生成器 生成器就是迭代器 yield的功能 yield为我们提供了一种自定义迭代器 ...
- 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
5.1.5 函数的递归调用 在函数调用中,通常我们都是在一个函数中调用另外一个函数,以此来完成其中的某部分功能.例如,我们在main()主函数中调用PowerSum()函数来计算两个数的平方和,而在P ...
- Python递归调用
递归调用:在调用一个函数过程中,直接或间接又调用该函数本身,称之为递归调用 递归必备的2个阶段 1递推 2回溯 当递推结束后就可以进行回溯了 Python默认设置递归层数为1000 递归示例: de ...
- Python小白学习之路(十三)—【递归调用】
一.递归调用定义 在函数内部,可以调用其他函数. 如果在调用一个函数的过程中直接或间接调用自身本身,则称为递归调用 从某种意义上来说,递归调用可以实现无限循环 二.递归调用的特性 必须有一个明确的结束 ...
- day14函数递归调用
day14函数递归调用 1.装饰器叠加 def deco1(func1): def wrapper1(*args,**kwargs): print('=====>wrapper1 ') res1 ...
- 【Thinking in Java】编写构造器时应注意:尽量避免调用其他非private方法
最近重温了<Thinking in Java>,发现了一个让我为之兴奋的知识漏洞,必须得分享一下. 上一篇的<Java类初始化的过程>的随笔中,那个初始化顺序并不完整.初始化的 ...
- java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊
java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...
- Oracle数据库中调用Java类开发存储过程、函数的方法
Oracle数据库中调用Java类开发存储过程.函数的方法 时间:2014年12月24日 浏览:5538次 oracle数据库的开发非常灵活,不仅支持最基本的SQL,而且还提供了独有的PL/SQL, ...
- java 调用webservice的各种方法总结
java 调用webservice的各种方法总结 几种流行的开源WebService框架Axis1,Axis2,Xfire,CXF,JWS比较 方法一:创建基于JAX-WS的webservice(包括 ...
- 原!! java直接打印一个对象时,并不是直接调用该类的toString方法 ,而是会先判断是否为null,非null才会调用toString方法
网上看了好多java直接打印一个对象时,直接调用该类的toString方法 . 但是: Object obj=null; System.out.println(obj);//没有报错 System.o ...
随机推荐
- linux环境下部署mysql环境
一.部署步骤 1.将安装包上传到Linux服务器上(目录随意),然后解压缩 2.进入到解压后的目录下,分别执行以下命令安装四个包(严格按照顺序执行) rpm -ivh mysql-community- ...
- IDEA集成Gitee
配置Git 在设置里面点击Git,点击选择git安装目录下的bin目录下的git.exe,点击Test,出现版本号,证明配置成功. 配置码云 在设置里面按照下图步骤,即可成功配置码云 安装Gitee插 ...
- 使用Electron-builder将web项目封装客户端安装包 发布
背景:之前用electron-packager将web项目打包成客户端时,exe文件只能在当前文件夹下运行,如果发送给别人使用 极不方便.所以我们可以用electron-builder将web项目封装 ...
- buuctf-RE-SimpleRev
IDA 打开 将main函数反编译为C代码 1 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) ...
- 最新版本 Stable Diffusion 开源 AI 绘画工具之使用篇
目录 界面参数 采样器 文生图(txt2img) 图生图(img2img) 模型下载 界面参数 在使用 Stable Diffusion 开源 AI 绘画之前,需要了解一下绘画的界面和一些参数的意义 ...
- day84:luffy:优惠活动策略&用户认证&购物车商品的勾选/结算
目录 1.课程列表页活动和真实价格计算 1.优惠活动策略的model表结构 2.课程列表页显示优惠类型名称 3.课程列表页显示真实价格 4.将优惠类型名称和真实价格显示到前端页面上 5.课程列表页显示 ...
- day29:计算机网络概念
目录 1.网络开发的两大架构 2.网络概念 3.OSI七层模型 4.ARP协议 5.TCP三次握手和四次挥手 1.网络开发的两大架构 1.没有网络的时候,文件是如何传输的? 早期没有网络 a.py - ...
- 任务拆解,悠然自得,自动版本的ChatGPT,AutoGPT自动人工智能AI任务实践(Python3.10)
当我们使用ChatGPT完成某些工作的时候,往往需要多轮对话,比如让ChatGPT分析.翻译.总结一篇网上的文章或者文档,再将总结的结果以文本的形式存储在本地.过程中免不了要和ChatGPT" ...
- Django笔记二十五之数据库函数之日期函数
本文首发于公众号:Hunter后端 原文链接:Django笔记二十五之数据库函数之日期函数 日期函数主要介绍两个大类,Extract() 和 Trunc() Extract() 函数作用是提取日期,比 ...
- Django 静态文件 request对象方法 pycharm和Django连接MySQL Django模型层初步了解 基本的ORM操作
目录 静态文件 一.概念 静态文件:不经常变化的文件,主要针对html文件所使用到的各种资源. 例如:css文件.js文件.img文件.第三方框架文件 ps: Django针对静态文件资源需要单独在根 ...