16.数组

1.数组和其他容器的区别
效率,类型和保存基本类型的能力。
效率是以数组大小被固定的代价换来的。
在泛型之前,容器的对象都被当做object,而数组则可以限制某种类型。
其他容器通过包装基本类型来保存。

2.对象和基本类型数组

对象数组保存引用。

基本类型数组保存值。

3.粗糙数组

维度长度不一数组。
int[][][] a = new int[rand.nextInt(7)][][];
    for(int i = 0; i < a.length; i++) {
      a[i] = new int[rand.nextInt(5)][];
      for(int j = 0; j < a[i].length; j++)
        a[i][j] = new int[rand.nextInt(5)];
    }

4.java.util.Arrays
其中的deepToString可以对数组值做深层输出。

int[] a = new int[5];
Arrays.fill(a,5);

String[] b = new String[9];
Arrays.fill(b,"hello");
Arrays.fill(b,3,5,"world");//填充数组的3到5的区域。

 int[] arr = {93, 5, 3, 55, 57, 7, 2 ,73, 41, 91};
 Arrays.sort(arr);//排序
 Arrays.binarySearch(arr, key);//如果没找到返回负值。返回值=插入点-1;
 Arrays.equals(arr1, arr2)); //比较两个数组,返回true或false
 Arrays.deepEquals(arr1, arr2));//可以对二维仍至三维以上的数组进行比较是否相等
 
 System.arraycopy(源数组,源起始位置,目标数组,目标起始位置,复制个数)如果是对象则复制 引用。

5.数组和泛型
两者不能很好的结合。

Peel<Banana>[] peels = new Peel<Banana>[10];//illegal
擦除会移除参数类型信息,而数组必须知道它们所持有的确切类型,以强制保证类型安全。

但是可以创建泛型数组引用。
List<String>[] ls;
然后创建非泛型数组,将其强制转换。
    List[] la = new List[10];
    ls = (List<String>[])la;
    ls[1] = new ArrayList<String>;
    // Compile-time checking produces an error:
     //! ls[1] = new ArrayList<Integer>();
    因为数组是协变类型的,List<String>[] 也是一个Object[].
     Object[] objects = ls; // So assignment is OK
    // Compiles and runs without complaint:
    objects[1] = new ArrayList<Integer>();

好的,我会回答你的问题。 首先,让我们来看看如何在C语言中完成数组的基本操作。 ①创建数组 在C语言中,可以通过以下语句来创建一个数组: ```c int arr[10]; // 创建一个包含10个整数的数组 ``` 这将创建一个名为arr的整数数组,它有10个元素。 ②显示数组 要显示数组中的元素,可以使用循环语句遍历数组并输出每个元素的值: ```c int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } // 输出:1 2 3 4 5 6 7 8 9 10 ``` 这将输出数组中的每个元素。 ③矩阵乘法(应用) 现在让我们来看看如何使用数组进行矩阵乘法。 假设我们有两个矩阵A和B,它们的维度分别为n x m和m x p。我们可以通过以下方式计算它们的乘积C: ```c int A[n][m]; // 定义矩阵A int B[m][p]; // 定义矩阵B int C[n][p]; // 定义矩阵C // 初始化矩阵A和B for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { A[i][j] = i * j; } } for (int i = 0; i < m; i++) { for (int j = 0; j < p; j++) { B[i][j] = i + j; } } // 计算矩阵乘积 for (int i = 0; i < n; i++) { for (int j = 0; j < p; j++) { C[i][j] = 0; for (int k = 0; k < m; k++) { C[i][j] += A[i][k] * B[k][j]; } } } // 输出矩阵C for (int i = 0; i < n; i++) { for (int j = 0; j < p; j++) { printf("%d ", C[i][j]); } printf("\n"); } // 输出: // 0 0 0 // 3 4 5 // 6 8 10 // 9 12 15 // 12 16 20 // 15 20 25 // 18 24 30 // 21 28 35 // 24 32 40 // 27 36 45 ``` 这将计算矩阵A和B的乘积,并将结果存储在矩阵C中。然后,它将输出矩阵C的所有元素。 希望这个答案能够帮助你!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值