数组&集合
一、一维数组
1、定义:可以存储多个相同类型的有固定容量的容器
2、格式:A:动态初始化(给长度无元素 ) int[] arr = new int[5];
B:静态初始化(直接给出元素 ) int[] arr = {1,2,3,4,5};
3、访问方式:for循环遍历:索引从0到数组长度-1;
直接访问单个数组元素:arr[2];
二、二维数组
1、格式:A:动态初始化 数据类型[][] 数组名 = new 数据类型[m][n]; (m:二维数组中有多少个一维数组 n:一维数组数组中元素的个数)
int[][] arr = new int[m][n];
B:静态初始化 数据类型[][] 数组名 = {{元素1,元素2···},{元素3,元素4,元素5···},···};
int[][] arr = {{1,2,3,},{4,5}};
三、数组的默认初始化值:
* 整数类型:0
* 小数类型:0.0
* 字符类型:u0000
* 布尔类型:false
* 引用数据类型:null
四、数组常见的2个异常:
1、数组空指针异常:(NullPointerException) 数组没有任何引用指向
2、数组索引越界异常:(ArrayIndexOutOfBoundsException) 访问不了没出现的索引
数组小例子:
package test; public class ArrayS { public static void main(String[] args) { //动态初始化一维数组 int[] arr = new int[5]; //单个赋值 arr[0] = 1; arr[1] = 2; arr[2] = 3; arr[3] = 4; arr[4] = 5; //静态初始化二维数组 int[][] arrs = {{1,6,3},{4,7}}; int count=0;//定义一个变量记录数据 //判断数组中,一维数组与二维数组相同的数字有几个 for(int i = 0 ; i < arr.length; i++) { for(int j=0;j<arrs.length;j++){ for(int x=0;x<arrs[j].length;x++){ if(arrs[j][x]==arr[i]){ count++; System.out.print(arr[i]+" "); } } } } } }
结果:
五、集合
1、定义:只能存储引用性数据类型的容量可变的容器
2、构造方法:ArrayList();
3、常见功能方法(增获删改):
添加:
add(E e); 向集合中添加元素
add(int index,E e); 向集合中指定索引位置添加元素
获取:
int size(); 获取集合长度
E get(int index); 获取指定索引上的元素
修改:
set(int index,E e); 将指定索引位置上的元素用新元素进行替换
删除:
remove(Object obj); 根据指定元素进行删除
remove(int index); 将指定索引上的元素删除
4、基本数据类型对应的包装类
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Chracter
boolean Boolean
集合小例子:
package test; import java.util.ArrayList; public class ArrayListS { public static void main(String[] args) { ArrayList<String> list = new ArrayList<String>(); //增加元素到集合 list.add("hello"); list.add("java"); list.add("world"); //直接打印集合 System.out.println("直接输出集合:"+list); //遍历集合打印元素 System.out.print("遍历输出集合:"); for(int i=0;i<list.size();i++){ if(i==list.size()-1){ System.out.println(list.get(i)); }else{ System.out.print(list.get(i)+" ");//获取每个集合元素 } } System.out.println("------"); //修改第一个元素 list.set(0, "hi"); System.out.println("修改后的集合"+list); System.out.println("------"); //删除第二个元素 list.remove(1); System.out.println("删除后的集合"+list); } }
结果:
六、集合与数组的区别:
数组是固定的
集合是可变的
数组既可以存储基本数据类型也可以存储引用数据类型
集合只能存储引用数据类型。如果想存储基本数据类型就要使用对应的包装类
七、集合为什么是可变的?
创建一个ArrayList集合,默认初始长度是10
如果容量中已经存满了元素,那么会自动创建一个比原来长度多1.5倍的新数组。
然后调用System中arrayCopy()方法,将原数组中的元素复制到新数组中。然后继续用新数组存储元素