Cloneable(参考com.davic.example.cloneable.AddingClone)
-
所有java的类需要具备clone这个功能必须继承Cloneable,
-
而且重构clone这个函数。
-
clone 主对象其所有子对象也会给clone
Alias(别名参考com.davic.example.Alias)
-
类对象采用直接赋值,是将一个对象的reference指向赋值对象而已。
-
Alias是按地址传值并不是按值传值,如果对函数下参数进行修改,则该参数就会改变数值。
Constructor (构造函数 com.davic.example.Constructor)
-
向上转型。任何类都可以通过继承,然后安全进行向上转型。
-
调用机制 构造函数先初始化子属性,再调用本身的构造函数。
-
构造函数重载 函数重载是通过参数的不同来区分重载函数。
++i,i++(参考com.davic.example.basic.AutoInc)
I++先显示数据才加1,++i 就是先加1才显示数据
位移(参考com.davic.example.basic.BitManipulation)
当左位移(<<)的时候,最低位补0.当右位移的时候(>>),当该数是正数的时候,高位补0,如果该数是负数,高位补1。
Finalize(参考com.davic.example.Finalize)
-
机制 当垃圾回收器打算开始释放你的对象所占用空间,就会先调用finalize()函数,并且在下一次垃圾回收动作发生时才回收对象。
-
使用情况 finalize的使用的情况是有限定的,当你的对象是以对象new之外的生成方式,来分配存储空间就适合用finalize来清空对象。
-
调用时间 垃圾回收器会在觉得可用内存不足够的时候就会开始执行。
-
我们如果需要手动调用垃圾回收器,可以通过system.gc() 这个函数调用,终结动作就会发生在所有对象身上。
-
死亡条件 我们可以利用对象清空(finalize)时,判断其当前状态是否正确。
-
垃圾回收的理念是,能够存活于stack或static storage (静态存储空间)上的reference而追踪到的对象,才算是生命尚存对象。
其他
-
所有基础类型如果强制转型,先转成小型,然后进行处理。如其他型与int型处理,则将其他类型,转变成为int型进行统计(参考 com.davic.example.basic.CastingNumbers)
-
如果想实现类对象按所需要求对比,则需要extends compliar类,并重构equals函数。
-
如果某一笔数据既是static又是final,那么它就会拥有一块无法改变的地址。
-
但是用于object reference时,final让reference保持不变。某个reference一旦被初始化用以代表某个对象之后,便再也不能执向另外一个对象。
容器(Container 参考com.davic.example.Container)
数组
数组的初始化
-
Integer[] a = { new Integer(1), new Integer(2), new Integer(3), };
-
-
数组new
-
a = new int[pRand(20)];
-
-
数组排序(参考 com.davic.example.container.AlphabeticSearch)
-
数组排序可以先通过自定义Comparator类,然后通过java.util.Arrays类进行排序(Comparator写法:参考 com.davic.example.util.AlphabeticComparator)
-
-
数组的添加
-
可以通过 java.util.Arrays.fill() 函数进行数组的添加
-
-
数组的复制
-
可以通过System.arraycopy进行复制
-
-
WeakHashMap
-
容器中有一个特殊的map,其所持有的乃是weak reference : weakhashmap.在这样一个mapping里面,其value只存在一个实体.因而节省了储存空间.一但程序需要某个value,便在mapping中查找既有的对象,并使用找到的那个对象.
-
RTTI 执行期类型识别(参考com.davic.example.rtti)
-
执行期类型识别可以通过判断 instanceof判断类型是否相同
-
又可以采取用isInstance(是否某类的子对象)