JAVA面向对象(预知识)学习笔记(一)

方法的定义
代码块与方法
代码块:写在一对花括号里面的一段语句,实现简单的功能,注意:代码块不可被重复调用,也就是说代码块执行一次就消失了
方法:也就是其他语言里面的函数,区别于代码块最基本的一点是,方法可以重复使用。
方法的详细说明:
1、形式参数:形式参数一般就是我们在定义方法时用于接收外界传 入的数据
2、实参:我们在调用方法时实际传给方法的数据,然后通过方法来完成对数据的处理
3、返回值:方法再执行完毕后返回给调用它的环境的数据,也就是说返回一个通过方法处理得到的结果
4、返回值数据类型:在定义方法的时候就已经约定好,假如我们定义为String类型,那我们调用该方法接收的时候也必须用String类型数据来接收,如果没有返回值,必须显示指定为void

//--无返回值的方法定义
public void method(//参数列表){
	//--声明
	//--方法实现语句
}
//--有返回值的方法定义
public String method(//--参数列表){
	//--声明
	//--方法实现语句
	return //--结果
}

方法的使用小例子
注意事项
1、实参的数目、数据类型和次序必须和所调用的方法声明的形式参数列表匹配
2、return 语句终止方法的运行并指定要返回的数据(上面有讲到)
3、基本数据类型传递的是该数据值的copy值
4、引用类型传递的是该对象引用的copy值,但指向同一个对象(后面笔记会详细说明)

方法的重载(overload)
注意:重载的方法,实际是完全不同方法,只是名称相同而已(现实生活中有好多人重名,但是每个人都是独立的个体,对应到方法中是同样的道理)

1、方法的重载是指方法名相同,参数列表的参数个数不同,参数列表的参数数据类型不同,参数列表的参数顺序不同(注意:这里的顺序不同的前提是参数列表的参数数据类型不同如下)

void add(int a,double b){
}
void add(double b,int a)

注意上面的重点不是a,b而是定义a,b的数据类型

public class Test {

	public static void main(String[] args) {
		System.out.println(add(1, 2));
		System.out.println(add(1, 2, 3));
		System.out.println(add(1.0, 2));
		System.out.println(add(1, 2.0));		
	}
	
	static int add(int a,int b) {
		int sum = a + b;
		return sum;
	}
	
	static int add(int a,int b,int c) {
		int sum = a + b + c;
		return sum;
	}
	
	static double add(int a,double b) {
		double sum = a + b;
		return sum;
	}
	
	static double add(double a,int b) {
		double sum = a + b;
		return sum;
	}
}

以上都是方法的重载,需要注意是当参数相同时,返回值类型不同不会构成方法的重载,归根结底只有同时满足方法名相同参数列表不同才会构成方法的重载

递归结构
递归是一种常见的解决问题的方法,即把问题居间简单化,递归的基本思想就是自己调用自己,一个使用递归奇数的方法将会直接或者间接的调用自己
利用递归可以用简单的程序来解决一下复杂的问题,比如:斐波那契数列的计算,汉诺塔,快排等问题,但是我们再不加条件的利用递归时就会出大问题,所以我们要给递归定义一个递归头和递归体
1、递归头:给定不在调用自身方法的条件(结束条件),如果没有,将陷入死循环
2、递归体:在什么时候调用自己

public class Test {

	public static void main(String[] args) {
			
		System.out.println(calculate(10));
	}
	
	static long calculate(int num) {
		if(num==1) {
			return 1;
		}else {
			return num*calculate(num-1);
		}
	}
}

输出结果:3628800

实现原理
递归的缺陷:使用递归会占用大量的系统堆栈,内存消耗多,料率比循环低的多,因为递归是不关闭的多次调用方法。

用递归和循环来解决经典的猴子吃桃问题
题目:猴子第一天摘下了若干个桃子,第一天吃了一半不过瘾又多吃了一个,以后的每天如此吃剩下的一半多一个,到了第十天发现还剩一个桃子,问:猴子一共摘了多少个桃子?

public class Test {

	public static void main(String[] args) {
		for(int i=1;i<=10;i++) {
			System.out.println("第"+i+"天有"+eat(i)+"个桃子");
		}
		
	}
	
	static int eat(int day) {
		if(day==1) {
			return 1;
		}else {
			return (eat(day-1)+1)*2;
		}
	}
	
}

第1天有1个桃子
第2天有4个桃子
第3天有10个桃子
第4天有22个桃子
第5天有46个桃子
第6天有94个桃子
第7天有190个桃子
第8天有382个桃子
第9天有766个桃子
第10天有1534个桃子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值