Java 数组

数组:一个固定大小的线性序列容器,可以存放基本类型和引用类型。

数组基本常识:

1.获取数组长度的字段arr.length;注意length是字段不是方法!

2.数组中,基本类型储存值,引用类型储存对象的引用;

3.数组的标识符也是一个引用,其指向堆中的数组对象;

4.数组索引从0开始;

一维数组:

使用数组的引用前必须初始化数组,数组默认初始化的值:引用->null,数值类型->0,boolean->false,字符型(char)->空字符(char)0;

1.int [] array = {2,3,45,};聚集化初始,隐式的在堆中创建;

2.int [] array = new int[3]; 然后再依次赋值;

3.int [] array = new int[]{2,3,45};

4.int [] array = array1;

二维数组:

int [][]array = new int[a][b]; 可以看做一个数组A中包含a个B数组,B数组的长度为b.其中a必须指定,b可以不指定;

array[i]代表第i-1个B数组的引用,array[i][j]代表第i-1个B数组索引为j的值 ;

数组工具类:Arrays

 有几个很方便的方法

1.Arrays.fill();用同一个值填充数组

int []array = new int[10];

Arrays.fill(array,2);

Arrays.fill(array,3,5,1);将索引为3到索引为5之间的值填充为1;[3,5)

2.Arrays.equals(); 用于两个数组的比较,返回true或false

Arrays.equals(array1,array2);

3.Arrays.sort();用于对数组排序,如果数组元素对应类没有实现comparable接口就按照默认自然顺序排序;另外也可以提供一个comparator子对象作为参数用来指定顺序;

——实现comparable接口需要实现compareTo(Object obj)方法,如果当前对象小于参数则返回-1,若相等返回0,否则返回1;

——提供comparator对象需要新建一个类实现comparator接口并重写compare方法,当然也可以利用内部类实现;(偷懒的话可以用collections的reverseOrder()方法返回一个反自然顺序的comparator对象)

——对字符串数组排序时默认自然顺序先大写再小写,可以通过添加参数String.CASE_INSENSITIVE_ORDER来忽略大小写;

4.Arrays.binarySearch(); 在排序后的数组中搜索指定目标;

该函数返回值有两个:

i >= 0:表示找到了目标,并且返回值表示该值的下标为i;

i < 0:表示没找到目标,返回值表示若要保持数组的排序方式该目标应该插入位置的下标,下标的计算公式:-(i+ 1);

如果对对象数组排序时使用了comparator,那么查找时必须提供相同的comparator;

原文地址:https://www.cnblogs.com/xiao-ji-xiang/p/9760228.html