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

  • 相关阅读:
    C# webBrowser禁止在新窗口打开,强制在本窗口打开
    C# StatusStrip状态栏 例程
    iphone实现弹出框视图
    在iOS开发中使用FMDB
    XCode 4.2 新功能 Storyboard
    FMDB一个sqlite的封装
    Xcode 4的新特性
    sqlite加密SQLCipher
    跨iPhone应用程序的方便,模块化的代码共享:静态库和跨项目的引用
    Navicat for SQLite For Ma OS X
  • 原文地址:https://www.cnblogs.com/xwzp/p/11911936.html
Copyright © 2011-2022 走看看