java基础面试(2)

7.ArrayList、LinkedList、Vector的区别。

ArrayList 和vector是采用数组的方式存储数据的,此数组元素大于实际存储的数据以便增加插入元素,都允许直接序号索引元素,但是插入数据要涉及到数组元素移动等内存操作,所以插入数据慢,查找有下标,所以查询数据块。Vector由于使用synchronized方法-线程安全,所以性能上比ArrayList要差,LinkedList使用双向链表实现存储,如果按照序号索引需要进行向前向后遍历,但是插入数据时只需要记录本项前后项即可,插入数据较快。

8. String、StringBuffer与StringBuilder的区别。

java中String类中使用字符数组保存字符串,因为有“final”修饰符,所以可以知道String对象是不可变的。

private final char value[];

StringBuilder与StringBuffer都继承自AbstractStringBuilder类,在AbstractStringBuilder中也是使用字符数组保存字符串。两种对象都是可变的。

char[] value;

String中的对象是不可变的,也就可以理解为常量,显然是线程安全的。
AbstractStringBuilder是StringBuffer与StringBuffer的公共父类,定义了一些字符串的基本操作(expandCapacity、append、insert、indexof)。
StringBuffer对方法加了同步锁或者对调用的方法加了同步锁,所以是线程安全的。
StringBuilder是非线程安全的。

9. Map、Set、List、Queue、Stack的特点与用法。

Map
键到值的映射对象,键不能重复,一个键对应一个值。
TreeMap能保证顺序,HashMap不能保证其顺序。
Set
包含对象不能重复的Collection,Set只能通过游标来取值。
List
也是Collection的一个子接口,值可以重复,通过下标取值。
Stack
继承自vector,实现一个后进先出的栈。
Queue
先进先出

10. HashMap和HashTable的区别。

HashMap是HashTable的轻量级实现,都实现了Map接口。主要差异在于:
hashTable的键和值都不允许为空,而hashMap的值和键都允许为空。
hashTable是线程安全的。

18. Interface与abstract类的区别。

Java中Interface和abstract是支持抽象类定义的两种机制,
(1)两者都不能直接对其进行实例化
(2)一个类只能有一个继承,但是可以实现多个接口
(3)abstract类中可以有非抽象方法,Interface中所有方法都是public

20. java多态的实现原理。

同一操作作用于不同对象,可以有不同的解释,有不同的执行结果,这就是多态,简单来说就是:父类的引用指向子类对象。
多态的好处:

1.可替换性(substitutability)。多态对已存在代码具有可替换性。例如,多态对圆Circle类工作,对其他任何圆形几何体,如圆环,也同样工作。
2.可扩充性(extensibility)。多态对代码具有可扩充性。增加新的子类不影响已存在类的多态性、继承性,以及其他特性的运行和操作。实际上新加子类更容易获得多态功能。例如,在实现了圆锥、半圆锥以及半球体的多态基础上,很容易增添球体类的多态性。
3.接口性(interface-ability)。多态是超类通过方法签名,向子类提供了一个共同接口,由子类来完善或者覆盖它而实现的。如图8.3 所示。图中超类Shape规定了两个实现多态的接口方法,computeArea()以及computeVolume()。子类,如Circle和Sphere为了实现多态,完善或者覆盖这两个接口方法。
4.灵活性(flexibility)。它在应用中体现了灵活多样的操作,提高了使用效率。
5.简化性(simplicity)。多态简化对应用软件的代码编写和修改过程,尤其在处理大量对象的运算和操作时,这个特点尤为突出和重要。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值