Java基础知识加强视频的学习:

一、知识点:

25、数组的反射应用:
 (1)、同样,可以方法getClass()得到数组的Class类对象。
 (2)、打印数组元素的值:利用工具类Array的方法get(obj,index),get(obj)来得到对象的值,该对象可以是数组。
 (3)、 没有办法得到数组中元素的类型:例如,如果有那么一个数组 int a = new int[3],那么,我们如何得知变量a所引用的数组类型呢?
  没办法。因为,如果是 Object[] a = new Object[]{"a",1},那么我们没法从数组的元中得到整个数组的类型,只能知道某个数组元的类型。

26、ArrayList_HashSet的比较及Hashcode的分析:
 (1)、ArrayList与HashSet的区别:ArrayList是一种有顺序的集合,相当于一个数组。当要放对象进去的时候,将对象的引用按顺序依次存入列表里的,
  不管该引用是否引用同一个同一个对象。而HashSet表中,放对象的引用进去之前,先将对象的引用和表里各个元素的引用相比较,如果已经存在
  相同的引用,不管该元素的名字是否一样,都将不放入该对象。
 (2)、比较符:   == : 是根据对象的值来比较的。
   equals(): 是根据所比较的对象的哈希码来比较的。哈希码通常是根据内存地址换算来的。
  如果==比较结果是true,那么equals()方法得到的必然也是true,但是,反之则不一定成立。
  但是,当两个对象的值相等,但是哈希值不等,即默认的equals()方法下,他们并不相等,那么,如何编程覆盖equals()方法,使之相等?其实,
  是指如果两个对象相等,那么只存储其中一个。
  Eclipse中提供了快速覆盖equals()的方法,右击 --> Source --> Generate HashCode() and equals() --> 选择比较的变量。
 (3)、方法HashCode()的作用:数据结构中的Hash表 ,即 哈希算法。
      这种算法,把集合分成若干个存储区域,每个对象都计算出一个小哈希码,可以为哈希码分组,每组分别对应某个存储区域,根据一个对象
  的哈希码就可以确定对象应该存储在哪个区域。
      HashSet是采用哈希算法存取对象的集合,它内部采用对某数字n进行取舍的方式对哈希码进行分组和划分对象的存储区域。Object类中定义
  了一个HashCode()方法,来返回每个Java对象的哈希码,当从HashSet集合中查找某个对象时,Java系统首先调用对象的HashCode()方法获得该对
  象的哈希码,然后根据哈希码找到对应的存储区域,最后取出该存储区域内的每个元素与该对象进行equals()方法比较,这样就不用遍历集合中
  所有元素就可以得到结论。
 (4)、通常来说,一个类的两个实例对象用equals()方法比较结果相等时,他们的哈希码也必须相等,但是,反之则不一定成立。即,具有相同HashCode
  的俩个对象,equals()方法返回结果可能为false。
 (5)、当一个对象被存储在HashSet集合以后,就不能修改这个对象中的那些参与计算的字段了,否则,对象修改后的哈希值与最初存储进HashSet集合中
  时的值就不一样了。这种情况下,即使在contains方法使用该对象的当前引用作为参数去HashSet集合中检索对象,也将返回找不到对象的结果。
  这也导致无法从HashSet集合单独删除当前对象,从而造成内存泄露。

27、框架的概念及用反射技术开发框架的原理:
 (1)、反射的作用:实现框架功能
 (2)、框架与工具类的区别:工具类被用户的类调用,而框架则是调用用户提供的类
 (3)、 配置文件的修改:工程名 -->右击 --> new --> file -->建立配置文件
 (4)、往后的高新技术的基础知识,需要充电:回朔课本

二、问题与收获:
 (1)、内存泄露: 当以前分配的一片内存不再需要使用或无法访问时,但是却并没有释放它,那么对于该进程来说,会因此导致总可用内存的减少,
   这时就出现了内存泄漏。