java简述题目 5

2、简述集合三种类型Set、List、Map各自的特点,使用Collections.sort()对List进行排序时,3、List列表中的元素需要满足什么样的条件?4、f... 2、简述集合三种类型Set、List、Map各自的特点,使用Collections.sort()对List进行排序时,
3、List列表中的元素需要满足什么样的条件?
4、final, finally, finalize的区别?
5、使用数组时常会出现的两个异常是什么
6、接口和抽象类有何区别?
7、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢?是用==还是equals()?它们有何区别?
8、为什么在重写了equals()方法之后也必须重写hashCode()方法?
9、String 和StringBuffer的区别?
10、面向对象编程的特性有哪三个
展开
 我来答
o卡卡西老师o
2015-06-25 · 超过50用户采纳过TA的回答
知道小有建树答主
回答量:69
采纳率:100%
帮助的人:78.4万
展开全部
1.List继承自collection接口,List的元素有顺序,而且可以重复。
子类Arraylist:线程不安全,效率高;
子类Vector向量:线程安全,效率低;
子类LinkedList链表:增删快,查询慢。增删快是因为每一个值都有下一个值的地址,增删时只需要调整下个值的指向就可以了。

set继承自collection接口,set的元素没有顺序,不能重复。

Map没有实现任何接口,map的元素没有顺序,通过键值对存取,键不能重复,值可以重复。
子类HashMap:非线程安全,效率高,支持null;
子类HashTable:线程安全,效率低;

综上所述,list是用来处理序列的,Map是用来处理键值对的,set是用来处理集合的。而且这三种数据格式都支持泛型,
比如HashMap<K,V>,能够更好的定义键值对的数据类型,方便处理数据。

2.List进行比较,第一种方法是list实现comparable接口,重新定义其中的 int compareTo(object o)方法,这样写成Collections.sort(myList)就能进行排序了,
第二种是实现Comparator接口,自己定义一个比较器,这样写成Collections.sort(myList,new MyComparator())就能进行排序了。

3.final、finalize、finally三个关键字看起来一样,其实风马牛不相及,
final定义类或者变量或者方法,定义完了,这个类就不能被继承,这个变量的值就不能变,这个方法只能使用不能重载,真正的做到了一生一世不分离,永远在一起!
finalize(),这个object的方法,垃圾收集器删除对象之前会调用这个方法,子类可以重载这个方法,用于整理资源,比如把某些数据存入到数据库,或者执行任何你想要的
操作,比如你要打一个日志,log.info("嘿嘿嘿,我是雷哄,我在调用finalize方法!!!")。

4.ArrayIndexOutOfBoundsException 数组越界异常,NullPointerException 空指针
如果忘了异常的名字,那请召唤异常之王,Exception!!!

5.一个类只能继承一个抽象类,但是可以实现多个接口。
抽象类中有抽象方法和非抽象方法,接口中都是抽象方法。
抽象是个类,告诉你是个什么样的东东,
接口告诉你要去做什么。

6.set区分重复需要重新equals和hashcode方法,
equals中判断是否重复根据变量的类型来决定,像 int,char这种用==,
像字符串,自定义的object这种用equals。
7.hashcode通过内存地址的哈希值来判断是否重复,如果不重新,默认以为你所定义的类对象
的内存地址哈希值判断,你new了两个对象,哈希值当然不一样,那么hashcode判断的结果
总是相同,所以需要重新,用你定义的方式进行判断,比如用你定义的object中的id的哈希值来
判断是否相同。

8.非可变对象一旦创建之后就不能再被改变,可变对象则可以在创建之后被改变。
String对象是非可变对象,StringBuffer对象则是可变对象。用String,在大型项目中如果经常对
String进行处理,会产生大量的垃圾数据,增加了内存的消耗,而StringBuffer只会改变它的值,
举个例子吧,比如 String test="hello"; test="world";
我给test赋值成了world,但是hello这个东东还存在在内存地址中没有回收。

9.封装,多态,继承,三个定义我直接复制的,你自己看看吧。
封装
封装机制将数据和代码捆绑到一起,避免了外界的干扰和不确定性。它同样允许创建对象。简单的说,一个对象就是一个封装了数据和操作这些数据的代码的逻辑实体。
在一个对象内部,某些代码和(或)某些数据可以是私有的,不能被外界访问。通过这种方式,对象对内部数据提供了不同级别的保护,以防止程序中无关的部分意外的改变或错误的使用了对象的私有部分。
继承
继承是可以让某个类型的对象获得另一个类型的对象的属性的方法。它支持按级分类的概念。例如,知更鸟属于飞鸟类,也属于鸟类。就像图5中描绘的那样,这种分类的原则是,每一个子类都具有父类的公共特性。
多态
多态是OOP的另一个重要概念。多态的意思是事物具有不同形式的能力。举个例子,对于不同的实例,某个操作可能会有不同的行为。这个行为依赖于所要操作数据的类型。比如说加法操作,如果操作的数据是数,它对两个数求和。如果操作的数据是字符串,则它将连接两个字符串

不要谢我,我叫雷哄
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式