基本上comparable方法可以被comparator替代
实现comparab接口就要重写comparaTo方法,string里已经实现了接口,可以直接用
集合或者数组sort方法的形参;
-------
stringbuffer默认输入的数组长度是16,如果超过16就调用方法位运算<<1,(乘2)再加2,(相当于原来的扩大两倍加二)够了就new新的数组长度为数据的长度,然后再进行存放;
length是数组长度,capacityt是数组内的真实值
超过两倍+2,才创造新的数组,否则就在原来数组添加;
----异常
这句话详见下一个例子
写出一个会抛出异常的方法,如果你调用这个方法,不符合要求,就会出异常;
---
Throwable
_Error
_Exception
_编译时异常
_非编译时异常(编译就要抛出的)(运行时异常)
编译时异常的父类 Exception
运行时异常的父类RuntimeException
总结:运行时异常会自动往上抛出,直至JVM,JVM中止程序,在控制台打印信息;
最多产生一个异常,但是catch的方法是多个的; 运行时异常不需要捕获
一个try中最多产生一个异常;
after不输出了,出现了异常直接跳过这个after了;
----
多分支的try-catch
具有多个catch分支的结构,可以同时处理多个不同类型的异常;
可针对不同的异常完成不同的输出;
在catch中运行时异常可以随便写(但是没什么意义),编译时异常必须要有出现异常可能的代码;
----
throws与throw
单三是计算机丢上去,就是在形参之前写
throw是主动丢出来 ,在局部写
---
throws
throws加运行时异常没有任何意义,因运行时异常默认就是throws;
编译时异常,可以声明抛出:但仅仅表示异常抛出的可能性,告诉方法调用者可能会抛出异常,是否真的会抛出异常,取决于方法体中的代码执行;
-------
总体上的原则是:子类中的覆盖方法,不能比父类中的方法抛出更多异常;(一般就抛出一样就行,运行时无所谓 ,因为没什么意义)
如果父类抛出了编译时异常,子类抛同时或者更小;
原因:多态的时候 接不住回来的更大异常值;
------------------
throw
return 一个异常 或者直接抛一个异常
写一个方法,不符合的时候将会抛出一个异常.然后调用方法的地方,再try catch抓住