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只有值传递。

  • 相关阅读:
    java中return在Try-Catch中的执行顺序
    面向对象软件开发方法概述
    内部类
    JAVA中的继承
    错题分析
    【cocos2d-x 手游研发小技巧(1)自定义制作怪物伤害数值】
    【cocos2d-x 手游研发----地图活起来了】
    【cocos2d-x 手游研发----精灵的八面玲珑】
    【cocos2d-x 手游研发----研发思路及感想】
    通俗易懂的讲解区块链
  • 原文地址:https://www.cnblogs.com/xwzp/p/11911936.html
Copyright © 2011-2022 走看看