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实现类似c/c++指针效果

如何用Java实现类似c/c++指针效果        JAVA作为一门类C语言,已经得到大家的青睐,许多人问过我Java是否也可以用指针,当然这主要是因为他们觉得有了指针,可以省去对象调用的麻烦,...
  • liaokangli_first
  • liaokangli_first
  • 2011年11月14日 20:32
  • 7184

Java引用与C++引用的区别

Java程序设计语言总是采用按值调用。也就是说,方法得到的是所有参数值的一个拷贝,因此Java中的引用区别与C++中的引用,特别是,方法不能修改传递给它的任何参数变量的内容。 public stati...
  • u012259209
  • u012259209
  • 2014年03月19日 21:38
  • 688

Java引用和C++指针的区别

(1)类型:引用是地址的数据元素,可以转换成字符串查看,不用关心它的长度;指针是一个装地址的变量,它的长度是固定的,一般是一个计算机字长 (2)所占内存:引用申明时没有实体,不占用空间;指针申明后用...
  • u012868077
  • u012868077
  • 2016年02月28日 17:10
  • 230

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

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

java中的引用和C++中的指针的区别

1.类型:引用其值为地址的数据元素,java封装了的地址,可以转成字符串查看,长度可以不必关心。C++指针是一个装地址的变量,长度一般是计算机字长,可以认为是个int。2.所占内存: 引用声明时没有实...
  • b271737818
  • b271737818
  • 2009年02月24日 13:30
  • 8974

从Java到C++——指针与引用

从Java到C++——指针与引用C++即有指针又有引用,而且很多时候具有相似的功能,常常容易让人混淆,着实让人头痛。用两句通俗的话说明两者本质的含意:引用就是一个变量或对象的别名(引用的本质是一个对象...
  • luoweifu
  • luoweifu
  • 2014年07月30日 22:50
  • 5103

[引用区别] c++中引用与java中引用区别

在Java中,类实例声明和构造是分开。"T a;"是声明,而"a=new T();"才是构造。引用声明和C++相同。但是Java的机制与C++不同,Java中的引用也叫句柄,或者说句柄才是其真实名称。...
  • WaitForFree
  • WaitForFree
  • 2016年03月31日 21:08
  • 3485

C 指针

学习 C 语言的指针既简单又有趣。通过指针,可以简化一些 C 编程任务的执行,还有一些任务,如动态内存分配,没有指针是无法执行的。所以,想要成为一名优秀的 C 程序员,学习指针是很有必要的。 正如您...
  • qq_38131668
  • qq_38131668
  • 2017年10月26日 09:00
  • 112

C\C++和Java 的区别(特别是在内存分配方面)

前言:今天当被问到有关C与Java之间在内存管理方面的不同是什么时,瞬间 T_T__,所以特意集众人之解,存入自己的学习笔记中,加以学习和巩固。 ---------------------------...
  • u012209626
  • u012209626
  • 2015年07月20日 22:22
  • 2325

C++中的对象指针和对象引用

在C++中,可以说明指向类的数据成员和成员函数的指针。    指向数据成员的指针格式如下:    ::*    指向成员函数的指针格式如下:    (::*)()    例如,设有如下一个类A: ...
  • guoyuqi0554
  • guoyuqi0554
  • 2011年04月23日 14:43
  • 7462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java的引用和C++的指针有什么区别
举报原因:
原因补充:

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