JavaSE:数组深入学习与复习
学习参考
1、可变参数传递
数组可以是int等基本数据类型,也可以是String等引用类型
package com.test;public class Main {public static void main(String [] args){int [] a = {1,2,3,4,5};test(78,90,12,34,56,78,90,12,34,56,78);}public static void test(int ...a){for(int i:a)System.out.print(i);}
}
2、数组转为List
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){Integer [] a = {1,2,3,4,5};List<Integer> list = Arrays.asList(a);//a数组不能为基本数据类型的数组List<Integer> list1=Arrays.asList(1,2,3);//可以这样写,自动装箱// list.add(6); UnsupportedOperationException异常,Arrays生成的数组不可变// 数组长度不可变,a.length 是finala[1]=1;//但可以修改List<Integer> list2=new ArrayList<>(list);list2.add(6); //OK,用ArrayList接收即可转为可变长数组}
}
3、Arrays工具类与数组
复制填充
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){int a[]=new int[]{1,2,4,3,5,6,7,8,9,10};Arrays.sort(a);for(int i=0;i<a.length;i++)System.out.print(a[i]+" ");//1 2 3 4 5 6 7 8 9 10//二分查找int b=Arrays.binarySearch(a,5);System.out.println(b);//4//复制数组,Arrays工具类重写了tostring方法//不足用0,null填充int c[]=Arrays.copyOf(a,11);System.out.println(Arrays.toString(c));//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 0]int d[]=Arrays.copyOfRange(a,2,7);System.out.println(Arrays.toString(d));//[3, 4, 5, 6, 7]int e[]=new int[5];Arrays.fill(e,4);System.out.println(Arrays.toString(e));//[4, 4, 4, 4, 4]}
}
比较数组
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){int a[]=new int[]{1,2,4,3,5,6,7,8,9,10};int b[]=Arrays.copyOf(a,a.length); //新建的数组,跟原来不在同一块空间int c[]=new int[]{10,9,8,7,6,5,4,3,2,1};int d[]=new int[]{1,2,4,3,5,6,7,8,9,10};System.out.println(Arrays.equals(b,a));//trueSystem.out.println(Arrays.equals(a,c));//falseSystem.out.println(Arrays.equals(a,d));//true//比较的是元素是否相等}
}
setAll(函数式编程)
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){int[] array = new int[10];Arrays.setAll(array, i -> i * 10);System.out.println(Arrays.toString(array));//[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]}
}
4、二维数组
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){int [][] a=new int[2][];int [][] b={{1,2},{3,4}};int [][] c=new int[2][2];// a[0][0]=1; //异常 空指针异常//System.out.println(a[0].length); //异常,a[0]为nullc[0][0]=1;System.out.println(c[0][0]);//1System.out.println(c[0][1]);//0System.out.println(b[0][0]);//1}
}
5、打印数组
package com.test;
import java.util.*;
public class Main {public static void main(String [] args){int a[]=new int[]{1,2,3,4,5,6,7,8,9,10};for(int i=0;i<a.length;i++)System.out.print(a[i]);//12345678910System.out.println();for(int i:a){System.out.print(i);//12345678910}System.out.println();Arrays.stream(a).forEach(System.out::print);//12345678910}
}