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

相关推荐

  • 社交型知识库平台有哪些

    常见的社交型知识库平台有:1、知乎;2、Quora;3、GitHub;4、Stack Overflow;5、Reddit;6、Medium。知乎是中国最大的问答社区,用户在这个平台上分享、探索各种问题的答案。这个平台上汇聚了众多的专业人士和行业专家,他们提供高质量的内容和深度的观点分析。 1、知乎 …

    2023年7月10日
    7900
  • “嵌入式系统”和“单片机”区别主要体现在哪里

    “嵌入式系统”和“单片机”的区别:1、硬件组成不同;2、应用对象不同;3、系统组成不同;4、软件组成不同;5、主次关系不同;6、系统联系不同。硬件组成不同是指,嵌入式系统可以用单片机或其它可编程的电子器件实现,单片机是一个微型计算机系统。 1、硬件组成不同 嵌入式系统是可以用单片机实现,也可以用其它…

    2023年3月5日
    35500
  • 大家对PHP的误解有哪些

    大家对PHP的误解有:1、PHP是一门面向对象语言,但不是基于OOPS;2、PHP无法实现特定的功能;3、PHP不安全;4、不适合做大型应用程序等。尤其是Java程序员,他们认为PHP不是基于OOPS;但他们会发现许多面向对象的特征,比如,接口、方法、抽象对象等。 一、PHP是一门面向对象语言,但不…

    2023年5月12日
    2300
  • c语言计算n的阶乘

    计算阶乘在C语言编程中是一项基本任务,尤其在学习循环结构和递归时。本文介绍了两种计算n的阶乘的方法:1、使用循环结构计算阶乘;2、使用递归函数计算阶乘。这两种方法都可以有效地计算给定数字的阶乘,并为初学者提供了对基本编程概念的理解。 1、使用循环结构计算阶乘 计算n的阶乘最常见的方法是使用循环结构。…

    2023年8月14日
    3700
  • React和Vue的区别

    区别有:一、前置技能;二、组件化;三、状态管理;四、渲染方式;五、社区支持;六、适用场景。React需要对JavaScript和JSX有深入的了解,这意味着您需要学习JSX语法和JavaScript的高级概念。Vue则更倾向于模板语法,并且对于初学者来说更容易学习。 一、前置技能 React需要对J…

    2023年5月28日
    4200
  • 什么是JDK、JRE、JVM,它们的关系是什么

    JDK的全称是Java Development Kit,即Java开发工具包。JRE的全称是Java Runtime Environment,即Java运行时环境。JVM的全称是Java Virtual Machine,即Java虚拟机。JDK包含了JRE和JVM,JRE包含了JVM。JDK是开发J…

    2023年5月29日
    7500
  • project文件用什么软件打开

    project文件用Microsoft Project软件打开,Microsoft Project是由微软开发销售的项目管理软件程序。软件设计目的在于协助项目经理发展计划、为任务分配资源、跟踪进度、管理预算和分析工作量。 一、打开project文件的软件 project格式的后缀名是.mpp,是做项…

    2023年1月31日
    76900
  • 电脑办公软件有哪些

    电脑办公软件有:1、Worktile;2、通达OA;3、金蝶OA;4、慧点OA;5、PingCode;6、Jira;7、Coding;8、Teambition;9、Trello;10、北极星OKR。其中,Worktie 是团队项目协作系统,能满足团队的任务、项目、文档、IM、目标、 日历、甘特图、工…

    2023年4月19日
    13200
  • 计算机中应用最普遍的字符编码是

    本文将对计算机中最常用的字符编码方式进行详述,主要包括:1、ASCII编码;2、Unicode编码;3、UTF-8编码;4、编码方式的选用原则。希望通过本文的阅读,能够帮助你更深入地理解字符编码在计算机领域中的应用。 1、ASCII编码 ASCII编码是较早的字符编码标准,主要用于表示英文字符。它使…

    2023年8月4日
    6000
  • 主键和唯一索引的区别

    区别有:一、定义不同;二、相关性不同;三、性能不同;四、使用场景不同。主键用于唯一标识数据库表中每一行数据的一列或一组列,必须满足主键列的值不能为空。唯一索引也是用于确保数据库表中的数据唯一性的一种机制,但唯一索引并不要求列的值不能为空。 一、定义不同 主键是用于唯一标识数据库表中每一行数据的一列或…

    2023年5月29日
    22800

发表回复

登录后才能评论
联系我们
站长微信
站长微信
电话联系

400-800-1024

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

分享本页
返回顶部