600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > C++接收字符串数组_Java 中初始化数组

C++接收字符串数组_Java 中初始化数组

时间:2019-12-03 07:14:35

相关推荐

C++接收字符串数组_Java 中初始化数组

数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素。下面是如何有效地使用它们。

-- Chris Hermansen(作者)

有使用 C 或者 FORTRAN 语言编程经验的人会对数组的概念很熟悉。它们基本上是一个连续的内存块,其中每个位置都是某种数据类型:整型、浮点型或者诸如此类的数据类型。

Java 的情况与此类似,但是有一些额外的问题。

一个数组的示例

让我们在 Java 中创建一个长度为 10 的整型数组:

int[] ia = new int[10];

上面的代码片段会发生什么?从左到右依次是:

最左边的 int[] 将变量的类型声明为 int 数组(由 [] 表示)。它的右边是变量的名称,当前为 ia。接下来,= 告诉我们,左侧定义的变量赋值为右侧的内容。在 = 的右侧,我们看到了 new,它在 Java 中表示一个对象正在被初始化中,这意味着已为其分配存储空间并调用了其构造函数( 请参见此处以获取更多信息 )。然后,我们看到 int[10],它告诉我们正在初始化的这个对象是包含 10 个整型的数组。

因为 Java 是强类型的,所以变量 ia 的类型必须跟 = 右侧表达式的类型兼容。

初始化示例数组

让我们把这个简单的数组放在一段代码中,并尝试运行一下。将以下内容保存到一个名为 Test1.java 的文件中,使用 javac 编译,使用 java 运行(当然是在终端中):

import java.lang.*;public class Test1 { public static void main(String[] args) { int[] ia = new int[10]; // 见下文注 1 System.out.println("ia is " + ia.getClass()); // 见下文注 2 for (int i = 0; i < ia.length; i++) // 见下文注 3 System.out.println("ia[" + i + "] = " + ia[i]); // 见下文注 4 }}

让我们来看看最重要的部分。

我们声明和初始化了长度为 10 的整型数组,即 ia,这显而易见。在下面的行中,我们看到表达式 ia.getClass()。没错,ia 是属于一个类的对象,这行代码将告诉我们是哪个类。在紧接的下一行中,我们看到了一个循环 for (int i = 0; i < ia.length; i++),它定义了一个循环索引变量 i,该变量遍历了从 0 到比 ia.length 小 1 的序列,这个表达式告诉我们在数组 ia 中定义了多少个元素。接下来,循环体打印出 ia 的每个元素的值。

当这个程序编译和运行时,它产生以下结果:

me@mydesktop:~/Java$ javac Test1.javame@mydesktop:~/Java$ java Test1ia is class [Iia[0] = 0ia[1] = 0ia[2] = 0ia[3] = 0ia[4] = 0ia[5] = 0ia[6] = 0ia[7] = 0ia[8] = 0ia[9] = 0me@mydesktop:~/Java$

ia.getClass() 的输出的字符串表示形式是 [I,它是“整数数组”的简写。与 C 语言类似,Java 数组以第 0 个元素开始,扩展到第 - 1 个元素。如上所见,我们可以看到数组 ia 的每个元素都(似乎由数组构造函数)设置为零。

所以,就这些吗?声明类型,使用适当的初始化器,就完成了吗?

好吧,并没有。在 Java 中有许多其它方法来初始化数组。

为什么我要初始化一个数组,有其它方式吗?

像所有好的问题一样,这个问题的答案是“视情况而定”。在这种情况下,答案取决于初始化后我们希望对数组做什么。

在某些情况下,数组自然会作为一种累加器出现。例如,假设我们正在编程实现计算小型办公室中一组电话分机接收和拨打的电话数量。一共有 8 个分机,编号为 1 到 8,加上话务员的分机,编号为 0。 因此,我们可以声明两个数组:

int[] callsMade;int[] callsReceived;

然后,每当我们开始一个新的累计呼叫统计数据的周期时,我们就将每个数组初始化为:

callsMade = new int[9];callsReceived = new int[9];

在每个累计通话统计数据的最后阶段,我们可以打印出统计数据。粗略地说,我们可能会看到:

import java.lang.*;import java.io.*;public class Test2 { public static void main(String[] args) { int[] callsMade; int[] callsReceived; // 初始化呼叫计数器 callsMade = new int[9]; callsReceived = new int[9]; // 处理呼叫…… // 分机拨打电话:callsMade[ext]++ // 分机接听电话:callsReceived[ext]++ // 汇总通话统计 System.out.printf("%3s%25s%25s

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。