4.4 - 数组

一、数组

1、概念

  • 一系列类型相同的元素组成的一个结合。

2、考点

  • i是行下标,j是列下标,n是二维数组行数,m是二维数组列数,len是二维数组中每个元素占得字符数。
  • 元素偏移量:也就是目标元素前有多少个元素。
  • 元素存储地址的计算

二、一维数组

  • 可以看成是一个顺序表,就是一系列类型相同的元素依此存放着。

三、二维数组

1、概念

  • 可以想成Excel中的由行列组成的单元格,所以定义二维数组时需要定义多少行多少列。
  • 不同开发语言中定义二维数组的方式也不一样,有的是“数组名[行][列]”,有的是“数组名[行,列]”。

2、二维数组的两种存储方式

  • 按行存储
  • 按列存储

3、按行优先存储

  • 就是在数组a0中存储元素时,先把第一行存满,再存第二行、第三行,以此类推。

4、按列优先存储

  • 就是在数组a0中存储元素时,先把第一列存满,再存第二列、第三列,以此类推。

四、数组的下标

1、概念

  • 在二维数组中,每一个元素的位置,都由行和列表示。

2、默认值

  • 默认情况下,数组下标从0开始,第一行下标为“0”,第一列下标为“0”,第一个元素的地址为a[0][0]。题中不说编码从几开始,就是按默认的来。
  • 注意考题可能会告知下标从1开始,那么第一行下标就是“1”,第一列下标就是“1”,第一个元素的地址为a[1][1] 。

四、考题:按行优先存储

1、下标从0开始编号,求a[2][3]的偏移量?存储地址是?

  • 元素行坐标为2,说明前面已经存满2行了,又因为数组有5列,所以每行最多可以存5个元素,此时有10各元素。
  • 元素列坐标是3,说明元素前已经存满3列了;
  • 所以a[2][3]前面的元素个数=2*5+3=10个。
  • 所以a[2][3]的按行存储地址是:a+(2*5+3)*2

2、下标从1开始编号,求a[2][3]的偏移量?存储地址是?

  • 元素行坐标为2,说明前面已经存满(2-1)行了,又因为数组有5列,所以每行最多可以存5个元素,此时有5个元素。
  • 元素列坐标是3,说明元素前已经存满(3-1)列了;
  • 又因为二维数组是5行5列的,所以a[2][3]前面的元素个数=1*5+2=7个。
  • 所以a[2][3]的存储地址是:a+(1*5+2)*2

五、按列开始存储

1、下标从0开始编号,求a[2][3]的偏移量?存储地址是?

  • 元素列坐标为3,说明前面已经存满3列了,又因为数组有5行,所以每列最多可以存5个元素,此时有15个元素。
  • 元素行坐标是2,说明元素前已经存满2行了;
  • 又因为二维数组是5行5列的,所以a[2][3]前面的元素个数=3*5+2=17个。
  • 所以a[2][3]的按列存储地址是:a+(3*5+2)*2

2、下标从1开始编号,求a[2][3]的偏移量?存储地址是?

  • 元素行坐标为2,说明前面已经存满(2-1)行了;
  • 元素列坐标是3,说明元素前已经存满(3-1)列了,又因为数组有5行,所以每行最多可以存5个元素,此时有10个元素。
  • 又因为二维数组是5行5列的,所以a[2][3]前面的元素个数=2*5+1=11个。
  • 所以a[2][3]的按列存储地址是:a+(2*5+1)*2

六、数组元素偏移量、存储地址计算

解析:
  • a[1...10][1...8]:10行8列的二维数组,按行存放每行最多存8个元素。
  • 第一个元素a[1,1]:下标从1开始。所以存储计算公式中的行、列下标都需要减1。
  • a[1,1]地址为1004:存储地址计算公式中a=1004
  • 偏移量:(5-1)*8+(6-1)
  • 存储地址:1004+(4*8+5)*4
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 将Float数组转换为Double数组可以遍历Float数组并逐个转换为Double,然后存储到新的Double数组中。例如: ``` float[] floatArray = {1.1f, 2.2f, 3.3f}; double[] doubleArray = new double[floatArray.length]; for (int i = 0; i < floatArray.length; i++) { doubleArray[i] = (double)floatArray[i]; } ``` 或者使用Java8的Stream API: ``` float[] floatArray = {1.1f, 2.2f, 3.3f}; double[] doubleArray = Arrays.stream(floatArray) .mapToDouble(f -> (double)f) .toArray(); ``` ### 回答2: 要将一个Float类型的数组转换为Double类型的数组,可以通过循环遍历原始数组,并将每个元素进行类型转换。 首先,创建一个与原始数组相同长度的Double数组,用于存储转换后的结果。 然后,使用一个循环,从原始数组中取出每个Float元素,并将其转换为对应的Double元素。可以使用Java中的Float类的doubleValue()方法进行类型转换。 最后,将转换后的Double元素依次存入新创建的Double数组中。 以下是示例代码: ```java public class FloatToDouble { public static void main(String[] args) { Float[] floatArray = {1.1f, 2.2f, 3.3f, 4.4f, 5.5f}; // 创建一个与原始数组长度相同的Double数组 Double[] doubleArray = new Double[floatArray.length]; // 将Float数组转换为Double数组 for (int i = 0; i < floatArray.length; i++) { doubleArray[i] = floatArray[i].doubleValue(); } // 打印转换后的Double数组 for (double d : doubleArray) { System.out.print(d + " "); } } } ``` 执行以上代码,输出结果为:1.1 2.2 3.3 4.4 5.5,即成功将Float数组转换为Double数组。 ### 回答3: 要将float数组转换为double数组,可以通过遍历数组元素将每个float值转换为double值,并存储到一个新的double数组中。 可以使用如下的代码实现: ```java public static double[] convertFloatToDouble(float[] floatArray) { double[] doubleArray = new double[floatArray.length]; for (int i = 0; i < floatArray.length; i++) { doubleArray[i] = (double) floatArray[i]; } return doubleArray; } ``` 在这个代码中,我们首先创建一个与给定float数组长度相同的double数组。然后,通过遍历float数组的每个元素,将它们转换为double类型,并存储到新的double数组中。最后返回这个转换后的double数组。 使用这个方法,你可以将任何给定的float数组转换成double数组,并使用转换后的double数组进行其他操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值