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

3.10.3 数组拷贝

在Java中,允许将一个数组变量拷贝给另一个数组变量。这时,两个变量将引用同一个数组:

 

图3-14显示了拷贝的结果。如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用Arrays类的copyOf方法:

 

第2个参数是新数组的长度。这个方法通常用来增加数组的大小:

 

如果数组元素是数值型,那么多余的元素将被赋值为0;如果数组元素是布尔型,则将赋值为false。相反,如果长度小于原始数组的长度,则只拷贝最前面的数据元素。

      C++注释:Java数组与C++数组在堆栈上有很大不同,但基本上与分配在堆(heap)上的数组指针一样。也就是说,

 

不同于

 

而等同于

 

Java中的[ ]运算符被预定义为检查数组边界,而且没有指针运算,即不能通过a加1得到数组的下一个元素。

时间: 2024-10-26 12:38:48

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

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

3.10 数组 数组是一种数据结构,用来存储同一类型值的集合.通过一个整型下标可以访问数组中的每一个值.例如,如果a是一个整型数组,a[i]就是数组中下标为i的整数. 在声明数组变量时,需要指出数组类型(数据元素类型紧跟[])和数组变量的名字.下面声明了整型数组a:   不过,这条语句只声明了变量a,并没有将a初始化为一个真正的数组.应该使用new运算符创建数组.   这条语句创建了一个可以存储100个整数的数组.数组长度不要求是常量:new int[n]会创建一个长度为n的数组.      

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.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(