初始化
/*
*
* char数组
* char[] c = new char[4];
* char[] c = {1,2};
*
* char[] c = {},声名了一个长度为0的数组,c[0]抛出下表越界异常。
*
* char[] chars = new char[5]{'a','b','c','d','e'}; //编译不通过
*
* 关于:
*
* char c = new char[3];
* new String(c,0,3); //正确
* new String(c,0,4); //数组下标越界
*
*
*
* 关于:
* int a = 97; //字符'a'
* char[] c = new char[4];
* System.out.println(97 == (c[0] = (char) a)); //true
* System.out.println('a' == (c[0] = (char) a)); //true
* System.out.println('97' == (c[0] = (char) a)); //编译不通过,'97'写法报错
*
*
*
* */
动态初始化:
int[] ints1 = new int[3];
静态初始化:
简化格式: int[] ints2 = {1, 2, 3};
完整格式:int[] ints3 = new int[]{1, 2, 3};
在开发之中,对于静态数组的初始化强烈建议使用完整语法模式,这样可以轻松地使用匿名数组这一概念。
System.out.println(new int[]{1, 2, 3}.length);
foreach
int[] ints1 = new int[3];
for (int i : ints1) {
System.out.println(i);
}
默认值:
int:0
boolean: false
引用类型: null
copy
System.arraycopy(src, srcPos, dest, destPos, length);
src:源数组
srcPos:源数组起始位置
dest:目标数组
destPos:目标数组起始位置
length: 要复制的个数
/*
* 注意: 复制时,只能为相同类型的数组
* */
// char[] dest = new char[]{'a', 'b', 'c', 'd', 'e', 'f'};
/*
* 源数组,源数组起始下标,目标数组,目标数组起始下标,要复制的个数
* 注意:复制的个数 + 源数组起始下标,不能大于源数组 length -1,且复制的个数 + 目标数组起始下标,不能大于目标数组 length -1,否则抛出越界异常
* */
System.arraycopy(src, 1, dest, 1, 4);
System.out.println(Arrays.toString(src)); // [1, 2, 3, 4, 5, 6]
System.out.println(Arrays.toString(dest )); // [11, 2, 3, 4, 5, 66, 77, 88, 99]
Integer[] integers = new Integer[6]; System.out.println(Arrays.toString(integers)); // i 为索引 Arrays.setAll(integers, i -> { System.out.println(i); return i + 2; }); System.out.println(Arrays.toString(integers)); // Arrays.parallelPrefix(integers, (x,y) -> { System.out.println(x + " : " + y); return x * y; }); System.out.println(Arrays.toString(integers)); Integer[] iis = new Integer[20]; IntStream.range(3,30).forEach(i -> System.out.println(i));
Arrays
数组转 List
int[] ints = new int[]{1, 2, 3, 4, 5};
List list = Arrays.asList(ints);
System.out.println(list.size()); // 1
System.out.println(list.get(0)); // 数组的地址引用, [I@61bbe9ba
list.add(3); // 抛出异常
注意:调用Arrays.asList()时,其返回值类型是ArrayList,但此ArrayList是Array的内部类,调用add()时,会报错:java.lang.UnsupportedOperationException,并且结果会因为array的某个值的改变而改变,故需要再次构造一个新的ArrayList。
List<String> resultList= new ArrayList<>(Arrays.asList(array));
Arrays.fill()
Arrays.parallelSort()
先排序,后查找
若数组存在相同元素,查找结果不确定
Arrays.binarySearch(Object[] array, Object key)
Arrays.copyOf(T[] original, int newLength)
1. 升序
void Array.sort(Object[] array)
void Arrays.sort(Object[] array, int from, int to)
2. 填充
Arrays.fill(Object[] array,Object object)
Arrays.fill(Object[] array,int from,int to,Object object)
3. toString
Arrays.toString(Object[] array)
Arrays.deepToString() //多维数组
Thanks:
https://blog.csdn.net/goodbye_youth/article/details/81003817
https://www.cnblogs.com/wei-jing/p/10540192.html
https://www.cnblogs.com/kangkaii/p/8427739.html