zoukankan      html  css  js  c++  java
  • java值传递和引用传递

    对于java究竟是值传递还是引用传递,有很多说法。有博客说java是值传递,也有博客说java是值传递和引用传递并存。那么java究竟是什么样的参数传递的方式。

    1.值传递:对形参的操作不影响实参

    2.引用传递:对形参的操作影响实参

    在讨论java是值传递还是引用传递之前,我们先来了解下java的方法形参的内存

    java方法的形参存在方法的栈帧中,而每个方法的栈帧是相互独立的。对于基本数据类型,栈帧中直接存在值,而引用类型,栈帧中存放指向对象的内存地址。

    1.对于基本类型而言,对形参操作其实是对你所在方法的栈帧里的值进行操作,并不会影响到其他方法所对应栈帧。形参只是对实参值的copy,所以对于基本数据类型而言,java是值传递。

    2.对于引用数据类型而言,分为两种情况

    a)对对象的属性进行操作,那么实际上就是改变了对象的属性。那么有的人可能就会觉得java是值传递与引用传递并存。

    b)对对象进行操作,比如在方法类新创建一个对象,把对象赋值给形参。这个时候实参并不会发生变化。因为栈帧中存放的是对象的内存地址,当你将新建的对象赋值给形参时,形参所指向的内存地址已经发生了变化,你对这个对象的任何操作,都不会影响到实参。

    那么对于引用类型而言,java还是值传递,因为引用类型是对内存地址的copy。

    java只有值传递。

  • 相关阅读:
    【搞笑】各种程序评测结果
    【UVA】P1510 Neon Sign
    【转载】实用:根号怎么打出来? <引自百度>
    【转载】C++中的模板template <typename T>
    * ! THUSC2017杜老师
    * ! THUSCH2017巧克力
    ! BJOI2019光线
    ! BJOI2019奥术神杖
    ! TJOI/HEOI2016字符串
    ! TJOI/HEOI2016求和
  • 原文地址:https://www.cnblogs.com/xwzp/p/11911936.html
Copyright © 2011-2022 走看看