JAVA数组的基本方法
数组的基本方法
数组可以存放多个数据,多个数据类型要统一
数组格式:
格式一:常用写法
数组类型[] 数组名称 = new 数据类型[数组长度];
格式二:蛋疼写法
数组类型[] 数组名称;
数组名称 = new 数组类型[数组长度];
静态初始化数组格式:
格式一:常用写法
数组类型[] 数组名称 = new 数据类型[]{数值,数值,数值};
格式二:蛋疼写法
数组类型[] 数组名称;
数组名称 = new 数组类型[]{数值,数值,数值};
快速初始化数组格式(静态初始化数组的省略写法):
数组类型[] 数组名称 = {数值,数值,数值,数值,数值,数值,数值};
当你打印数组对象时返回的对象意思如下:
[代表当前数据是数组 + 数据类型 + @数字代表的是地址值(的哈希值)
数组动态初始化的时候默认会被赋予一个默认值
整数数组默认赋予0
浮点数组默认赋予0.0
字符串或其他引用数组类型默认赋予null
布尔数组默认赋予false
常见报错信息java.lang.ArrayIndexOutOfBoundsException
表示数组越界也就是超出了范围
来看下面的实例:
1 import java.util.Arrays; 2 3 public class ListFunc { 4 public static void main(String[] args){ 5 //动态数组初始化 6 int[] array1 = new int[3]; 7 float[] array2 = new float[3]; 8 String[] array3; 9 array3 = new String[3]; 10 boolean[] array4 = new boolean[1]; 11 System.out.println("array1="+array1[0]+" "+array1[1]+" "+array1[2]); 12 System.out.println("array2="+array2[0]+" "+array2[1]+" "+array2[2]); 13 System.out.println("array3="+array3[0]+" "+array3[1]+" "+array3[2]); 14 System.out.println("array4="+array4[0]); 15 16 //静态数组初始化 17 int[] list1 = new int[]{1,2,3}; 18 float[] list2 = new float[]{1.0f,2.0f,3.0f}; 19 String[] list3; 20 list3 = new String[]{"abc","bcd","def"}; 21 System.out.println("list1="+list1[0]+" "+list1[1]+" "+list1[2]); 22 System.out.println("list2="+list2[0]+" "+list2[1]+" "+list2[2]); 23 System.out.println("list3="+list3[0]+" "+list3[1]+" "+list3[2]); 24 25 //快速数组初始化并统计长度 26 int[] lists = {1,2,3,4,5,7,8,8,9,9,0,0,123,21,32,43,534,20}; 27 System.out.println("lists映射地址="+lists); 28 System.out.println("lists的长度="+lists.length); 29 int[] lists2 = lists.clone(); 30 31 //对已有的数据对象克隆并生成了新的地址空间 32 System.out.println("clone映射地址="+lists.clone()); 33 System.out.println("克隆数组方法="+Arrays.toString(lists2)); 34 System.out.println("hashCode="+lists.hashCode()); //生成对应的哈希值 35 36 37 //Arrays.toString方法直接可以转换数组快速变成可阅读模式 38 // 使用此方法前需要import java.util.Arrays; 39 int[] array5 = {1,2,3,4,5,6}; 40 String str = Arrays.toString(array5); 41 System.out.println("array5="+str); 42 43 44 String[] list5 = {"a","b","c"}; 45 String[] list6 = {"a","b","c"}; 46 //判断两个数组是否相等/相同 47 System.out.println("Arrays-equals="+Arrays.equals(list5,list6)); 48 //生成哈希值 49 System.out.println("Arrays-hashCode="+Arrays.hashCode(list6)); 50 //搜索数组的对象的下标位置(字符串不能用) 51 System.out.println("Arrays-binarySearch="+Arrays.binarySearch(array5,2)); 52 //从数组的首位截取对应长度生成新数组 53 System.out.println("Arrays-copyOf="+Arrays.toString(Arrays.copyOf(array5,2))); 54 //从数组指定范围截取生成新数组 55 System.out.println("Arrays-copyOfRange="+Arrays.toString(Arrays.copyOfRange(array5,4,6))); 56 57 int[] array6 = {6,7,8,5,4,3,2,1}; 58 int[] array7 = array6.clone(); 59 //对数组从小到大排序 60 Arrays.sort(array6); 61 System.out.println("Arrays-sort="+Arrays.toString(array6)); 62 //同上方法一样也是排序 63 Arrays.parallelSort(array7); 64 System.out.println("Arrays-parallelSort="+Arrays.toString(array7)); 65 //对数组全部填充定义的值 66 Arrays.fill(array6,10); 67 System.out.println("Arrays-fill="+Arrays.toString(array6)); 68 69 //对下标的数利用生成器生成对应新的序列 70 int[] array9 = new int[10]; 71 Arrays.setAll(array9,x->x*2); 72 System.out.println("Arrays-setAll="+Arrays.toString(array9)); 73 //可使用表达式循环输出 74 int[] array8 = {8,88,888}; 75 Arrays.stream(array8).forEach(i->System.out.println("stream-forEach="+i)); 76 //判断列表是否为空 77 System.out.println("Arrays-asList-isEmpty="+Arrays.asList(list5).isEmpty()); 78 } 79 }
对应输出结果如下图: