冒泡排序
1.比较数组中两个相邻的元素,如果第一个数比第二个数大,交换位置
2.每一次比较,都会产生一个最大的或者最小的元素
3.下一轮可以少一次排序
4.依次循环,直到结束
public static int[] sort(int[] array){
int temp = 0;
for (int i = 0; i < array.length-1; i++) {
for (int j = 0; j < array.length-1-i; j++) {
if (array[j]>array[j+1]){
temp = array[j];
array[j] = array[j+1];
array[j+1] = temp;
}
}
}
return array;
}
super注意点
1.super调用父类的构造方法,必须在构造方法的第一个
2.super必须只能出现在子类的方法或者构造方法中
3.super和this不能同时调用构造方法
this
代表的对象不同:
this:本身调用者这个对象
super:代表父类对象的应用
前提:
this:没有继承也可以使用
super:只能在继承条件下才可以使用
构造方法:
this():本类的构造
super();父类的构造
方法重写
前提:需要有继承关系,子类重写父类的方法
1.方法名必须相同
2.参数列表必须相同
3.修饰符:范围可以扩大:public>Protected>Default>private
4.抛出的异常:范围,可以被缩小,但不能扩大
重写,子类的方法和父类一致,方法体不同
为什么需要重写:
1.父类的功能,子类不一定需要,或者不一定满足
alt+insert override
多态:同一方法可以根据发送对象的不同而采用多种不同的行为方式
多态是方法的多肽,属性没有多态
多态的注意事项:
1.多态是方法的多肽,属性没有多态
2.父类和子类有联系,类型转换异常:ClassCastException
3.存在条件:继承关系,方法需要重写,父类引用指向子类对象
(Father f1 = new Son())
static方法,final常量,private方法都不能重写,所以没有多态
instanceof 判断是什么类型
abstract抽象类
1.不能new这个抽象类,只能靠子类去实现它:约束
2.抽象类中可以写普通的方法
3.抽象方法必须在抽象类中
//抽象的抽象
interface接口
接口的本质是契约
作用:
1.约束
2.定义一些方法,让不同的人实现
3.方法都是public abstract
4.public static final
5.接口不能被实例化,接口中没有构造方法
6.可以实现多个接口
7.必须要重写接口中的方法。
异常:
1.处理运行时异常时,采用逻辑去合理规避同时辅助try-catch处理
2.在多重catch块后面,可以加一个catch(Exception)来处理可能会被遗漏的异常
3.对于不确定的代码,也可以加上try-catch,处理潜在的异常
4.尽量去处理异常,切忌只是简单的调用printstackTrace()去打印输出
5.具体如何处理异常,要根据不同的业务需求和异常类型去决定
6.尽量添加finally语句块去释放占用的资源