黑马程序员_反射以及hashcode

                                                   ------- android培训 java培训 、期待与您交流! ----------

13. Field[] fields = obj.getClass().getFields(); //扫描传进来的obj参数里面的字节码(getClass()),获取字节码里面所有变量(getFields())。

14. for(Field field : fields){ //增强型for循环,将fields数组中的元素迭代出来

if(field.getType() == String.class)//用==比较两个字节码更专业,(equalsOf也行,但是不恰当)

}

15. 方法对象.invoke(扫描到的方法字节码,第几个方法)  调用方法对象的里面的成员方法。在JDK1.4中,方法对象.invoke(扫描到的方法字节码,object[]{2})

16. 通过getName()方法获取对象的字节码的名字中“[”表示数组,I表示intB表示boolean等等等。获取父类的名字字节码用getSuperclass()方法。

17. Object[]不能装载基本类型的数组,如object[] = new int[4]是不成立的,但是object[] = new int[4][3]s是成立的。

18. 反射中只能得到某个元素的类型,无法得到成员对象中数组的类型。

19. ArrayList是一种有前后存放顺序(非大小顺序)的集合,数组中只是储存了引用句柄,并不是把句柄指向的数据存进去。HashSet存放不重复的数据,有存在的数据,覆盖掉。

20. Hashcode值为数据和内存位置换算出来的一种数据和位置表达方式,在hashSet中,划分为若干区域,数据根据计算出来的hashcode按特定规律依次存放在相应区域,如果要查找和某个数据相等的数据,只要查找特定区域内有没有,大大缩短了查找时间。

21. 一般数据的比较比较的是hashcode值,而不是实际的数据,hashcode值是数据存在在内存中的状态,其中包含了数据在内存中存储的方式和存储的位置,所以不同的两个对象,即使数据一模一样,但是内存的状态还是不一样的,hashcode值也是不一样的,所以无法相等(句柄不相等)。

22. 存在HashSet中的数据,不要修改,否则造成数据不能操作的错误(内存溢出)。

                                                             ------- android培训java培训、期待与您交流! ----------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值