java的引用和指针的区别

java的引用和指针的区别表现在:1、类型;2、所占内存;3、类型转换;4、初始值;5、计算;6、内存泄露;7、作为参数。类型是指引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串查看。指针是一个装地址的变量,长度一般是计算机字长。

java的引用和指针的区别-Worktile社区

一、类型

引用其值为地址的数据元素,Java封装了的地址,可以转换成字符串查看,长度也可以不必担心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。

二、所占内存

引用声明时没有实体,不占空间。C++指针如果声明之后会用到才会赋值。如果用不到不会分配内存。

三、类型转换

引用的类型转换,也可能不成功,运行时抛异常或者编译就不能通过。C++指针指示个内存地址,指向内存,对程序来说还都是一个地址,但可能所指的地址不是程序想要的。

四、初始值

引用初始值为java关键字null。C++指针是int,如不初始化指针,那它的值就不是固定的了,这很危险。

五、计算

引用不可以计算。C++指针是int,他可以计算,如++或–,所以经常用指针来代替数组下标。

六、内存泄露

Java引用不会产生内存泄露。C++指针是容易产生内存泄露的,所以程序员要小心使用,及时回收。

七、作为参数

Java的方法参数只是传值,引用作为参数使用时,会给函数内引用的值的COPY,所以在函数内交换俩个引用参数是没意义的,因为函数只交换参数的COPY值,但在函数内改变一个引用参数的属性是有意义的,因为引用参数的COPY所引用的对象时和引用参数是同一个对象。C++指针作为参数给函数使用,实际上就是它所指的地址在被函数操作,所以函数内使用指针参数的操作都将直接作用到指针所指向的地址(变量,对象,函数等)。

延伸阅读

java的引用是什么

简单的说,引用其实就像是一个对象的名字或者别名 (alias),一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问。引用也是一种数据类型,我们可以把它想象为类似 C++ 语言中指针的东西,它指示了对象在内存中的地址——只不过我们不能够观察到这个地址究竟是什么。

如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间(stack,栈空间)来保存。但是它们的值是相同的,都指示同一个对象在内存(heap,堆空间)的中位置。比如:

String a="This is a Text!";

String b=a;

通过上面的代码示例不难看出,a 和 b 是不同的两个引用,我们使用了两个定义语句来定义它们。但它们的值是一样的,都指向同一个对象 “This is a Text!”。但要注意String 对象的值本身是不可更改的 (像 b = “World”; b = a; 这种情况不是改变了 “World” 这一对象的值,而是改变了它的引用 b 的值使之指向了另一个 String 对象 a)

文章标题:java的引用和指针的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37712

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月10日 下午1:51
下一篇 2023年2月10日 下午2:24

相关推荐

  • 裸金属服务器和物理机的区别是什么

    金属服务器和物理机的区别:裸金属服务器相对与物理机,裸金属服务器不需要采购,裸金属服务器具有分钟级交付,运维方便等特点。裸金属服务器具备物理机的一切特性和优势,具有高性能计算能力、安全物理隔离等特点。 什么是裸金属服务器 裸金属服务器(Bare Metal Server)类似云上的专属物理服务器,它…

    2022年10月13日
    3.3K00
  • 团队管理需要有哪些能力

    团队管理应具备以下能力:1、沟通能力;2、协调能力;3、规划与统整能力;4、决策与执行能力;5、培训能力;6、统驭能力。团队就是一群人为了共同的目标集结在一起相互协作,而作为团队管理者要想带好团队,让大家拧成一股绳朝着目标努力。 一、沟通能力 为了了解组织内部员工互动的状况,倾听职员心声,一个管理者…

    2022年11月6日
    4.0K00
  • devops是什么的

    DevOps 是一组实践、文化哲学及工具集,促进软件开发(Development)与信息技术运维(Operations)之间的沟通、协作与整合。该策略支持一种自动化与集成的环境,以便更快速、更高效地构建、测试以及发布软件。1、DevOps推动了事务处理速度的提升,它能够使得发布更频繁、减少部署失败、…

    2024年3月26日
    7200
  • 企业管理软件研发

    企业管理软件研发需关注用户需求满足与技术创新相结合、保持用户界面友好且直观、确保数据安全与合规性、适应性与可扩展性、集成现有系统与工具。接下来将对用户需求满足与技术创新相结合进行详细阐述。 用户需求满足与技术创新相结合是企业管理软件研发的关键。组织寻求软件解决方案以提高操作效率、降低成本并增强决策能…

    2024年1月10日
    20900
  • Python应用于哪些领域

    Python应用于哪些领域:1、web开发;2、网络爬虫;3、数据科学;4、自动化运维;5、数据库编程;6、网络编程;7、图形处理、数学处理、文本处理;8、多媒体应用。其中,web开发指可结合python、html、css、javascript、数据库等开发一个网站。 一、web开发 结合pytho…

    2023年5月10日
    98800
  • 代码管理工具有哪些

    代码管理工具有:1、CVS;2、SVN;3、Git;4、VisualSourceSafe;5、ClearCase;6、Mercurial;7、Perforce;8、GitLab。CVS(Concurrent Versions System)是代码管理工具诞生以来最早出现的一名成员。 1、CVS CV…

    2023年3月31日
    3.0K00
  • 如何实现持续监控和反馈

    实现持续监控和反馈的策略主要包括:1、部署高效的监控系统、2、确立关键性能指标、3、设立自动化反馈机制、4、打造跨部门沟通桥梁、5、持续改进与教育培训。其中特别值得强调的是确立关键性能指标,这关乎到对数据重要性的识别和监控策略的重点定位,提供了明确的性能目标和期望,以衡量和评估监控系统的有效性。 一…

    2024年1月4日
    29900
  • 什么操作用协程比较好

    以下操作适合使用:一、网络编程;二、数据库访问;三、图像处理;四、文本处理;五、并发任务;六、视频编解码;七、数据抓取。协程非常适合网络编程,因为网络通信通常涉及大量的IO操作。使用协程可以避免阻塞线程,从而提高程序的性能。 一、网络编程 协程非常适合网络编程,因为网络通信通常涉及大量的IO操作。使…

    2023年5月31日
    44000
  • 物业项目安全管理如何做

    物业项目安全管理是确保居民、访客和物业从业人员的生命财产安全的关键。制定全面的安全管理计划、加强安全意识培训、严格执行安全监管措施、利用现代技术手段提升安全管理效率、建立应急响应机制,这五个方面是进行有效安全管理的基础。在这些基础之上,制定全面的安全管理计划是其它措施得以顺利实施的前提。一个详尽的安…

    2024年4月10日
    6800
  • 如何加强监理项目部管理

    加强监理项目部管理的关键包括构建高效的团队、优化流程和制度、强化技术能力、提升沟通效率、确保合规性。在这些关键要素中,构建高效的团队是基础。一个高效的团队应由具有不同专业技能的成员组成,包括但不限于工程监理、质量控制、安全监管等方面的专家。每个成员都应该明确自己的职责和任务,同时,团队应当培养出强烈…

    2024年4月10日
    5100

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部