43:什么是基本数据包装类?
为了对基本类型的数据进行更多的操作的,java就针对每种基本类型的数据提供了对应的包装类类型。
对应的类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
44:什么是正则表达式?
正则表达式就是符合一定规则的字符串。
45:集合和数组有什么区别?(*面试题)
集合:
长度可以发生改变。
只能存储对象类型,引用类型。
可以存储任意类型的对象。
数组:
长度固定。
可以存储基本类型,也可以存储引用数据类型。
只能存储同一种类型的元素。
46:集合有多少种? 各自的特点是什么?
Collection
|--List 有序(存入和取出的顺序一致),元素可重复
|--ArrayList
底层数据结构是数组,查询快,增删慢。
线程不安全,效率高。
|--Vector
底层数据结构是数组,查询快,增删慢。
线程安全,效率低。
|--LinkedList
底层数据结构是链表,查询慢,增删快。
线程不安全,效率高。
|--Set 无序的 元素唯一
|--HashSet
|--TreeSet
47:泛型是什么?有什么用?在哪里用?泛型有什么好处和弊端?
泛型是一种把明确数据类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的数据类型。
能优化程序设计,解决了黄色警告线问题。
把运行时期的异常提前到了编译时间。
避免了强制类型转换。
好处:
优化了程序的设计,解决了黄色警告线的问题。
把运行时期的问题提前到了编译时期间解决了。
避免了强制类型转换。
弊端:让类型统一了,不能存储不同的数据类型了。
48:用迭代器遍历集合的时候,用集合修改集合有没有问题?如果有,怎么解决?(*面试题)
有问题,因为会出现并发修改异常。
解决方法有多种,比如,我们可以不通过集合来修改集合,而使用迭代器来修改集合。
像ListIterator迭代器就有添加方法。
49、HashSet如何保证元素唯一性的呢?
底层数据结构是哈希表(散列表)。具体的是由一个元素是单向链表的数组组成。
它依赖于两个方法:hashCode()和equals()方法。
执行顺序:
先判断hashCode()是否相同,
如果相同
继承执行equals()方法,看其返回值:
true:元素重复,不存储。
false:元素不重复,存储。
如果不同
存储。
记住:
看到HashXxx结构的集合,就要知道,被该集合存储的元素要重写hashCode()和equals()方法。
而且,是自动生成的。
50、TreeSet底层数据结构是什么?如何保证元素的唯一性的呢?
底层数据结构是二叉树。
根据比较的返回值是否是0来决定。
如何保证元素的排序的呢?
A:自然排序 元素具备比较性
让集合中被存储的元素所属的类实现Comparable接口。
B:比较器排序 集合具备比较性
在创建集合对象的时候,让构造方法接收一个Comparator接口的子类对象。
自然排序和比较器排序的区别:
TreeSet构造函数什么都不传, 默认按照Comparable(接口,compareTo(T))的顺序(没有实现Comparable就报错ClassCastException)
TreeSet如果传入Comparator(接口compare(T1,T2)), 就优先按照Comparator
|
|