面向对象、集合、异常、String、StringBuffer复习

面向对象

概念

将现实生活中的事物,封装成对象,通过对对象的调用完成需求。

举个很形象的例子,面向过程开发:自己买菜,洗菜,炒菜,切菜,炒菜做饭。面向对象开发:买菜,把菜扔给厨师,厨师就给你做好了。

封装

隐藏类的内部细节,提供外部访问的接口,封装关键字有private,get,set。

优点:提高了代码的重用性。

继承

子类继承父类,子类可以继承父类的公有的属性和方法,但是构造方法不能继承,子类中的super不是继承,而是调用。
优点:减少代码的冗余,实现类的重用

多态

一种类型多种形态,对象在创建时是父类形态,在使用时是子类形态,多态在程序设计中为程序提供了可插拔性。

Set集合

HashSet

HashSet 内部是一个散列表,存储的元素不可重复,是无序集合,内部实现的是HashMap接口。

HashSet存储对象时需要注意对象内部属性的是否重复,如果内部属性值重复,需要重写equals方法和重新自定义哈希码值,保证HashSet内部元素的不可重复性。

LinkedHashSet

LinkedHashSet 内部是链表结构,有链表顺序,环环相扣,不可重复。

TreeSet

TreeSet集合是有序的,可自定义排序方式,内部存储元素不可重复。

自定义排序方式的操作有两种,一种是直接在对象类中实现java.lang.Comparable接口,然后实现其compareTo方法,在新建TreeSet结合的时候系统会自动读取到排序方式。

第二种:定义一个新的排序类,然后实现java.util.Comparator接口,并实现compare()方法,新建TreeSet时传入到TreeSet集合中,集合便会自动排序。

List集合

ArrayList

List集合可形象的称之为可伸缩数组,内部存储元素可重复,是有序的,并且有下标。

ArrayList 遍历速度快。

LinkedList

LinkedList 有链表顺序的集合,内部存储元素可重复。

LinkedList 遍历速度慢,但是插入删除性能优越

LinkedList 和 ArrayList 比对:
ArrayList 存储元素是使用数组方式存储数据,它和LinkedList都允许使用下标直接访问数组内部元素,但是ArrayLIst插入元素牵涉到了内部元素的移动等操作,所以它索引数据快,但是插入数据慢,而LinkedList是双向列表,插入时只需要几句本项的前后项即可,所以它的元素插入速度快。

Vector

线程安全的集合。

Map集合

HashMap

包含键值对映射的集合。
Map集合中键值不可重复,并且是无序的,但是value值可以重复,

LinkedHashMap

LinkedHashMap继承自HashMap,所以他们有很多的相似之处,LinkedHashMap存储数据是有序的,而且分为两种:插入顺序和访问顺序,默认为插入顺序,按照插入元素的顺序来排序,但是调用了设置accessOrder构造方法修改后,可将顺序改为访问顺序。
LinkedHashMap为双向链表。

TreeMap

TreeMap最重要的特点就i是可排序。TreeMap可以按照默认的顺序排序,也可以通过自己定义排序方式:一种是对象类去实现java.lang.Comparable接口,并实现其compareTo()方法。另一种方式是写一个类(如MyCompatator)去实现java.util.Comparator接口,并实现compare()方法,然后将MyCompatator类实例对象作为TreeMap的构造方法参数进行传参(当然也可以使用匿名内部类)。

String和StringBuffer

String

String 的字符序列不变,线程安全,运行效率较低,每次对字符串的操作都会在内存缓冲区内部新建出新的字符串,当处理大量字符串时导致运行速度慢,所以建议使用与操作量小的情况。

StringBuffer

StringBuffer的字符序列是可变的,运行速度较快,线程安全,适用于单线程用户操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值