1.不使用递归,计算N的阶乘。
public class RecursionTest01
{
public static void main(String[] args){
int n=5;
int retValue=method(n);
System.out.printIn(retValue);//120
}
public static int method(int n){
int result=1;
for(int i=n;n>0;i--){
result*=i;
}
return result;
}
}
使用递归:
public class RecursionTest01
{
public static void main(String[] args){
int n=5;
int retValue=method(n);
System.out.printIn(retValue);//120
}
public static int method(int n){
if(n==1){
return 1;
}
return n*method(n-1);
}
}
【面向对象】
1.面向对象与面向过程的区别:
面向过程:没有任何独立体的概念,只有 因为所以..各种因为所以关联在一起,实现所有因果关系,
这种称为面向过程,【关注的是步骤中因果关系的实现,没有独立体的概念】,以因果关系为核心,
小的因果关系构成小的步骤,小的步骤之间因为因果关系构成小的模块,模块与模块之间因为因果关系
构成大的系统,只要有一个因果关系发生断裂,整个软件就不能用了。关注整个流程是怎么走的?
面向对象:主要关注在对象上,把独立体看成对象,把关注对象造出来,把对象聚到一块,实现某一
功能,不关注对象的底层实现原理具体的实现细节,关注对象的功能,对象之间有很低的关联程度,
都有独立体的概念,独立体就是所说的对象
:把现实的世界分割成不同的单元,每个单元都是一个独立的对象,给一个环境让对象驱动起来形成
系统,称为面向对象
面向过程:主要关注点是实现的具体过程,因果关系 如:集成显卡的开发思路
优点:对于业务逻辑比较简单的程序,可以达到快速开发,前期投入成本较低
缺点:采用面向方式的方式开发很难解决非常复杂的业务逻辑,另外面向对象过程的方式导致软件元素
之间的【耦合度】非常高,只要其中一环出现问题,整个系统受到影响,导致最终的软件【扩展力】差。
因为没有独立体的概念,无法达到组件复用
面向对象:主要关注点是主要关注对象【独立体】能玩层那些功能 如:独立显卡开发思路
优点:耦合度低,扩展能力强,更容易解决现实世界中复杂的业务逻辑,组件复用性强
缺点:前期投入成本法高需要进行独立性的抽取,大量的系统分析设计
C语言是纯面向过程 C++半面向对象 java纯面向对象,现在出现的一些新的编程语言,都是面向对象的
人们在认识现实世界的时候以面向对象的方式,面向对象更符合人的思维方式
2.面向对象的三大特征:
封装、继承、多态
生命周期当中面向对象的三个阶段
*面向对象的分析:OOA
*面向对象的设计:OOD
面向对象的编程:OOP
3.类和对象的概念
类:在现实世界当中不存在的,是一个模板,是一个概念,是人类大脑思维抽象的结果
类代表了一类事物,在现实世界当中,对象A与对象B之间具有共同的特征,进行抽象总结出一个模板
这个模板称为类 例如人:身高、姓名、年龄... 汽车:颜色、质量、材质...
对象:是实际存在的个体,现实世界当中实际存在的
描述一下整个软件开发的过程
-程序员先观察现实世界,从现实世界中寻找对象
-寻找了N个对象之后,发现了所有的对象都有共同的特征
-程序员在大脑中形成一个模板【类】
-Java程序员通过代码来表述一个类
-java程序中有了一个类的定义
-然后通过类就可以创建对象
-有了对象之后就可以让对象直接协作起来形成一个系统
类---到对象-叫做实例化instance
对象---到类-叫抽象
类描述的是对象的共同特征
一个类主要描述的是状态+动作
状态信息:一个类的属性 名字、身高、性别
动作信息:一个类的方法 吃、喝、唱歌、跳舞
类{
属性;//状态信息
方法;//动作信息
}
注意:状态和动作具体到某个对象上之后,发现最终的结果不一样。对象和对象之间的有共同的特征,
但是具体到对象之后数据有差异。
4.类的定义
语法结构:
[修饰符列表] class 类名//(extend继承、impolements实现){
}
学生类:,描述学生对象的共同特征
状态信息: 动作信息:
*学号【int】 *吃饭
*名字【String】 *睡觉
*性别【boolean】 *玩
*年龄【int】 *唱歌
*住址【String】 *跳舞
重点:属性之间通常采用一个变量形式来完成定义的
public class Student
{ 属性描述对象德状态信息
//在类体当中,方法体之外定义的变量称为‘成员变量’
成员变量没有赋值,系统默认值,一切0看齐
int no;
String name;
boolean sex;
int age;
String address;
方法描述的动作信息
//略
}
引用数据类型:
String.class SUM提供
System.class SUM提供
Student.class 程序员自定义
User.class 程序员自定义
Product.class 程序员自定义
java语言中所有的.class都属于引用数据类型