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 ...
随机推荐
- MarkdownStudy03JDK
卸载JDK 删除jdk文件夹 删除配置环境(计算机>属性>高级>系统变量中的JAVA_HOME和Path) 删除JAVA_HOME环境变量 删除path环境变量 用dos窗口查看是否 ...
- vue3 ts 类式写法的mixins
vue-property-decorator 混入(mixins) // mixins.ts import { Vue } from 'vue-property-decorator' class Mi ...
- [ElasticSearch]#解决问题#修改Search Guard密码时 报错:ERR: Seems there is no Elasticsearch running on localhost:9300 - Will exit
问题复现 [root@es2 tools]# ps -ef | grep elasticsearch 9200 22693 1 1 09:31 ? 00:04:54 /usr/bin/java -Xm ...
- group_concat_max_len设置过小致group_concat()排列不全
问题描述:group_concat_max_len默认值1024导致group_concat函数排列显示不足 group_concat_max_len长度显示跟group_concat排列长度息息相关 ...
- 基于SqlSugar的开发框架循序渐进介绍(27)-- 基于MongoDB的数据库操作整合
SqlSugar的开发框架本身主要是基于常规关系型数据库设计的框架,支持多种数据库类型的接入,如SqlServer.MySQL.Oracle.PostgreSQL.SQLite等数据库,非关系型数据库 ...
- 2.JAVA入门基础知识
数据类型: java的数据类型分为两大类:基本类型和引用类型 基本类型: 整数类型: byte 一个字节 -128-127 short 2个字节 32768-32767 int 4个字节 很大 lon ...
- gradle下载
gradle下载:https://services.gradle.org/distributions/src.zip源码 .bin.zip安装文件.all.zip源码+安装文件 配置环境变量.
- Docker高级
一.Docker安装企业级开发应用 1.Docker搭建MySQL主从 (1) 创建master主机MySQL docker run -p 3307:3306 --name mysql-master ...
- 【学习笔记】【题解】树形依赖 DP 选做
地址:https://www.cnblogs.com/FReQuenter5156/p/shuxingyilaidp.html/ 简介 这类背包本质上是分组背包问题. 将一个节点的每一棵子树看作一组, ...
- MySQL-分组函数ROLLUP的基本用法
一.ROLLUP简介 ROLLUP是GROUP BY子句的扩展. ROLLUP选项允许包含表示小计的额外行,通常称为超级聚合行,以及总计行. 通过使用ROLLUP选项,可以使用单个查询生成多个分组集. ...