數組的基本方法
數組可以存放多個數據,多個數據類型要統一
數組格式:
格式一:常用寫法
數組類型[] 數組名稱 = 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 }
對應輸出結果如下圖: