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

-- Chris Hermansen(作者)

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

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

一个数组的示例

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

int[] ia = new int[10];

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

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

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

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

C++接收字符串数组_Java 中初始化数组相关推荐

  1. java声明和初始化数组_Java 中初始化数组

    数组是一种有用的数据类型,用于管理在连续内存位置中建模最好的集合元素.下面是如何有效地使用它们. -- Chris Hermansen(作者) 有使用 C 或者 FORTRAN 语言编程经验的人会对数 ...

  2. java 如何初始化数组_java中初始化数组的三种方式分别是什么

    三种初始化方式: 1.静态初始化:创建+赋值 2.动态初始化:先创建再赋值 3.默认初始化:创建之后若不赋值则会被赋对应数据类型的默认值 (视频教程推荐:java视频) 我们来看一下具体代码:publ ...

  3. java char数组转string数组_Java中char数组(字符数组)与字符串String类型的转换方法...

    本文实例讲述了Java中char数组(字符数组)与字符串String类型的转换方法.分享给大家供大家参考,具体如下: 在Java语言编程时,使用"口令字段"jPasswordFie ...

  4. java 声明数组_Java中的数组简介

    对于Java来说,如果需要用一种数据结构来保存若干个同类型的元素,那么可以选择使用数组. 所谓数组就是用来保存若干个同类型的数据元素,在Java中也可以认为数据元素就是对象.也就是说,只要给定了一个数 ...

  5. java对象数组_Java中对象数组的使用方法详解

    本文实例讲述了Java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  6. java中的对象数组_Java中对象数组的使用方法详解

    本文实例讲述了java中对象数组的使用方法.分享给大家供大家参考,具体如下: 一 点睛 对象可以用数组来存放,通过下面两个步骤来实现. 1 声明以类为数据类型的数组变量,并用new分配内存空间给数组. ...

  7. java中的数组_Java中的数组

    数组是在内存中存储相同数据类型的连续的空间 声明一个数组就是在内存空间中划出一串连续的空间 数组名代表的是连续空间的首地址 通过首地址可以依次访问数组所有元素 元素在数组中的排序叫做下标从零开始 数组 ...

  8. 扩容是元素还是数组_Java中对数组的操作

    数组对于每一门编程语言来说都是重要的数据结构之一,当然不同语言对于数组的实现及处理也不尽相同. Java语言中提供的数组是用来存储固定大小的同类型元素.如:声明一个数组变量,numbers[100]来 ...

  9. java stringbuffer数组_Java中字符数组、String类、StringBuffer三者之间相互转换

    一.StringBuffer与String的相互转换 1.将StringBuffer转换成String StringBuffer类成员toString函数可将其转换成String类型. StringB ...

最新文章

  1. 实用javaScript技术-屏蔽总结
  2. pandas进行数据处理常用方法与属性
  3. 知识图谱query与文本相似性如何处理
  4. iframe 父页面与子页面之间的方法的相互调用
  5. Java嵌入式数据库H2学习总结(三)——在Web应用中嵌入H2数据库
  6. Web Service学习笔记(4)
  7. linux笔记学习大全,包括相关软件
  8. win10怎么放计算机在桌面,win10我的电脑怎么放在桌面
  9. LeetCode 92. 反转链表 II(双指针)
  10. 你所不知道的mybatis居然也有拦截器
  11. 【script】python自定义时间格式的几种情况
  12. APScheduler Scheduler
  13. question1 赋值运算操作符
  14. 学习 springboot 中出现的问题
  15. 第十七周项目2-引用作形参
  16. “一天搞懂深度学习”笔记
  17. JavaScript快速入门(一)——JavaScript概览
  18. matlab假设网格颜色,MATLAB 画颜色网格图
  19. 华擎计算机主板配置,DDR+478+PCIEx16当下最平民化的计算机配置
  20. excel有条件的隐藏某行_暂时隐藏Excel条件格式

热门文章

  1. 线上电商年货节,PSD分层模板,让“年味”触手可及~
  2. 平安夜海报PNG免扣素材来了,全都在这|搜图114
  3. 数据表字段不存在 php,laravel 使用原生表达式增加原数据表不存在的字段
  4. 如何使用模板生成多个页面_Divi不再只是页面构建器。 使用主题生成器,可以完全设计整个网站。...
  5. mysql中union,左连接,右连接,与内连接
  6. 哈希函数(Hash Functions - 散列函数)的基本介绍(SHA-2,SHA-256,MD-5,Scrypt,BCrypt等)
  7. 一张图读懂nginx多线程高并发
  8. 架构设计 之 你为啥只垂直切子系统没分层呢?
  9. 【linux指令】sed指令
  10. 计算机管理mmc无法,电脑提示mmc无法创建管理单元的问题可以这样解决