`

java与c++比较 --值与引用的传递

阅读更多
一、基本概念:

1、按值传递:

将一个参数传递给一个函数时,函数接收的是原始值的一个副本。因此,如果函数修改了该参数,仅改变副本,而原始值保持不变。

2、按引用传递:

将一个参数传递给一个函数时,函数接收的是原始值的内存地址,不是值的副本。因此,如果函数修改了该参数指向的内容,调用代码中的原始值也随之改变。

二、引用与指针区别:

java其实很多东西在内部都是用指针实现,指不过不让大家用而已。
引用就相当于别名。
C++当中引用和指针的差别:
引用的概念:
        引用是个别名,当建立引用时,程序用另一个变量或对象(目标)的名字初始化
它。从那时起,引用作为目标的别名而使用,对引用的改动实际上就是对目标的
改动。
        引用不是值,不占存储空间,声明引用时,目标的存储状态不会改变。所以,既
然定义的概念有具体分配空间的含义,那么引用只有声明,没有定义。
        引用的声明必须初始化。

引用的操作:
        C++没有提供访问引用本身地址的方法,因为它与指针或其他变量的地址不同,他
没有任何意义。引用在建立时就初始化,而且总是作为目标的别名使用,即使在应用
地址操作符时也是如此。
        引用一旦初始化,就维系在一定的目标上,再也不分开。任何对该引用的赋值都
是对引用所维系的目标赋值,而不是将引用维系到另一个目标上。

三、java引用与c++引用区别:


c++引用和java的引用很多地方是不一样的,从功能上看,java的引用倒更多的与c++的指针有着相似性(虽然从本质上是不同的),
c++引用的特徵
1,本身的地址就是被引用的变量或对象的地址,本身被维持在一个引用表里
2,没有空引用
3,引用声明是必须初始话
4,一旦声明,该引用就不能指向别的变量或对象,他仅仅是当作别名

但在java中,引用的概念就不一样了
只有第一条是一样的
引用可以为空,赋值null
声明可以不用初始化
声明以后,还可以指向另外的对象
所以说,java的引用在行为上更多的相似于c++的指针,可以这么说,java的引用就是披着引用皮的指针
以上是这几天做项目(c++)的一些领悟
java的钥匙是引用,c++的关键是指针

分享到:
评论

相关推荐

    java及C++中传值传递、引用传递和指针方式的理解.docx

    本文将深入探讨Java与C++这两种广泛使用的编程语言中参数传递的方式,包括值传递、引用传递以及C++中的指针传递,并通过具体的代码示例来帮助理解这些概念。 #### 值传递 值传递是最简单的参数传递方式之一,它指...

    值传递与引用传递-内存解析

    与值传递不同,引用传递不创建参数值的副本,而是让函数直接访问原始变量。这样,函数对参数的任何操作都会反映到原始变量上。在C++中,引用是一个别名,它指向一个已存在的对象。在Python中,对象是通过引用传递的...

    java及C++中传值传递、引用传递和指针方式的理解

    Java和C++对待参数传递有着不同的处理机制,这主要体现在值传递、引用传递和指针方式上。 首先,我们来看Java的值传递。Java中,所有的参数传递都是基于值的。这意味着当一个对象作为参数传递给方法时,实际上是...

    JNI:Java与C++的美好结合 视频地址

    在这个视频课程中,讲师会深入探讨如何通过JNI实现Java与C++的有效结合,特别关注代码的稳定性和设计优化。 首先,课程的目标之一是避免在C层的全局变量中存储Java或C++对象的引用。全局变量在程序的整个生命周期内...

    java调用c++生成so库

    这时,我们可以使用Java Native Interface (JNI) 来实现Java代码与C++代码的交互。JNI允许Java应用程序调用或者被C/C++代码调用,形成了跨语言的桥梁。 标题“java调用c++生成so库”指的是在Linux环境下,通过JNI...

    JAVA与C++比较.pdf

    而JAVA的语法则相对简洁,它不支持指针运算,也不允许引用传递。 7. 错误处理:JAVA中的异常处理使用try-catch块,并且强制要求异常被声明或者被处理,这有助于避免程序在运行时出现错误。C++支持异常处理,但是...

    Java programming for C++ developers

    2. **参数传递方式**:Java默认采用按值传递的方式,而C/C++允许开发者选择按值或按引用传递。这意味着在Java中,如果方法改变了传递进来的对象的值,则调用者看到的是修改后的值;但如果改变的是基本数据类型的值,...

    《C++ for Java Programmers》高清完整英文PDF版

    知识点一:C++与Java语言的比较。书中通过比较这两种语言,揭示了C++的特性,比如编译与解释执行的差异、安全性与健壮性、多线程支持以及API的差异等。 知识点二:C++的关键特性。C++广泛使用的原因包括模板、...

    java参数传递时到底是值传递还是引用传递分享.pdf

    Java中参数传递的方式有两种理解:值传递和引用传递,但这两种说法实际上是对同一种机制的不同角度的描述。下面将详细解释这两种理解方式。 首先,我们来看值传递的理解。在Java中,当一个对象作为参数传递给方法时...

    java私塾面试题----JAVA基础1.rar

    - 方法的定义、调用,参数传递(按值传递,按引用传递)。 - 返回值类型,void方法的理解。 - 方法重载(Overloading)与方法覆盖(Overriding)的概念。 6. **数组**: - 一维、二维数组的创建与操作。 - ...

    cocos2d-x 通过JNI实现c/c++和Android的java层函数互调-源码

    在Android应用开发中,Cocos2d-x是一个广泛使用的开源游戏引擎,它允许开发者使用C++编写游戏逻辑,同时提供了与Java交互的能力。本主题聚焦于如何通过JNI(Java Native Interface)来实现在Cocos2d-x中调用Java层的...

    Java的引用和函数参数传递

    - **引用与值的区别**:与基本类型的值传递不同,引用传递不会创建新的对象副本。这对于处理大型数据结构尤其有用,因为它可以减少内存开销。 #### 七、总结 通过上述分析,我们可以清楚地了解到Java中引用和函数...

    java参数传递时到底是值传递还是引用传递[归类].pdf

    Java的参数传递方式实际上是一种特殊的"值传递",通常被称为"按引用传递对象的引用",这与C++等语言中的引用传递有所不同。以下是对这个主题的详细解释。 在Java中,所有的参数传递都是基于值的,但这涉及到一个...

    面向对象语言中的值传递与引用传递

    总结来说,值传递和引用传递是Java中处理参数传递的两种机制。理解这两者的差异对于正确处理方法调用和对象状态至关重要。值传递适用于基本数据类型,而引用传递则适用于对象类型,允许方法直接修改对象的状态。在...

    java中的值传递和引用传递[汇编].pdf

    Java编程语言中,参数传递的方式主要有两种:值传递和引用传递。然而,由于Java不支持指针,所以严格意义上的引用传递并不存在。但是,通过对象的传递,Java实现了类似引用传递的效果。 值传递是Java中基本类型的...

    C++、Java和C_的语法比较.doc

    **C#**: 支持 `ref` 和 `out` 参数,用于通过引用传递参数。此外,在不安全的上下文中也可以使用指针。 **Java**: 不支持 `ref` 或 `out` 参数,但可以通过对象引用来传递可变参数。 综上所述,C++、Java与C#在...

    java中引用和c++中引用的区别.docx

    Java函数参数传递是按值传递的,这意味着当调用`fun(a)`时,实际上是复制了`a`的值(即对象的地址)给`x`。如果在函数内部修改`x`指向的对象,例如`x = new A(3)`,这不会影响到`a`和`b`,因为它们仍然指向原来的`A...

Global site tag (gtag.js) - Google Analytics