java的引用和C++的指针有什么区别

原创 2015年07月10日 22:04:21

大多数的C++程序员转学java的时候,都有这样一个疑问,java的引用就是C++的指针吗。其实不完全对,他们之间既有前四外绿的联系, 也有很大的区别。

java的引用和C++的指针都是指向一块内存址的,通过引用或者指针完成对 内存数据的操作。就好像风筝的线轴一样,通过线轴总能够找到风筝。但是他们在实现、原理、作用等方面去有区别。

(1)类型:引用其值为地址的数据元素,java封装了地址,可以转换成字符串查看,长度可以不必关心。C++指针是一个存放地址的变量,疮毒一般是计算机字长,可以认为是int。

(2)所占内存:引用声明时没有实体,不占内存。C++如果声明后会用到才会赋值,如果用不到不会分配内存。

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

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

(5)计算:引用是不可以计算的。C++指针是int,它可以计算,如++ 或者--,所以经常用指针来代替数组下标。

(6)控制:引用不可以计算。所以它只在自己的程序中,可以被控制。C++指针是内存地址,可以计算,所以他有可能指向一个不属于自己程序使用的内存地址,对于其他程序来说是很危险的,对自己程序来说也是不容易控制的。

(7)内存泄露:java引用不会产生内存泄露。C++指针是容易产生内存泄露的,所以程序员要小心使用,即使回收。

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

本质上,他们两个都是想通过一个叫做引用或者指针的东西,找到操作的目标,方便在程序中操作。所不同的是java的办法更方便、安全一些,单失去了C++的灵活性,也算是对指针的一种包装和改进。

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

Java 对象、引用和指针

在前面PersonTest.java代码中,有这样一行代码:Person p = new Person(); 这行代码创建了一个Person实例,也被称为Person对象,这个Person对象被赋给...

Java中的对象类型的引用到底是不是指针

初学Java,感觉引用和c中的指针很像,特此学习,mark一下 原文详见:http://blog.csdn.net/linyt/article/details/1573864 先放结论:可以认...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

引用与指针的区别

引用的那些事: 1.引用必须被初始化 2.定义引用时,程序把引用和它的初始值绑定在一起,而不是将初始值拷贝给引用 3.一旦初始化完成,引用无法重新绑定到另外一个对象(嫁鸡...

java的引用和C++的指针有什么区别

大多数的C++程序员转学java的时候,都有这样一个疑问,java的引用就是C++的指针吗。其实不完全对,他们之间既有前四外绿的联系, 也有很大的区别。 java的引用和C++的指针都是指向一块内存...

Java的引用和C++的指针有什么区别?

Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对内存数据的操作,就好像风筝的线轴一样,通过线轴总是能够找到风筝,但是它们在实现,原理作用等方面却有区别。 (1)类型:引用其...

指针和引用有什么区别 .

指针在引用变量的时候需要加& 或*不够方便 而定义一个引用,就相当与给变量起了个别名, 在引用变量是只需要通过别名就可以直接引用对应变量 指针不确定有无初始化过其变量的值 引用不存在这...

指针和引用有什么区别

指针在引用变量的时候需要加& 或*不够方便而定义一个引用,就相当与给变量起了个别名,在引用变量是只需要通过别名就可以直接引用对应变量----------------------------------...

引用和指针有什么区别?

转载之一: 指针和引用的区别总结 1.从现象上看:指针在运行时可以改变其所指向的值,而引用一旦和某个对象绑定后就不再改变 2.从内存分配上看:程序为指针变量分配内存区域,而引用不分配内存...

指针和引用有什么区别

指针在引用变量的时候需要加& 或*不够方便而定义一个引用,就相当与给变量起了个别名,在引用变量是只需要通过别名就可以直接引用对应变量指针不确定有无初始化过其变量的值引用不存在这个问题,要考虑同名的问题...

指针,数组,引用之间的不同点

指针和数组的区别: 数组整数变量加1,其值将增加1,,但将指针变量加1后,增加的量等于它指向的类型的字节数。 指针的值可以修改,而数组名是常量不可以修改。 对数组应用sizeof运算符得到的是数组的长...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)