Java核心技术卷I基础知识3.10 数组

3.10 数组

数组是一种数据结构,用来存储同一类型值的集合。通过一个整型下标可以访问数组中的每一个值。例如,如果a是一个整型数组,a[i]就是数组中下标为i的整数。

在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字。下面声明了整型数组a:

 

不过,这条语句只声明了变量a,并没有将a初始化为一个真正的数组。应该使用new运算符创建数组。

 

这条语句创建了一个可以存储100个整数的数组。数组长度不要求是常量:new
int[n]会创建一个长度为n的数组。

      注释:可以使用下面两种形式声明数组

 

 

大多数Java应用程序员喜欢使用第一种风格,因为它将类型int[](整型数组)与变量名分开了。

这个数组的下标从0~99(不是1~100)。一旦创建了数组,就可以给数组元素赋值。例如,使用一个循环:

 

创建一个数字数组时,所有元素都初始化为0。boolean数组的元素会初始化为false。对象数组的元素则初始化为一个特殊值null,这表示这些元素(还)未存放任何对象。初学者对此可能有些不解。例如,

 

会创建一个包含10个字符串的数组,所有字符串都为null。如果希望这个数组包含空串,可以为元素指定空串:

 

      警告:如果创建了一个100个元素的数组,并且试图访问元素a[100](或任何在0~99之外的下标),程序就会引发“array
index out of bounds”异常而终止执行。

要想获得数组中的元素个数,可以使用array.length。例如,

 

一旦创建了数组,就不能再改变它的大小(尽管可以改变每一个数组元素)。如果经常需要在运行过程中扩展数组的大小,就应该使用另一种数据结构——数组列表(array list)有关数组列表的详细内容请参看第5章。

时间: 2024-08-01 09:02:55

Java核心技术卷I基础知识3.10 数组的相关文章

Java核心技术卷I基础知识3.10.1 for each循环

3.10.1 for each循环 Java有一种功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心. 这种增强的for循环的语句格式为:   定义一个变量用于暂存集合中的每一个元素,并执行相应的语句(当然,也可以是语句块).collection这一集合表达式必须是一个数组或者是一个实现了Iterable接口的类对象(例如ArrayList).有关数组列表的内容将在第5章中讨论,有关Iterable接口的内容将在第9章中讨论. 例如,   打印

Java核心技术卷I基础知识3.10.6 多维数组

3.10.6 多维数组 多维数组将使用多个下标访问数组元素,它适用于表示表格或更加复杂的排列形式.这一节的内容可以先跳过,等到需要使用这种存储机制时再返回来学习. 假设需要建立一个数值表,用来显示在不同利率下投资$10,000会增长多少,利息每年兑现,而且又被用于投资(见表3-8). 表3-8 不同利率下的投资增长情况 10%     11%     12%     13%     14%     15% 10 000.00    10 000.00    10 000.00    10 000

Java核心技术卷I基础知识3.10.4 命令行参数

3.10.4 命令行参数 前面已经看到多个使用Java数组的示例.每一个Java应用程序都有一个带String arg[]参数的main方法.这个参数表明main方法将接收一个字符串数组,也就是命令行参数. 例如,看一看下面这个程序:   如果使用下面这种形式运行这个程序:   args数组将包含下列内容:   这个程序将显示下列信息:         C++注释:在Java应用程序的main方法中,程序名并没有存储在args数组中.例如,当使用下列命令运行程序时   args[0]是"-h&q

Java核心技术卷I基础知识3.10.3 数组拷贝

3.10.3 数组拷贝 在Java中,允许将一个数组变量拷贝给另一个数组变量.这时,两个变量将引用同一个数组:   图3-14显示了拷贝的结果.如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:   第2个参数是新数组的长度.这个方法通常用来增加数组的大小:   如果数组元素是数值型,那么多余的元素将被赋值为0:如果数组元素是布尔型,则将赋值为false.相反,如果长度小于原始数组的长度,则只拷贝最前面的数据元素.       C++注释:Java数组与

Java核心技术卷I基础知识3.10.5 数组排序

3.10.5 数组排序 要想对数值型数组进行排序,可以使用Arrays类中的sort方法:   这个方法使用了优化的快速排序算法.快速排序算法对于大多数数据集合来说都是效率比较高的.Arrays类还提供了几个使用很便捷的方法,在稍后的API注释中将介绍它们. 程序清单3-7中的程序用到了数组,它产生一个抽彩游戏中的随机数值组合.假如抽彩是从49个数值中抽取6个,那么程序可能的输出结果为:     要想选择这样一个随机的数值集合,就要首先将数值1,2,-,n存入数组numbers中:   而用第二

Java核心技术卷I基础知识1.2.10 多线程

1.2.10 多线程 多线程可以带来更好的交互响应和实时行为. 如今,我们非常关注并发性,因为摩尔定律行将完结.我们不再追求更快的处理器,而是着眼于获得更多的 处理器,而且要让它们一直保持工作.不过,可以看到,大多数编程语言对于这个问题并没有显示出足够的 重视. Java在当时很超前.它是第一个支持并发程序设计的主流语言.从白皮书中可以看到,它的出发点稍有些不 同.当时,多核处理器还很神秘,而Web编程才刚刚起步,处理器要花很长时间等待服务器响应,需要并发 程序设计来确保用户界面不会"冻住&qu

Java核心技术卷I基础知识1.5 关于Java的常见误解

1.5 关于Java的常见误解 在结束本章之前,我们列出了一些关于Java的常见误解,同时给出了解释. 1.?Java是HTML的扩展 Java是一种程序设计语言:HTML是一种描述网页结构的方式.除了用于在网页上放置Java applet的HTML扩展之外,两者没有任何共同之处. 2.?使用XML,所以不需要Java Java是一种程序设计语言:XML是一种描述数据的方式.可以使用任何一种程序设计语言处理XML数据,而Java API对XML处理提供了很好的支持.此外,许多重要的第三方XML工

Java核心技术卷I基础知识3.7.3 文件输入与输出

3.7.3 文件输入与输出 要想对文件进行读取,就需要一个用File对象构造一个Scanner对象,如下所示:   如果文件名中包含反斜杠符号,就要记住在每个反斜杠之前再加一个额外的反斜杠: "c:\\mydirectory\\myf?ile.txt".       注释:在这里指定了UTF-8字符编码,这对于互联网上的文件很常见(不过并不是普遍适用).读取一个文本文件时,要知道它的字符编码--更多信息参见卷Ⅱ第2章.如果省略字符编码,则会使用运行这个Java程序的机器的"默

Java核心技术卷I基础知识3.6.6 码点与代码单元

3.6.6 码点与代码单元 Java字符串由char值序列组成.从3.3.3节"char类型"已经看到,char数据类型是一个采用UTF-16编码表示Unicode码点的代码单元.大多数的常用Unicode字符使用一个代码单元就可以表示,而辅助字符需要一对代码单元表示. length方法将返回采用UTF-16编码表示的给定字符串所需要的代码单元数量.例如:   要想得到实际的长度,即码点数量,可以调用:   调用s.charAt(n)将返回位置n的代码单元,n介于0-s.length(