黑马程序员技术交流社区

标题: Java学习中易混的知识点(不定时更新) [打印本页]

作者: void    时间: 2014-10-24 19:48
标题: Java学习中易混的知识点(不定时更新)
本帖最后由 void 于 2014-10-24 20:02 编辑

1.ArrayList,Vector, LinkedList的存储性能和特性
ArrayList 和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
2.、Overload和Override的区别
方法的重写Overriding和重载Overloading是Java多态性的不同表现。重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被”屏蔽”了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。Overloaded的方法是可以改变返回值的类型。3.==与equals的区别
equals是在Object中首先定义的源码为
  1. public boolean equals(Object obj) {
  2.     return (this == obj);
  3.     }
复制代码
作用与==是相同的,但是String类对equals进行了重写:
  1. public boolean equals(Object anObject) {
  2.     if (this == anObject) {
  3.         return true;
  4.     }
  5.     if (anObject instanceof String) {
  6.         String anotherString = (String)anObject;
  7.         int n = count;
  8.         if (n == anotherString.count) {
  9.         char v1[] = value;
  10.         char v2[] = anotherString.value;
  11.         int i = offset;
  12.         int j = anotherString.offset;
  13.         while (n-- != 0) {
  14.             if (v1[i++] != v2[j++])
  15.             return false;
  16.         }
  17.         return true;
  18.         }
  19.     }
  20.     return false;
  21.     }
复制代码
可以看出重写之后的equals是用来比较对象里的内容的,==是比较地址的


作者: 紫薰iy    时间: 2014-10-25 12:54
恩恩 ,写的不错,特别是equal和== 的区别。那==是怎么实现的呢?
作者: 齐宁宁    时间: 2014-10-25 13:00
很给力!不错的总结
作者: 韶山    时间: 2014-10-26 08:24
不错的总结啊
作者: zhangyangLengen    时间: 2014-10-26 09:54
equal只是比较他们的之间的内容,而==比较的是hash哈希地址值。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2