距离下决心写博客已经两周了,结果就两篇博客,还没有写过跟技术有关的。
唉,难受。
言归正传,昨天其实有看了下java的源码,就是Integer这个类里面的方法,但是没有看完。知识点如下:
- 里面使用了位运算来替代乘法运算,印象中,位运算对于计算机而言是很快的,但是具体比乘除运算快多少就不知道了。自己实测的结果是乘法运算和位运算的速度差不多,估计是编译器的对于乘法运算的优化。
- 异常总结:
- error,系统错误,这种错误已经严重到无法被捕获,并且一旦发生,系统将停止运行,比如说OutOfMemoryError,一般而言这种错误是代码撰写的时候无需考虑的问题,但是会发生这种严重错误,也有可能是因为程序设计的问题导致的,像内存溢出这种系统错误,就可能是代码设计不好导致了内存泄漏问题,随着时间推移,内存泄漏的越来越多就会导致内存溢出的错误。
- 未检查异常 unchecked exception,或者叫做runtime exception,包含有NullPointerException, IndexOutOfBoundsException等, 这类异常系统不强制你去捕获处理。不强制去捕获处理这类异常,是因为,程序当中不应该出现这类错误,这类错误是可以通过程序的逻辑去避免的,换句话说,当这种异常发生的时候,就是代码逻辑不够严谨或考虑不够全面导致的,这个时候应该考虑的不是去捕获异常,而应该是去检查修改代码,使得代码的逻辑更加严谨从而避免再次发生此类异常。
- 检查型异常, checked exception,这类异常有IO Exception, SQL exception,这种异常必须在程序中进行捕获,否则编译器会报错,无法进行编译。这类异常有可能是网络出错等非系统错误导致的,因此要求必须对这类可预见却无法完全回避的错误进行捕获处理,以避免因为外界的不可控因素导致系统服务不可用。
这里有一篇关于异常的博客,写的很好,收藏下:
Java异常处理和设计