---------------------- android培训、java培训、期待与您交流! ----------------------
数组的反射
1.具有相同维数和元素类型的数组属于同一类型,即具有相同的Class实例对象。
2.代表数组的Class实例对象的getSupperClass()方法返回的父类为Object类对应的Class
3.基本类型的一维数组可以被当做Object类型使用,不能当做Object[]使用;非基本类型的一维数组既可以当做Object使用,也可以当做Object[]使用。
int[]a1 = new int[3];
int[]a2 = new int[4];
int[][]a3 = new int[2][3];
String[]a4 = new String[3];
System.out.println(a1.getClass() == a2.getClass());
System.out.println(a1.getClass() == a3.getClass());//false
System.out.println(a1.getClass() == a4.getClass());//false
System.out.println(a1.getClass().getName());
System.out.println(a1.getClass().getSuperclass().getName());
Object obj1 = a1;
Object obj12 = a1;
//Object[] obj3 = a1;//int 基本类型无法转换成Object
Object[] obj4 = a3
hashCode方法与HashSet类
HashSet就是采用哈希算法存取对象的集合,它内部采用对某个数字n进行取余的方式对哈希码进行分组和划分对象的存储区域。Object类中定义了一个hashCode()方法来返回每个Java对象的哈希码,当从HashSet集合查找某个对象时,Java系统首先 调用对象的hashCode()方法获取得该对象的哈希码,然后根据哈希码找到相应的存储区域,最后取出该存储区域的每个元素与该对象进行equals方法比较,这样不用遍历集合中的所有元素就可以得出结论。
Collection collection = new HashSet();
ReflectPoint pt1 = new ReflectPoint(3, 3);
ReflectPoint pt2 = new ReflectPoint(5, 5);
ReflectPoint pt3 = new ReflectPoint(3, 3);
pt1.y = 7;
collection.remove(pt1);
System.out.println(collection.size());
内存泄露
对象不再被使用,但没有被释放,一直占用着内存空间,称为内存泄露。
---------------------- android培训、java培训、期待与您交流! ----------------------