方法(函数)
语法
返回值类型 方法名(参数列表){方法体}
返回值类型:该方法必须返回一个这个类型的对象
当一个方法不需要返回值,返回值类型就定义为void
void中可以写return起到终止方法的作用
但是不能return null
参数:
形参:定义方法时,参数列表的参数名。
实参:调用方法时,实际传入的参数。
重载:在一个类中,方法名相同,参数列表不同,即为重载。
参数列表要素:
1.参数的类型不同
2.参数的个数不同
3.参数的顺序不同
可变参数:
声明:sum(int… a)
使用:将可变参数当作数组使用
注意点:
1.一个方法当中只能有一个可变参数
2.可变参数必须在参数列表的最后一个
3.数量可变,类型不可变
4.调用可变参数的方法:可用数组代替
5.可变参数可以不传
递归
是一个函数在其定义中直接或间接调用自身的一种方法。
直接或间接地调用自身的算法称为递归算法。
用函数自身给出定义的函数称为递归函数。
构成递归需要构成的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。
阶乘递归
排序算法
十大排序算法:冒泡排序、选择排序、插入排序、希尔排序、归并排序、快速排序、堆排序、计数排序、桶排序、基数排序
冒泡排序(Bubble Sort)
冒泡排序是一种简单的排序算法。他重复得走访过要拍排序的数列,一次比较两个元素,如 果他们得顺序错误就把他们交换过来,走访数列的工作是重复的进行直到没有再需要交换, 也就是说该数列已经排序完成。这个算法得名字由来是因为越小的元素会经由交换慢慢“浮”到 数列的顶端。(相邻对比交换位置)
java代码:
选择排序(Selection Sort)
选择排序是一种简单直观得排序算法,他的工作原理:首先在未排序序列中找到最小(大) 元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元 素,然后放到已排序序列的末尾。以此类推,直到所有的元素均排序完毕。(拿出最大或最 小,然后在剩余中再拿大或最小)
java代码:
插入排序(Insertion Sort)
插入排序的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于 未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上, 通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程 中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。(将未排序的,在已 排序中找到位置插进去)
java代码:
快速排序(Quick Sort)
快速排序的基本思想:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所 有数据都比另外一部分的所有数据都要小,然后再按此方法对这俩部分数据分别进行快速排 序,整个排序过程可以递归进行,以此达到整个数据变成有序序列
java代码:
待补
二分查找
待补
类
类是具有相同属性(成员变量)和行为(成员方法)的一组对象的集合。类声明就是定义一个类,其语法格式如下:
[访问符][修饰符] class 类名 [<类型参数列表>] [extends 父类名][implements 接口名列表]{
[成员变量列表]
[成员方法列表]
}
属性
全局变量:在类中定义属性又叫做全局变量
局部变量:在方法体或者代码块中声明的变量
就近原则:在局部变量和全局变量重名的情况下,可以使用this关键字,标注全局变量
类中的方法可以直接调用本类中的属性
构造方法
定义构造方法
1.没有返回值类型
2.方法名和类名一样
3.如果一个类没有定义任何的构造方法,系统会给予一个默认的空的构造方法,叫做空 参构造
4.如果定义了有参构造方法,系统默认的空参构造会消失,需要自己重新定义。
5.通过构造有参构造方法的形式将参数设置给参数属性。
无参构造和有参构造
实例化对象
实例化对象,开辟内存对象
设置对象的属性
访问对象属性设置
通过构造方法设置
类中声明了哪些属性,对象中就有哪些属性
staff类中声明的属性
调用staff类方法
staff类中定义的方法
面向对象三大特性:封装、继承、多态
封装
隐藏类的细节,不能让其他类随意的访问
通过四个访问权限修饰符达到封装的效果
public protected default private
公共的 受保护的(家族性的) 默认(本包中) 私有的(本类中)
通过getter和setter方法访问
类中成员变量一般用小写
java语言中对大小写敏感
继承
关键字extends
一个类可以继承父类,子类具有父亲中定义好的属性和方法
但不是所有的属性和方法都能访问到
public protected 和本包下的default可以访问
private访问不到
继承作用:
1.实现了代码的重用
2.是多态实现的基础
注意:
1.一个子类只能继承一个直接父类
2.java支持多重继承
子类继承父类
Plane父类
BigPlane子类继承父类
方法的重写:
子类对父类中继承过来的方法重新定义
可以使用@Override注解,验证方法是否是重写的方法
注意:
返回值,方法名,参数列表不能发生变化
重写的方法的访问权限只能更开放,不能更闭塞
子父类之间的构造方法
子类的构造方法中首行必须调用父类的构造方法
默认调用父类的无参构造方法
父类中没有无参构造方法,子类构造方法中必须明文声明,调用父类哪一个构造方法
使用super关键字调用父类的构造方法
多态
调用方法时可能出现多种结果
静态多态:重载造成的,在类编译时就可以确定的调用的是哪一个方法
动态多态:重写造成的,只有在执行到该行代码,才能确定执行的是哪个类中的方法