赞
踩
目录
数组是相同类型数据的有序集合、数组描述的是相同类型的若干个数据,按照一定的先后次序排列组合而成,其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问他们。
在Java中,数组是一种特殊的对象,用于存储相同类型的元素集合。数组的定义通常包括以下步骤:
1、声明:声明数组时,需要指定数组的元素类型和数组名称。例如,如果你要创建一个存储整数的数组,可以这样声明:
int[] myArray;
2、创建:要创建数组对象,需要使用new关键字分配内存空间,并使用大括号{}初始化元素。例如,创建一个包含5个整数的数组:
int[] myArray = new int[5];
3、初始化:可以在创建时直接初始化数组元素,例如:
int[] myArray = {1, 2, 3, 4, 5};
或者,可以先声明一个数组对象,然后在后续代码中逐个赋值:
- int[] myArray;
- myArray[0] = 1;
- myArray[1] = 2;
- // 以此类推
4、多维数组:Java中的数组可以是多维的。二维数组可以看作是一个表格,其中每个元素由两个索引(行和列)唯一确定。声明和创建二维数组的示例如下:
- int[][] twoDimArray; // 声明二维数组
- twoDimArray = new int[3][4]; // 创建二维数组,包含3行4列
在声明数组时直接初始化元素。例如:
int[] arr = {1, 2, 3, 4, 5};
这种方式会根据数组元素的数据类型自动推断数组的大小。如果数组元素是引用类型,那么每个引用都将被初始化为null
。
先声明一个数组,然后在后续代码中动态分配空间并赋值。例如:
- int[] arr = new int[5]; //声明一个长度为5的int数组
- arr[0] = 1; //为数组的第一个元素赋值
- arr[1] = 2; //为数组的第二个元素赋值
- //以此类推
如果只是声明数组而没有进行显式初始化,那么对于引用类型的数组元素,其默认值是null
;对于数值类型的数组元素,其默认值是该类型的默认值(例如,int
类型的默认值为0,boolean
类型的默认值为false
)。例如:
int[] arr; //未初始化的数组
数组是引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
在编程中,遍历数组是指访问数组中的每个元素并对其进行操作。这可以通过使用循环来完成,例如for循环或while循环。以下是一个使用for循环遍历数组的示例代码(Java语言):
- int[] myArray = {1, 2, 3, 4, 5};
- for (int i = 0; i < myArray.length; i++) {
- System.out.println(myArray[i]);
- }
在上述代码中,我们使用for循环来遍历整型数组myArray
,并使用System.out.println()
方法打印每个元素的值。
在编程中,可以将数组作为方法的返回值返回。这意味着方法将返回一个数组类型的值,该值将包含方法执行后的结果。以下是一个示例代码(Java语言):
- public int[] getArray() {
- int[] myArray = {1, 2, 3, 4, 5};
- return myArray;
- }
在上述代码中,我们定义了一个名为getArray()
的方法,该方法返回一个整型数组myArray
。调用该方法时,将返回该数组。
在编程中,可以将数组作为方法的参数传递。这意味着方法将使用该数组作为输入,并可能对该数组进行操作。以下是一个示例代码(Java语言):
- public void printArray(int[] myArray) {
- for (int i = 0; i < myArray.length; i++) {
- System.out.println(myArray[i]);
- }
- }
在上述代码中,我们定义了一个名为printArray()
的方法,该方法接受一个整型数组myArray
作为参数。该方法使用for循环遍历该数组并打印每个元素的值。
多维数组可以看成以数组为元素的数组。可以有二维、三维、甚至更多维数组,但是实际开发中用的非常少。
- public class Test {
- public static void main(String[] args) {
- // Java中多维数组的声明和初始化应按从低维到高维的顺序进行
- int[][] a = new int[3][];
- a[0] = new int[2];
- a[1] = new int[4];
- a[2] = new int[3];
- //int a1[][] = new int[][4];//非法
- }
- }
- public class Test {
- public static void main(String[] args) {
- int[][] a = { {1, 2, 3}, {3, 4}, {3, 5, 6, 7} };
- System.out.println(a[2][3]);
- }
- }
- import java.util.Arrays;
- public class Test {
- public static void main(String[] args) {
- int[][] a = new int[3][];
- //a[0] = {1, 2, 5};//错误,没有声明类型就初始化
- a[0] = new int[]{ 1, 2 };
- a[1] = new int[]{ 2, 2 };
- a[2] = new int[]{ 2, 2, 3, 4 };
- System.out.println(a[2][3]);
- System.out.println(Arrays.toString(a[0]));
- System.out.println(Arrays.toString(a[1]));
- System.out.println(Arrays.toString(a[2]));
- }
- }
Java的Arrays类是java.util包中的一个工具类,它提供了一些静态方法来操作数组。这个类是不可变的,所以所有的方法都返回了新的数组,而不是修改传入的数组。以下是Arrays类的一些主要功能:
1.排序:
sort(T[] a)
: 对类型为Type的数组进行排序。sort(T[] a, Comparator<? super T> c)
: 使用特定的比较器对类型为Type的数组进行排序。2.查找:
binarySearch(T[] a, T key)
: 使用二分搜索算法在排序后的列表中查找给定的元素。binarySearch(T[] a, T key, Comparator<? super T> c)
: 使用二分搜索算法在排序后的列表中查找给定的元素,并使用特定的比较器。3.操作:
fill(T[] a, T value)
: 将指定的值填充到数组的所有元素。toString(T[] a)
: 返回数组元素的字符串表示形式。4.操作数组:
copyOf(T[] original, int newLength)
: 创建一个新的数组,它是原始数组的拷贝,但是在可能的情况下缩短长度或增加空间(如果原始数组元素类型占用多个字节)。copyOfRange(T[] original, int from, int to)
: 创建一个新的数组,它是原始数组的一部分的拷贝。5.操作列表:
asList(T... array)
: 将一个可变参数的数组转换为一个List。6.操作映射:
asMap(T[] keys, V[] values)
: 将两个数组转换为Map。以上就是Java Arrays类的主要功能。这个类提供了一些有用的方法来操作数组,使得在Java中对数组的操作变得简单方便。
什么是稀疏数组?
(1)、当一个数组中大部分元素为0,或者为同一值的数组时,可以使用稀疏数组来保存该数组。
(2)、稀疏数组的处理方式:记录数组一共有几行几列,有多少个不同值,把具有不同值的元素和行列及值记录在一个小规模的数组中,从而缩小程序的规模。
如下图:左边为原始数组,右边为稀疏数组
输出数组中有效值的个数:
创建一个稀疏数组,并把上面的二维数组转换成稀疏数组:
最后再还原稀疏数组为二维数组:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。