A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© void 中级黑马   /  2014-10-24 19:48  /  1411 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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是用来比较对象里的内容的,==是比较地址的

评分

参与人数 1技术分 +1 收起 理由
敏敏好学 + 1 不错 赞一个!

查看全部评分

4 个回复

倒序浏览
恩恩 ,写的不错,特别是equal和== 的区别。那==是怎么实现的呢?
回复 使用道具 举报
很给力!不错的总结
回复 使用道具 举报
不错的总结啊
回复 使用道具 举报
equal只是比较他们的之间的内容,而==比较的是hash哈希地址值。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马