数组
-
概念:
-
指一组同类型的数据,有序的排列
-
在java中就是一种引用数据类型
-
同一个数组只能拥有同类型的数据,可以是引用数据类型,也可以是基本数据类型
-
数组就是一个容器,是java中作为数据的容器中最基本的一种。
-
数组的类型就是里面存放的数据的类型
-
数组在内存中是连续的。
-
数组的长度是确定的,一旦创建,就不能改变了
-
数组有一个只读属性,length用来获取数组的长度str.length(),arr.length;
-
下标(索引),通过索引获取数组中的数据。下标是从0开始。arr[2]
-
元素:数组中的数据称为元素。
-
-
声明
- int[] arr = new int[length];
- int brr [] = new int[5];//动态初始化
- 数组声明后都是有默认值的。
- 基本数据类型的数组,每个元素的默认值就是该基本数据类型的默认值。
- 引用数据类型的数组,每个元素的默认值是null。
- int [] crr = {2,5,1,0};//静态初始化
- int [] drr = new int[] {2,5};
-
数组的遍历
- 挨个检索数组中元素;
- 普通for循环遍历for (int i = 0;i < arr.length;i++) {arr[i]};
- 增强for循环for(int a:arr) {a}
- 增强for不能用来修改数组的值。
-
注意
-
ArrayIndexOutOfBoundsException:数组下标越界异常;
int[] arr = new int[10]; int brr[] = new int[5]; int [] crr = {1,10,25,30};//静态初始化 System.out.println(crr.length); int [] drr = new int[] {3,5};//drr[0] drr[1] drr[2] arr[0]=1;//动态初始化 arr[1]=2; arr[2]=3; System.out.println(arr[1]); char[] arrs = new char[26]; char c = 'A'; for (int i = 0;i<arrs.length;i++) { arrs[i] = c; c++; } for (int i = 0;i < arrs.length;i++) { System.out.println("下标为:"+i); System.out.println(arrs[i]); } arrs[25] = 'z'; for (char c1:arrs) { System.out.println(c1); } String[] strs = new String[3];//"" null char [] brrs = arrs; brrs[1]='@'; System.out.println(arrs[1]+"sfddsfsfdsdfsfs");//B @ for (char c2:brrs) { System.out.println(c2); } int a = 3; int b = a; System.out.println(b); String str1 = "abc"; String str2 = str1; System.out.println(str2);
-
-
数组内存图
-
数组之间赋值
-
System.arraycopy(arr,inedx1,brr,index2,length)
-
arr:原数组
-
brr:目标数组
-
index1:原数组的起始位置
-
index2:目标数组的起始位置
-
length:复制的长度,元素个数
-
Arrays.copyOf(names, names.length+``1``); // 数组的扩容 // copyOf // 第一个参数:原数组(拷贝) // 第二个参数:扩容之后的长度
public class Demo04 { public static void main(String[]args) { int [] arr = {1,2,3,4,5}; int [] brr = new int[10];//0 4 System.arraycopy(arr,2,brr,7,3); for (int i:brr) { System.out.println(i); } for (int i = 0;i<arr.length;i+=2) { brr[i]=arr[i]; } } }
-