数组:一组相同类型的数据(容器)
数组的特征:
1.数组的空间是连续排放的
2.数组每一个空间都有对应的下标值
3.数组的长度一旦指定则无法改变
定义数组:
方式一:数组类型[ ] 数组名 = new 数组类型[长度];(推荐使用)
方式二:数组类型 数组名[ ] = new 数组类型[长度];
方式三:数组类型[ ] 数组名 = new 数组类型[]{值1,值2,值3...};
方式四:数组类型[ ] 数组名 = {值1,值2,值3...};
/、数组中如果不存放数据时会有默认值:
整数的默认值:0,
小数的默认值:0.0,
布尔类型的默认值是false //
char类型的默认值\u0000,
引用数据类型默认值都是null
二维数组:由多个一维数组组成
定义二维数组的格式:数组类型[ ][ ] 数组名 = new 数组类型[行数][列数];
访问二维数组的元素需要两个下标值
定义二维数组的格式:数组类型[ ][ ] 数组名 = {{值1,值2,值3...},{值4,值5,值6...}...};
面试题
ArrayList和Vector的区别是:
- ArrayList出现在jdk1.2版本,Vector出现在jdk1.0版本
- ArrayList效率高而Vector效率低
- ArrayList线程不安全,而Vector线程安全
- ArrayList扩容是原来的1.5倍,Vector是原来的2倍,虽然两个底层都是数组,但是ArrayList比Vector省空间
5.HashSet底层是一个HashMap,初始容量是16,负载因子是0.75(大于等于75%时开始扩容)
//或者简单便利(HashSet底层不是数组)
//历遍Set集合只能使用增强for循环和迭代器
LinkedHashSet的特征:有序,不重复
面试题:HashTable和HashMap的区别:
- 父类不同,HashTable继承了Dictionary,HashMap继承了AbstractMap
- 版本不同,HashTable出现于jdk版本1.0,HashMap出现于jdk版本1.2
- 对null的支持不同,HashMap键值对可以为null,HashTable键值都不可以
- 效率不同,HashTable效率较低,HashMap效率较高
- 线程安全不同:HashTable线程安全,HashMap线程不安全
- 初始容量不同,HashTable初始容量是11,HashMap初始容量是16
- 扩容速度不同:HashMap是原来的2倍,Ha是Table是原来的2n+1倍
- HashCode重写方式不同:HashTable计算复杂,HashMap计算简答