`
yjyj001
  • 浏览: 132675 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Java中的引用的理解

阅读更多
转自:http://www-128.ibm.com/developerworks/cn/java/l-jpointer/index.html Java对对象和基本的数据类型的处理是不一样的。和C语言一样,当把Java的基本数据类型(如int,char,double等)作为入口参数传给函数体的时候,传入的参数在函数体内部变成了局部变量,这个局部变量是输入参数的一个拷贝,所有的函数体内部的操作都是针对这个拷贝的操作,函数执行结束后,这个局部变量也就完成了它的使命,它影响不到作为输入参数的变量。这种方式的参数传递被称为"值传递"。而在Java中用对象的作为入口参数的传递则缺省为"引用传递",也就是说仅仅传递了对象的一个"引用",这个"引用"的概念同C语言中的指针引用是一样的。当函数体内部对输入变量改变时,实质上就是在对这个对象的直接操作。 此外,在Java中,除了在函数传值的时候是"引用传递",在任何用"="向对象变量赋值的时候都是"引用传递"。 理解: C中传递参数有:值传递,或指针传递 C++中有:值传递,显式的指针传递,引用传递 Java中:对对象一般是引用传递 关于java中的clone: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。在Java语言中,用简单的赋值语句是不能满足这种需求的。要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段。 Java的所有类都默认继承java.lang.Object类,在java.lang.Object类中有一个方法clone()。JDK API的说明文档解释这个方法将返回Object对象的一个拷贝。要说明的有两点:一是拷贝对象返回的是一个新对象,而不是一个引用。二是拷贝对象与用new操作符返回的新对象的区别就是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息。
分享到:
评论

相关推荐

    Java中的基本类型和引用类型变量的区别

    Java 中的基本类型和引用类型变量的区别 Java 中的基本类型和引用类型变量是两个不同的概念,它们在内存分配、变量赋值和函数传递等方面有着本质的区别。 基本类型是 Java 中的八种基本类型,包括 byte、short、...

    Java对象及其引用的理解

    NULL 博文链接:https://deony2jacob1314.iteye.com/blog/1845769

    拓胜技术专家教你如何深入理解Java四种引用类型

    ava有四种引用类型,strongreference,softreference,weakreference,phantomreference。本篇文档主要的就是进阶的介绍和了解这四种引用类型的异同点,助于你对java的更好的学习理解

    10分钟带你理解Java中的弱引用

    将带大家快速理解Java中弱引用,文章介绍的很详细,对大家学习Java很有帮助哦,有需要的可以参考借鉴。

    java及C++中传值传递、引用传递和指针方式的理解.docx

    java及C++中传值传递、引用传递和指针方式的理解.docx

    十分钟理解Java中的弱引用编程开发技术共3页.pdf.z

    十分钟理解Java中的弱引用编程开发技术共3页.pdf.zip

    深入理解Java中的弱引用

    主要介绍了深入理解Java中的弱引用,本文讲解了强引用、弱引用、引用队列、四种引用、软引用、虚引用等内容,需要的朋友可以参考下

    关于C语言指针和java引用的思考.pdf

    关于C语言指针和Java引用的思考 该资源主要讨论了C语言指针和Java引用...该资源主要讨论了C语言指针和Java引用的概念、实现、差异和应用场景,旨在帮助读者更好地理解这两种语言的内存管理机制和指针/引用的使用方法。

    深入理解Java虚拟机笔记(带目录).docx

    深入理解 Java 虚拟机笔记 Java 虚拟机(JVM)是 Java 语言的运行环境,它负责解释和执行 Java 字节码。下面是 Java 虚拟机相关的知识点: 虚拟机内存结构 Java 虚拟机的内存结构主要包括以下几个部分: * 方法...

    深入Java虚拟机(原书第2版).pdf【附光盘内容】

     作者以易于理解的方式深入揭示了java虚拟机的内部工作原理,深入理解这些内容,将对读者更快速地编写更高效的程序大有裨益!  本书共分20章,第1-4章解释了java虚拟机的体系结构,包括java栈、堆、方法区、执行...

    java源码包---java 源码 大量 实例

     Java 3DMenu 界面源码,有人说用到游戏中不错,其实平时我信编写Java应用程序时候也能用到吧,不一定非要局限于游戏吧,RES、SRC资源都有,都在压缩包内。 Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码...

    详解JAVA 虚引用

    主要介绍了JAVA 虚引用的相关资料,帮助大家更好的理解和学习JAVA,感兴趣的朋友可以了解下

    浅谈Java中的对象和对象引用

    在Java中,有一组名词经常一起出现,它们是“对象和对象引用”,很多朋友在初学Java的时候可能经常会混淆这2个概念,觉得它们是一回事,事实上则不然。我们来一起了解一下对象和对象引用之间的区别和联系。  1....

    详解 JAVA 弱引用

    主要介绍了 JAVA 弱引用的相关资料,帮助大家更好的理解和学习java引用对象,感兴趣的朋友可以了解下

    Java虚拟机规范.Java SE 8版.zip

    第2章概述Java虚拟机的整体架构,包括class文件格式、数据类型、原始类型、引用类型、运行时数据区、栈帧、浮点算法、异常等,这对理解本书后面的内容有重要帮助;第3章详述如何将Java语言编写的程序转换为Java...

    理解Java中的弱引用(Weak Reference)

    本篇文章尝试从What、Why、How这三个角度来探索Java中的弱引用,理解Java中弱引用的定义、基本使用场景和使用方法。由于个人水平有限,叙述中难免存在不准确或是不清晰的地方,希望大家可以指出,谢谢大家:)  1....

    Java中this与super的区别

    Java中this与super的区别 this&super; 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针。 Java关键字this只能用于方法的方法体内。当一个对象创建后, Java虚拟机(JVM)就...

    详解JAVA 强引用

    主要介绍了JAVA 强引用的相关资料,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

    java中堆(heap)和堆栈(stack)有什么区别

    堆栈(stack)是 Java 中的一种内存区域,用于存储基本类型的变量和对象的引用变量。堆(heap)是 Java 中的一种动态内存区域,用于存储由 new 创建的对象和数组。 堆栈(stack) 堆栈(stack)是 Java 中的一种...

    Java虚拟机规范(Java SE 7)中文版

    第2章概览了Java虚拟机整体架构,包括class文件格式、数据类型、原始类型、引用类型、运行时数据区、栈帧、浮点算法、异常等,这对理解本书后面的内容有重要帮助。第3章详述如何将Java语言编写的程序转换为Java...

Global site tag (gtag.js) - Google Analytics