java--带参方法 递归阶乘
package com.test.day01;
//
public class TestParam {
public void f1(int n){
n =0;
}
public static void main(String[] args) {
TestParam testParam = new TestParam();
int n = 9;
testParam.f1(n);
System.out.println(n);
} }
思考:上面的代码运行结果输出的是0还是9 答案是9 因为调用一个方法就会在栈里面开辟空间,这时候0在一个空间 9在一个空间。那么结果不会随着方法的调用而改变
那么什么时候会改变呢?
package com.test.day01;
//
class Param{
int value;
}
public class TestParam {
//讲Param类作为类型
public void f2(Param p){
p.value=99;
}
public static void main(String[] args) {
TestParam testParam = new TestParam();
Param pc = new Param();
pc.value=22;
testParam.f2(pc);
System.out.println(pc.value);
} }
思路:引用传递是地址的传递,这里面使用了同一个地址,也就是都指向99 所以结果是99 如果在 f2里面再次创建一个对象的话,就会在堆里面创建对象,就会有新的地址。结果就会是22
使用引用参数求5个数的和:
package com.test.day01;
// public class TestParam {
//创建一个求和的方法
public int num(int n1,int n2,int n3,int n4,int n5){
return n1+n2+n3+n4+n5;
}
public static void main(String[] args) {
//求5个数的和
TestParam tp = new TestParam();
int sum = tp.num(88, 99, 54, 78, 90);
System.out.println(sum);
}
}
上述的代码虽然完成5个数的求和,但是如果遇到很多个数求和那么显然这样的方式是不可取的。那么怎么解决呢?传参的时候使用引用数据类型数组然后for循环的方式;
package com.test.day01;
// public class TestParam {
//创建一个求和的方法 //定义一个求和的方法
public int sum(int [] arr){
int sum =0;
for (int i = 0; i < arr.length; i++) {
sum += arr[i];
}
return sum;
}
public static void main(String[] args) {
TestParam testParam = new TestParam();
int [] a={6542,3,5,7,4,2,4,67,8,3,56,8,534,3,2,6,6,8,9,4,2};
int num = testParam.sum(a);
System.out.println(num);
} }
定义一个数组,存储3名学员的基本信息,编写方法计算学员的总成绩。
package com.test.day01;
class Student{
//姓名 性别 年龄 分数
double scoer;
char sex;
String name;
int age;
}
//管理类
class Manager{
public double sum(Student [] stus){
int sum =0;
for (int i = 0; i < stus.length; i++) {
sum += stus[i].scoer;
}
return sum;
}
}
public class TestStudent { public static void main(String[] args) {
// TODO Auto-generated method stub
Student xiaolongnv = new Student();
xiaolongnv.scoer=100;
Student mucheng = new Student();
mucheng.scoer=84.5;
Student zzhangruocheng = new Student();
zzhangruocheng.scoer=69.3;
Student [] stus={xiaolongnv,mucheng,zzhangruocheng};
double num = new Manager().sum(stus);
System.out.println(num);
} }
可变参数
可变参数的底层是数组 他的优点是传参灵活,注意多个参数的时候可变参数只能放在最后。
public class TestVarParam {
public void f(String s ,int [] arr,int [] arr1) {
System.out.println(Arrays.toString(arr));
}
public void ff(int ...arr ) {// int []arr
System.out.println(Arrays.toString(arr));
System.out.println(arr.length);
}
public static void main(String[] args) {
TestVarParam test = new TestVarParam();
// 1
// int [] arr = {11,22,33};
// int [] arr = new int[]{11,22,33};
// test.f(arr);
// 2
// test.f(new int [] {11,22,33});
// 3.
test.ff();// new int []{}; 长度为0 的数组
test.ff(111);// new int[]{111}
test.ff(11,22,33,44);// new int[]{11,22,33,44};
test.ff(new int[] {11,22});
}
}
递归
递归就是方法自身调用自身,但是一定要有出口
package com.test.day01;
public class Recursion {
int count=0;
public void f(){
count++;
if(count==10){
return;
}
System.out.println("慢慢学,这要学的快");
f();
}
public static void main(String[] args) {
// 使用递归的方法输出10个“慢慢学,这要学的快”
Recursion re = new Recursion();
re.f();
}
}
使用递归实现阶乘
package com.test.day01;
public class Factorial {
public int fa(int n){
if(n==1){
return 1;
}else{
return n*fa(n-1);
}
}
public static void main(String[] args) {
// 使用递归实现阶乘 阶乘形式:1*2*3*4*5*6*7
Factorial factorial = new Factorial();
System.out.println(factorial.fa(6));
}
}
java--带参方法 递归阶乘的更多相关文章
- java面向对象入门之带参方法创建
/* Name :创建带参的方法 Power by :Stuart Date:2015.4.25 */ //创建Way类 class Way{ //Way类成员的基本变量 int add1=123; ...
- 我的java之路week2类的无参、带参方法
2.1语法 public 返回值类型 方法名(){ //方法体 } 2.2方法的调用语法 对象名.方法名 计算平均分和总成绩 public class Score { /** * 创建类 ScoreC ...
- 带参方法的执行:普通方法的查询,可为空方法的查询。批量处理SQL语句。
普通方法的查询: @Override public List<Map<String, Object>> selectSpentAmount(Integer MAT_TYPE_, ...
- 接口中带参方法,传入IB类型的数据
不同的接口有不同的方法 不同的类有不同的作用 不同的作用产生不一样的效果 不同的效果让程序看似复杂,实际简单... 比如此程序,看似复杂,实际就那么点事: 谁生成了谁,谁设置了谁,谁传入了谁,谁被谁调 ...
- 慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hell ...
- Java 中带参无返回值方法的使用
有时方法的执行需要依赖于某些条件,换句话说,要想通过方法完成特定的功能,需要为其提供额外的信息才行.例如,现实生活中电饭锅可以实现“煮饭”的功能,但前提是我们必须提供食材,如果我们什么都不提供,那就真 ...
- thymeleaf的初次使用(带参请求以及调用带参js方法)
之前对于前端框架接触较少,第一次接触thymeleaf,虽说看起来并不复杂但我还是花费了好一会儿才弄懂. 话不多少下面就简单说一下我在项目中的应用. 首先是java代码 controller层 将需要 ...
- Java中的方法应用
一.如何定义java中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 语法: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.priv ...
- Java中的方法(形参及实参)return返回类型
如何定义 Java 中的方法 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 一般情况下,定义一个方法的语法是: 其中: 1. 访问修饰符:方法允许被访问的权限范围, 可以是 pub ...
随机推荐
- Intellij IDEA常用操作
1.DEBUG过程中查看指定表达式的值(alt+左键) 2.DEBUG过程中查看指定表达式的值的另一个方法(ctrl+u) 这个快捷键会弹出一个对话框,直接按回车的话显示选中表达式的值,还能在输入框中 ...
- Python数据结构学习
列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 以下是 Python 中列表的方法: 方法 描述 list.append(x ...
- hadoop2.9.2 调整jvm
错误:namenode挂掉 查看hadoop的日志文件,发现存在大量的GC,导致namenode挂掉 命令行执行错误信息: 解决: 查看系统内存: # /data1/hadoop/hadoop/etc ...
- [TJOI2019]甲苯先生和大中锋的字符串——后缀自动机+差分
题目链接: [TJOI2019]甲苯先生和大中锋的字符串 对原串建后缀自动机并维护$parent$树上每个点的子树大小,显然子树大小为$k$的节点所代表的子串出现过$k$次,那么我们需要将$[len[ ...
- EASYUI赋值和取值
$("#ajname").textbox("setValue",name); $("#jyzjg").combobox(&q ...
- HttpClient学习(四)—— 关于Http
一.Http状态码 状态码分类 100 ~ 199 信息提示 200 ~ 299 成功 300 ~ 399 重定向 400 ~ 499 客户端错误 500 ~ 599 服务端错误 常见状态码 200 ...
- 深入理解JVM虚拟机4:Java class介绍与解析实践
用java解析class文件 转自https://juejin.im/post/589834a20ce4630056097a56 前言 身为一个java程序员,怎么能不了解JVM呢,倘若想学习JV ...
- 迭代器Iterator、for循环遍历、泛型
java.util.Collection接口 是集合的最顶层的接口,定义了集合共性的方法 接口无法直接创建对象,使用多态的方式创建对象 Collection<集合中的数据类型(泛型)> c ...
- OpenJudge计算概论-最长单词2
/*======================================================================== 最长单词2 总时间限制: 1000ms 内存限制: ...
- js事件函数中(ev)是什么鬼?
首先,从ev所在的位置就可以得知,ev是参数. 在ev中包含了事件触发时的函数, 比如: click事件的ev中包含着e.pageX,e.pageY keydown事件中包含着ev.keyCode等 ...