美文网首页@IT·互联网程序员
C++,Java 指针,引用概念

C++,Java 指针,引用概念

作者: 热血沸腾 | 来源:发表于2017-05-25 16:37 被阅读99次

首先我们来想一个问题,在Java的函数传参中,到底传的是值or引用?

比如

1. public void  printMessage(int i)

外部调用  printMessage(a)

2. public void printMessage(User u)

外部调用 printMessage(user)

1.如果这个时候我在函数里改变 i的内容,那么外面的a 肯定不会变

2.如果这个时候我在函数里改变 u的内容,比如u.setGender("女") 那么外面的u.gender 如果是"男"  这个时候肯定会变成女

这里不懂的、不信的你就试一下。

为什么呢?

Java中函数的形参,不管是基本变量还是对象类型变量,传递的都是一个拷贝。

基本变量的拷贝传递过去,改变不会影响原来的变量。因为变量复制一份

但是对象类型传递的是一份引用拷贝,引用在Java中就是指向某个指针(地址),副本引用的变化直接影响外面的对象也就不奇怪了。

再说一下C++ 里面的指针概念,指针恰恰就解决了另外的问题,拿地址来操作数据(Java只能拿引用来操作)

咱们看到的代码 

int a ;

int *p;

p = &a ;

p是存储指针的变量,里面的值是地址,是可变的。

但是a 是一个引用。 引用可以理解在 内存上打的一个标签, 这个引用所指向的地址是不可变的。 举个例子 a指向内存地址为 0x01的,不可能通过编程手法变成 a指向了内存地址为0x02的。 只可能改变a里面的值,也就是地址0x01里面的数据域

所以大概图形是这样子的

大伙明白了吗?

还记得上面那句话吗,Java只能拿着引用(a)来操作数据,但是C++可以拿着地址(p) 来操作数据。

Java去掉了指针概念,简化了程序难度,理解难度,被更多程序员所接受。

但是Java依旧保留了引用概念,也是根本去不掉的。Halal Madrid!

相关文章

  • java中的引用与c++中的指针的区别

    java中的引用与c++中的指针的区别 Java的引用和C++的指针都是指向一块内存地址的,通过引用或指针来完成对...

  • C++,Java 指针,引用概念

    首先我们来想一个问题,在Java的函数传参中,到底传的是值or引用? 比如 1. public void prin...

  • 基于堆栈内存详析 Java函数形参是传值还是引用? | C++指

    Java的引用 及 Java函数形参是传值还是引用 Java中没有指针的说法,Java中的引用就类似于C++的指针...

  • C++ 、java 和 C# 的区别

    一、基础类型 c++: ** java:** C#: 二、指针 1.java 是没有指针这个概念,c++ 和 c#...

  • 对比 C++ 和 Python,谈谈指针与引用

    0 引言 指针(Pointer)是 C、C++ 以及 Java、Go 等语言的一个非常核心且重要的概念,而引用(R...

  • C++中的引用和指针

    C++ 引用与指针的比较 引用是 C++ 中的概念,初学者容易把引用和指针混淆一起。 以下程序中,n 是m的一个引...

  • 引用数据

    引用是java的精髓所在,类似于C++的指针,但是比指针简单。 引用最关键的还是关键字 :new。例:

  • C++基础

    C++ 值传递、指针传递、引用传递详解C++中引用传递与指针传递区别 引用传递和指针传递的区别 引用的规则:(1)...

  • 地址、指针和引用 随笔

    地址:一般而言是指物理地址。指针:是一个指向物理地址的变量。引用:在Java中没有真正的C++概念中的引用,只不过...

  • Java和JVM

    C++和Java的区别 指针:java中不存在指针的概念,编程者无法直接通过指针来直接访问内存,有利于维护java...

网友评论

    本文标题:C++,Java 指针,引用概念

    本文链接:https://www.haomeiwen.com/subject/hgdzxxtx.html