递归以及面向对象

递归

1、一个方法自己调用自己,叫做递归。

2、递归的逻辑很简单清晰,但是需要调用的内存较大。

实例:用递归求斐波那契数列的第几项。

import java.util.Scanner;

/**
 * 	用递归求斐波那契数列第N项
 * */
public class Text02 {

	public static void main(String[] args) {
		Scanner input= new Scanner(System.in);
		System.out.println("请输入你需要的第N项斐波那契数列");
		int a=input.nextInt();
		int c=sum(a);
		System.out.println("第"+a+"项是:"+c);
	}
	public static int sum(int a) {
		if(a==1||a==2) {
			a=1;
			return a;
		}
		else {
			return a=sum(a-2)+sum(a-1);//方法自己调用自己
		}
	}

}

面向对象

什么是面向对象

面向对象和面向过程的关系

1、面向对象和面向过程的对比:

面对对象:宏观上把控整个事务的完成度以及事务走向。 是对象帮我们处理具体的问题,而对象是如何做的,和调用者无关,调用者只需要负责结果即可。 好处:调用的复杂度降低。底层具体的实现思路还是过程式的。

面向过程:微观上更精细化的处理具体问题

tips:面向对象和面向过程不是相对的,而是相辅相成。

类和对象关系

实体类中,含有的东西:

1、成员变量(对象所具有的某种属性)

2、方法(对象所拥有的功能)

类:分门别类。抽象的概念 。祖先为了能够让后来的人更好的去认识这个世界,将各个具象的内容抽离出来一个一 个的类。

对象: 将类中所有抽象的内容进行了具象化 。 现实生活中真实存在的。

类和对象: 类是对于对象的抽象,抽象就是抽取像的部分 对象就是对于类的具象化的体现。

问题: 先有类还是先有对象? 如果是编写过程: 先有类 再有对象 如果是构建过程: 先有对象,将对象的共性抽离出来,外在、内在->类

面向对象的第一个程序

实体类:

/**
 * 	这是一个用于计算各种几何图形的实体类
 * 	运用了方法重载
 * */
package Demo01;

public class Sum {
	int a;
	int b;
	int c;
	public double perimeter(int a){//计算圆形的周长
		int r=a;
		return 2*3.14*r;
	}
	public int perimeter(int a,int b){//计算长方形周长
		int l=a;
		int h=b;
		return 2*(a+b);
	}
	public int perimeter(int a,int b,int c){//计算三角形周长
		if(a+b>c&&a+c>b&&b+c>a) {
		int e1=a;
		int e2=b;
		int e3=c;
		return a+b+c;
		}
		else {
		System.out.println("警告:这不是一个三角形!");
		return 0;
		}
	}
}
/**
 * 	面向对象:
 * 		根据你输入的数据数量,调用对象里不同的重载方法。
 * */
package Demo01;

import java.util.Scanner;

public class Text02 {

	public static void main(String[] args) {
	int a=5;
	int b=6;
	int c=7;
	Sum p=new Sum();
	System.out.println("圆的周长是:"+p.perimeter(a));//输入一个数,计算圆周长
	System.out.println("长方形的周长是:"+p.perimeter(a,b));//输入二个数,计算长方形周长
	System.out.println("三角形的周长是:"+p.perimeter(a,b,c));//输入三个数,先判断是否为三角形,再计算周长
	}
}

内存分析:

static

什么时候类被加载?

1:调用当前类中的静态方法

2:创建当前类的实例对象的时候

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值