抛出异常首先要创建一个新的对象,Throwable接口的构造函数调用名为filllnStackTrace()的本地同步方法,filllnStackTrace()方法检查堆栈,收集调用跟踪信息。...只要有异常被抛出,java虚拟机就必须调整调用堆栈,因为在处理过程中创建了一个新的对象。异常只能用于错误处理,不应该用来控制流程程序。...因为当StringBuilder达到最大容量的时候,它会将自身容量加到当前的2倍在加2,无论何时,只要StringBuilder达到它的最大容量值,它就会创建一个新的字符数组然后将旧的字符数组里面的内容拷贝到新数组里是一个十分耗时的工作...使用for循环遍历
实现RandomAccess接口的集合比如ArrayList,应当使用for循环而不是foreach来遍历JDK API对于RandomAccess接口的解释是:实现RandomAccess...实现RandomAccess接口类实例,加入是随机访问的,使用for循环比foreach效率高;如果不是随机访问的使用foreach效率高。