`

2014年5月18日1

    博客分类:
  • java
 
阅读更多

某些评论认为我的节选是错的,因为对象是按引用传递的。 对象确实是按引用传递的;节选与这没有冲突。节选中说所有 参数都是按值 -- 另一个参数 -- 传递的。下面的说法是正确的:在 Java 应用程序中永远不会传递对象,而只传递对象引用。因此是按引用传递对象。但重要的是要区分参数是如何传递的,这才是该节选的意图。Java 应用程序按引用传递对象这一事实并不意味着 Java 应用程序按引用传递参数。参数可以是对象引用,而 Java 应用程序是按值传递对象引用的。

 

按值传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。 按引用传递意味着当将一个参数传递给一个函数时,函数接收的是原始值的内存地址,而不是值的副本。因此,如果函数修改了该参数,调用代码中的原始值也随之改变。

 

 

关于 Java 应用程序中参数传递的某些混淆源于这样一个事实:许多程序员都是从 C++ 编程转向 Java 编程的。C++ 既包含非引用类型,又包含引用类型,并分别按值和按引用传递它们。Java 编程语言有基本类型和对象引用;因此,认为 Java 应用程序像 C++ 那样对基本类型使用按值传递,而对引用使用按引用传递是符合逻辑的。毕竟您会这么想,如果正在传递一个引用,则它一定是 按引用传递的。很容易就会相信这一点,实际上有一段时间我也相信是这样,但这不正确。

 

在 C++ 和 Java 应用程序中,当传递给函数的参数不是引用时,传递的都是该值的一个副本(按值传递)。区别在于引用。在 C++ 中当传递给函数的参数是引用时,您传递的就是这个引用,或者内存地址(按引用传递)。在 Java 应用程序中,当对象引用是传递给方法的一个参数时,您传递的是该引用的一个副本(按值传递),而不是引用本身。请注意,调用方法的对象引用和副本都指向同一个对象。这是一个重要区别。Java 应用程序在传递不同类型的参数时,其作法与 C++ 并无不同。Java 应用程序按值传递所有参数,这样就制作所有参数的副本,而不管它们的类型。

那么,在 Java 应用程序中如何编写一个方法来交换两个基本类型的值或两个对象引用的值呢?因为 Java 应用程序按值传递所有的参数,所以您不能这样做。要交换值,您必须用在方法调用外部用内联来完成。

 

http://www.ibm.com/developerworks/cn/java/passbyval/index.html

 

http://www.ibm.com/developerworks/cn/java/joy-down/index.html java实现断点续传

 

对控制流使用异常处理是一个不好的编程习惯。异常处理应该为异常情况保留。

int[] variable、int []variable 以及 int variable[]

重要的是能否在指定数组大小的地方完成一次赋值。例如,如果表达式 int variable[] = new int[var1 = var2*var2] 会导致 OutOfMemoryError 抛出,那么在错误被抛出前要设置变量 var1

对一维数组来说,如果数组类型是基本数据类型的其中之一,一旦创建了数组就可以立即往里面存储数值。对于多维数组,光声明是不够的。因为数组变量从未被初始化:

 

对于对象数组,创建一个多维数组会产生一个充满空对象引用的数组。您还是需要创建对象以存储到数组中。

因为多维数组最外层数组的每个元素都是对象引用,这就没有必要让数组成为一个矩形(或者一个为实现三维数组创建的立方体)。每个内部数组可以有自己的大小。

Java 语言的语法允许在数组初始化程序块中的最后一个元素后带一个结尾逗号,如 {"Leonardo", "da", "Vinci",}。这并没有将数组的长度变成 4,而仍旧保持为 3 。这种灵活性主要是出于对代码生成器的考虑。

如果数组的类型是接口,则数组中的所有元素都必须实现这个接口。

匿名数组的声明与常规数组类似。但是,您要将包含在花括号里的用逗号分隔的一列值放在方括号的后面,而不是在方括号里指定一个长度。

当数组作为参数被传递到方法,对数组的引用就被传递了。这允许您修改数组的内容

 

System.arraycopy(original, 0, newArray, 0, length);

 

因为数组实现了 Cloneable 接口,除了复制数组的区域以外,还可以克隆它们。 克隆包括创建一个同样大小和类型的数组,并将所有的原始元素复制到新数组里。这和复制不同,复制要求您自己创建目标数组并限定其大小。对基本数据类型的元素来说,新数组包含原始元素的副本,所以一个数组中元素的变化不会反映到它的副本中。但对于对象引用的情况,复制的只是引用。因而,数组的两个副本将指向同一个对象。对该对象的更改将反映到两个数组中。这叫做 浅拷贝或者 浅克隆

声明一个对象引用为 final (特别是这里的数组引用)并不限制您修改对象。它只限制您改变 final 变量引用

为了让一个数组的克隆版本与原数组相等,您必须使用 java.util.Arrays 类中的 equals() 方法,这就会检查每个元素的等同性

在参数是对象数组的情况下,每个对象的 equals() 方法会被用来检查等同性

 

http://www.ibm.com/developerworks/cn/java/j-arrays/index.html

 

 

 

分享到:
评论

相关推荐

    手机号码归属地数据库2014年5月18日

    手机号码归属地数据库,ACCESS数据库版,已经压缩,2014年5月18日更新,数据总数【300105】条 电信133 -> 9648 电信153 -> 9828 电信180 -> 9680 电信189 -> 9989 电信181 -> 9518 电信170 -> 1767 电信177 -> 2469...

    2014年美赛B题结果

    此次竞赛在2014年2月6日至2月10日举行,参赛队伍需在规定时间内完成对两个指定问题中的一个进行研究、建模并提交解决方案。 #### 二、竞赛特点与形式 1. **线上参与**:本次比赛主要通过网络方式进行,包括注册、...

    2014年4月自考计算机网络原理试题

    这份2014年4月的自考试题涵盖了网络原理的重要知识点,旨在测试考生对网络拓扑、网络协议、数据传输、多址接入、错误控制等核心概念的理解。 1. **网络拓扑**:题目中提到了星形、网状、树形和总线形四种拓扑结构。...

    2014年下半年嵌入式系统设计师上午+下午真题.doc

    本文将对 2014 年下半年嵌入式系统设计师考试真题进行详细解析,涵盖计算机系统结构、嵌入式硬件、软件开发、网络安全、计算机法制等领域。 计算机系统结构 * 题1:计算机总线系统由 CPU 总线、内存总线和 IO 总线...

    众厦地产2014年4月25日郑州时代国际广场定位报告.pdf

    在物业类型的成交均价对比中,2009年5月,郑州市商品住宅成交均价为4773元/平方米,环比上涨7.14%;办公用房成交均价4941元/平方米,但环比下降18.59%,这可能是由于高档写字楼市场供应的减少;而商业用房成交均价则...

    2014年7月3日美国邦纳工业指示灯和照明灯在线研讨会PPT.zip

    【压缩包子文件的文件名称】"美国邦纳工业指示灯和照明灯Webinar 20140618.rar" 暗示这个研讨会可能是在2014年6月18日进行的,但资料在7月3日的PPT中进行了总结或更新。RAR文件是一种常见的压缩格式,用于存储多个...

    华农2013-2014校历

    寒假从1月18日开始,到2月15日结束,恰逢中国农历腊月十八至正月十六,其中1月31日为2014年春节。暑假从7月5日开始,至9月2日结束,为期两个月。 3. 重要节庆和纪念日:校历中包含了中国的重要传统节日如中秋节(9...

    2014年公司年会策划方案(第一版)年会精品模板文案.docx

    4. 正式演出时间:2014年1月18日,整场年会的实施。 【年会目的】 1. 总结2013年公司发展,规划2014年发展方向和目标。 2. 加强员工间的沟通,提升团队协作精神和公司的竞争力。 3. 表彰优秀,通过奖励激励员工在新...

    2014年1月2日初二地理期末考试题.ppt

    1. 中国位于北半球和东半球,处于亚洲东部,太平洋西岸,所以选项C正确。 2. 我国疆界的最北端和最东端都在黑龙江省,简称黑。 3. 少数民族最多的省份通常是中国的云南省,因为这里有众多的民族聚居。 4. 中国的首都...

    2014年中国(成都)国际智慧城市暨智能家居展览会.pdf

    - 撤展时间:2014年4月18日。 - 展会地址:成都世纪城新国际会展中心。 6. 展品范围: - 智能家居安防系统:包括防盗报警、视频监控、门禁系统、可视对讲等。 - 智能灯光控制系统:涉及智能家电、门窗、场景...

    IEC 60079-18-2014

    该标准的版本号为 **Edition 4.0**,出版日期为 **2014年12月**。这意味着这是自首次发布以来的第四个版本,并且是最新的修订版,包含了对该标准的最新改进和技术更新。这表明IEC组织不断根据技术和市场需求的变化对...

    Visio华为网络技术设备图标vss格式(最全更新2018).zip

    压缩 华为-OceanStor-5500系列 HUAWEI OceanStor 5500存储的前视图和后视图 2015年5月18日 。压缩 HUAWEI-OceanStor-5600系列 HUAWEI OceanStor 5600存储的前视图和后视图 2015年12月7日 。压缩 HUAWEI-OceanStor-...

    华为企业网络产品图标Visio-HUAWEI-Enterprise Networking Product Icons.zip

    压缩 华为-OceanStor-5500系列 HUAWEI OceanStor 5500存储的前视图和后视图 2015年5月18日 。压缩 HUAWEI-OceanStor-5600系列 HUAWEI OceanStor 5600存储的前视图和后视图 2015年12月7日 。压缩 HUAWEI-OceanStor-...

    HUAWEI-Switch.zip该集合与Visio 2003到2016版本兼容

    压缩 华为-OceanStor-5500系列 HUAWEI OceanStor 5500存储的前视图和后视图 2015年5月18日 。压缩 HUAWEI-OceanStor-5600系列 HUAWEI OceanStor 5600存储的前视图和后视图 2015年12月7日 。压缩 HUAWEI-OceanStor-...

    华为交换机.vss-HUAWEI-Access Network.Visio 2003到2016版本兼容

    压缩 华为-OceanStor-5500系列 HUAWEI OceanStor 5500存储的前视图和后视图 2015年5月18日 。压缩 HUAWEI-OceanStor-5600系列 HUAWEI OceanStor 5600存储的前视图和后视图 2015年12月7日 。压缩 HUAWEI-OceanStor-...

    Learning-[removed]我不拉屎

    2014年11月18日 review+3 2014年10月23日 2014年11月18日 review+4 2014年10月28日 2014年11月18日 review+4 2014年10月31日 2014年11月19日 review+2 2014年11月3日 2014年11月20日 review+3 2014年11月3日 2014年...

    2014年上半年 程序员 基础知识1

    4. 举例解释:例如,2014年全国计算机技术与软件专业技术资格(水平)考试是在5月20日,所以选择C和A填涂。 5. Word编辑功能:在Word中,当鼠标指针移到图片上变成特定形状时,可以拖动鼠标调整图片大小。 6. 表格...

    【EI检索_AMM】2014年智能材料与动力能源国际年会(AIMPE14)征稿中 4月11日截稿

    该会议定于2014年5月17-18日在马来西亚首都吉隆坡举行,为业内专家和学者提供了一个交流和分享智能材料与动力能源领域最新研究成果的平台。作为该领域的学术盛会,AIMPE14涵盖了智能材料与动力能源领域的主要研究...

    2014年Java最全面试题以及答案.

    2014年Java试题及答案涉及了Java基础知识、J2EE技术、Java EE的Web组件技术,以及SSH框架等。以下是对上述内容的知识点详细说明: 1. super()与this()的区别? super关键字用于访问父类的属性、方法和构造器,而...

    2014年成人学士学位外语全省统一考试报名工作的通知.pdf

    3. 考试时间与地点:考试定于2014年5月24日上午9点至11点,地点包括华南师范大学广州校区、南海校区、东莞考点、汕头考点和韶关考点。考生需按照通知第七项的安排进行报考。 4. 报考对象与条件:报考对象主要为在读...

Global site tag (gtag.js) - Google Analytics