①方法的第一条语句总是一个包含return的条件语句。
②递归调用总是去尝试解决一个规模更小的子问题。
③父问题和子问题之间不应该有交集。
它是程序的一种低级表示,可以运行于Java虚拟机。将程序抽象为字节码可保证Java程序员的代码能够运行在各种设备上。
内存泄漏:对象已经没有被应用程序使用,但是垃圾回收器没办法移除它们,因为还在被引用着。
如下,是Java的ArrayList的实现,其中使用数组方式进行实现,在list删除时需要将数组的对应引用对象置为null,这样被删除的对象才会被GC回收掉,这个是一个非常经典的容易造成内存泄漏的例子。
public E remove(int index) { rangeCheck(index); modCount++; E oldValue = elementData(index); int numMoved = size - index - 1; if (numMoved > 0) System.arraycopy(elementData, index+1, elementData, index, numMoved); elementData[--size] = null; // clear to let GC do its work return oldValue; }参考:http://www.importnew.com/12961.html