本文对Java中数组部分知识解析与总结。
数组概念:多个相同类型元素的集合。
数组定义方式(三种)如:
int[] arr={1,2,3,4,5};
int[] arr=new int[]{1,2,3,4,5};
int[] arr=new int[5];
第一种写法是第二种写法的简写。
第三种写法没有对元素赋值,int类型元素默认值为0。
其他类型元素默认值:byte-0 short-0 long-0 float-0.0f double-0.0 char-/u0000 bolean-false
在引用类型变量当中存储了对象的堆区地址,数组名的内容本质上是堆区中存储元素的空间(该对象的空间)的首地址(地址的哈希值)。
java中数组中元素的存储空间是连在一起的,每个空间都有自己的编号(地址)。
数组的初始化:
动态初始化:在创建数组时指定数组中元素个数。
静态初始化:在创建数组时不指定元素个数,直接对元素初始化赋值,数组长度在编译时由系统根据数组元素个数来决定长度。
数组操作的for语句(for-each语句):
此时的array为int类型的数组,array数组从前往后每一个元素的值都会赋给临时变量x,可以在语句体中对临时变量进行打印检查,这时的for没有使用到下标,而是从前往后操作,同理此for语句不适合对指定下标元素操作的情况。
工具类Arrays中对数组的操作方法(需要搭配 java.util.Arrays包使用):
将整型数组转化为字符串:
String ret=Arrays.toString(array);
此时若打印ret,结果为:[元素1,元素2...] 左括号与右括号是系统自动添加的。
方法:Arrays.copyof(arr,arr.length);
意为将arr数组中的前arr.length个元素拷贝进入另一个数组,该数组作为返回值返回,注意该返回数组长度为第二个参数的值。
第二个参数的值可以大于第一个参数数组的长度,返回的数组相当于第一个参数数组的扩容数组,在第一个参数数组数据之后的元素取默认值。
方法:Arrays.copyofRange(arr,n,m);
意为将arr数组中的下标为n的元素开始到下标为m-1的元素全部拷贝进入另一个数组然后返回该数组。
注意:from-to出现时候一般作用域为左闭右开区间。
方法:Arrays.sort(arr);作用为将arr数组中元素按升序从前往后排序。
方法:Arrays.fill(arr,n);将arr数组中所有元素都赋上n的值。
方法:Arrays.fill(arr,from,to,n);左闭右开,将arr数组从from到to下标的元素都赋上n的值。
此外Arrays类还有很多的操作方法。
也有数组自己的方法:
数组名.clone方法:如arr.clone();
将对象数组中所有元素拷贝进别的数组然后返回该数组,可用临时数组承接返回值,但注意,临时数组储存的地址并不等于对象数组的地址。
概念:
浅拷贝:两个引用数据变量储存的地址值相同,共同指向堆区中的同一块空间。
深拷贝:两个引用数据变量的地址值不同,不指向同一块空间,但两块空间中的内容相同。
二维数组:
三种定义:如
int[][] arr={{1,2,3},{4,5,6}};
int[][] arr=new int[][]{{1,2,3},{4,5,6}};
int[][] arr=new int[2][3];
java中的二维数组定义时可以省略列,但不能省略行。
不规则数组:指的是二维数组的列在定义时不指定,在之后自行指定,不规则数组每行的列数不一定相同。
在一维数组中arr.length为数组arr的元素个数,
而在二维数组中arr.length为二维数组arr的行数,arr[i].length为二维数组arr第(i+1)行的元素个数。
二维数组for-each遍历:
在外部for中创建了临时一维整型数组tmp来承接二维整型数组array传过来的“多个一维数组”,再在里面用for与创建临时变量来承接多个tmp传来的多个整型元素值并做打印操作。
方法:Array.deepToString();作用为将传入的二维数组的每个部分按照格式转换为字符串返回。
END。